夜莺-Nightingale
夜莺V7
项目介绍 功能概览
部署升级 部署升级
数据接入 数据接入
告警管理 告警管理
数据查看 数据查看
功能介绍 功能介绍
API FAQ
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第9章:Prometheus Operator
参考资料

夜莺监控对接 Categraf 采集器

Categraf 是一个可以采集指标和日志的 agent,部署到所有待监控的目标机器上。Categraf 可以采集指标和日志,指标推给夜莺,日志推给 Kafka。我们推荐使用 Categraf 作为夜莺监控的采集器。

Categraf 对接夜莺

关键是两个配置项(Categraf 的 conf 目录下的 config.toml),一个是 heartbeat 配置,一个是 writer 配置。

  • Categraf 周期性向夜莺发送心跳,即调用夜莺的 heartbeat 接口,上报本机的元信息。之后可以在夜莺的机器列表里看到机器,点击机器会展示这些元信息。
  • Categraf 根据 conf 目录下各个 input. 打头的插件配置,采集监控指标数据,然后通过 Prometheus remote write 协议,将指标数据推送给夜莺,即夜莺的 /prometheus/v1/write 接口。

具体配置项如下。

配置

Categraf 的配置文件: conf/config.toml,关键配置如下。更详细的配置请参看这里

[writer_opt]
# default: 2000
batch = 2000
# channel(as queue) size
chan_size = 10000

[[writers]]
### !!!! 这里就是夜莺的 Prometheus remote write 接口 !!!!###
### 如果是边缘模式,请改为边缘机房的 n9e-edge 地址 ###
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

### !!!! 这里就是夜莺的 heartbeat 接口 !!!!###
### 如果是边缘模式,请改为边缘机房的 n9e-edge 地址 ###
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

FAQ

Categraf writer url 可以配置为时序库吗?

可以,writer url 是可以配置为任何支持 Prometheus remote write 协议的时序库,比如 Prometheus、VictoriaMetrics、Thanos、Cortex 等。但是,这样一来,Categraf 采集的监控数据就不流经夜莺了,夜莺里给机器打的标签就没法附加到时序数据上了。告警自愈功能也会受影响。

Categraf heartbeat 和 writer 可以关闭或直接推给时序库吗?

  • 如果 writer 和 heartbeat 都关闭了或没有发给夜莺,夜莺的机器列表里就看不到这个机器了
  • 如果 writer 发给夜莺,heartbeat 关闭了,夜莺的机器列表里可以看到这个机器,但是看不到元信息,表格里看到一堆 unknown 字段
  • 如果 heartbeat 发给夜莺,writer 关闭了或发给其他时序库了,夜莺的机器列表里可以看到这个机器和元信息,但是指标没有流经夜莺,所以无法给机器相关的指标附加标签(机器列表里给机器附加的标签可以最终附加到指标上),也会影响告警自愈。
  • 通常,heartbeat 和 writer 都应该配置为夜莺的地址,这样才最方便

可以这么理解:

  • 如果用了夜莺和 Categraf,Categraf 的 heartbeat 和 writer 都应该发给夜莺
  • 如果不想用夜莺,只想用 Categraf 的采集能力,可以关闭 heartbeat,把 writer 发给其他时序库

习惯了使用 Exporter,Categraf 还需要吗?

我们建议,机器相关的监控指标至少使用 Categraf 采集,机器元信息使用 Categraf 上报,Categraf 和夜莺对接还能实现脚本下发告警自愈能力。

至于 MySQL、Redis、Oracle、ElasticSearch、Kafka 等各类监控对象的数据采集,您也可以使用 Categraf,也可以使用您熟悉的其他采集器。

Categraf 如何监控多个目标?

比如有多个 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",
]
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat
Flashduty
Flashduty