官方站点www.zabbix.com
在监控开源软件方面。Zabbix可谓是集大成者,大包大揽,包含了agent,server,proxy,graphic。而且都做的相对不错,给我们这样的懒人运维人员帮助简直不要太大。
而且简易的安装方式,也是他受众多运维喜爱的原因。
zabbix_server
*需要事先支持php环境,博主环境为nginx+mariadb+php
*系统环境CentOS Linux release 7.2.1511 (Core)
*使用最新版本的Zabbix3.0.3
*Zabbix下载地址 www.zabbix.com/download.php
[11:38:34 /usr/local/src]#wget http://iweb.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz [11:41:10 /usr/local/src]#tar xf zabbix-3.0.3.tar.gz [11:41:47 /usr/local/src]#cd zabbix-3.0.3 [11:42:22 /usr/local/src/zabbix-3.0.3]#yum install -y net-snmp-devel net-snmp net-snmp-config #使zabbix支持net-snmp [11:44:42 /usr/local/src/zabbix-3.0.3]#./configure --prefix=/usr/local/zabbix \ --enable-server \ --enable-agent \ --with-net-snmp \ --with-libcurl \ --with-libxml2 \ --enable-proxy \ --with-mysql=/usr/local/mariadb/bin/mysql_config [11:47:34 /usr/local/src/zabbix-3.0.3]#make && make install [11:54:22 /usr/local/src/zabbix-3.0.3]#cp -a misc/init.d/fedora/core/zabbix_server /etc/init.d [11:54:27 /usr/local/src/zabbix-3.0.3]#vi /etc/init.d/zabbix_server #修改BASEDIR # Zabbix-Directory BASEDIR=/usr/local/zabbix [11:55:15 /usr/local/src/zabbix-3.0.3]#vi /etc/services #为系统添加解析服务 zabbix-agent 10050/tcp # Zabbix Agent zabbix-agent 10050/udp # Zabbix Agent zabbix-trapper 10051/tcp # Zabbix Trapper zabbix-trapper 10051/udp # Zabbix Trapper [11:57:45 /usr/local/src/zabbix-3.0.3]#vi /usr/local/zabbix/etc/zabbix_server.conf #配置zabbix_server DBHost=localhost #有时配置为localhost,zabbix_server无法连接数据库,配置为127.0.0.1即可,保留疑问 DBName=zabbix DBUser=zabbix DBPassword=zabbix DBSocket=/data/mariadb/mariadb.sock ListenIP=192.168.0.100 #配置监听的端口 LogFile=/var/log/zabbix/zabbix_server.log #日志路径 PidFile=/var/log/zabbix/zabbix_server.pid [12:00:31 /usr/local/src/zabbix-3.0.3]#useradd -r zabbix #添加系统用户 [12:00:37 /usr/local/src/zabbix-3.0.3]#mkdir -p /var/log/zabbix [12:00:41 /usr/local/src/zabbix-3.0.3]#chown -R zabbix.zabbix /var/log/zabbix [12:02:45 /usr/local/src/zabbix-3.0.3]#mysql grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix'; #授权mariadb用户 flush privileges; [12:02:45 /usr/local/src/zabbix-3.0.3]#mysql -u zabbix -pzabbix zabbix < database/mysql/schema.sql [12:03:48 /usr/local/src/zabbix-3.0.3]#mysql -u zabbix -pzabbix zabbix < database/mysql/images.sql [12:04:02 /usr/local/src/zabbix-3.0.3]#mysql -u zabbix -pzabbix zabbix < database/mysql/data.sql [12:04:11 /usr/local/src/zabbix-3.0.3]#service zabbix_server start #启动zabbix_server服务 [12:05:46 /usr/local/src/zabbix-3.0.3]#tail -f /var/log/zabbix/zabbix_server.log #查看zabbix_server启动后,生产日志,排除故障 [12:05:59 /usr/local/src/zabbix-3.0.3]#ps aux|grep zabbix_server #检查进程,服务已经正常启动 zabbix 4685 0.0 0.1 143872 1688 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: housekeeper [startup idle for 30 minutes] zabbix 4686 0.0 0.2 143864 2184 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000020 sec, 0 maintenances in 0.000000 sec, idle 30 sec] zabbix 4689 0.0 0.1 143864 2000 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: http poller #1 [got 0 values in 0.000630 sec, idle 5 sec] zabbix 4690 0.0 0.4 248332 4244 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000555 sec, idle 60 sec] zabbix 4691 0.0 0.1 143872 1904 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000002 sec, idle 1 sec] zabbix 4693 0.0 0.1 143872 1904 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4694 0.0 0.1 143872 1904 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4695 0.0 0.1 143872 1904 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4696 0.0 0.1 143868 1992 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.000187 sec, idle 3 sec] zabbix 4697 0.0 0.1 143872 1904 ? S 12:20 0:00 /usr/local/zabbix/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000002 sec, idle 5 sec] [12:08:12 /usr/local/src/zabbix-3.0.3]#cp -a frontends/php /www/zabbix #配置php前段 [12:10:03 /usr/local/src/zabbix-3.0.3]#chown -R www.www /www/zabbix #授权访问 [12:13:43 /usr/local/src/zabbix-3.0.3]#semanage fcontext -a -t unconfined_t "/www/zabbix(/.*)?" #在selinux开启的情况下你可能还需要这样的操作,由于nginx为编译安装所以句柄为unconfined_t,请使用ps auxZ查看WEB服务进程。 [12:18:21 /usr/local/src/zabbix-3.0.3]#vi /usr/local/php/etc/php.ini #配置php支持zabbix的需求 max_execution_time = 300 max_input_time = 300 always_populate_raw_post_data = -1 [12:18:21 /usr/local/src/zabbix-3.0.3]#service php-fom restart #重启php-fpm生效配置
Zabbix的WEB页面配置就不再详细讲述。(下一步,下一步。)
*温馨提醒,zabbix的默认用户为admin,密码为zabbix。
自此zabbix_server就已经安装成功。
zabbix_agent
接下来zabbix_agent的安装。基本上步骤和server相同,安装就不再多叙述
[13:31:21 /usr/local/src/zabbix-3.0.3]#cp -a misc/init.d/fedora/core/zabbix_agentd /etc/init.d [13:33:27 /usr/local/src/zabbix-3.0.3]#vi /etc/init.d/zabbix_server #修改BASEDIR # Zabbix-Directory BASEDIR=/usr/local/zabbix [13:33:27 /usr/local/src/zabbix-3.0.3]#vi /usr/local/zabbix/etc/zabbix_agentd.conf LogFile=/var/log/zabbix/zabbix_server.log PidFile=/var/log/zabbix/zabbix_server.pid Server=192.168.0.1 #指定zabbix_server的地址 Hostname=node1 [13:36:22 /usr/local/src/zabbix-3.0.3]#vi /etc/services #为系统添加解析服务 zabbix-agent 10050/tcp # Zabbix Agent zabbix-agent 10050/udp # Zabbix Agent zabbix-trapper 10051/tcp # Zabbix Trapper zabbix-trapper 10051/udp # Zabbix Trapper [13:38:27 /usr/local/src/zabbix-3.0.3]#service zabbix_agentd start [14:39:44 /usr/local/src/zabbix-3.0.3]#tail -f /var/log/zabbix/zabbix_server.log #查看zabbix_server启动后,生产日志,排除故障 [12:39:46 /usr/local/src/zabbix-3.0.3]#ps aux|grep zabbix_agentd #检查进程,服务已经正常启动 zabbix 6153 0.0 0.1 84132 1340 ? S 13:29 0:00 /usr/local/zabbix/sbin/zabbix_agentd zabbix 6154 0.0 0.1 84132 1392 ? S 13:29 0:00 /usr/local/zabbix/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 6155 0.0 0.1 84132 1648 ? S 13:29 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 6156 0.0 0.1 84132 1652 ? S 13:29 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 6157 0.0 0.1 84132 1632 ? S 13:29 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 6158 0.0 0.1 84132 1336 ? S 13:29 0:00 /usr/local/zabbix/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 6646 0.0 0.0 112644 968 pts/1 S+ 13:37 0:00 grep --color=auto zabbix_agentd
好了,现在agentd也已经完成了。
zabbix_agentd已经内置了很多的监控项,具体请见链接zabbix_agent内置键值
自定义键值
基本上主机的硬件状态都已经设置好了,而实际上我们往往需要自定义监控属性。
比如WEB服务器的http链接数目,tomcat或者nginx的负载,或者游戏进程的状态以及占用的cpu,内存。等等。
OK,我们来添加一个php-fpm占用内存的监控项.
首先我们需要知道如果获取这个值.可以通过top,和ps这俩个命令来取值.
top -n 1 -b|awk '$NF ~ "php-fpm" {SUM+=$6}END{printf SUM}' ps -eo rss,command|awk '$2 ~ "php-fpm" {SUM+=$1}END{printf SUM}'
配置zabbix_agentd.conf
[14:18:41 ~]#vi /usr/local/zabbix/etc/zabbix_agentd.conf Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #包含多个配置文件 UnsafeUserParameters=1 #允许所有的特殊字符作为用户自定义键值的参数 [14:18:54 ~]#vi /usr/local/zabbix/etc/zabbix_agentd.conf.d/php-fpm.conf #自定义键值php.mem UserParameter=php.mem,ps -eo rss,command|awk '$2 ~ "php-fpm" {SUM+=$1}END{printf SUM}' [14:18:54 ~]#service zabbix_agentd restart #重启zabbix_agentd加载新的配置文件 [14:21:32 ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.0.10 -k "php.mem" 371168
zabbix的自定义键值还支持传参,这在实际运用中实在是太棒了。
我们来修改下php-fpm.conf
[14:23:07 ~]#vi /usr/local/zabbix/etc/zabbix_agentd.conf.d/php-fpm.conf UserParameter=php.mem[*],ps -eo $1,command|awk '$2 ~ "php-fpm" {SUM+=$1}END{printf SUM}' [14:23:07 ~]#service zabbix_agentd restart [14:23:34 ~]#zabbix_get -s "192.168.0.10" -k php.mem[pcpu] awk: cmd. line:1: ~ "php-fpm" {SUM+=pcpu}END{printf SUM} awk: cmd. line:1: ^ syntax error
错了?在php-fpm.conf中作为awk参数的$1被替换为我们传递进去的值”pcpu”,这显然不是我们希望的。
*不建议在配置文件中直接使用command,更安全有效的方法是执行一个脚本。在实际使用中如果需要$2这样的变量,应该配置为$$2。
UserParameter=php.mem[*],ps -eo $1,command|awk '$$2 ~ "php-fpm" {SUM+=$$1}END{printf SUM}'
那么我们换个做法。
[14:34:57 ~]#vi /usr/local/zabbix/etc/zabbix_agentd.conf.d/php-fpm.conf UserParameter=php.mem[*],/usr/local/zabbix/scripts/php-fpom.sh $1 [14:36:23 ~]#vi /usr/local/zabbix/scripts/php-fpm.sh #!/bin/bash ps -eo $1,command|awk '$2 ~ "php-fpm" {SUM+=$1}END{printf SUM}' [14:39:02 ~]#chmod a+x /usr/local/zabbix/scripts/php-fpm.sh [14:39:02 ~]#/usr/local/zabbix/scripts/php-fpm.sh rss 383556 [14:39:02 ~]#/usr/local/zabbix/scripts/php-fpm.sh pcpu 3.4 [14:40:35 ~]#service zabbix_agentd restart [14:40:54 ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.0.10 -k "php.mem[rss]" 383032 [14:40:54 ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.0.10 -k "php.mem[pcpu]" 3.4
有待更新zabbix_proxy