夜莺-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
参考资料

数据推送

在 采集器 章节可以看出,夜莺支持多种数据接收的接口,包括 OpenTSDB、Open-Falcon、RemoteWrite、Datadog 等协议。这节我们以 OpenTSDB 的数据接收接口举例。

认证

推送数据的时候,一般内网不需要开启认证,如果要走公网,就要开认证+HTTPS了。认证走的是 BasicAuth,在夜莺的配置文件中找到下面的区块:

[HTTP.Pushgw]
Enable = true 
# [HTTP.Pushgw.BasicAuth]
# user001 = "ccc26da7b9aba533cbb263a36c07dcc5"

user001 是 BasicAuth 的 username,后面的字符串是 password,默认是注释的,开启 BasicAuth 的方法很简单,打开注释就可以了。不过一定要修改一下 username 和 password,别用默认的,太危险了。

OpenTSDB 协议

OpenTSDB 的数据接收接口的 Url Path 是 /opentsdb/put ,POST 方法,监控数据做成 JSON 放到 HTTP Request Body 中,举例:

[
	{
		"metric": "cpu_usage_idle",
		"timestamp": 1637732157,
		"tags": {
			"cpu": "cpu-total",
			"ident": "c3-ceph01.bj"
		},
		"value": 30.5
	},
	{
		"metric": "cpu_usage_util",
		"timestamp": 1637732157,
		"tags": {
			"cpu": "cpu-total",
			"ident": "c3-ceph01.bj"
		},
		"value": 69.5
	}
]

显然,JSON 最外层是个数组,如果只上报一条监控数据,也可以不要外面的中括号,直接把对象结构上报:

{
	"metric": "cpu_usage_idle",
	"timestamp": 1637732157,
	"tags": {
		"cpu": "cpu-total",
		"ident": "c3-ceph01.bj"
	},
	"value": 30.5
}

服务端会看第一个字符是否是[,来判断上报的是数组,还是单个对象,自动做相应的 Decode。如果觉得上报的内容太过占用带宽,也可以做 gzip 压缩,此时上报的数据,要带有Content-Encoding: gzip的 Header。

💡 注意 ident 这个标签,ident 是 identity 的缩写,表示设备的唯一标识,如果标签中有 ident 标签,n9e 就认为这个监控数据是来自某个机器的,会自动获取 ident 的 value,注册到监控对象的列表里。

RemoteWrite 协议

除了 OpenTSDB 协议,另一个比较常用的是 RemoteWrite 协议,Categraf、Grafana-Agent 写数据给 n9e 都是走的 RemoteWrite 协议,接口地址是 /prometheus/v1/write

推给客户端

除了把监控数据推给 n9e 之外,还可以把监控数据通过接口推给 Categraf,Categraf 再推给 n9e,我们也更推荐这种方式。Categraf 支持四类推送方式,代码在这里

  • /api/push/opentsdb 走的是 OpenTSDB 的传输协议
  • /api/push/openfalcon 走的是 Open-Falcon 的传输协议
  • /api/push/remotewrite 走的是 Prometheus RemoteWrite 的传输协议,使用 Protobuf 编码
  • /api/push/pushgateway 走的是 Prometheus Pushgateway 的传输协议,文本的传输协议

这些接口都是走的HTTP协议,如果要走通,需要启用Categraf的http配置段,把http.enable设置为true,默认监听的端口是 9100。

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