zabbix专题:第九章 自定义key(案例:监控内存,监控nginx状态)

第九章 自定义key

对Linux有兴趣的朋友加入QQ群:476794643
在线交流


本文防盗链:http://zhang789.blog.51cto.com

为什么要自定义KEY

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

语法如下:

UserParameter=key,command

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

简单点的命令示例:

UserParameter=ping,echo 1

如果调用ping这个key,将会收到返回值1.

更复杂的命令示例:

UserParameter=mysql.ping,mysqladmin -uroot ping|grep -c alive

如果返回1表示MySQL运行中,如果返回0表示MySQL挂了

key的高级使用方法

参数 描述 
Key 唯一. [*]表示里面可以传递多个参数 
Command 需要执行的脚本,key的[]里面的参数一一对应到9,一共9个参数。$0表示脚本命令.

1. 如果需要使用命令行里面出现$2这种变量,那么你要使用两个$$2,例如awk ’{ print $$2 }’,之前就遇到过这个问题,不停的测试自己脚本输出正常,但是zabbix却拿不到数据,原来是出在这里。为了防止和参数冲突,所以zabbix做了这个规定。2. zabbix禁止使用一些不安全的参数,如下:\ ‘ ”  * ? [ ] { } ~ $ ! & ; ( ) < > | # @3. 从zabbix 2.0开始,zabbix返回文本数据可以是空格。
UserParameter=ping[*],echo $1ping[0] - 将一直返回0ping[aaa] - 将一直返回 ‘aaa‘

案例:简单的key实现

我们这个参数可以查出内存空闲了多少,如果我们zabbix要监控,但是zabbix服务器上面没有这个key怎么办呢,我们就要自定义了

[root@localhost ~]# free | awk ‘/^Mem:/{print $4}‘88412

1、客户端必须安装了zabbix-agentd客户端,修改zabbix_agentd.conf

[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.confUserParameter=Mem.free,free | awk ‘/^Mem:/{print $4}‘

2、重启客户端

[[email protected] ~]# service zabbix-agent restartShutting down Zabbix agent:                                [  OK  ]Starting Zabbix agent:                                     [  OK  ]

3、在zabbix服务端上面zabbix_get测试能否获取数据

[[email protected] ~]# zabbix_get -s 10.1.252.241 -k "Mem.free"87844

案例:高级的key监控内存总大小和当前使用

我们都知道/proc是内核的反射区,/proc/meminfo 中显示的内存信息

[[email protected] ~]# cat /proc/meminfo MemTotal:        1001332 kBMemFree:          121864 kBMemAvailable:     325308 kBBuffers:               0 kBCached:           274108 kB........

上面显示出来了内存的详细信息,我们如何定义key让zabbix服务端监控我们主机的内存信息

1、执行正则表达式命令可以把信息过滤出来,但是每个参数都用一个正则表达式来做,这不符合我们这些高级的搬服务器能干的出来的的,从上面的简单案例可以看出,我们可以使用[*]然后$1,$2这样的来调用

[root@localhost ~]# cat /proc/meminfo | awk "/^MemTotal:/{print $2}"MemTotal:        1004136 kB

2、我们就监控这些参数,用一个key实现

MemTotal:        1004136 kBMemFree:           87800 kBBuffers:          108264 kBCached:           590832 kB

3、修改zabbix_agentd.conf 
$1 是调用前面的[*]里面的参数的,为什么使用$$2,如果使用一个$会让这个shell命令认为是调用第二个[*]里面的参数

UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk ‘/^$1:/{print $$2}

4、我们在服务器用zabbix_get测试,看能不能获取key定义的值(完全不用质疑,可以

[[email protected] ~]# zabbix_get -s 10.1.252.241 -k "memory.usage[MemTotal]"1004136[[email protected] ~]# zabbix_get -s 10.1.252.241 -k "memory.usage[MemFree]"85464[[email protected] ~]# zabbix_get -s 10.1.252.241 -k "memory.usage[Buffers]"108516[[email protected] ~]# zabbix_get -s 10.1.252.241 -k "memory.usage[Cached]"590900

5、到zabbix服务器上面添加对应的参数监控项,然后集中到一个图里面,应该不是什么事吧,不会设置监控项和图的,可以参考前面的文章

案例:利用高级的key监控nginx的状态

1、nginx server的主配置文件 都配置status模块 代码端如下

location /ngst{      stub_status on;      access_log off;      allow 127.0.0.1;      deny all;  }

2、nginx-status的取值脚本

[[email protected] ~]# vim /home/zabbix/nginx_status.sh #!/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、加上执行权限

[root@localhost zabbix]# chmod +x nginx_status.sh

4、修改zabbix_agentd.conf

UserParameter=nginx.status[*],/home/zabbix/nginx_status.sh $1
[[email protected] zabbix]# service zabbix-agent restartShutting down Zabbix agent:                                [  OK  ]Starting Zabbix agent:                                     [  OK  ]

5、zabbix服务端zabbix_get测试自定义key

[[email protected] ~]# zabbix_get -s 10.1.252.241 -k "nginx.status[requests]"503

6、自定义已经执行成功,在web上面添加监控项

7、添加好,把监控项做成一张图

时间: 11-05

zabbix专题:第九章 自定义key(案例:监控内存,监控nginx状态)的相关文章

开启php-fpm和nginx状态监控

工作中需要监控php-fpm和nginx状态,从网上找了些资料,整理如下 开启php-fpm 修改php-fpm.conf文件配置 去掉该项前分号 在nginx.conf 里插入以下配置 location ~ ^/(status|ping)$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; 重启php-fpm和nginx 访问页面

zabbix专题:第十一章 zabbix proxy分布式监控配置

zabbix专题:第十一章 zabbix proxy分布式监控配置             对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.co zabbix proxy分布式监控配置 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix proxy可以非常简便的实现了集中式.分

zabbix 自定义key值监控

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

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监控nginx_status)

需求场景 lnmp环境 3台nginx 每台nginx服务上有几个虚拟主机,分别跑了不同的域名,准备对主站做nginx status 状态做监控,监控每一台nginx的活动链接数,和总的连接数. 解决方案1 每台nginx server的主配置文件 都配置status模块  代码端如下 location /ngst{   stub_status on;   access_log off;   allow 127.0.0.1;   allow xxx.xxx.xxx.xxx;   deny all

深入浅出Zabbix 3.0 -- 第九章 数据可视化

第九章 数据可视化 Zabbix是一个非常灵活.强大的监控系统,它不仅能够监控大量不同类型的数据指标,并为这些数据及数据之间的关联提供了多种可视化工具,通过图形.展示屏.网络拓扑图等将数据直观的展现出来,实时的浏览和查看监控设备的状态. 9.1 图形 Zabbix 3.0中支持三种graphs(图形),即simple graphs(简单图形).ad-hocgraphs(自组图形)和customgraphs(自定义图形). 9.1.1 简单图形 简单图形是Zabbix系统内置的一种方法,为监控项数

zabbix -- 自定义key

为什么要自定义KEY?有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法.我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter. UserParameter=key,command   #语法 用户自定义参数包含一个key和一个命令,key必须整个系统唯一,配置好之后,重启客户端. 然后配置item,在key的位置填上我们自定义的key即可 #命令示例 UserParameter=ping,ech

zabbix专题:第三章 Zabbix Agent客户端安装详解

第三章 Zabbix Agent For  本节目录大纲 程序环境 zabbix agent安装配置 (1)安装 (2)配置 (3)启动服务 在zabbix服务器上面添加zabbix-agent服务器,看是否agent安装成功 zabbix专题:第三章 Zabbix Agent For Linux 前面我们已经知道了Zabbix 可以采用Agent/Server 的架构 如果机器比较多,可以使用批量脚本执行或者使用ansible部署agent zabbix agent安装配置 (1)安装 注意r

zabbix 之自定义key(10)

自定义key 在zabbix agent端的配置文件由用户通过userparameter指令定义用户自定义参数 userparameter=<key>,<command> userparameter=<key[*]>,<command> $1...$9 实例1(不带参数) [[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf UserParameter=system.memory.free,awk