nothing to say.. @caizhiyuannn@gmail.com
一个监控项是一个独立的指标。快速添加多个监控项的一种方法是将一个预定义的模板附加到主机。
然而,为了优化系统性能,您可能需要对模板进行微调,使只有真正需要的监控项被频繁的监控到。
自定义监控项主要有两种途径:
监控类型配置为:用zabbix监控类型zabbix_agent或者zabbix_agent(active) ,主动模式或被动模式取决于agent的配置
语法:
UserParameter=<key>,<command>
用户自定义参数是由Zabbix agent来执行命令的。在监控项预处理步骤前,最多可以返回512KB的数据。
但是,请注意,最终可以存储在数据库中的文本值,在MySQL上的限制为64KB(其他数据库的信息请参阅zaabix文档数据表)。
key将在配置监控项时使用。输入你选择的易于引用的key(key在一台主机中必须是唯一的)
是agent将会通过/bin/sh 执行获取数据的命令
UserParameter=key[*],command
Parameter参数 | Description描述 |
---|---|
Key | 唯一的监控项key。 [*] 用于定义该key接受括号内的参数。参数需在配置监控项时给出 |
Command | 命令在执行时,引用key中指定的值,只对灵活的用户参数有效: |
你可以在命令中使用位置引用$1 … $9来引用监控项Key中的相应参数。 | |
Zabbix解析监控项Key的[]中包含的参数,并相应地替换$1,…,$9。 | |
$0会替换为完整的原始命令(在对$0,…,$9执行替换之前的命令)运行。 | |
不管位置参数($0,…,$9)是用双引号(“)还是单引号(‘)括起来,都会解析位置引用。 | |
要使用位置引用解析,请指定双美元符号($) - 例如, awk ‘{print $$2}’ 。 | |
在这种情况下,执行命令时, $$2 实际上会变成 $2 。 |
使用例子
UserParameter=ping[*],echo $1
# [*] 通过逗号(,)分割,每个参数对应一个占位符。例如
# 在服务端配置item: ping[hello] 相应的agent客户端将会转化成命令 echo hello
# $1 -> hello 转变
UserParameter=wc[*],grep -c "$2" $1
# 这个用户自定义参数能用来计算一个文件中有多少行匹配相应的表达式。就像下面一样:
# wc[/etc/passwd,root]
# wc[/etc/services,zabbix]
# 注意,当需要使用到awk 如: awk '{print $1}' 这种解析使用, 需要用双$符号转义
# awk '{print $$1}' 在这种情况下,执行命令时, $$1 实际上会变成 $1 。
默认情况下,不允许用户在用户自定义参数中使用某些特殊符号:
\ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
同时换行符也是不允许的。
当:UnsafeUserParameters=1时,上面字符将会被允许使用
UserParameter配置一般在/etc/zabbix/zabbix_agentd.conf 里面配置,
配置完成后重启zabbix_agentd
通过 zabbix_agentd -t $key
指定监控项测试返回内容
zabbix_sender 适用复杂的监控项,通过脚本来获取多种监控信息并上报。
这种方式: 使用zabbix监控类型zabbix trapper,需要配合zabbix_sender给它传递数据。
zabbix_sender命令
参数说明:
-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 -z 192.168.1.104 -p 10050 -k "hello" -o 1
# 向192.168.1.104这台server 发送监控项hello 值为1
如果脚本有多个监控项,则连续调用zabbix_sender 发送
服务端配置监控项可以指定host配置单个, 或者配置template 来应用多台主机 配置方法一样, 只是对象不一样而已。以下使用template为例
自定义参数方式
zabbix_sender方式