zabbix -- 自定义key

为什么要自定义KEY?
有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法。我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter.

UserParameter=key,command   #语法

用户自定义参数包含一个key和一个命令,key必须整个系统唯一,配置好之后,重启客户端。
然后配置item,在key的位置填上我们自定义的key即可

#命令示例
UserParameter=ping,echo1   #如果调用ping这个key,将会收到返回值1.
UserParameter=mysql.ping,mysqladmin -uroot ping|grep -c alive  #返回1表示MySQL运行

参数  描述
Key   唯一. [*]   表示里面可以传递多个参数
Command 需要执行的脚本,key的[]里面的参数一一对应到9,一共9个参数。$0表示脚本命令.
1、 zabbix禁止使用一些不安全的参数,如下:\ ‘ ”  * ? [ ] { } ~ $ ! & ; ( ) < > | # @
2、 从zabbix 2.0开始,zabbix返回文本数据可以是空格。

UserParameter=ping[*],echo $1
>>>  ping[0] - 将一直返回0
>>>  ping[aaa] - 将一直返回 ‘aaa‘

案例一:简单的key实现

free | awk ‘/^Mem:/{print $4}‘   ##监控内存
88412

1、编辑:vim /etc/zabbix/zabbix_agentd.conf

UserParameter=Mem.free,free | awk ‘/^Mem:/{print $4}‘

2、重启:service zabbix-agent restart
3、测试:zabbix_get -s agent_ip -k "Mem.free"
案例二:高级的key监控内存总大小和当前使用
我们都知道/proc是内核的反射区,/proc/meminfo 中显示的内存信息

cat /proc/meminfo
MemTotal:        1001332 kB
MemFree:        121864 kB
MemAvailable:     325308 kB
Buffers:       0 kB
Cached:       274108 kB
........

上面显示出来了内存的详细信息,我们如何定义key让zabbix服务端监控我们主机的内存信息
cat /proc/meminfo | awk "/^MemTotal:/{print $2}"
MemTotal:        1004136 kB
1、我们就监控这些参数,用一个key实现
MemTotal:        1004136 kB
MemFree:           87800 kB
Buffers:          108264 kB
Cached:           590832 kB
2、编辑:vim /etc/zabbix/zabbix_agentd.conf

##$1 是调用[*]里面的参数,用$$2,因为使用一个$会让shell命令认为是调用第二个[*]里面的参数
UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk ‘/^$1:/{print $$2}

3、测试:
zabbix_get -s 10.1.252.241 -k "memory.usage[MemTotal]"
1004136
zabbix_get -s 10.1.252.241 -k "memory.usage[MemFree]"
85464
zabbix_get -s 10.1.252.241 -k "memory.usage[Buffers]"
108516
zabbix_get -s 10.1.252.241 -k "memory.usage[Cached]"
590900
4、到zabbix服务器上面添加对应的参数监控项,然后集中到一个图里面

案例三:利用高级的key监控nginx的状态
1、nginx server的主配置文件 都配置status模块 代码端如下
location /ngst{  
    stub_statuson;  
    access_logoff;  
    allow127.0.0.1;  
    deny all;  
}
2、vim /home/zabbix/nginx_status.sh  #nginx-status的取值脚本

#!/bin/bash
#
host=‘127.0.0.1‘
port=‘80‘
status=‘/status‘
active() {
        curl -s http://${host}:${port}${status} | awk ‘/^Active/{print $3}‘
}
accepts() {
        curl -s http://${host}:${port}${status} | awk ‘NR==3{print $1}‘
}
handled() {
        curl -s http://${host}:${port}${status} | awk ‘NR==3{print $2}‘
}
requests() {
        curl -s http://${host}:${port}${status} | awk ‘NR==3{print $3}‘
}
reading() {
        curl -s http://${host}:${port}${status} | awk ‘NR==4{print $2}‘
}
writing() {
        curl -s http://${host}:${port}${status} | awk ‘NR==4{print $4}‘
}
waiting() {
        curl -s http://${host}:${port}${status} | awk ‘NR==4{print $6}‘
}
$1

3、chmod +x nginx_status.sh
4、编辑:vim /etc/zabbix/zabbix_agentd.conf

UserParameter=nginx.status[*],/home/zabbix/nginx_status.sh $1

5、重启:service zabbix-agent restart
6、测试:zabbix_get -s 10.1.252.241 -k "nginx.status[requests]"  #服务端测试

7、web 端添加

8、放进一个图表,更直观的查看

--------------------------------------------------------------------------------------------------

文章转自于:http://zhang789.blog.51cto.com/11045979/1869798

时间: 2024-08-11 20:42:13

zabbix -- 自定义key的相关文章

zabbix自定义KEY监控服务状态[不需要端口]

zabbix监控Windows下的服务并实现告警和重启服务 首先 创建获取服务状态的脚本 一.Windows脚本 @echo off set srvname=%1 for /f "skip=3 tokens=4" %%i in ('sc query %srvname%') do set "zt=%%i" &goto :next :next if /i "%zt%"=="RUNNING" ( :服务运行正常,返回1. e

zabbix自定义key

客户端操作: zabbix 客户端的启动 ./zabbix_agentd -c /usr/local/etc/zabbix_agentd.conf 添加自定义key vi /usr/local/etc/zabbix_agentd.conf 将UnsafeUserParameters从0设置为1,默认是0,即默认自定义key功能是关闭的 在末行添加 UserParameter=io.read,iostat |grep "\<vda\>"|awk '{print $3}' 保存

zabbix 自定义 key (转)

转自:http://www.cnblogs.com/miclesvic/p/6164303.html 1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/usr/local/zabbix_agent/etc/zabbix_agentd.conf) ### Option: UserParameter # User-defined parameter to monitor. There can be several user-defined parame

zabbix 自定义key的简单使用

zabbix版本:zabbix-3.0.2 zabbix客户端配置: zabbix的监控类型分为server和server active(不确定用哪个适合,可以都选择) 在zabbix_agentd.conf中Hostname一定要填写,而且不能和其他监控服务器重复. 自定义key之前需要先设置个参数:UnsafeUserParameters=1 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ # Include=/usr/local/et

Zabbix自定义key监控docker

一.需求场景在某些docker容器中运行着java,容器提供API供监控调用.需要监控服务运行是否正常和容器内JVM使用情况. 二.想法编写监控脚本,使用自定义key的方式添加到Zabbix中. 三.实践1.编写服务监控脚本 #!/bin/bash interval_time=600 service_port_file=/script/tmp/service_port.txt #Gener_service_port tee > ${service_port_file} << EOF ap

zabbix 自定义key 监控mysql增删查改

1.先熟悉一下zabb自定义key的使用格式 vim /etc/zabbix/zabbix_agentd.d/mysql.conf##zabbix_agentd.d在这个文件夹下的.conf,都会被agent读取,我们这里新建的一个配置文件方便使用,这样就不需要去动主配置文件了 UserParameter=echo[*],echo "$1" #要传递参数要带[*],且key键必须全局唯一 UserParameter=ifconfig,ifconfig|awk NR==2'{print

zabbix 自定义key值监控

1.zabbix一般监控使用zabbix即可,如果自定义的监控的话也是可以的,现看下zabbix.agentd.conf里面的介绍 UnsafeUserParameters 默认参数是0,0表示不启用UserParameter,1表示启用. 2. UserParameter=<key>,<shell command> 这个就是自定义监控的命令,key加上监控的选项,如下监控http的连接数 3.改完配置以后一定要重启下,之后再服务端测试下 这里可以看到有输出的,但是没访问所以很少

zabbix自定义key监控mysql主从同步超简单!

1.在zabbix客户端配置文件中加入: 首先要对mysql提供一个查询主从状态的账号!(当然用root也可以.) UserParameter=mysql.replicate_error,if test `mysql -uxxx -pxxx -h127.0.0.1 -e 'show slave status\G' | awk -F: '{if($1~/Slave_IO_Running/) print$2}' ` = "Yes" -a `mysql -uxxx -pxxx -h127.0

zabbix 自定义key监控redis

一.环境 ubuntu 14.04 LTS zabbix 2.4.5 redis-2.8.7 二.配置redis监控 1.在/etc/zabbix/zabbix_agentd.d/目录下新建userparameter_redis.conf文件,添加以下内容: UserParameter=redis.stat[*],cat /tmp/redisstat | grep "$1:" | cut -d":" -f2 2.在/etc/crontab文件下添加以下内容 sudo