计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
文档首页/ 云容器引擎 CCE/ 用户指南/ 云原生观测/ 日志中心/ 收集容器日志/ 通过ICAgent采集容器日志(不推荐)

通过ICAgent采集容器日志(不推荐)

更新时间:2025-02-18 GMT+08:00

CCE配合AOM收集工作负载的日志,在创建节点时会默认安装AOM的ICAgent(在集群kube-system命名空间下名为icagent的DaemonSet),ICAgent负责收集工作负载的日志并上报到AOM,您可以在CCE控制台和AOM控制台查看工作负载的日志。

约束与限制

ICAgent只采集*.log、*.trace和*.out类型的文本日志文件。

费用说明

AOM每月赠送每个账号500M免费日志采集额度,超过免费额度部分将产生费用(了解计费详情)。当前日志使用情况请点此查看

使用ICAgent采集日志

在工作负载中可以单独配置日志采集策略,此策略需要使用ICAgent。

  1. 在CCE中创建工作负载时,在配置容器信息时可以设置容器日志。
  2. 单击添加日志策略。

    以nginx为例,不同工作负载根据实际情况配置。
    图1 添加日志策略

  3. 存储类型有“主机路径”“容器路径”两种类型可供选择:

    表1 配置日志策略

    参数

    参数说明

    存储类型

    • 主机路径:HostPath模式,将主机路径挂载到指定的容器路径(挂载路径)。用户可以在节点的主机路径中查看到容器输出在挂载路径中的日志信息。
    • 容器路径:EmptyDir模式,将节点的临时路径挂载到指定的路径(挂载路径)。临时路径中存在的但暂未被采集器上报到AOM的日志数据在Pod实例删除后会消失。

    主机路径

    请输入主机的路径,如:/var/paas/sys/log/nginx

    挂载路径

    请输入数据存储要挂载到容器上的路径,如:/tmp
    须知:
    • 请不要挂载到系统目录下,如“/”、“/var/run”等,否则会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,工作负载创建失败。
    • 挂载高危目录的情况下 ,建议使用低权限账号启动,否则可能会造成宿主机高危文件被破坏。
    • AOM只采集最近修改过的前20个日志文件,且默认采集两级子目录。
    • AOM只采集挂载路径下的“.log”、“.trace”、“.out”文本日志文件。
    • 容器中挂载点的权限设置方法,请参见为Pod或容器配置安全性上下文

    主机扩展路径

    “主机路径”类型需要填写

    通过实例的ID或者容器的名称扩展主机路径,实现同一个主机路径下区分来自不同容器的挂载。

    会在原先的“卷目录/子目录”中增加一个三级目录。使用户更方便获取单个Pod输出的文件。

    • None:不配置拓展路径。
    • PodUID:Pod的ID。
    • PodName:Pod的名称。
    • PodUID/ContainerName:Pod的ID/容器名称。
    • PodName/ContainerName:Pod名称/容器名称。

    采集路径

    设置采集路径可以更精确的指定采集内容,当前支持以下设置方式:

    • 不设置则默认采集当前路径下.log .trace .out文件
    • 设置**表示递归采集5层目录下的.log .trace .out文件
    • 设置*表示模糊匹配

    例子: 采集路径为/tmp/**/test*.log表示采集/tmp目录及其1-5层子目录下的全部以test开头的.log文件。

    注意:

    使用采集路径功能请确认您的采集器ICAgent版本为5.12.22或以上版本。

    日志转储

    此处日志转储是指日志的本地绕接。

    • 设置:AOM每分钟扫描一次日志文件,当某个日志文件超过50MB时会对其转储(转储时会在该日志文件所在的目录下生成一个新的zip文件。对于一个日志文件,AOM只保留最近生成的20个zip文件,当zip文件超过20个时,时间较早的zip文件会被删除)。
    • 不设置:若您在下拉列表框中选择“不设置”,则AOM不会对日志文件进行转储。
    说明:
    • AOM的日志绕接能力是使用copytruncate方式实现的,如果选择了设置,请务必保证您写日志文件的方式是append(追加模式),否则可能出现文件空洞问题。
    • 当前主流的日志组件例如Log4j、Logback等均已经具备日志文件的绕接能力,如果您的日志文件已经实现了绕接能力,则无需设置。否则可能出现冲突。
    • 建议您的业务自己实现绕接,可以更灵活的控制绕接文件的大小和个数。

  4. 单击“确,并完成创建工作负载。

YAML示例(ICAgent)

您可以通过在YAML定义的方式设置容器日志存储路径。

如下所示,使用EmptyDir挂载到容器的“/var/log/nginx”路径下,这样ICAgent就会采集容器“/var/log/nginx”路径下的日志。其中policy字段是CCE自定义的字段,能够让ICAgent识别并采集日志。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testlog
  namespace: default
spec:
  selector:
    matchLabels:
      app: testlog
  template:
    replicas: 1
    metadata:
      labels:
        app: testlog
    spec:
      containers:
        - image: 'nginx:alpine'
          name: container-0
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
            limits:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: vol-log
              mountPath: /var/log/nginx
              policy:
                logs:
                  rotate: ''
      volumes:
        - emptyDir: {}
          name: vol-log
      imagePullSecrets:
        - name: default-secret

使用HostPath方法如下所示,相比EmptyDir就是volume的类型变成hostPath,且需要配置hostPath在主机上的路径。下面示例中将主机上“/tmp/log”挂载到容器的“/var/log/nginx”路径下,这样ICAgent就会采集容器“/var/log/nginx”路径下的日志,且日志还会在主机的“/tmp/log”路径下存储。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testlog
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: testlog
  template:
    metadata:
      labels:
        app: testlog
    spec:
      containers:
        - image: 'nginx:alpine'
          name: container-0
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
            limits:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: vol-log
              mountPath: /var/log/nginx
              readOnly: false
              extendPathMode: PodUID
              policy:
                logs:
                  rotate: Hourly
                  annotations:
                    pathPattern: '**'
                    format: ''
      volumes:
        - hostPath:
            path: /tmp/log
          name: vol-log
      imagePullSecrets:
        - name: default-secret
表2 关键参数解释

参数

解释

说明

extendPathMode

主机扩展路径

通过实例的ID或者容器的名称扩展主机路径,实现同一个主机路径下区分来自不同容器的挂载。

会在原先的“卷目录/子目录”中增加一个三级目录。使用户更方便获取单个Pod输出的文件。

  • None:不配置拓展路径。
  • PodUID:Pod的ID。
  • PodName:Pod的名称。
  • PodUID/ContainerName:Pod的ID/容器名称。
  • PodName/ContainerName:Pod名称/容器名称。

policy.logs.rotate

日志转储

此处日志转储是指日志的本地绕接。

  • 设置:AOM每分钟扫描一次日志文件,当某个日志文件超过50MB时,会立即对其转储(转储时会在该日志文件所在的目录下生成一个新的zip文件。对于一个日志文件,AOM只保留最近生成的20个zip文件,当zip文件超过20个时,时间较早的zip文件会被删除),转储完成后AOM会将该日志文件清空。
  • 不设置:若您在下拉列表框中选择“不设置”,则AOM不会对日志文件进行转储。
说明:
  • AOM的日志绕接能力是使用copytruncate方式实现的,如果选择了设置,请务必保证您写日志文件的方式是append(追加模式),否则可能出现文件空洞问题。
  • 当前主流的日志组件例如Log4j、Logback等均已经具备日志文件的绕接能力,如果您的日志文件已经实现了绕接能力,则无需设置。否则可能出现冲突。
  • 建议您的业务自己实现绕接,可以更灵活的控制绕接文件的大小和个数。

policy.logs.annotations.pathPattern

采集路径

设置采集路径可以更精确的指定采集内容,当前支持以下设置方式:

  • 不设置则默认采集当前路径下.log .trace .out文件
  • 设置**表示递归采集5层目录下的.log .trace .out文件
  • 设置*表示模糊匹配

例子: 采集路径为/tmp/**/test*.log表示采集/tmp目录及其1-5层子目录下的全部以test开头的.log文件。

注意:

使用采集路径功能请确认您的采集器ICAgent版本为5.12.22或以上版本。

policy.logs.annotations.format

多行日志匹配

有些程序打印的日志存在一条完整的日志数据跨占多行(例如 Java 程序日志)情况,日志采集系统默认是按行采集。如果您想在日志采集系统中按整条显示日志,可以开启多行日志,采用时间或正则匹配的方式,当某行日志匹配上预先设置的时间格式或正则表达式,就认为是一条日志的开头,而下一个行首出现作为该条日志的结束标识符。

格式如下

{
    "multi": {
        "mode": "time",
        "value": "YYYY-MM-DD hh:mm:ss"
    }
}

multi表示分行模式:

  • time:日志时间,请输入时间通配符。时间通配符填写参考示例:如日志中的时间是2017-01-01 23:59:59,按照规则应该填写:YYYY-MM-DD hh:mm:ss。
  • regular:正则模式,请输入正则表达式。

查看日志

日志采集路径配置和工作负载创建完成后,若已配置的路径下存在日志文件,则ICAgent会从已配置的路径中采集日志文件,采集大概需要1分钟,请您耐心等待。

待采集完成后,进入工作负载详情页,单击右上角的“日志”按钮查看日志详情。

您还可以在AOM控制台查看日志。

另外您还可以使用kubectl logs命令查看容器的标准输出,具体如下所示。

# 查看指定pod的日志
kubectl logs <pod_name>
kubectl logs -f <pod_name> #类似tail -f的方式查看

# 查看指定pod中指定容器的日志
kubectl logs <pod_name> -c <container_name>

kubectl logs pod_name -c container_name -n namespace (一次性查看)
kubectl logs -f <pod_name> -n namespace (tail -f方式实时查看)

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容