目的
为保障服务器健康稳定运行,及时监控检测各项重要服务及端口协议等参数,因此部署ZABBIX监控服务来实现上述业务要求。

  此文档分为3部分
 第一部分:服务部署。
 第二部分:监控设置。
    第三部分: 后续优化。
    服务部署部分
  服务端:114.55.236.18 

客户端:118.178.234.249
确定服务器系统版本:
服务端:

  客户端:

确保服务器和客户端也就是agent端版本一致
因生产环境服务器负担比较大,因此本次部署仅在 服务端:114.55.236.18上执行操作。

1、下载源码包并安装依赖包
https://www.zabbix.com/download_sources
选择最新的zabbix3.4版本

2、安装依赖包:
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib zlib-devel openssl OpenIPMI-devel openldap-devel openldap openssl-devel openldap-servers pcre-devel httpd wget ntpdate net-snmp* mysql-devel mysql-community-devel libxml2-devel unixODBC-devel net-snmp-devel libcurl-devel libssh2-devel bzip2 bzip2-devel curl curl-devel e2fsprogs e2fsprogs-devel freetype freetype-devel gd gd-devel glib2 glib2-devel glibc glibc-devel krb5 krb5-devel libevent libevent-devel libidn libidn-devel libjpeg libjpeg-devel libpng libpng10 libpng10-devel libpng-devel libtool libtool-libs libxml2 libxml2-devel make ncurses ncurses-devel nss_ldap openldap-clients patch pspell-devel

因服务端已有nginx,MySQL等部分基础环境,因此需要检查是否其他需求环境是否部署
一般LAMP环境是基础要求。
务必检查基础环境要求确保zabbix能正常安装使用
注意PHP支持:
yum install php php-devel
安装php的扩展
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

3、开始部署安装
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc

make -j4 && make install
编译执行安装

4、修改PHP的配置参数
vim /etc/php.ini 
date.timezone= Asia/Shanghai

max_execution_time = 300 #440行
post_max_size = 32M #729行
memory_limit = 128M #457行
mbstring.func_overload = 1 #1586行
max_input_time = 300 #132行

移动zabbix项目到httpd目录中去(开始是/usr/local/nginx下,后经过nginx解析php页面不能成功加之ZABBIX有部分动态效果页面所以放弃)

cp -r frontends/php/ /var/www/html/zabbix
ll /var/www/html/
chown -R apache.apache /var/www/html/zabbix/

5、数据库及相应权限赋予
Mysql -u root -p twoxfour
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
创建zabbix数据库
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';
创建zabbix用户并赋予权限
use zabbix;
source ~/zabbix-3.4.7/database/mysql/database/mysql/schema.sql;
source ~/zabbix-3.4.7/database/mysql/images.sql;
source ~/zabbix-3.4.7/database/mysql/data.sql;
务必按此顺序导入数据库
导入结束后创建用户并赋予相应目录读取权限
groupadd zabbix
useradd -M -g zabbix -s /sbin/nologin zabbix
chown -R zabbix.zabbix /usr/local/zabbix

6、修改配置文件相应位置
建立相关目录,稍后会在conf文件中配置用到
mkdir logs
mkdir alertscripts
mkdir externalscripts

vim /usr/local/zabbix/etc/zabbix_server.conf
38行LogFile=/usr/local/zabbix/logs/zabbix_server.log
68行PidFile=/usr/local/zabbix/logs/zabbix_server.pid
95行DBName=zabbix
111行DBUser=zabbix
119行DBPassword=zabbix
440行Timeout=4
481行AlertScriptsPath=/usr/local/zabbix/alertscripts
490行ExternalScripts=/usr/local/zabbix/externalscripts
526行LogSlowQueries=3000

7、设置启动脚本及位置
zabbix服务启动脚本
cp misc/init.d/fedora/core/zabbix_server /etc/init.d/

将启动脚本的路径修改为/usr/local/zabbix
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
设置agent端在后续第二部分做出说明

zabbix安装目录授权
cd /usr/local/zabbix
chown -R zabbix.zabbix  zabbix/

设置开机自启
chkconfig --add zabbix_server
chkconfig zabbix_server on

监控端启动服务
/etc/init.d/zabbix_server restart

7、访问配置
首次配置访问站点(使用nginx)方案,因为nginx支持php不太理想导致最后出现页面是php代码,经过多次的处理调试没有解决。nginx对于最新版的zabbix和php支持的不太理想,最后不得已只能转向httpd进行php页面解析支持。
cp -r /frontends/php /usr/local/nginx/html/zabbix
chown zabbix.zabbix -R /usr/local/nginx/html/zabbix

重启php发生报错

修改/etc/php.ini
always_populate_raw_post_data = -1

启动报错

find / -name libmysqlclient.so.18

建立一个软链接
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

进入页面配置发现nginx对于php5.5以上版本(由于选用的是最新版zabbix,因此该版本要求php至少5.5w以上,包括其他依赖软件的版本都相对比较高,而我们这次的nginx版本也是最新的版本,所以在部分支持上没有达到预期的效果)支持的不是很理想,经过多次处理没有解决,最后不得已放弃使用nginx进行页面解析转向apache进行支撑。

经过各类升级安装排查,依旧没有解决该问题,因此放弃nginx配置访问zabbix方案,转向apache。

使用Apache后页面正常

初始账号为Admim,密码为zabbix
目前登录地址使用ip+端口和路径
原因是80端口被nginx占用,httpd改为81端口。
访问地址:
http://114.55.236.18:81/zabbix/

第一部分小结:
自此监控服务端已经部署完毕,剩下的部分为agent端部署以及各项监控功能的调试,计划是在本周初步调整好所有监控参数和项目,根据实际监控测试效果,进行进一步的优化,最终完成监控需求。
新版本固然能体验到最新的功能和效果,但是与此同时也意味着对各项组件要求更高,本次部署两方面有所感悟,一方面是nginx确实对php支持很无奈,尤其是后期各种依赖包,包括回头重新设置php参数,由于对php的不了解等其他方面原因,浪费了不少时间。另一方面是由于现有监控架构的情况,包括域名和端口在内的监控对象都是为本机等一些情况,在部署思路上开始绕了一个弯路。现在回头想来,还是应该坚持从优原则。
自此部署部分已经完成,进入下个阶段监控设置测试阶段。

监控设置测试及优化
一、中文显示乱码的问题
修改配置文件defines.inc.php
cd /var/www/html/zabbix/include/
Vim defines.inc.php
54行 define('ZBX_GRAPH_FONT_NAME', 'msyh');
103行 define('ZBX_FONT_NAME', 'msyh');
2、拷贝字体及授权
将系统微软雅黑的字体C:\Windows\Fonts,先拷贝桌面,在将msyh,msyhbd字体拷贝/var/www/html/zabbix/fonts
注意权限的问题
cd /var/www/html/zabbix/fonts
chown -R apache.apache *

在这里直接没有修改以上配置文件,直接将字体mv改名保持和原文件dejavusan.ttf一致
若后续发生问题则需跑回来设置。

二、监控端配置
agent端:本机
进入安装包位置开始部署客户端,编译安装
./configure --prefix=/usr/local/zabbix --with-net-snmp --enable-agent
Make && make install

修改客户端配置文件

vim /usr/local/zabbix/etc/zabbix_agentd.conf
#此处注意别写错或是执行了zabbix_agent.conf,否则配置了不生效
开始直接配置tab补全太过大意导致后面没能启动,后回头发现错误之处非常尴尬。
自我检讨一下。
Server=x.x.x.x #填写Server的IP地址
ServerActive=x.x.x.x #修改为Server的IP地址
Hostname=www.xx.com #填写本机的HostName,注意Server端要能解析
UnsafeUserParameters=1
#是否允许自定义的key,1为允许,0为不允许
#Include= etc/zabbix/zabbix_agentd.conf.d/

此处未做修改,因为是本机监控端服务

注意hostname是本机,注意Server端要能解析。

一定要修改为和服务端一致的HOSTNAME,否则后续监控会提示

UnsafeUserParameters=1
因为以后需要用到自定义的KEY,因此必须改为1,不能使用默认0

#Include= etc/zabbix/zabbix_agentd.conf.d/  
初次运行配置不建议开启,否则会造成agent 查找conf 出现递归,经部署完成以后发现会导致agent端服务无法启动。
除非后续配置其他模板,例如memcached,redis等,可以开启。
但必须UnsafeUserParameters=1

在安装包内复制agent端运行所需要的脚本

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/
chmod +x /etc/init.d/zabbix_agentd

注意要检查修改这个脚本
vim /etc/init.d/zabbix_agentd
修改DAEMON=/usr/local/zabbix/sbin/zabbix_agentd

验证检测server端和agent端是否连接是否正常

从zabbix 服务端验证,以可以解析客户端服务器的hostname为通过验证。

#zabbix_get -s 127.0.0.1 -p10050 -k"system.uptime"
该命令需要单独安装(yum -y install zabbix_get)
有返回值说明配置成功。

注:在服务端进行操作。目前我们的测试机同为服务端和客户端,因此该步骤省略,
但是只要有多台监控实例,应当执行验证环境,保证服务健康正常。

启动zabbix agent端
/etc/init.d/zabbix_agentd start

设置开机自启
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on

在监控页面添加相关主机和配置模板进入初步监控阶段。

如何添加查找主机项此处省略包括前序一些步骤。
常见的添加健康项根据需求进行添加设置

下图为监控图形的一些检测参数,将需要的监控项目右上角五角星点亮,添加到常用

回到监控菜单页面中可以看到我们添加了一些常用的监控组模板

自此基本监控内容项目已经能够通过相关图示监控出来。

根据目前业务要求,需要监控的项目有:
流量,CPU负载,内存占用率,memcached,以及队列监控。

本次监控围绕上述业务项目展开配置
找到图形添加需要监控的项目(使用自带的模板)

在图形菜单选项中选择我们需要的监控项目

一、流量监控
实际也就是监控网卡的数据包出入口的流量
但是因为我们是阿里云的服务器,因此我们监控的网卡请注意不要搞错

当前我们需要监控的网卡应该是eth0
zabbix自带的监控网络流量的key是:
net.if.in[eth0,bytes] 和net.if.out[eth0,bytes]
这里默认的单位是bytes
注意1M=1024 * 1024=1048576,如果我们要设定流量超过10M就报警,那么我们的目标值就是10485760。
有关设定报警参数值将在后面陆续根据情况和指示做出进一步预警机制。

二、CPU负载
在zabbix中监控CPU的监控图形分为三种
1、cpu jumps
又称cpu突发
包含 context switches per second 进程线程切换
interrupts per second 每秒的中断次数

2、cpu load
各核心的负载均值 如果有进程等待IO 即使CPU空闲平均值也会设置为1 此项即top里面的cpu值

3、cpu utilization
此为cpu使用率,超过75%就被认为过高,因此需要根据实际情况设定报警阙值。

CPU JUMP

CPU LOAD

CPU utilization

上图看出我们的服务器目前平均负载为3.57%,最大43.5%属于正常范围健康值,后续需要根据情况做出报警设置。

磁盘占用空间

当前磁盘空间比较健康,还剩27.59GB,占比41.28%。后续根据要求做出报警设置。

Zabbix的磁盘监控过于死板,居然不能检测到整体磁盘大小。后续需要做出进一步调整。

三、内存使用率

当前我们的服务器内存平均使用率为4.98G,最小4.47G,最大5.99G,属于健康范围值。

四、监控memcached
1、在客户端内
找到/usr/loca/zabbix/etc/conf/zabbix_agentd.conf里添加
UserParameter=memcached_stats[*],(echo stats; sleep 1) | telnet 127.0.0.1 $1 2>&1 | awk '/STAT $2 / {print $NF}'

如果我们的memcache绑定了ip,需要自行修改
2、重启zabbix agent服务
/etc/init.d/zabbix_agentd restart

如果提示报错请杀掉进程重新赋予conf位置,这类报错一般是由于没有使用自定义脚本时在conf文件内自定义了include导致加载出错。
ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
2、在服务端内
在zabbix的web界面里连接监控memcache模板  ()
在web里选择配置-模板
然后选择导入
然后把相应的memcache.xml文档导入。

然后在选择主机加入这个模板即可。
提示导入成功以后
在模板中找到需要使用该模板的群组

下拉找到memcached11211

请注意依次点击添加-更新否则会出现保存以后回图形中仍旧找不到该模板!

最后请在需要监控的主机中添加使用该模板

最后可以在图形中发现memcached监控项图示

自此memcached监控已经部署结束,下一步将根据使用情况进行测试监控。
如果发现各项监控均无数据,请检查是否启动memcached

以上是面对memcache端口不修改,正常为11211端口。
如果是多端口或者不为11211端口的话,可以对模板进行修改,
可以sed -i ‘s/11211/你修改的端口/g’memcache.xml
然后在重新导入到zabbix就可以监控多端口或非11211端口
同时在zabbix_agentd.conf里把UserParameter里的11211改成你需要的端口
模板添加完后按上述添加相应的主机就可以了。

其他部分
在添加聚合图形时候发现,swap分区问题
提示Lack of free swap space on Zabbix server

于是在SSH端用命名查看了下

  找到配置-模板,找到该监控选项模板,选择触发器

找到选择 Lack of free swap space on {HOST.NAME}
查看表达式
{Template OS Linux:system.swap.size[,pfree].last(0)}<50
修改Expression表达式为:
{Template OS Linux:system.swap.size[,pfree].last(0)}<50 and {Template OS Linux:system.swap.size[,free].last(0)}<>0
此处修改增加了“ and {Template OS Linux:system.swap.size[,free].last(0)}<>0”判断系统有交换空间,当系统无交换空间即{Template OS Linux:system.swap.size[,free].last(0)}的值为0时将不会时表达式不成立就不会触发错误提示。保存之后在下一个更新周期内Zabbix之前报告的“Lack of free swap space”问题就会被自动标记为Resolved(已解决)。

点击更新在下一周期后正常

监控tomcat多实例
在添加jxm监控tomcat时发现如下问题

在 "Zabbix server" 找不到用于监控项 key"jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]" 的主机接口。
分析:
目前服务器有4个tomcat实例,而且端口都已做过调整,目前zabbix监控tomcat,网上搜索大部分都是通过配置JMX端口来进行监控。这个方法对只有一个tomcat的情况支持的还是不错的。但是针对一台server多个实例一定会发生各种问题。

报警端设置
服务端位置位于:
/usr/local/zabbix/etc/
在服务端中配置AlertScriptsPath的路径

AlertScriptsPath=/usr/local/zabbix/alertscripts
进入到该脚本目录下创建一个token.sh
将钉钉机器上申请的webhook键入
https://oapi.dingtalk.com/robot/send?access_token=069ea5966e4491a3f8479c584f85987c3a6420bdc2e92ddd3ac9da2499016829

Vim token.sh
#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=069ea5966e4491a3f8479c584f85987c3a6420bdc2e92ddd3ac9da2499016829' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles":[
"'"$1"'"
],
"isAtAll":false
}
}'

保存后配置执行文件权限与归属
chown zabbix.zabbix token.sh
chmod +x token.sh

在页面端添加如下

再添加 3 个参数,分别对应脚本的3个参数
收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加动作

标题改为:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
信息改为:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

继续点击”新的” 添加发送选项

表示触发 3次动作,每隔 120 秒触发一次,告警发给 admin 用户,用”钉钉”媒介发送。
点击小”更新”添加选项,最后添加。
添加接收用户报警

本次用于测试,因此暂时只设置群内机器人短信报警,邮箱报警未做设置

最后不要忘记点击更新

自此钉钉预警设置已经配置完毕。服务部署部分
服务端:114.55.236.18
客户端:118.178.234.249
确定服务器系统版本:
服务端:

  客户端:

确保服务器和客户端也就是agent端版本一致
因生产环境服务器负担比较大,因此本次部署仅在 服务端:114.55.236.18上执行操作。

1、下载源码包并安装依赖包
https://www.zabbix.com/download_sources
选择最新的zabbix3.4版本

2、安装依赖包:
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib zlib-devel openssl OpenIPMI-devel openldap-devel openldap openssl-devel openldap-servers pcre-devel httpd wget ntpdate net-snmp* mysql-devel mysql-community-devel libxml2-devel unixODBC-devel net-snmp-devel libcurl-devel libssh2-devel bzip2 bzip2-devel curl curl-devel e2fsprogs e2fsprogs-devel freetype freetype-devel gd gd-devel glib2 glib2-devel glibc glibc-devel krb5 krb5-devel libevent libevent-devel libidn libidn-devel libjpeg libjpeg-devel libpng libpng10 libpng10-devel libpng-devel libtool libtool-libs libxml2 libxml2-devel make ncurses ncurses-devel nss_ldap openldap-clients patch pspell-devel

因服务端已有nginx,MySQL等部分基础环境,因此需要检查是否其他需求环境是否部署
一般LAMP环境是基础要求。
务必检查基础环境要求确保zabbix能正常安装使用
注意PHP支持:
yum install php php-devel
安装php的扩展
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

3、开始部署安装
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc

make -j4 && make install
编译执行安装

4、修改PHP的配置参数
vim /etc/php.ini 
date.timezone= Asia/Shanghai

max_execution_time = 300 #440行
post_max_size = 32M #729行
memory_limit = 128M #457行
mbstring.func_overload = 1 #1586行
max_input_time = 300 #132行

移动zabbix项目到httpd目录中去(开始是/usr/local/nginx下,后经过nginx解析php页面不能成功加之ZABBIX有部分动态效果页面所以放弃)

cp -r frontends/php/ /var/www/html/zabbix
ll /var/www/html/
chown -R apache.apache /var/www/html/zabbix/

5、数据库及相应权限赋予
Mysql -u root -p twoxfour
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
创建zabbix数据库
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';
创建zabbix用户并赋予权限
use zabbix;
source ~/zabbix-3.4.7/database/mysql/database/mysql/schema.sql;
source ~/zabbix-3.4.7/database/mysql/images.sql;
source ~/zabbix-3.4.7/database/mysql/data.sql;
务必按此顺序导入数据库
导入结束后创建用户并赋予相应目录读取权限
groupadd zabbix
useradd -M -g zabbix -s /sbin/nologin zabbix
chown -R zabbix.zabbix /usr/local/zabbix

6、修改配置文件相应位置
建立相关目录,稍后会在conf文件中配置用到
mkdir logs
mkdir alertscripts
mkdir externalscripts

vim /usr/local/zabbix/etc/zabbix_server.conf
38行LogFile=/usr/local/zabbix/logs/zabbix_server.log
68行PidFile=/usr/local/zabbix/logs/zabbix_server.pid
95行DBName=zabbix
111行DBUser=zabbix
119行DBPassword=zabbix
440行Timeout=4
481行AlertScriptsPath=/usr/local/zabbix/alertscripts
490行ExternalScripts=/usr/local/zabbix/externalscripts
526行LogSlowQueries=3000

7、设置启动脚本及位置
zabbix服务启动脚本
cp misc/init.d/fedora/core/zabbix_server /etc/init.d/

将启动脚本的路径修改为/usr/local/zabbix
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
设置agent端在后续第二部分做出说明

zabbix安装目录授权
cd /usr/local/zabbix
chown -R zabbix.zabbix  zabbix/

设置开机自启
chkconfig --add zabbix_server
chkconfig zabbix_server on

监控端启动服务
/etc/init.d/zabbix_server restart

7、访问配置
首次配置访问站点(使用nginx)方案,因为nginx支持php不太理想导致最后出现页面是php代码,经过多次的处理调试没有解决。nginx对于最新版的zabbix和php支持的不太理想,最后不得已只能转向httpd进行php页面解析支持。
cp -r /frontends/php /usr/local/nginx/html/zabbix
chown zabbix.zabbix -R /usr/local/nginx/html/zabbix

重启php发生报错

修改/etc/php.ini
always_populate_raw_post_data = -1

启动报错

find / -name libmysqlclient.so.18

建立一个软链接
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

进入页面配置发现nginx对于php5.5以上版本(由于选用的是最新版zabbix,因此该版本要求php至少5.5w以上,包括其他依赖软件的版本都相对比较高,而我们这次的nginx版本也是最新的版本,所以在部分支持上没有达到预期的效果)支持的不是很理想,经过多次处理没有解决,最后不得已放弃使用nginx进行页面解析转向apache进行支撑。

经过各类升级安装排查,依旧没有解决该问题,因此放弃nginx配置访问zabbix方案,转向apache。

使用Apache后页面正常

初始账号为Admim,密码为zabbix
目前登录地址使用ip+端口和路径
原因是80端口被nginx占用,httpd改为81端口。
访问地址:
http://114.55.236.18:81/zabbix/

第一部分小结:
自此监控服务端已经部署完毕,剩下的部分为agent端部署以及各项监控功能的调试,计划是在本周初步调整好所有监控参数和项目,根据实际监控测试效果,进行进一步的优化,最终完成监控需求。
新版本固然能体验到最新的功能和效果,但是与此同时也意味着对各项组件要求更高,本次部署两方面有所感悟,一方面是nginx确实对php支持很无奈,尤其是后期各种依赖包,包括回头重新设置php参数,由于对php的不了解等其他方面原因,浪费了不少时间。另一方面是由于现有监控架构的情况,包括域名和端口在内的监控对象都是为本机等一些情况,在部署思路上开始绕了一个弯路。现在回头想来,还是应该坚持从优原则。
自此部署部分已经完成,进入下个阶段监控设置测试阶段。

监控设置测试及优化
一、中文显示乱码的问题
修改配置文件defines.inc.php
cd /var/www/html/zabbix/include/
Vim defines.inc.php
54行 define('ZBX_GRAPH_FONT_NAME', 'msyh');
103行 define('ZBX_FONT_NAME', 'msyh');
2、拷贝字体及授权
将系统微软雅黑的字体C:\Windows\Fonts,先拷贝桌面,在将msyh,msyhbd字体拷贝/var/www/html/zabbix/fonts
注意权限的问题
cd /var/www/html/zabbix/fonts
chown -R apache.apache *

在这里直接没有修改以上配置文件,直接将字体mv改名保持和原文件dejavusan.ttf一致
若后续发生问题则需跑回来设置。

二、监控端配置
agent端:本机
进入安装包位置开始部署客户端,编译安装
./configure --prefix=/usr/local/zabbix --with-net-snmp --enable-agent
Make && make install

修改客户端配置文件

vim /usr/local/zabbix/etc/zabbix_agentd.conf
#此处注意别写错或是执行了zabbix_agent.conf,否则配置了不生效
开始直接配置tab补全太过大意导致后面没能启动,后回头发现错误之处非常尴尬。
自我检讨一下。
Server=x.x.x.x #填写Server的IP地址
ServerActive=x.x.x.x #修改为Server的IP地址
Hostname=www.xx.com #填写本机的HostName,注意Server端要能解析
UnsafeUserParameters=1
#是否允许自定义的key,1为允许,0为不允许
#Include= etc/zabbix/zabbix_agentd.conf.d/

此处未做修改,因为是本机监控端服务

注意hostname是本机,注意Server端要能解析。

一定要修改为和服务端一致的HOSTNAME,否则后续监控会提示

UnsafeUserParameters=1
因为以后需要用到自定义的KEY,因此必须改为1,不能使用默认0

#Include= etc/zabbix/zabbix_agentd.conf.d/  
初次运行配置不建议开启,否则会造成agent 查找conf 出现递归,经部署完成以后发现会导致agent端服务无法启动。
除非后续配置其他模板,例如memcached,redis等,可以开启。
但必须UnsafeUserParameters=1

在安装包内复制agent端运行所需要的脚本

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/
chmod +x /etc/init.d/zabbix_agentd

注意要检查修改这个脚本
vim /etc/init.d/zabbix_agentd
修改DAEMON=/usr/local/zabbix/sbin/zabbix_agentd

验证检测server端和agent端是否连接是否正常

从zabbix 服务端验证,以可以解析客户端服务器的hostname为通过验证。

#zabbix_get -s 127.0.0.1 -p10050 -k"system.uptime"
该命令需要单独安装(yum -y install zabbix_get)
有返回值说明配置成功。

注:在服务端进行操作。目前我们的测试机同为服务端和客户端,因此该步骤省略,
但是只要有多台监控实例,应当执行验证环境,保证服务健康正常。

启动zabbix agent端
/etc/init.d/zabbix_agentd start

设置开机自启
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on

在监控页面添加相关主机和配置模板进入初步监控阶段。

如何添加查找主机项此处省略包括前序一些步骤。
常见的添加健康项根据需求进行添加设置

下图为监控图形的一些检测参数,将需要的监控项目右上角五角星点亮,添加到常用

回到监控菜单页面中可以看到我们添加了一些常用的监控组模板

自此基本监控内容项目已经能够通过相关图示监控出来。

根据目前业务要求,需要监控的项目有:
流量,CPU负载,内存占用率,memcached,以及队列监控。

本次监控围绕上述业务项目展开配置
找到图形添加需要监控的项目(使用自带的模板)

在图形菜单选项中选择我们需要的监控项目

一、流量监控
实际也就是监控网卡的数据包出入口的流量
但是因为我们是阿里云的服务器,因此我们监控的网卡请注意不要搞错

当前我们需要监控的网卡应该是eth0
zabbix自带的监控网络流量的key是:
net.if.in[eth0,bytes] 和net.if.out[eth0,bytes]
这里默认的单位是bytes
注意1M=1024 * 1024=1048576,如果我们要设定流量超过10M就报警,那么我们的目标值就是10485760。
有关设定报警参数值将在后面陆续根据情况和指示做出进一步预警机制。

二、CPU负载
在zabbix中监控CPU的监控图形分为三种
1、cpu jumps
又称cpu突发
包含 context switches per second 进程线程切换
interrupts per second 每秒的中断次数

2、cpu load
各核心的负载均值 如果有进程等待IO 即使CPU空闲平均值也会设置为1 此项即top里面的cpu值

3、cpu utilization
此为cpu使用率,超过75%就被认为过高,因此需要根据实际情况设定报警阙值。

CPU JUMP

CPU LOAD

CPU utilization

上图看出我们的服务器目前平均负载为3.57%,最大43.5%属于正常范围健康值,后续需要根据情况做出报警设置。

磁盘占用空间

当前磁盘空间比较健康,还剩27.59GB,占比41.28%。后续根据要求做出报警设置。

Zabbix的磁盘监控过于死板,居然不能检测到整体磁盘大小。后续需要做出进一步调整。

三、内存使用率

当前我们的服务器内存平均使用率为4.98G,最小4.47G,最大5.99G,属于健康范围值。

四、监控memcached
1、在客户端内
找到/usr/loca/zabbix/etc/conf/zabbix_agentd.conf里添加
UserParameter=memcached_stats[*],(echo stats; sleep 1) | telnet 127.0.0.1 $1 2>&1 | awk '/STAT $2 / {print $NF}'

如果我们的memcache绑定了ip,需要自行修改
2、重启zabbix agent服务
/etc/init.d/zabbix_agentd restart

如果提示报错请杀掉进程重新赋予conf位置,这类报错一般是由于没有使用自定义脚本时在conf文件内自定义了include导致加载出错。
ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
2、在服务端内
在zabbix的web界面里连接监控memcache模板  ()
在web里选择配置-模板
然后选择导入
然后把相应的memcache.xml文档导入。

然后在选择主机加入这个模板即可。
提示导入成功以后
在模板中找到需要使用该模板的群组

下拉找到memcached11211

请注意依次点击添加-更新否则会出现保存以后回图形中仍旧找不到该模板!

最后请在需要监控的主机中添加使用该模板

最后可以在图形中发现memcached监控项图示

自此memcached监控已经部署结束,下一步将根据使用情况进行测试监控。
如果发现各项监控均无数据,请检查是否启动memcached

以上是面对memcache端口不修改,正常为11211端口。
如果是多端口或者不为11211端口的话,可以对模板进行修改,
可以sed -i ‘s/11211/你修改的端口/g’memcache.xml
然后在重新导入到zabbix就可以监控多端口或非11211端口
同时在zabbix_agentd.conf里把UserParameter里的11211改成你需要的端口
模板添加完后按上述添加相应的主机就可以了。

其他部分
在添加聚合图形时候发现,swap分区问题
提示Lack of free swap space on Zabbix server

于是在SSH端用命名查看了下

  找到配置-模板,找到该监控选项模板,选择触发器

找到选择 Lack of free swap space on {HOST.NAME}
查看表达式
{Template OS Linux:system.swap.size[,pfree].last(0)}<50
修改Expression表达式为:
{Template OS Linux:system.swap.size[,pfree].last(0)}<50 and {Template OS Linux:system.swap.size[,free].last(0)}<>0
此处修改增加了“ and {Template OS Linux:system.swap.size[,free].last(0)}<>0”判断系统有交换空间,当系统无交换空间即{Template OS Linux:system.swap.size[,free].last(0)}的值为0时将不会时表达式不成立就不会触发错误提示。保存之后在下一个更新周期内Zabbix之前报告的“Lack of free swap space”问题就会被自动标记为Resolved(已解决)。

点击更新在下一周期后正常

监控tomcat多实例
在添加jxm监控tomcat时发现如下问题

在 "Zabbix server" 找不到用于监控项 key"jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]" 的主机接口。
分析:
目前服务器有4个tomcat实例,而且端口都已做过调整,目前zabbix监控tomcat,网上搜索大部分都是通过配置JMX端口来进行监控。这个方法对只有一个tomcat的情况支持的还是不错的。但是针对一台server多个实例一定会发生各种问题。

报警端设置
服务端位置位于:
/usr/local/zabbix/etc/
在服务端中配置AlertScriptsPath的路径

AlertScriptsPath=/usr/local/zabbix/alertscripts
进入到该脚本目录下创建一个token.sh
将钉钉机器上申请的webhook键入
https://oapi.dingtalk.com/robot/send?access_token=069ea5966e4491a3f8479c584f85987c3a6420bdc2e92ddd3ac9da2499016829

Vim token.sh
#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=069ea5966e4491a3f8479c584f85987c3a6420bdc2e92ddd3ac9da2499016829' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles":[
"'"$1"'"
],
"isAtAll":false
}
}'

保存后配置执行文件权限与归属
chown zabbix.zabbix token.sh
chmod +x token.sh

在页面端添加如下

再添加 3 个参数,分别对应脚本的3个参数
收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加动作

标题改为:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
信息改为:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

继续点击”新的” 添加发送选项

表示触发 3次动作,每隔 120 秒触发一次,告警发给 admin 用户,用”钉钉”媒介发送。
点击小”更新”添加选项,最后添加。
添加接收用户报警

本次用于测试,因此暂时只设置群内机器人短信报警,邮箱报警未做设置

最后不要忘记点击更新

自此钉钉预警设置已经配置完毕。