企业级运维之云原生与Kubernetes实战课程 - 第二章第6讲 阿里云容器服务集群日志与监控

简介: 本小节主要内容为K8s日志服务与监控,包括日志服务简介、日志服务采集、集群监控。

企业级运维之云原生与Kubernetes实战课程

第二章第6讲 阿里云容器服务集群日志与监控

 

 

视频地址:https://developer.aliyun.com/learning/course/913/detail/14649

 

摘要:本小节主要内容为K8s日志服务与监控,包括日志服务简介、日志服务采集、集群监控。

 

目录

 

  • 日志服务简介
  • 日志服务采集
  • 集群监控

 

 

一、日志服务简介

 

1.  日志服务是什么?

 

日志服务(Log Service,简称SLS)是针对日志类数据的一站式服务,在阿里巴巴集团经历大量大数据场景锤炼而成,无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立DT时代海量日志处理能力。

 

2.  实时采集与消费 (LogHub)

 image.png

 

  • 功能

 

  • 通过ECS、容器、移动端、开源软件、JS等接入实时日志数据(例如Metric. EventBinLogTextLog)
  • 提供实时消费接口,与实时计算及服务对接。

  • 用途

 

  • 数据清洗 (ETL)、流计算(Stream Compute)、监控与报警、机器学习与迭代计算。

 

3.  查询与实时分析 (LogSearch/Analytics)

 image.png

 

  • 功能:实时索引、查询分析数据。

 

  • 查询:关键词查询、模糊查询、上下文查询、精确查询;
  • 统计: SQL聚合等丰富的统计手段;
  • 可视化:仪表盘和报表功能;
  • 对接:支持基于JDBCSQL92等协议与Grafana产品无缝对接;

 

  • 用途

 

  • DevOps线上运维、日志实时数据分析、安全诊断与分析、运营与客服系统。

 

4.  投递数仓 (LogShipper)

 image.png

 

  • 功能

 

  • 稳定可靠的日志投递;
  • 将日志中枢数据投递至存储类服务进行存储。支持压缩、自定义Partition、以及行列等各种存储方式;

 

  • 用途

 

  • 数据仓库、数据分析、审计、推荐系统与用户画像。

 

二、日志服务采集

 

1.  通过日志服务采集K8s容器日志

 

a.  启用日志服务组件Logtail

  • 在创建集群时可以直接开启,也可以为已有集群启用Logtail

 

b.  通过YAML模板创建应用并配置日志采集。

  • 为了给容器指定采集配置,需要使用Env来为容器增加采集配置和自定义Tag,并根据采集配置,创建对应的volumeMountsvolumes

 

YAML示例:

 

apiVersion: v1

kind: Pod

metadata:

 name: my-demo

spec:

 containers:

 - name: my-demo-app

   image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'

   env:

   ######### 配置环境变量 ###########

   - name: aliyun_logs_log-stdout

     value: stdout

   - name: aliyun_logs_log-varlog

     value: /var/log/*.log

   - name: aliyun_logs_mytag1_tags

     value: tag1=v1

  ###############################

   ######### 配置volume mount ###########

  volumeMounts:

   - name: volumn-sls-mydemo

     mountPath: /var/log

 volumes:

 - name: volumn-sls-mydemo

   emptyDir: {}

 ###############################

 

参考地址:https://help.aliyun.com/document_detail/87540.html

 

示例解析:

 

通过环境变量来创建采集配置和自定义Tag,所有与配置相关的环境变量都采用aliyun_logs_作为前缀。

创建采集配置的规则如下:

 

-namealiyun logs_{Logstore名称}

value{日志采集路径}

 

示例中创建了两个采集配置,其中aliyun_logs_log-stdout这个env表示创建一个Logstore名字为log-stdout,日志采集路径为stdout的配置,从而将容器的标准输出采集到log-stdout这个Logstore中。

 

创建自定义Tag的规则如下:

 

-namealiyun_logs_{任意不包含‘_’的名称}

tagsvalue{Tag}={Tag}

 

配置Tag后,当采集到该容器的日志时,会自动附加对应的字段到日志服务。采集配置中指定了非stdout的采集路径,需要在此部分创建相应的volumeMounts。示例中采集配置添加了对/var/log/*.log的采集,因此相应地添加了/var/logvolumeMounts

 

2.  配置环境变量的高级参数

 

通过容器环境变量配置采集支持多种配置参数,可根据实际需求设置高级参数来实现日志采集的特殊需求,如下图。

image.png

 

3.  采集容器日志异常排查思路

 

a.  确认机器组状态是否正常;

b.  检查采集配置标识是否正确,检查配置中IncludeLabelExcludeLabelIncludeEnvExcludeEnv是否和您需要采集的容器配置匹配。

c.  检查其他注意事项;

若配置采集容器内文件,请注意:

  • 若下发采集配置后文件没有修改事件,Logtail则不采集;
  • 采集容器日志文件,只支持采集容器默认存储或挂载到本地的文件,暂不支持其他存储方式;

d.  登录Logtail容器排查;

  • 执行kubectl get po -n kube-system | grep logtail搜索LogtailPod
  • 执行kubectl exec -it -n kube-system ****** bash登录Pod

e.  查看Logtail的运行日志;

  • 打开Logtail容器目录/usr/local/ilogtail/,查看文件ilogtail.LOGlogtail_plugin.LOG

f.  查看Kubernetes集群中日志相关组件状态;

  • 执行命令helm status alibaba-log-controller,可以查看Kubernetes集群中日志相关组件状态。

 

三、集群监控

 

1.  基础资源监控

 

资源监控是Kubernetes中最常见的监控方式,通过资源监控,可以快速查看负载的CPU、内存、网络等指标的使用率。在阿里云容器服务中,资源监控已经与云监控互通,新建的集群默认安装与集成云监控。

 

操作步骤:

 

  • 登录容器服务管理控制台;
  • 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情;
  • 在集群管理页左侧导航栏中,单击工作负载;
  • 在页面上方选择命名空间,单击无状态页签;
  • 选择所需的Deployment,单击右侧的监控,进入到云监控的相应的监控视图页面;
  • 单击维度中的分组或实例,分别通过两个维度查看监控数据;
  • 可选:如需设置告警,您可以在左侧导航栏单击报警规则并进行设置,详情请参见管理报警规则。分组级别的指标以group开头,实例级别的指标以Pod开头。

 image.png

 

2.  阿里云Prometheus监控

 

开源Prometheus监控和K8s容器编排系统一样都是云原生基金会CNCF开源毕业的项目。

  • 阿里云Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。借助阿里云Prometheus监控,用户无需自行搭建Prometheus监控系统,因而无需关心底层数据存储、数据展示、系统运维等问题。
  • 整体而言,与开源Prometheus监控相比,阿里云Prometheus监控的优势体现为:
  • 更轻量、更稳定、更准确的重试机制;
  • 数据量无上限;
  • 完全兼容开源生态;
  • 节省成本;

 image.png

 

3.  应用性能监控

 

  • 对于部署在容器服务Kubernetes版中的JavaPHP应用,可以使用应用实时监控服务ARMS对其进行监控,实现自动发现应用拓扑、自动生成3D拓扑、自动发现并监控接口、捕获异常事务和慢事务,大幅提升线上问题诊断的效率。
  • 应用实时监控服务ARMS(Application Real-Time Monitoring Service) 是一款阿里云应用性能管理(APM)类监控产品。只要为部署在容器服务Kubernetes版中的Java应用安装ARMS应用监控组件,无需修改任何代码,就能借助ARMSJava应用进行全方位监控,以便更快速地定位出错接口和慢接口、重现调用参数、检测内存泄漏、发现系统瓶颈,从而大幅提升线上问题诊断问题的效率。

 

开启ARMS应用性能监控,操作步骤:

 

a.  安装ARMS应用监控组件;

b.  为容器服务Kubernetes版授权;

c.  Java应用开启ARMS应用监控;

d.  PHP应用开启ARMS应用监控;

 image.png

 

4.  架构感知监控

 

  • Kubernetes中的业务是运行在节点组成的资源池上,使得定位Pod的调用链路以及拓扑关系非常复杂,如何以可视化的方式监控Kubernetes中的负载状态,及更好地可视化集群中流量的吞吐是非常重要的问题。
  • 阿里云应用高可用服务 (AHAS)是一款专注于提高应用高可用能力的云产品,提供应用架构自动探测、故障注入式高可用能力评测和一键流控降级等功能,可以快速低成本地提升应用可用性。

 

AHAS使用步骤:

 

a.  开通AHAS服务:检查是否开通了AHAS:访问开通AHAS服务页面验证。如果已开通,会提示跳转到AHAS控制台;

b.  授权AHAS访问容器服务信息,访问云资源访问授权页面,单击同意授权;

c.  安装AHAS Pilot,登录容器服务管理控制台。在左侧导航栏选择市场>应用目录,在右侧选中 ACK-ahas-pilot。在应用目录-ACK-ahas-pilot 页面右侧的创建区域,选择集群名称后单击创建,添加AHAS应用高可用服务组件;

d.  查看AHAS服务数据,创建完成后,您可以登录AHAS控制台,查看AHAS服务数据。

 

5.  事件监控

 

事件监控是Kubernetes中的另一种监控方式,可以弥补资源监控在实时性、准确性和场景上的欠缺,用户您可以通过使用NPD结合SLSKubernetes事件中心、配置NPD集群检查项以及异常事件离线功能、使用钉钉、使用SLS离线Kubernetes事件及使用EventBridge离线Kubernetes事件,实时监控集群的异常与问题。

 

背景信息

 

  • Kubernetes的架构设计基于状态机,不同的状态之间进行转换则会生成相应的事件,正常的状态之间转换会生成Normal等级的事件,正常状态与异常状态之间的转换会生成Warning等级的事件。
  • ACK提供开箱即用的容器场景事件监控方案,通过ACK维护的NPD (node-problem-detector) 以及包含在NPD中的kube-eventer提供容器事件监控能力。
  • NPD (node-problem-detector ) Kubernetes节点诊断的工具,可以将节点的异常,例如Docker Engine Hang Linux Kernel Hang、网络出网异常、文件描述符异常转换为Node的事件,结合kube-eventer可以实现节点事件告警的闭环;
  • kube-eventerACK维护的开源Kubernetes事件离线工具,可以将集群的事件离线到钉钉、SLSEventBridge等系统,并提供不同等级的过滤条件,实现事件的实时采集、定向告警、异步归档。

 

应用场景

 

场景一:使用NPD结合SLSKubernetes事件中心监控集群事件;

场景二:配置NPD集群检查项以及异常事件离线功能;

场景三:使用钉钉实现Kubernetes监控告警:

场景四:使用SLS离线Kubernetes事件;

场景五:使用EventBridge离线Kubernetes事件。

 

 

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
8月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
851 6
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
1218 6
|
11月前
|
运维 安全 数据可视化
日志审查安排工具实战攻略:中小团队如何通过日志审查安排工具建立可控、安全的审查机制?
在审计敏感时代,日志审查安排工具成为安全运维与合规管理的关键利器。它实现审查任务的流程化、周期化与可视化,支持多系统协作、责任到人,确保“可控、可查、可追”的日志治理。工具如板栗看板、Asana、Monday 等提供任务调度、问题闭环与合规对接能力,助力企业构建高效、透明的日志审查体系,提升安全与合规水平。
|
存储 运维 关系型数据库
开源新发布|PolarDB-X v2.4.1 增强企业级运维能力
PolarDB-X 是阿里云推出的云原生分布式数据库,自2021年10月开源以来,持续迭代升级,至2024年4月发布的v2.4.1版本,重点增强了企业级运维能力,如无锁变更、物理扩缩容、数据TTL等,提供金融级高可用、透明分布式、HTAP一体化等特性。PolarDB-X 支持集中式和分布式一体化形态,兼容MySQL生态,适用于金融、通信、政务等行业。
2262 101
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
12月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
307 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
Java Maven Spring
超实用的SpringAOP实战之日志记录
【11月更文挑战第11天】本文介绍了如何使用 Spring AOP 实现日志记录功能。首先概述了日志记录的重要性及 Spring AOP 的优势,然后详细讲解了搭建 Spring AOP 环境、定义日志切面、优化日志内容和格式的方法,最后通过测试验证日志记录功能的准确性和完整性。通过这些步骤,可以有效提升系统的可维护性和可追踪性。
607 1
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
496 3
|
Kubernetes 应用服务中间件 nginx
k8s学习--k8s集群使用容器镜像仓库Harbor
本文介绍了在CentOS 7.9环境下部署Harbor容器镜像仓库,并将其集成到Kubernetes集群的过程。环境中包含一台Master节点和两台Node节点,均已部署好K8s集群。首先详细讲述了在Harbor节点上安装Docker和docker-compose,接着通过下载Harbor离线安装包并配置相关参数完成Harbor的部署。随后介绍了如何通过secret和serviceaccount两种方式让Kubernetes集群使用Harbor作为镜像仓库,包括创建secret、配置节点、上传镜像以及创建Pod等步骤。最后验证了Pod能否成功从Harbor拉取镜像运行。
2989 0

相关产品

  • 容器服务Kubernetes版