目录
安装zabbix
部署zabbix
配置zabbix
1. 修改语言
2. 监控linux端
3. 修改中文乱码
报警功能
报警音报警
邮件报警
脚本报警
邮件通知内容
图形模块
创建图形
创建聚合图形
percona
mysql模板
nginx模板
克隆主机
网络发现
自动注册
主被动模式
如果对你有帮助就点个收藏吧
博主首页大虾好吃吗
实验目标:根据拓扑图配置监控node1和mysql,添加mysql监控模板,脚本报警等功能。
拓扑图如下:
1. 安装zabbix源:
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm (阿里源)
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm (官方源)
rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm (国内清华源)
新版本:
https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm
本案例使用rpm安装,如yum安装使用此命令:yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
2. 安装zabbix服务端软件
[root@zabbix_server ~]# rpm -ivh /media/zabbix-server/* --nodeps --force
[root@zabbix_server ~]# modprobe ipmi_devintf //rpm安装缺少模块,加载两项模块
[root@zabbix_server ~]# modprobe ipmi_msghandler
3. 启动数据库,建立数据库及用户
[root@zabbix_server ~]# systemctl start mariadb
[root@zabbix_server ~]# systemctl enable mariadb
[root@zabbix_server ~]# mysqladmin -uroot password
New password:
Confirm new password:
[root@zabbix_server ~]# mysql -uroot -p123
//省略部分内容
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
4. 导入zabbix初始化数据
[root@zabbix_server ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.22/create.sql.gz |mysql -uzabbix -pzabbix zabbix
5. 修改zabbix配置文件
[root@zabbix_server ~]# vim /etc/zabbix/zabbix_server.conf
DBPassword=zabbix //修改此行,删除注释添加数据库密码
[root@zabbix_server ~]# systemctl start zabbix-server
[root@zabbix_server ~]# systemctl enable zabbix-server
6. 修改时区
修改配置文件,定位到20行修改为上海。
[root@zabbix_server ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
[root@zabbix_server ~]# systemctl restart httpd
[root@zabbix_server ~]# systemctl enable httpd
通过浏览器访问http://192.168.1.4/zabbix ,部署zabbix点击"Next step"下一步,确认当前页ok再次点击"Next step"下一步,输入数据库用户密码后,全部点击下一步即可到达登录界面。默认用户:Admin,密码:zabbix。
首次安装的zabbix一般为英文,下面将修改为中文界面。
再次查看后就成为中文首页了。
(1)再次打开一台linux服务器,测试zabbix监控。
yum安装方式:
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
本次使用rpm安装
[root@node1 ~]# rpm -ivh /media/zabbix-server/zabbix-agent-4.0.22-1.el7.x86_64.rpm --nodeps --force
[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.4 //找到Server字段,指向zabbix服务器。
[root@node1 ~]# systemctl start zabbix-agent
[root@node1 ~]# systemctl enable zabbix-agent
(2)添加主机
配置→主机→创建主机→指定主机名称→指定群组→代理服务器IP(被监控端IP)→添加。
(3)添加模板
点击配置→主机→模板→添加模板→添加(小字体)→添加。
添加后稍等片刻就可以看到新建的主机成功,添加的模板等都可以看到。下面Zabbix server是zabbix服务器本机,本机也是可以被监控的(自己监控自己)。
zabbix服务器执行命令:[root@zabbix_server ~]# systemctl start zabbix-agent下面就可以看到主机已启用并正常监控了。
点击监测→图形→选择群组→主机→监控类型,就可以看到当前被监控端的信息,但是可以看到下方数据有乱码现象,需要在zabbix服务器安装字体包。
[root@zabbix_server ~]# yum -y install wqy-microhei-fonts
[root@zabbix_server ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf
选择覆盖原字体。
现在登录zabbix的web页面将正常显示中文字体。
下面将开启触发器测试登录人数,如果超过限定人数就发出警报并发邮件到管理员qq邮箱。
(1)前端声音报警
右上角小人(用户)→正在发送信息→勾选前端信息中→更新。
(2)添加触发器
配置→主机→找到对应主机(node1)→触发器→创建触发器→命名→严重性→添加表达式→选择监控项(Number of logged in users)→间隔→结果(大于/0小于/等于/不等于n则发出警告)→下方添加完成。
node1端创建大于三个连接数,等待zabbix发出警告并发送邮件。但是想要发送邮件还需要开启Report problems to Zabbix administrators,如未开启需要开启该项。
此时可以在web页面看到警报提醒。
zabbix的报警功能随好,但是生产环境中,不能无时无刻的守在服务器旁,这就应用到了邮件警报功能。当下班时如服务器出现问题,警报系统将给邮箱发送一条信息,我们从而得知服务器的故障。
1. 配置→动作→启用report→应用。
2. 点击右上角用户头像→报警媒介→添加→收件人邮箱地址(推荐使用qq邮箱)。
3. 管理→报警媒介类型→email→添加SMTP服务器:smtp.qq.com→端口:465→HELO:qq.com→SMTP电邮:[email protected]→SSL/TLS→勾选→用户名称:[email protected]→密码:qq邮箱授权码。
qq邮箱授权码获取方式:(打开邮箱--设置--账户→开启smtp服务--获取授权码--保存配置)
监控端再次打开新端口访问,连接数大于三个用户,查看zabbix是否发送邮件(过程需要等待1至两分钟)。
通过下图已经收到了网站的警告,打开邮件查看是否收到邮件。
通过对邮件的查看,可以看到主机node1的警告。
上面也讲过邮件报警了,但是还是有一些公司用的老版本centos6或者zabbix2,zabbix没有email报警媒介模块,这就需要编辑脚本报警。
1. 关闭zabbix-server上的邮件服务,安装mailx
[root@zabbix_server ~]# systemctl stop postfix
[root@zabbix_server ~]# systemctl disable postfix
Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
[root@zabbix_server ~]# yum -y install malix
2. 编辑mailx的配置,指定收件邮箱和用户密码
[root@zabbix_server ~]# vim /etc/mail.rc
空白行添加下面内容,收件人注意修改为本人邮箱
set [email protected] //本人邮箱
set smtp=smtps://smtp.qq.com:465
set [email protected] //本人邮箱
set smtp-auth-password=hjhzldkencdyeaji //本人授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
保存文本退出后,测试邮件服务是否成功。error内容表示证书不安全,实验环境不用理会。
3. zabbix-server编写邮件报警脚本
[root@zabbix_server ~]# yum -y install dos2unix
[root@zabbix_server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix_server alertscripts]# vim email_notice.sh
#!/bin/bash
#export UTF-8
FILE=/tmp/mail.txt
echo "$3" > $FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
[root@zabbix_server alertscripts]# chmod +x email_notice.sh
4. zabbix web控制台关联邮件报警脚本
管理→报警媒介类型→关闭已有的email报警→右上角“创建媒体类型”→“名称,类型(脚本),脚本名称(必须写对),参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}”→添加。
右上角→小人(用户)→报警媒介→“类型(邮件脚本,收件人:真实邮箱地址)”→添加→更新。
查看的邮件发现很多英文,排版也不规则,很不人性化。下面通过修改配置让邮件信息合理阅读。
配置→动作→Report problems to Zabbix administrators→操作→修改默认标题→修改消息内容→恢复操作→修改默认标题→修改消息内容→更新。
操作主题:Problem: {EVENT.NAME}故障{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}
恢复操作主题:恢复{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}
修改后还是增加node1的连接数,等待邮件报警。通过查看我们可以看到对比刚在的邮件内容更加一目了然。
配置→主机→选择主机(node1)→图形→右上角“创建图形”→填写“名称”→添加“监控项”→点击最后一行“添加”
查看图形:
监测→图形→选择“群组”→选择"主机"→选择“图形名称”
监测→聚合图形→创建聚合图形→填写聚合图形“名称”→添加→选择新建聚合图形→指定名称→编辑行和列→添加→选择创建的聚合图形→编辑聚合图形→根据需求添加
幻灯片演示:
聚合图形→创建幻灯片演示(把多个聚合图形,按照频率刷新演示)→指定名称→选择 幻灯片播放的图形→添加→点击创建的幻灯片查看。
zabbix模板文件下载:
https://www.zabbix.org/wiki/Zabbix_Templates/Official_Templates
mysql主机(192.168.1.6)安装zabbix-agent,修改配置文件指向zabbix服务器。
1. 安装环境
percona需要php环境
[root@mysql ~]# yum -y install php php-mysql
[root@mysql ~]# rpm -ivh /media/zabbix-server/zabbix-agent-4.0.22-1.el7.x86_64.rpm
[root@mysql ~]# systemctl start zabbix-agent
[root@mysql ~]# systemctl enable zabbix-agent
[root@mysql ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.4
[root@mysql ~]# rpm -ivh /media/mysql5.6-rpm/* --nodeps --force
[root@mysql ~]# systemctl start mysqld
[root@mysql ~]# systemctl enable mysqld
[root@mysql ~]# mysqladmin -uroot password
New password:
Confirm new password:
2. 下载软件
注意:安装完成后会有提示模版的路径位置
[root@mysql ~]# rpm -ivh /media/percona-zabbix-templates-1.1.8-1.noarch.rpm
//省略部分内容,下面为模板路径提示
Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates
3. 查看目录
进入安装目录会发现有2个目录,一个是脚本目录,一个是模版目录
[root@mysql ~]# cd /var/lib/zabbix/percona/
[root@mysql percona]# ls
scripts templates
其中脚本目录里有2个脚本,用来获取数据库信息
4. 修改get_mysql_stats_wrapper.sh
修改get_mysql_stats_wrapper数据库登陆信息
[root@mysql percona]# vim scripts/get_mysql_stats_wrapper.sh
修改第19行-e前面加用户名及密码:
RES=`HOME=~zabbix mysql -uroot -p123 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
5. 修改ss_get_mysql_stats.php
[root@mysql percona]# vim scripts/ss_get_mysql_stats.php
修改30,31行:
$mysql_user = 'root';
$mysql_pass = '123';
6. 复制自定义监控项配置文件到zabbix目录
[root@mysql percona]# cp templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
7. 重启agent
[root@mysql percona]# systemctl restart zabbix-agent
8. 刷新
[root@mysql percona]# zabbix_agentd -p
下面出现这样的提醒没有报错不用理会。
9. 导入模版
配置→模板→导入→浏览导入文件(zbx_percona_mysql_template)→勾选聚合图形→最后导入
10. 主机链接模版
模板创建完成后就可以创建主机了,并选择刚才导入的模板。
配置→主机→创建主机→选择两个模板→添加→添加
查看模板图形:
监测→图形→群组→主机→图形
前提环境:打开nginx服务器安装zabbix-agent,修改配置文件指向zabbix服务器。
1. 开启监控页面并访问测试
[root@node1 ~]# vim /etc/nginx/conf.d/default.conf //添加nginx状态模块
location /nginx_status {
stub_status on;
access_log off;
}
[root@node1 ~]# systemctl restart nginx
使用下面两种方式其一验证。
2. 准备nginx监控状态脚本
[root@node1 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@node1 zabbix_agentd.d]# vim nginx_monitor.sh
#!/bin/bash
NGINX_COMMAND=$1
CACHEFILE="/tmp/nginx_status.txt"
CMD="/usr/bin/curl http://127.0.0.1/nginx_status/"
if [ ! -f $CACHEFILE ];then
$CMD >$CACHEFILE 2>/dev/null
fi
# Check and run the script
TIMEFLM=`stat -c %Y $CACHEFILE`
TIMENOW=`date +%s`
if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
rm -f $CACHEFILE
fi
if [ ! -f $CACHEFILE ];then
$CMD >$CACHEFILE 2>/dev/null
fi
nginx_active(){
grep 'Active' $CACHEFILE| awk '{print $NF}'
exit 0;
}
nginx_reading(){
grep 'Reading' $CACHEFILE| awk '{print $2}'
exit 0;
}
nginx_writing(){
grep 'Writing' $CACHEFILE | awk '{print $4}'
exit 0;
}
nginx_waiting(){
grep 'Waiting' $CACHEFILE| awk '{print $6}'
exit 0;
}
nginx_accepts(){
awk NR==3 $CACHEFILE| awk '{print $1}'
exit 0;
}
nginx_handled(){
awk NR==3 $CACHEFILE| awk '{print $2}'
exit 0;
}
nginx_requests(){
awk NR==3 $CACHEFILE| awk '{print $3}'
exit 0;
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo 'Invalid credentials';
exit 2;
esac
[root@node1 zabbix_agentd.d]# chmod +x nginx_monitor.sh
[root@node1 zabbix_agentd.d]# sh nginx_monitor.sh
3. 编写zabbix监控配置文件
[root@node1 zabbix_agentd.d]# vim nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1
[root@node1 zabbix_agentd.d]# systemctl restart zabbix-agent
[root@node1 zabbix_agentd.d]# chown zabbix:zabbix /tmp/nginx_status.txt
4. 在服务端(192.168.1.4)使用zabbix_get取值
[root@zabbix ~]# zabbix_get -s 192.168.1.5 -k nginx_status[accepts]
5. 导入模版
配置→模板→导入→选择文件→根据需求勾选聚合图形→导入。
6. 使用模板
配置→主机→选择nginx主机→模板→选择Template App NGINX→添加→更新/添加。
此时两个新添加的模板都链接成功了。
7. 查看数据
使用mysql服务器安装ab工具测试
[root@mysql ~]# yum -y install httpd-tools
[root@mysql ~]# ab -c 1000 -n 10000 http://192.168.1.5/index.html
监测→最新数据→选择nginx主机→查看访问。
在生产环境中的主机非常多,如果一台一台添加非常消耗时间。此刻就需要到克隆,配置玩一个nignx服务器或mysql服务器,直接克隆出多台,模板等都不需要配置,只需要修改主机名称和客户端IP。
此刻需要在添加一台nginx服务器,安装zabbix-agent修改配置文件指向zabbix服务器。
拓扑图如下:
node1添加其他nginx服务器
配置→主机→node1→克隆。
修改主机名称和代理端IP后点击添加即可。
稍等刷新界面,可以看到node2的各项都和node1相同,模板也链接成功。
网络发现的作用:加快Zabbix部署,简化管理,无需过多管理,也能在快速变化的环境中使用Zabbix,一般通过网络ip范围自动发现agent主机。
拓扑图如下:
如跟着上面做的实验,需要先全部删除客户端主机,如下图所示。
1. 客户端安装三台客户端主机需要安装zabbix-agent,配置文件Server指向zabbix-server服务器。下面以node1为例,mysql和node2配置相同。
[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.4
[root@node1 ~]# systemctl start zabbix-agent
2. web自动发现
(1)配置→自动发现→修改Local Network→添加主机网段(agent端范围,IP数越多时间越久)→修改间隔→更新。
(2)配置→动作→事件源(自动发现)→修改现有自动发现→修改触发条件(agent端IP)→操作→添加标题→添加主机,根据需求添加群组、模板→更新。
稍等片刻查看主机,可以看到三台主机都自动添加成功。
自动注册:Zabbix Active agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。例如:手动指定node1,它会自动创建包含node的主机,如node1、node2。但不会自动创建mysql主机。
1. 环境要求
添加前需要删除前面创建的主机,禁用自动发现功能。
web页面删除三台agent主机,客户端安装zabbix-agent,配置文件Server,ServerActive指向zabbix-server,Hostname修改本机主机名。
本次目标根据主机名node实现node1、node2的自动创建主机,修改两台node服务器文件。以node1为例。
[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.4
ServerActive=192.168.1.4
Hostname=node1
[root@node1 ~]# systemctl restart zabbix-agent
2. web自动注册
配置→动作→事件源(自动注册)→创建动作→填写名称→触发条件主机名→操作(主机、群组、模板)。
下面就可以看到主机名包含node的两台主机都已经添加成功了。
被动模式:默认模式,由服务器向客户端发起监控项请求,每个监控项发一个请求,效率低。
主动模式:由客户端主动向服务器申请监控项清单,一起发送给服务器,效率高,不占服务器太多资源。