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、添加好,把监控项做成一张图

时间: 2024-10-20 21:10:19

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

Zabbix之监控Nginx状态信息

Zabbix 之监控Nginx状态信息 nginx需要支持 http_stub_status_module 编译的时候需要使用--with-http_stub_status_module yum默认支持此选项 1. 配置nginx stuats 源码: vim nginx.conf yum: vim /etc/nginx/conf.d/default.conf #and add the following to your server block location /nginx_status {

开启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 访问页面

Linux-内存管理机制、内存监控、buffer/cache异同

在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存(buffer/cache),利用内存读写的高速特性来提高Linux系统的数据访问性能.在这方面,区别于Windows的内存管理.本文从Linux的内存管理机制入手,简单介绍linux如何使用内存.监控内存,linux与windows内存管理上的区别简介,linux内

zabbix专题:第四章 添加自定义监控项Items

添加监控项Items 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 本节目录大纲 什么是item item构成 实战添加网卡流入流出监控项 zabbix专题:第四章 添加监控项Items 什么是item Items是从主机里面获取的所有数据.通常情况下我叫itme为监控项,例如我需要监控它的cpu负载.监控网卡流入流出,那么实现这个方法的东西就叫item.接下来zabbix教程中提到的item都翻译为监

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自定义用户KEY与参数USERPARAMETERS监控脚本输出

zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求.幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据. 定义配置文件 通过yum安装的zabbix-agent配置文件路径为/etc/zabbix/zabbix_agentd.conf.大约在这个文件的255行左右,我们可以发现下面的代码: 1 Include=/etc/zabbix/zabbix_agentd.d/ 我们自定义的配置,可以放到这个目录.我们可以创建一个自定义的文件来定