阿里云容器服务集群日志和监控 | 学习笔记

简介: 快速学习阿里云容器服务集群日志和监控

开发者学堂课程【企业级运维之云原生与 Kubernets 实战课程:阿里云容器服务集群日志和监控 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/913/detail/14649


阿里云容器服务集群日志和监控

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

 

目录

Ÿ 日志服务简介

Ÿ 日志服务采集

Ÿ 集群监控

 

一、日志服务简介

1. 日志服务是什么?

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

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

image.png

Ÿ 功能

ž 通过 ECS、容器、移动端、开源软件、JS 等接入实时日志数据(例如 Metric. Event、BinLog、TextLog 等)。

ž 提供实时消费接口,与实时计算及服务对接。

Ÿ 用途

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

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

image.png

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

ž 查询:关键词查询、模糊查询、上下文查询、精确查询;

ž 统计: SQL 聚合等丰富的统计手段;

ž 可视化:仪表盘和报表功能;

ž 对接:支持基于 JDBC、SQL92 等协议与 Grafana 产品无缝对接;

Ÿ 用途

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

4. 投递数仓 ( LogShipper )

image.png

Ÿ 功能

ž 稳定可靠的日志投递;

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

Ÿ 用途

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

 

二、日志服务采集

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

a. 启用日志服务组件 Logtail。

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

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

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

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_作为前缀。

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

-name:aliyun logs_{ Logstore 名称}

value:{日志采集路径}

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

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

-name:aliyun_logs_{任意不包含‘_’的名称}

tagsvalue:{ Tag 名}={ Tag 值}

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

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

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

image.png

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

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

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

c. 检查其他注意事项;

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

Ÿ 若下发采集配置后文件没有修改事件,Logtail 则不采集;

Ÿ 采集容器日志文件,只支持采集容器默认存储或挂载到本地的文件,暂不支持其他存储方式;

d. 登录 Logtail 容器排查;

Ÿ 执行 kubectl get po -n kube-system | grep logtail 搜索 Logtail 的 Pod;

Ÿ 执行 kubectl exec -it -n kube-system ****** bash 登录 Pod。

e. 查看 Logtail 的运行日志;

Ÿ 打开 Logtail 容器目录 /usr/local/ilogtail/,查看文件 ilogtail.LOG 和 logtail_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 版中的 Java 及 PHP 应用,可以使用应用实时监控服务 ARMS 对其进行监控,实现自动发现应用拓扑、自动生成 3D 拓扑、自动发现并监控接口、捕获异常事务和慢事务,大幅提升线上问题诊断的效率。

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

开启 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 结合 SLS 的 Kubernetes 事件中心、配置 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-eventer 是 ACK 维护的开源 Kubernetes 事件离线工具,可以将集群的事件离线到钉钉、SLS、EventBridge 等系统,并提供不同等级的过滤条件,实现事件的实时采集、定向告警、异步归档。

应用场景:

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

场景二:配置 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
相关文章
|
5月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
509 122
基于docker搭建监控系统&日志收集
|
5月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
538 1
日志收集和Spring 微服务监控的最佳实践
|
5月前
|
存储 缓存 监控
用 C++ 红黑树给公司电脑监控软件的日志快速排序的方法
本文介绍基于C++红黑树算法实现公司监控电脑软件的日志高效管理,利用其自平衡特性提升日志排序、检索与动态更新效率,并结合实际场景提出优化方向,增强系统性能与稳定性。
167 4
|
10月前
|
监控 测试技术 Go
告别传统Log追踪!GOAT如何用HTTP接口重塑代码监控
本文介绍了GOAT(Golang Application Tracing)工具的使用方法,通过一个Echo问答服务实例,详细展示了代码埋点与追踪技术的应用。内容涵盖初始化配置、自动埋点、手动调整埋点、数据监控及清理埋点等核心功能。GOAT适用于灰度发布、功能验证、性能分析、Bug排查和代码重构等场景,助力Go项目质量保障与平稳发布。工具以轻量高效的特点,为开发团队提供数据支持,优化决策流程。
642 89
|
10月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
619 51
|
9月前
|
自然语言处理 监控 安全
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
阿里云可观测官方发布了Observable MCP Server,提供了一系列访问阿里云可观测各产品的工具能力,包含阿里云日志服务SLS、阿里云应用实时监控服务ARMS等,支持用户通过自然语言形式查询
1282 0
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
|
11月前
|
数据采集 运维 监控
数据采集监控与告警:错误重试、日志分析与自动化运维
本文探讨了数据采集技术从“简单采集”到自动化运维的演进。传统方式因反爬策略和网络波动常导致数据丢失,而引入错误重试、日志分析与自动化告警机制可显著提升系统稳定性与时效性。正方强调健全监控体系的重要性,反方则担忧复杂化带来的成本与安全风险。未来,结合AI与大数据技术,数据采集将向智能化、全自动方向发展,实现动态调整与智能识别反爬策略,降低人工干预需求。附带的Python示例展示了如何通过代理IP、重试策略及日志记录实现高效的数据采集程序。
521 7
数据采集监控与告警:错误重试、日志分析与自动化运维
|
11月前
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
497 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
11月前
|
存储 监控 算法
基于 PHP 语言的滑动窗口频率统计算法在公司局域网监控电脑日志分析中的应用研究
在当代企业网络架构中,公司局域网监控电脑系统需实时处理海量终端设备产生的连接日志。每台设备平均每分钟生成 3 至 5 条网络请求记录,这对监控系统的数据处理能力提出了极高要求。传统关系型数据库在应对这种高频写入场景时,性能往往难以令人满意。故而,引入特定的内存数据结构与优化算法成为必然选择。
296 3
|
6月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1015 108

相关产品

  • 容器服务Kubernetes版