Categraf
On this page
Categraf 是一个可以采集指标和日志的代理。Categraf 使用 prometheus remote write
作为指标数据推送协议,因此可以将指标推送到夜莺,日志的话,Categraf 是对接写给 Kafka。
配置
Categraf 的配置文件: conf/config.toml
[writer_opt]
# default: 2000
batch = 2000
# channel(as queue) size
chan_size = 10000
[[writers]]
url = "http://N9E:17000/prometheus/v1/write"
# Basic auth username
basic_auth_user = ""
# Basic auth password
basic_auth_pass = ""
# timeout settings, unit: ms
timeout = 5000
dial_timeout = 2500
max_idle_conns_per_host = 100
[heartbeat]
enable = true
# report os version cpu.util mem.util metadata
url = "http://N9E:17000/v1/n9e/heartbeat"
# interval, unit: s
interval = 10
# Basic auth username
basic_auth_user = ""
# Basic auth password
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 采集机器的 CPU、内存等常规指标,因为 Categraf 和夜莺的对接最为丝滑。Categraf 会自动采集机器的元信息并且和夜莺对接提供告警自愈能力。
至于 MySQL、Redis、Oracle、ElasticSearch、Kafka 等各类监控对象的数据采集,您也可以使用 Categraf,也可以使用您熟悉的其他采集器。
边缘模式
如果您采用了夜莺的边缘模式,即在某个边缘机房部署了 n9e-edge 组件,那边缘机房的 Categraf 就可以直接将数据推送到边缘机房的 n9e-edge 组件上,不需要推送到中心机房的夜莺。即:Categraf 配置文件中的 writer 和 heartbeat 的两个 url 都改为边缘机房的 n9e-edge 地址即可。
FAQ
1.如何监控多个目标?
比如有多个 MySQL 实例要监控,或者有多个进程要监控,应该如何配置?
Categraf 大部分插件的样例配置里都有一个 [[instances]]
的配置段,但凡有这个配置段的插件,就可以通过增加 [[instances]]
来监控多个目标。Categraf 的配置文件是 toml 格式,双中括号表示数组。比如 MySQL 插件的配置样例:
[[instances]]
address = "10.1.2.3:3306"
username = "categraf"
password = "XXXXXXXX"
labels = { instance="n9e-mysql-01" }
[[instances]]
address = "10.1.2.4:3306"
username = "categraf"
password = "XXXXXXXX"
labels = { instance="n9e-mysql-02" }
再比如进程监控插件 procstat 的配置样例:
[[instances]]
search_exec_substring = "mysqld"
gather_total = true
gather_per_pid = true
gather_more_metrics = [
"threads",
"fd",
"io",
"uptime",
"cpu",
"mem",
"limit",
]
[[instances]]
search_exec_substring = "n9e-plus"
gather_total = true
gather_per_pid = true
gather_more_metrics = [
"threads",
"fd",
"io",
"uptime",
"cpu",
"mem",
"limit",
]
🎯 由于读者水平参差不齐,重口难调,社区小伙伴一直在持续更新优化文档内容,如果您觉得本页文档内容有误或不够完善,欢迎您参与到文档的编写中来,点击下方的 Edit this page on GitHub 即可编辑 👇