zabbix小结(一)zabbix概述 一篇的最后部分,提到了zabbix的架构 ,本篇就过下其中最简单的server-client架构 。由于在 zabbix小结(二)zabbix的安装 篇中已详细说了server端的安装 ,同时也有提到client的端安装,所以有关编译安装部分在本篇会一带而过 。重点会放在如何增加被监控主机、如何自定义key、如何和模板之间进行关联 。

一、server-client 架构

先粘下之前的架构图,如下:

server-client

二、zabbix-agent的安装

可以使用源码包安装也可以使用安装源安装,这里分别介绍下。

1、源码包安装:

1# useradd zabbix -d /dev/null -s /sbin/nologin
2# ./configure --enable-agent --prefix=/usr/local/zabbix
3# make install
4//复制配置文件
5# mkdir -p /etc/zabbix
6# cp misc/conf/zabbix_agentd.conf /etc/zabbix

安装完成后,复制init.d下的自动启动服务文件:

1# misc/init.d/fedora/core/zabbix_agentd /etc/init.d/

注:这里是以centos为例的,所以选择的是fedora 下的 。

2、系统源安装

像ubuntu源里直接含有zabbix的源,这里就以ubuntu下的源安装为例:

1# sudo apt-get install zabbix-agent

直接一条命令完全搞定,连/etc/下的配置文件也直接生成好的 。

3、修改services文件和zabbix_agentd.conf文件

如果是系统源安装的,services文件是直接修改好的;如果是源码包安装的,需要增加以下部分:

1ubuntu@test:~$ cat /etc/services |grep zabbix
2zabbix-agent    10050/tcp                       # Zabbix Agent
3zabbix-agent    10050/udp
4zabbix-trapper  10051/tcp                       # Zabbix Trapper
5zabbix-trapper  10051/udp

完成后,修改/etc/zabbix/zabbix_agentd.conf的文件内容类似如下:

1yang@ubuntu:/etc/zabbix$ cat /etc/zabbix/zabbix_agentd.conf|egrep -v '(^#|^$)'
2PidFile=/var/run/zabbix/zabbix_agentd.pid
3LogFile=/var/log/zabbix-agent/zabbix_agentd.log
4LogFileSize=0
5Server=127.0.0.1,172.20.0.233
6ServerActive=127.0.0.1,172.20.0.233
7Hostname=ubuntu Include=/etc/zabbix/zabbix_agentd.conf.d/
8UnsafeUserParameters=1

其中server和serveractive项后面的地址为server端的IP地址 。

4、iptables配置

执行如下命令开启相关端口,并保存到iptables的配置文件中:

1# iptables -I INPUT 1 -p tcp -s <zabbix server IP-address> –dport 10050 -j ACCEPT
2# iptables -I INPUT 1 -p udp -s <zabbix server IP-address> –dport 10050 -j ACCEPT
3# iptables -I INPUT 1 -p tcp -s <zabbix server IP-address> –dport 10051 -j ACCEPT
4# iptables -I INPUT 1 -p udp -s <zabbix server IP-address> –dport 10051 -j ACCEPT

5、启动zabbix-agent服务生效

1centos下
2# /etc/init.d/zabbix_agentd restart
3ubuntu下
4$ /etc/init.d/zabbix-agent restart

注意在centos和ubuntu各平台下的服务进程名不相同。

三、server监控端配置

1、添加被监控主机

zabbix-agent被监控主机配置完成后,通过浏览器打开server-fronted web界面 ,依次点击 configuration ——> hosts ——-> create host

zabbixagent-addhost

增加完主机,切换到templates 项,关联模板文件

linktemplates

save保存后就完成了主机的增加,关联好默认的系统模板后也会动完成例如cpu loda、disk space等的监控 。

2、zabbix_get 验证

增加完主机后,监控数据并不会立即在web页面上展示,可以通过下面的方法进行测试

在web界面依次找到configuration —–> hosts ——->被监控主机 ——-> Items ,点开items部分,可以看到刚刚关联的有关系统的默认key部分

items

上图是刚刚新增的主机,其link了linux 系统模板 ,可以在server监控端通过zabbix_get 获取相应key的值来验证是否正常 ,如下以CPU的一个值为例:

1# zabbix_get -s 172.20.0.214 -p 10050 -k "system.cpu.util[,user]"
20.166667

如果获取不到数据,则在web上相关的key项也会获取不到值 。可以通过查看server和client连接、iptables、key未定义等方面查找原因。

四、自定义key

这里还是默认安装的server端和client端为例,我为上图的ubuntu主机link了zabbix自带的 Template App Mysql 模板 ,同样通过zabbix_get的方式获取数据进行测试 。

1# zabbix_get -s 172.20.0.214 -p 10050 -k "mysql.version"
2ZBX_NOTSUPPORTED

发现没有数据输出,而Template OS Linux模板的数据正常 ,之所以会这样是因为mysql模板在client端没有相应的key定义,编辑client端的/etc/zabbix/zabbix_agentd.conf文件,增加如下内容:

<pre data-language="XML">```markup
UnsafeUserParameters=1
UserParameter=mysql.ping,mysqladmin -uroot -pasdf ping | grep -c alive
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql -N -uroot -pasdf| awk '{print $$2}'

这里一定要确认UnsafeUserParameters 的值为1 ,配置增加完成后,通过sudo /etc/init.d/zabbix-agent restart 重载配置生效 。其中上面提到的mysql.ping、mysql.version、mysql.status\[\*\]就是新定义的key , 再测试的效果如下:

```bash
# zabbix_get -s 172.20.0.214 -p 10050 -k "mysql.version"
mysql  Ver 14.14 Distrib 5.5.37, for debian-linux-gnu (x86_64) using readline 6.3
# zabbix_get -s 172.20.0.214 -p 10050 -k "mysql.status[Uptime]"
32905

关于User parameters的功能可以参看官方文档

此处为了可以在测试环境看到mysql operations的曲线图,我对被监控端做了一个压力测试,命令如下

1# mysqlslap -uroot -pasdf -a --debug-info --concurrency=50,200  --number-of-queries=10000 --engine=myisam,innodb

可以看到对应的mysql operations 的走势图如下

zabbix-mysql