zabbix-sender使用场景

Quick Start

使用zabbix监控类型zabbix trapper,需要配合zabbix_sender给它传递数据,上报频率由客户端控制,通常用crontab来设置定时作业。一般情况下zabbix_sender会在以下几种场景使用:

  1. 执行超长时间脚本。这种情况下使用主动或被动模式都会超时,必须改成让客户端提交数据的方式。
  2. 客户端脚本一次执行得到多项采集数据时,通过zabbix_sender可以一次性上报多条结果,减少调用次数。
  3. 执行后数据有逻辑关和严谨性的,必须改成让客户端提交数据的方式,如取同一时刻的生产量和消耗量。

zabbix_sender命令详解

语法:

usage: zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i <file> -r} [-c <file>]

使用参数:

1
2
3
4
5
6
7
8
9
10
11
-c --config <file>                   配置文件绝对路径
-z --zabbix-server <server> zabbix server的IP地址
-p --port <server port> zabbix server端口.默认10051
-s --host <hostname> 主机名,zabbix里面配置的主机名(不是服务器的hostname),不能使用ip地址
-I --source-address <IP address> 源IP
-k --key <key> 监控项的key
-o --value <key value> key值
-i --input-file <input file> 从文件里面读取hostname、key、value 一行为一条数据,使用空格作为分隔符,如果主机名带空格,那么请使用双引号包起来
-T --with-timestamps 一行一条数据,空格作为分隔符: <hostname> <key> <timestamp> <value>,配合 --input-file option,timestamp为unix时间戳
-r --real-time 将数据实时提交给服务器
-v --verbose 详细模式, -vv 更详细

zabbix_sender使用实例

客户端主机为RedisServer,服务端IP为192.168.1.2,redis info 得到信息如下:

1
2
3
4
5
6
7
8
9
……

#Clients
connected_clients:2129
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:6

……

我们把clients的信息上传给zabbix server,zabbix item配置如下(其它值默认):

redis connected_clients:

1
2
3
4
5
6
7
type: Zabbix trapper

Key: redis.info[connected_clients]

Type of information: Numberic (unsigned)

Data type: Decimal

redis client_longest_output_list:

1
2
3
4
5
6
7
type: Zabbix trapper

Key: redis.info[client_longest_output_list]

Type of information: Numberic (unsigned)

Data type: Decimal

redis client_biggest_input_buf:

1
2
3
4
5
6
7
type: Zabbix trapper

Key: redis.info[client_biggest_input_buf]

Type of information: Numberic (unsigned)

Data type: Decimal

redis blocked_clients:

1
2
3
4
5
6
7
type: Zabbix trapper

Key: redis.info[blocked_clients]

Type of information: Numberic (unsigned)

Data type: Decimal

1、 提交单条数据:

1
2
3
4
zabbix_sender -s "RedisServer" -z 192.168.1.2 -k "redis.info[connected_clients]" -o 2129 -r`
zabbix_sender -s "RedisServer" -z 192.168.1.2 -k "redis.info[client_longest_output_list]" -o 0 -r`
zabbix_sender -s "RedisServer" -z 192.168.1.2 -k "redis.info[client_biggest_input_buf]" -o 0 -r`
zabbix_sender -s "RedisServer" -z 192.168.1.2 -k "redis.info[blocked_clients]" -o 6 -r`

2、 指量提交数据:

1
2
3
4
5
6
7
8
9
# cat redis_info.txt
"RedisServer" "redis.info[connected_clients]" 2129
"RedisServer" "redis.info[client_longest_output_list]" 0
"RedisServer" "redis.info[client_biggest_input_buf]" 0
"RedisServer" "redis.info[blocked_clients]" 6

zabbix_sender -z 192.168.1.2 -i redis_info.txt
info from server: "processed: 4; failed: 0; total: 4; seconds spent: 0.000085"
sent: 4; skipped: 0; total: 4