<返回更多

Ops Agent 第三方应用配置实践

2022-09-09    MeshCloud脉时云
加入收藏

作者:MeshCloud脉时云公有云架构师许多杰

引言

Ops Agent google Cloud Compute Engine 中将日志记录和指标组合到单个代理中,提供了用于收集日志和指标的基于 YAML 的配置,并具有高吞吐量日志记录功能,并且可以配置 Ops Agent 以从受支持的第三方应用收集日志和指标。

 

整体架构

 

技术简介

将 Ops Agent下载到 Compute Engine中,采用Ops Agent 自定义配置的方式,修改配置文件以覆盖默认的内置配置文件。在Ops Agent配置文件中通过手动设置receivers、processors和service,以达到我们收集指定第三方应用log和metric的目的。

 

Ops agent 自定义配置介绍

  1. 配置模型

Ops Agent 使用内置默认配置;您无法直接修改此内置配置。但是,您可以创建包含替换内容的文件,代理重启时这些替换内容会与内置配置合并。

 

配置的构成要素如下:

内置配置由这些元素组成,我们可以使用相同的元素来替换该内置配置。

每个接收器和每个处理器都可以用于多个流水线。

 

  1. 内置配置

Ops Agent 的内置配置定义了日志和指标的默认收集。下面显示了适用于 linuxwindows 的内置配置:默认情况下,Ops Agent 会收集基于文件的 syslog 日志和主机指标。

logging:
  receivers:
    syslog:
      type: files
      include_paths:
      - /var/log/messages
      - /var/log/syslog
  service:
    pipelines:
      default_pipeline:
        receivers: [syslog]
metrics:
  receivers:
    hostmetrics:
      type: hostmetrics
      collection_interval: 60s
  processors:
    metrics_filter:
      type: exclude_metrics
      metrics_pattern: []
  service:
    pipelines:
      default_pipeline:
        receivers: [hostmetrics]
        processors: [metrics_filter]

 

  1. 用户指定的配置

如需替换内置配置,您需要向用户配置文件添加新配置元素。将您的 Ops Agent 配置放在以下文件中:

用户指定的配置将在代理重启时与内置配置合并。

 

如需替换内置接收器、处理器或流水线,请使用相同的标识符在 config.yaml 文件中重新定义它。

例如,指标的内置配置包含一个指定 60 秒收集时间间隔的 hostmetrics 接收器。如需将主机指标的收集时间间隔更改为 30 秒,请在 config.yaml 文件中添加名为 hostmetrics 的指标接收器,并将 collection_interval 值设置为 30 秒,如以下示例所示:

metrics:
  receivers:
    hostmetrics:
      type: hostmetrics
      collection_interval: 30s

 

  1. 日志记录接收器

receivers 元素包含一组接收器,每个接收器由有 RECEIVER_ID 标识,,并包含一个 type 元素。接收器描述如何检索日志;例如,通过跟踪文件、使用 TCP 端口或者从 Windows 事件日志检索。

 

  1. 日志记录处理器

可选的 processors 元素包含一组处理指令,每个指令均由 PROCESSOR_ID 标识,并包含一个 type 元素。处理器描述如何操作接收器收集的信息。

 

  1. 日志记录服务

日志记录服务可自定义 Ops Agent 自己的日志的详细程度,并将日志记录接收器和处理器同时连接到流水线中。service 部分包含两个元素:log_level 和 pipelines。

 

Ops Agent & Nginx配置实践

  1. 概述

nginx 集成会收集连接指标和访问日志。连接指标可捕获连接的当前状态:活动、读取或等待。系统会根据连接详情解析访问日志,其中包括映射到请求、客户端、服务器和消息的字段。

 

  1. 前提

必须在 nginx 配置文件中启用 stub_status 模块,以设置在本地可访问的网址,例如,为状态页面设置
http://www.example.com/status。

server {
    listen 80;
    server_name 127.0.0.1;
    location /status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
    location / {
       root /dev/null;
    }
}

 

  1. 为 nginx 配置 Ops Agent

以下命令会创建配置文件,以收集和注入 nginx 的日志和指标,并在 Linux 上重启 Ops Agent。

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF

logging:
  receivers:
    nginx_access:
      type: nginx_access
      include_paths:
      - /var/log/nginx/access.log
    nginx_error:
      type: nginx_error
      include_paths:
      - /var/log/nginx/error.log

  processors:
    parse_json:
      type: parse_json
    set_http_request:
      type: modify_fields
      fields:
        httpRequest.status:
          move_from: jsonPayload.http_status
          type: integer
        httpRequest.requestUrl:
          move_from: jsonPayload.path
        httpRequest.referer:
          move_from: jsonPayload.referer
          omit_if: jsonPayload.referer = "-"
  service:
    pipelines:
      nginx:
        receivers:
          - nginx_access
          - nginx_error
        processors: [parse_json, set_http_request]
         
metrics:
  receivers:
    nginx:
      type: nginx
      stub_status_url: http://127.0.0.1:80/status
  service:
    pipelines:
      nginx:
        receivers:
          - nginx

EOF

sudo service google-cloud-ops-agent restart

 

  1. 测试验证

重启代理后,通过测试请求验证,在 Cloud Logging中观察获取到的日志

 


 

Ops Agent & MySQL配置实践

MySQL 集成会收集与 InnoDB、缓冲池和各种其他操作相关的性能指标。它还会收集常规、错误和慢查询日志,并将其解析为 JSON 载荷。错误日志会被解析为其错误代码和子系统。慢查询日志会被解析为描述查询性能的键值对,包括查询时间和检查的行。

  1. 配置示例
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF

logging:
  receivers:
    mysql_error:
      type: mysql_error
    mysql_general:
      type: mysql_general
    mysql_slow:
      type: mysql_slow
  service:
    pipelines:
      mysql:
        receivers:
          - mysql_error
          - mysql_general
          - mysql_slow
metrics:
  receivers:
    mysql:
      type: mysql
  service:
    pipelines:
      mysql:
        receivers:
          - mysql
EOF

sudo service google-cloud-ops-agent restart

 

  1. 以mysql_general 为例,日志包含 LogEntry 中的以下字段:

字段

类型

说明

jsonPayload.tid

数字

日志源自的线程 ID

jsonPayload.command

字符串

要记录的数据库操作的类型

jsonPayload.message

字符串

数据库操作的日志

timestamp

字符串 (Timestamp)

记录条目的时间

 

  1. Insert 测试

 

Ops Agent & Apache Kafka配置实践

Apache Kafka 集成会收集代理指标,例如主题请求数和失败数。它还会监控代理上的分区。此外,该集成还会收集 Kafka 日志并将其解析为 JSON 载荷。结果将包含日志记录器、级别和消息字段。

  1. 配置示例
logging:
  receivers:
    kafka:
      type: kafka
      include_paths: 
      - /tmp/kafka-logs/*
  service:
    pipelines:
      kafka:
        receivers:
          - kafka
metrics:
  receivers:
    kafka:
      type: kafka
  service:
    pipelines:
      kafka:
        receivers:
          - kafka

 

  1. 记录的内容

kafka 日志的 logName 派生自配置中指定的接收器 ID。LogEntry 中的详细字段如下所示。

字段

类型

说明

jsonPayload.source

字符串

发起日志的模块和/或线程。

jsonPayload.logger

字符串

发起日志的日志记录器的名称。

jsonPayload.message

字符串

日志消息,包括详细的堆栈轨迹(如果提供)。

severity

字符串 (LogSeverity)

日志条目级别(已转换)。

timestamp

字符串 (Timestamp)

收到请求的时间。

任何空白或缺失的字段都不会出现在日志条目中。

  1. 测试

 

 

常见问题

日志记录方面:无需任何设置即可收集的标准系统日志(用于 Linux 的 /var/log/syslog 和 /var/log/messages,以及 Windows 事件日志)。

监控方面:无需任何设置即可收集的系统指标。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>