如何通过gcloud-ops-agent按容器名传输Docker日志至GCP日志UI
使用gcloud-ops-agent按容器名区分Docker日志到GCP日志UI
1. 安装gcloud-ops-agent
如果尚未安装,执行以下命令完成安装:
curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh sudo bash add-google-cloud-ops-agent-repo.sh --also-install
2. 配置日志采集规则
编辑Ops Agent的配置文件/etc/google-cloud-ops-agent/config.yaml,添加Docker日志采集规则并配置容器名识别:
logging: receivers: docker_container: type: docker # 匹配所有Docker容器日志文件 include_paths: - /var/lib/docker/containers/*/*-json.log # 开启日志文件路径记录,用于提取容器信息 record_log_file_path: true processors: # 解析Docker日志的JSON格式 parse_docker_json: type: parse_json field: "jsonPayload" time_key: "time" time_format: "%Y-%m-%dT%H:%M:%S.%LZ" # 从日志文件路径提取容器ID,Ops Agent会自动映射为容器名称 add_container_label: type: modify_fields fields: resource.labels.container_name: from: "log_file_path" pattern: "/var/lib/docker/containers/([0-9a-f]+)/.*" rewrite: "$1" service: pipelines: docker_logs: receivers: [docker_container] processors: [parse_docker_json, add_container_label]
注:如果你的Docker日志JSON payload中已包含
container_name字段,可直接将resource.labels.container_name的from值改为jsonPayload.container_name,跳过ID到名称的映射步骤。
保存配置后,重启Ops Agent使配置生效:
sudo systemctl restart google-cloud-ops-agent
3. 在GCP日志UI中按容器名过滤
登录GCP日志控制台后,使用以下查询语句快速筛选指定容器的日志:
resource.type="gce_instance" resource.labels.container_name="your-container-name"
也可以直接通过日志条目中的字段过滤:
jsonPayload.container_name="your-container-name"
此方案会将每个容器的日志与对应的容器名绑定,在日志UI中可直接按容器名区分筛选,解决了之前gcplogs-docker-driver日志集中展示的问题。
内容的提问来源于stack exchange,提问作者Vinay Mann
相关产品推荐
相关产品推荐

