- A+
系统环境:Centos 7
软件版本:Zabbix 4.0 LTS
环境准备:LNMP
1.下载
wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.9/zabbix-4.0.9.tar.gz
2.安装依赖包
yum install net-snmp-devel libxml2-devel libcurl-devel -y
3.增加zabbix用户
groupadd --system zabbix; useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
4.创建数据库
mysql -u root -p mysql> create database zabbix character set utf8; mysql> grant all PRIVILEGES on zabbix.* to zabbix@'localhost' identified by 'zabbix'; mysql> quit;
5.解压并初始化数据库
tar zxvf zabbix-4.0.9.tar.gz cd zabbix-4.0.9/database/mysql; mysql -uzabbix -pzabbix zabbix < schema.sql; mysql -uzabbix -pzabbix zabbix < images.sql; mysql -uzabbix -pzabbix zabbix < data.sql;
注:对于Zabbix proxy数据库,只导入 schema.sql即可
6.编译安装
./configure --prefix=/opt/zabbix/ --enable-server --enable-agent --enable-proxy --with-mysql=/usr/local/mysql/bin/mysql_config --enable-java --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2;
注:因为安装Java网关将创建整个目录树,而不仅仅是单个可执行文件。建议制定安装目录
--prefix 指定zabbix安装目录
--enable-server 支持zabbix服务器
--enable-agent 支持zabbix代理
--enable-proxy 支持zabbix代理服务器
--with-libcurl 使用curl包
--with-net-snmp 使用net-snmp软件包,选择性地指定路径NET-SNMP配置
--with-mysql=/usr/local/mysql/bin/mysql_config使用MySQL客户端库可以选择指定路径mysql_config
make && make install
7.为zabbix创建软链接
ln -s /opt/zabbix/etc/ /etc/zabbix; ln -s /opt/zabbix/bin/* /usr/bin; ln -s /opt/zabbix/sbin/* /usr/bin;
8.配置zabbix
vim /etc/zabbix/zabbix_server.conf DBName=zabbix DBUser=zabbix DBPassword=zabbix DBPort=3306
9.创建启动脚本
cp zabbix-4.0.5/misc/init.d/fedora/core/zabbix_* /etc/init.d/; sed -i 's#BASEDIR=/usr/local#BASEDIR=/opt/zabbix#' /etc/init.d/zabbix_server; sed -i 's#BASEDIR=/usr/local#BASEDIR=/opt/zabbix#' /etc/init.d/zabbix_agentd;
10.开机启动
echo /opt/zabbix/sbin/zabbix_server >> /etc/rc.d/rc.local; echo /opt/zabbix/sbin/zabbix_agentd >> /etc/rc.d/rc.local; chmod +x /etc/rc.d/rc.local;
11.zabbix程序拷贝到网站目录
rm -rf /home/wwwroot/default/*; cp -r zabbix-4.0.5/frontends/php/* /home/wwwroot/default/;
12.修改php
sed -i 's/max_input_time = 60/max_input_time = 300/' /usr/local/php/etc/php.ini; sed -i 's#date.timezone = PRC#date.timezone = Asia/Shanghai#' /usr/local/php/etc/php.ini; sed -i 's/max_input_time = 60/max_input_time = 300/' /usr/local/php/etc/php.ini;
记得重启php服务,使得配置生效
13.启动服务并打开网页配置
/etc/init.d/zabbix_server start; /etc/init.d/zabbix_agentd start;
14.添加防火墙
firewall-cmd --zone=public --add-port=10050-10051/tcp --permanent;firewall-cmd --reload; firewall-cmd --zone=public --add-port=10050-10051/udp --permanent;firewall-cmd --reload;
15.配置动态效果图,如有报错提示,可以根据报错提示在php.ini中修改

登录动态效果图,用户名admin密码zabbix

16.解决中文乱码
复制系统字体,比如楷体C:\Windows\Fonts\simkai.ttf到桌面上
备份原字体
mv /home/wwwroot/default/assets/fonts/DejaVuSans.ttf /home/wwwroot/default/assets/fonts/DejaVuSans.ttf.bak; mv simkai.ttf /home/wwwroot/default/assets/fonts/DejaVuSans.ttf;
17.添加邮件告警
管理--报警媒介类型--Email-配置自己的邮箱账户
18.添加微信告警(前提已有企业微信应用)
#!/bin/bash CropID='xxxxx' Secret='xxxxxxxx' GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" #get acccess_token Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}') PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" #echo `curl -s -G "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=$Gtoken&id=ID"` # function body() { local int AppID=1000002 #企业号中的应用id local UserID="xxxxx" #部门成员id,zabbix中定义的微信接收者 local PartyID="2" #部门id,定义了范围,组内成员都可接收到消息 local Msg=$(echo "$@" | cut -d" " -f3-) #过滤出zabbix传递的第三个参数 printf '{\n' printf '\t"touser": "'"$UserID"\"",\n" printf '\t"toparty": "'"$PartyID"\"",\n" printf '\t"msgtype": "text",\n' printf '\t"agentid": "'" $AppID "\"",\n" printf '\t"text": {\n' printf '\t\t"content": "'"$Msg"\""\n" printf '\t},\n' printf '\t"safe":"0"\n' printf '}\n' } echo $Msg #/usr/bin/curl --data-ascii '{ "touser": "@all", "toparty": " @all ","msgtype": "text","agentid": "1000002","text": {"content": "'${Content}'"},"safe":"0"}' $PURL /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
把上面脚本保存到/opt/zabbix/share/zabbix/alertscripts目录下,然后加上权限
chmod +x zabbix.sh
管理--报警媒介类型--创建媒体类型--脚本加入三个参数:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}
配置用户
标题trigger 主机名称:{HOSTNAME} 主机地址:{HOST.IP} 故障发生时间:{EVENT.DATE}:{EVENT.TIME} 触发器类型: {TRIGGER.NAME} 触发器状态: {TRIGGER.STATUS}
标题resolve 主机名称:{HOSTNAME} 主机地址:{HOST.IP} 故障时间:{EVENT.DATE}:{EVENT.TIME} 触发器类型: {TRIGGER.NAME} 触发器状态: {TRIGGER.STATUS}
标题Acknowledged 用户:{USER.FULLNAME} 在 {ACK.DATE} {ACK.TIME} 确认这个问题,信息如下: {ACK.MESSAGE} 当前问题是: {EVENT.STATUS}
19.创建自动发现规则
配置-自动发现-修改服务器内网网段
配置--动作--事件源--自动发现
可以自己设置发现主机自动添加到特定的群组,自动关联特定模版
20.基于curl api 认证并取得加密字段
curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"user.login","params":{"user":"admin","password":"admin"},"auth": null,"id":0}' http://ip/api_jsonrpc.php;
测试
zabbix_get -s ip -p 10050 -k "system.uptime"
附注: zabbix api在线工具:http://monitoringartist.github.io/zapix/