categraf 主配置文件解析

笨鸟先飞@夜莺社区 2025-06-13 10:30:10

内容来自社区热心网友@笨鸟先飞的整理,一份categraf主配置说明。

简介

这份配置文件描述了一个典型的本地化部署的 Categraf Agent:

  • 配置来源: 从本地文件系统加载采集规则 (providers = ["local"])。
  • 数据去向: 将所有采集到的数据通过 Prometheus Remote Write 协议发送到本地的 17000 端口(夜莺服务端)。
  • 核心功能: 心跳功能已启用 (heartbeat.enable = true),因此这个 Agent 可以在夜莺的 Web 界面上被看到和管理。
  • 禁用功能: 远程执行 (ibex)、作为 Prometheus 拉取数据 (prometheus)、暴露自身 metrics 等高级功能均未启用,使其保持为一个纯粹的 PUSH 模式的采集器。
  • 日志方式: Agent 自身的日志直接输出到指定文件中。

简单来说,这是一个功能纯粹、配置清晰的采集代理,专注于根据本地配置采集数据,并将其推送到夜莺服务端。

配置说明

[global]
# 启动的时候是否在stdout中打印配置内容
print_configs = false

# 机器名,作为本机的唯一标识,会为时序数据自动附加一个 agent_hostname=$hostname 的标签
# hostname 配置如果为空,自动取本机的机器名;如果不为空,就使用用户配置的内容作为hostname
# 用户配置的 hostname 字符串中,可以包含变量,目前支持两个变量,
# $hostname 和 $ip,如果字符串中出现这两个变量,就会自动替换
# $hostname 自动替换为本机机器名,$ip 自动替换为本机IP
# 建议使用 --test 做一下测试,看看输出的内容是否符合预期
hostname = "$ip"

# 是否忽略主机名的标签,如果设置为true,时序数据中就不会自动附加 agent_hostname=$hostname 的标签
omit_hostname = false

# 时序数据的时间戳使用ms还是s,默认是ms,是因为remote write协议使用ms作为时间戳的单位
precision = "ms"

# 全局采集频率,15秒采集一次
interval = 15

# 全局附加标签,一行一个,这些写的标签会自动附到时序数据上
# [global.labels]
# region = "shanghai"
# env = "localhost"

# 从哪里加载它的采集插件配置: local / http
# local 表示 Categraf 会从本地的配置文件目录(通常是 conf 目录)中读取所有的采集规则
# http 表示 Categraf 会从指定的 HTTP 端点获取采集规则,与夜莺商业版配合使用
providers = ["local"]

# 并发设置。它控制了每个输入插件(input)可以同时运行多少个采集任务(goroutine)。
# 默认值是CPU核心数 * 10
# -1: 通常意味着使用默认值。
# 这个参数在需要同时探测大量目标时非常有用,比如 ping 或 http_response 插件,可以同时检查上百个 IP 或 URL。
concurrency = -1


# 这部分配置的是 Categraf Agent 自身运行日志的输出方式,而不是它采集的业务日志。
# categraf 自身的日志默认输出到 stdout(标准输出),这在容器化环境中是最佳实践。
[log]

# 不输出到 stdout 或 stderr,而是输出到指定的文件。
# 下面的日志轮转(rotation)参数 max_size, max_age, max_backups, compress 等,只有在日志写入到具体文件时才起作用
file_name = "categraf.log"

# 日志轮转大小,默认是 100MB。
max_size = 100

# max_age是根据文件名中编码的时间戳保留旧日志文件的最大天数。
max_age = 5

# max_backups是要保留的旧日志文件的最大数量。
max_backups = 5

# local_time确定用于格式化备份文件中的时间戳的时间是否是计算机的本地时间
local_time = true

# Compress确定是否应使用gzip压缩轮转的日志文件。
compress = false

# [writer_opt]和[[writers]]这部分定义了采集到的监控数据如何以发送及发送到哪里。
# 数据发送的优化选项
# 发给后端的时序数据,会先被扔到 categraf 内存队列里,每个采集插件一个队列
[writer_opt]
# 将采集到的数据点凑够 1000 个再打包一次性发送,以提高网络效率。
batch = 1000
# 内部数据通道(channel)的容量。这是一个内存缓冲区,如果后端接收服务(夜莺服务端)暂时不可用或处理缓慢,数据会先缓存在内存中,防止丢失
chan_size = 1000000

# 定义后端的接收地址。[[...]] toml语法表示这是一个数组,你可以配置多个 writer,将同一份数据发送到多个后端。
# 每个writer可以有不同的url,不同的basic auth信息
[[writers]]
# 这是数据上报的核心地址。这个地址通常是夜莺服务端的地址。
# 路径 /prometheus/v1/write 表明它使用的是 Prometheus Remote Write 协议,这是夜莺接收 remote write 数据的 urlpath。
url = "http://127.0.0.1:17000/prometheus/v1/write"

# TLS 认证相关配置项
# tls_min_version = "1.2"
# tls_ca = "/etc/categraf/ca.pem"
# tls_cert = "/etc/categraf/cert.pem"
# tls_key = "/etc/categraf/key.pem"
## Use TLS but skip chain & host verification
# insecure_skip_verify = true

# Basic auth username,如果时序库开启了 Basic Auth 认证,这里需要填写用户名。
basic_auth_user = ""

# Basic auth password,如果时序库开启了 Basic Auth 认证,这里需要填写密码。
basic_auth_pass = ""

## 调用时序库时的 HTTP 请求头部信息。格式是 Key1, Value1, Key2, Value2
# headers = ["X-From", "categraf", "X-Xyz", "abc"]

# 发送数据的 HTTP 请求超时时间为 5000 毫秒(5秒)。
timeout = 5000
dial_timeout = 2500
max_idle_conns_per_host = 100

# 这部分配置是让 Categraf 监听一个端口,通常用于接收其他系统(如自定义的 cron 脚本)推送的数据。
# 支持多种数据接收协议,具体参考:https://github.com/flashcatcloud/categraf/blob/main/api/server.go#L73
# 注意,categraf 的 HTTP 服务不会暴露 /metrics 接口,如果你想采集 categraf 自身的指标数据,需要使用 input.self_metrics 插件
# input.self_metrics 插件会自动采集 Categraf 自身的指标数据,并将其发送到夜莺服务端。
[http]
# 如果启用 (enable = true),Categraf 会在 9100 端口上启动一个 HTTP 服务
enable = false
address = ":9100"
print_access = false
run_mode = "release"
ignore_hostname = false
agent_host_tag = ""
ignore_global_labels = false

# 任务下发模块,即夜莺中的告警自愈功能
# 夜莺老版本的告警自愈功能是依赖 ibex 模块来实现的。新版本已经把 ibex 功能直接集成到夜莺 n9e 的二进制中了,所以不需要单独部署 ibex 了
[ibex]
# 如果启用,Categraf 将使用 RPC 方式连接到 ibex 服务端(即夜莺服务端),从而可以接收并执行从夜莺 Web 界面下发的脚本任务。
enable = false
## 维持默认不用改
interval = "1000ms"
## 这里的地址要改成夜莺的服务端地址,默认情况下,夜莺服务端监听的 RPC 端口是 20090。
servers = ["127.0.0.1:20090"]
## 维持默认不用改
meta_dir = "./meta"

# 心跳模块
# 这是 Agent 向服务端 "报活" 的关键功能。
# 心跳内容: 心跳包会携带一些主机的元数据,如操作系统版本、CPU、内存等信息。这些信息会展示在夜莺的机器列表中,用于资产管理和概览。
[heartbeat]
# 这是 Agent 能在夜莺“机器列表”中出现的保证。
enable = true

# 心跳上报的地址,同样指向了夜莺的 17000 端口,/v1/n9e/heartbeat 是夜莺服务端处理心跳的接口。
url = "http://127.0.0.1:17000/v1/n9e/heartbeat"

# 每 10 秒发送一次心跳。
interval = 10

# 夜莺配置文件中 ForAgent 部分如果开启了认证,basic_auth_user 和 basic_auth_pass 需要填写相应的用户名和密码。
basic_auth_user = ""
basic_auth_pass = ""

## Optional headers
# headers = ["X-From", "categraf", "X-Xyz", "abc"]

# timeout settings, unit: ms
timeout = 5000
dial_timeout = 2500
max_idle_conns_per_host = 100

# 这部分配置 Categraf 作为 Prometheus Agent 的能力。
[prometheus]
# 如果启用,Categraf 将具备类似 Prometheus 的 "pull"(拉取)模式的能力。
# 它可以读取一个 Prometheus 格式的配置文件(其中配置了 Scrape 的目标地址),然后主动去各个 Exporter(如 node-exporter)拉取指标
enable = false
scrape_config_file = "/path/to/in_cluster_scrape.yaml"
## 日志级别, debug warn info error
log_level = "info"
## 文件存储路径,默认值 ./data-agent
# wal_storage_path = "/path/to/storage"
## wal保留时间,默认值为2小时
# wal_min_duration = 2

联系我们交流

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat