4月 262019
 

zabbix能够以多种不同的方式(推/拉)从各种数据源收集数据,包括JMX,SNMP,WMI,HTTP / HTTPS,RestAPI,XML Soap,SSH,Telnet,代理,脚本和其他数据源。4.2版本支持了Prometheus数据源,同时可使用PromQL语言。使用单个HTTP调用获取所有数据,通过依赖指标高效的收集大量的Prometheus指标,然后仅将其用于相关指标监控,还可以将Prometheus数据转换为JSON格式,直接用于低级别发现。

Prometheus Exporter

Prometheus提供了基本的采集客户端称为: Exporter,下载对应的Exporter运行,采集指标通过http暴露。已采集主机信息的node_exporter为例

安装

以Linux node_exporter为例
下载并运行

wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar zxvf node_exporter-0.17.0.linux-amd64.tar.gz
cd node_exporter-0.17.0.linux-amd64
./node_exporter

启动之后可以看到


表示启动成功,访问http://Ip:9100/metrics 可以看到所有采集的Metrics

Prometheus 数据结构

通过http可以看到所有的Metrics,Metrics按照一定的数据格式排列

主要分为几种:

帮助

以#号开头HELP 表示对Metrics的帮助,前面为指标名称 空格厚为说明

类型

以#号开头的TYPE 表示了指标的类型,前面为指标名称 空格后为类型
四种类型如下

指标类型描述说明
Counter只增不减的计数器,其值只能增加或在重启时重置为零例如,您可以使用计数器来表示服务的总请求数,已完成的任务或错误总数
Gauge用来存放一个可以任意变大变小的数值例如温度或当前内存使用情况,或者运行的goroutine数量
Histogram主要用于表示一段时间范围内对数据进行采样通常我们用它计算分位数的直方
Summary客户端定义的数据分布统计图统计事件发生的次数或者大小,以及其分布情况

Counter和Gauge最为常用

Metirc

Metric分为几个部分

集成Prometheus

Prometheus的Exporter为http方式,因此需要使用Zabbix的http采集。可使用Zabbix的Dependent items做到一次采集所有指标。用于Prometheus较为通用化,建议配置独立的模版。
建立一个模版,配置如下宏变量,地址为node_exporter的地址

添加一个Master tem,主要配置如下

关键配置

Metric地址配置为宏

配置好之后如下

一般采集

配置好之后,配置一个操作系统Load5的Item


配置之后要配置数据预处理,策略如下,parameters为Metric name

配置之后关联到主机,之后查看数据,已经采集

低级别发现

在zabbix agent中,采用LLD可实现自动发现磁盘空间,网卡等不定项的指标,使用Prometheus也可以实现LLD。如下配置自动发现网卡流量
配置自动发现规则


配置数据预处理


这里使用通配符,获取所有网卡,支持的通配符可以查看https://www.zabbix.com/documentation/4.2/manual/config/items/itemtypes/prometheus#Query%20language%20comparison

复制Metric(完成的metric,包括value),点击test,如没有错误,下方会出现json,如提示错误,表示规则配置有问题。复制Json文本,格式化之后如下

根据Json格式配置如下宏,提取lables里的interface即网卡名称作为宏

配置如下过滤规则,过滤lo网卡


网卡分为发送和接收2个方向,因此需要创建2个基本的Item发现原型
配置网卡接收Item原型

node_exporter的网卡接收Metrics如下

# HELP node_network_receive_bytes_total Network device statistic receive_bytes.
# TYPE node_network_receive_bytes_total counter
node_network_receive_bytes_total{device="enp0s3"} 5.703155e+06
node_network_receive_bytes_total{device="enp0s8"} 6.303864e+06
node_network_receive_bytes_total{device="lo"} 3.00503e+07

配置数据预处理,如图

配置Prometheus pattern参数配置为

node_network_receive_bytes_total{device="{#INTERFACE}}

由于网卡流量为bytes,Metric类型counter,因此需要选择方式进行处理,将网卡流量处理为bps。同样方法配置网卡发送Item原型如下图

网卡发送Metrics如下

# HELP node_network_transmit_bytes_total Network device statistic transmit_bytes.
# TYPE node_network_transmit_bytes_total counter
node_network_transmit_bytes_total{device="enp0s3"} 1.4358114e+07
node_network_transmit_bytes_total{device="enp0s8"} 9510
node_network_transmit_bytes_total{device="lo"} 3.00503e+07

Prometheus pattern参数配置为

node_network_transmit_bytes_total{device="{#INTERFACE}}

注意配置2个Item的key要不同
最后创建一个图形原型

最终效果

打赏
 Posted by at 下午 3:26

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)