zabbix 配置使用(二)

来源:互联网 发布:域名买卖平台 编辑:程序博客网 时间:2024/05/16 19:51

4.10 添加WEB Monitorings

Web Monitoring是用来监控web程序的,可以监控到web程序的下载速度、返回码及响应时间,还支持把一组连续的web动作作为一个整体来监控。

下面以监控登录zabbix的web程序为例,来展示如何使用web monitoring。

系统配置->web->选择一台WEB服务器,点击右上角的Create Scenario创建一个Senario(注:必须选择主机后才能创建Scenario,zabbix的所有监控项都必须创建在主机上)

clip_image002

监控项分组:选择这个scenario所在的监控项分组

名称:scenario的名字

认证:鉴权

数据更新间隔(秒):监控频率,单位为秒

Agent:选择要使用的浏览器客户端,可能同样的web程序对不同的客户端展示的内容不一样。

状态:默认为Active

变量:变量定义,这里定义的变量可在后续的steps中使用,这里我们定义了用户和密码变量

Steps:web程序的各个步骤,选择add新增一个Login的step,来模拟用户登录,传递用户和密码给index.php页面。

clip_image004

URL:监控的web页面(注:必须是全路径带页面名)

Post:传递给页面的参数,多个参数之间用&连接,此处可引用前面的变量。

Timeout:超时时间

Required:页面中能匹配到字符,匹配不到即认为错误

Status codes:页面返回状态码

添加完step后,在状态统计->web页面即能看到监控的状态和图示

clip_image006

创建完scenario后,zabbix server会自动穿件相关的监控项,所以我们只需为这些监控项添加触发器即可让web scenario出错时产生告警。

系统配置->主机->点击scenario所在的主机条目的触发器,直接创建触发器,在选择监控项的时候就可以看到系统自动创建的监控项(注:自动创建的监控项在主机的监控项列表中直接是看不到的,需要在创建触发器是选择监控项时才能看到)

clip_image008

可以在监控项列表中看到,系统为每个step创建了3个监控项,Download Speed/Response Code/Response Time,为整个scenario创建了一个test.fail的监控项,可以分别为其创建触发器。

下例我们创建一个Login页面返回状态码的触发器,大于等于400即为错误

clip_image010

再创建一个整个scenario所有step运行是否成功的触发器,采集值为0表示整个scenario的所有step都执行成功了,第几步的执行失败就返回数字几,且后续的step都不会继续执行下去。

clip_image012

这样,一个完整的web monitoring就配置完成了。


4.11 添加拓扑图

这里可以添加关于主机的拓扑图:系统配置->拓扑图,在右上角可以创建拓扑图或者导入拓扑图点击保存。

image

然后编辑保存好的拓扑图

image

上面加号和减号可以添加主机和链接主机。

4.12 添加自定义监控

Zabbix自带的监控项有时并不能满足实际需求,zabbix在客户端配置文件中提供了用户自定义监控项UserParameter功能。

UserParameter的使用方法如下:

UserParameter=<自定义监控项key>,<用于获取监控项key值的命令表达式>

以检查磁盘IO为例,在客户端的zabbix.agentd.conf配置文件中添加如下内容:

UserParameter=vfs.partition.read[*],/usr/bin/iostat -d -k $(/bin/df | grep "$1$" | awk '{print $$1}'|awk -F\/ '{print $$3}')|sed -n '4p'|awk '{print $$3}'

UserParameter=vfs.partition.write[*],/usr/bin/iostat -d -k $(/bin/df | grep "$1$" | awk '{print $$1}'|awk -F\/ '{print $$3}')|sed-n '4p'|awk '{print $$4}'

在模板监控项中添加对磁盘IO的监控:

clip_image018

4.13 添加自定义MySQL监控

Zabbix自带有MySQL的监控模板,可以做一些简单的监控。

1、 更改客户端配置

客户端的配置文件上默认就有通过mysqladmin工具取MySQL数据库监控信息的配置,因此只需更改使用MySQL监控模板的Host上的agentd.conf文件,将文件最后所有关于MySQL的UserParameter前的#号去掉,更改登录MySQL的用户名和密码即可

例如:修改后其中一条监控数据库状态如下:

UserParameter=mysql.ping,mysqladmin -uzabbixtest -p123456 ping|grep alive|wc -l

修改后重启host上的agentd,使其生效

2、 添加监控项

Web端编辑mysql所在的host,使之link到template_APP_MySQL模板,然后在主机的监控项里就能看到刚才定义的这些MySQL的监控项,修改相应的触发器值即可。

zabbix自带的MySQL监控功能比较弱,只是通过mysqladmin工具去查询mysql的一些状态而已。

我根据目前使用情况,自己编写了MySQL监控模板和监控配置文件,对数据库的连接数、运行状态、主从复制进程状态等进行监控。具体配置文件参考附件的zabbix_mysql.conf配置文件。

4.13.1添加MySQL监控配置文件

在客户端主机数据库中添加zabbix监控用的本地数据库用户

mysql -uroot -p123456 -e "grant usage,super,replication slave on *.* to zabbixtest@localhost identified by 'zabbixtest';flush hosts;flush privileges;"

创建目录,并将数据库监控配置文件拷贝到该目录下

Mkdir /etc/zabbix/zabbix_agentd

Cp zabbix_mysql.conf /etc/zabbix/zabbix_agentd

修改客户端服务器上的zabbix主配置文件,添加如下内容

Include=/etc/zabbix/zabbix_agentd/

重新启动客户端服务器上的zabbix应用

/etc/init.d/zabbix_agentd stop

/etc/init.d/zabbix_agentd start

4.13.2导入zabbix MySQL监控模板

系统配置-&gt;模板,选择右上角的Import Template。浏览选择添加自己事先写好的模板,点击import

clip_image020

导入成功后,会提示Imported Successfully.

MySQL监控模板

clip_image022

4.13.3应用模板

Configuration-&gt;Hosts,选择需要监控MySQL的主机添加该模板,添加完毕后save即可

4.14 添加自定义Nginx监控

修改客户端配置文件zabbix_agentd.conf,添加下面一行

Include=/etc/zabbix/zabbix_agentd/

添加对Nginx监控的配置文件zabbix_nginx.conf,文件内容如下:

UserParameter=nginx.accepts,/etc/zabbix/bin/nginx_status.sh accepts

UserParameter=nginx.handled,/etc/zabbix/bin/nginx_status.sh handled

UserParameter=nginx.requests,/etc/zabbix/bin/nginx_status.sh requests

UserParameter=nginx.connections.active,/etc/zabbix/bin/nginx_status.sh active

UserParameter=nginx.connections.reading,/etc/zabbix/bin/nginx_status.sh reading

UserParameter=nginx.connections.writing,/etc/zabbix/bin/nginx_status.sh writing

UserParameter=nginx.connections.waiting,/etc/zabbix/bin/nginx_status.sh waiting

创建/etc/zabbix/bin目录,并在目录下放置Nginx监控脚本nginx_status.sh

#!/bin/bash

BKUP_DATE=`/bin/date +%Y%m%d`

LOG="/etc/zabbix/webstatus.log"

HOST=`/sbin/ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'`

PORT="8000"

# Functions to return nginx stats

function active {

/usr/bin/curl "http://$HOST:$PORT/webstatus" 2&gt;/dev/null| grep 'Active' | awk '{print $NF}' }

function reading {

/usr/bin/curl "http://$HOST:$PORT/webstatus" 2&gt;/dev/null| grep 'Reading' | awk '{print $2}'}

function writing {

/usr/bin/curl "http://$HOST:$PORT/webstatus" 2&gt;/dev/null| grep 'Writing' | awk '{print $4}' }

function waiting {

/usr/bin/curl "http://$HOST:$PORT/webstatus" 2&gt;/dev/null| grep 'Waiting' | awk '{print $6}'}

function accepts {

/usr/bin/curl "http://$HOST:$PORT/webstatus" 2&gt;/dev/null| awk NR==3 | awk '{print $1}'}

function handled {

/usr/bin/curl "http://$HOST:$PORT/webstatus" 2&gt;/dev/null| awk NR==3 | awk '{print $2}'}

function requests {

/usr/bin/curl "http://$HOST:$PORT/webstatus" 2&gt;/dev/null| awk NR==3 | awk '{print $3}'}

# Run the requested function

$1

为脚本添加可执行权限,并将/etc/zabbix目录属主属组设置为zabbix

chmod a+x /etc/zabbix/bin/nginx_status.sh

chown –R zabbix.zabbix /etc/zabbix

重新启动zabbix客户端

/etc/init.d/zabbix_agentd stop

/etc/init.d/zabbix_agentd start


原创粉丝点击