6、Zabbix其它一些功能
6.1web监控
这个监控只是用于监控我们的zabbix服务器能否访问我们监控的web页面,和一些其他的专业的监控软件是比不了的
6.1.1创建web监控
6.2制作幻灯片
6.2.1创建聚合图像
6.2.2制作聚合图像
6.2.3修改聚合图像
6.2.4通过聚合图像制作幻灯片
6.2.5幻灯片查看
每过三十秒进行切换
6.3Zabbix事件通知机制
6.3.1邮件通知
6.3.1.1邮箱开启SMTP
6.3.1.2生成授权码
按照提示使用绑定的手机发送配置邮件客户端到1069070069,然后点击我已发送。
6.3.1.3在zabbix上设置报警媒介
报警媒介类型是一种给运维工程师发送消息通知的渠道,即当zabbix 的触发器触发一个事件后,怎么才能把这个事件通过某些方式通知给运维工程师呢?那么媒介类型就起到这样的作用,媒介类型创建好之后,需要在每个账户里面添加相应的收件配置,比如邮件类型的媒介类型要给zabbix账户添加邮箱,如果是微信类型的媒介类型那么就要在zabbix账户设置微信号,同样的到来,短信类型的媒介类型那就得给zabbix账户设置手机号用于接收报警消息内容。
6.3.1.4给用户添加报警媒介
6.3.1.5创建动作
6.3.1.6模拟故障
创建一个必然会出现报错信息的触发器
6.3.1.7查看邮件
注意:换版本了
ps:很重要,我一开始的操作系统为centos8,安装的zabbix为4.0之前想创建图像的时候无法创建,邮件配置检查很多遍确认无误,无法发送邮件。然后尝试重新安装zabbix5.0,yum安装如下
编译安装如下
是不是很激动以为成功了?结果点击下一步全绿很开心,再点击下一步直接白了!!(下图为我第二次编译安装zabbix5.0放在根目录下的截图)
然后我尝试用centos7!!直接就进去了,这个邮件直接就能发送了!!!
不过需要注意这里设置报警媒介类型时候需要添加以下报警信息,zabbi4.0中是在动作那里配置告警信息的
6.3.2短信通知
有这个功能,但是我没有用过,之前倒是收到过,但是自己从没有配置过。现在也没有可以用于发送短信的账号这个需要通过阿里大于,云片这些可以发送短信的第三方进行发送。正常用用邮件,微信就可以了,不然用短信一年几万没跑给我发年终奖不好吗?
可以参考一下:https://www.cnblogs.com/ahaii/p/7131880.html(如有侵权请联系我进行删除)
6.3.3微信通知
参考网站:https://blog.csdn.net/GX_1_11_real/article/details/80366621(如有侵权请联系我进行删除)
6.4故障自治愈功能
当zabbix 监控到指定的监控项异常的时候,通过指定的操作使故障自动恢复,通常是重启服务等一些简单的操作,也可以调用脚本执行比较复杂的操作。
设置监控项和触发器,新建动作,在触发条件里面添加操作,在远程主机通过zabbix 客户端执行命令
1.开启zabbix sudo权限
2.配置允许允许特殊字符
3.配置远程命令
4.验证和测试
6.4.1zabbix agent开启远程命令执行
[root@zabbix_agent ~]# vim /etc/zabbix/zabbix_agentd.conf 修改以下两项内容
AllowKey=system.run[*] #开启远程执行命令(这里是5.0版本,如果是4.0版本EnableRemoteCommands=1)
UnsafeUserParameters=1 #允许远程执行命令的时候使用不安全的参数(特殊字符串)
[root@zabbix_agent ~]# systemctl restart zabbix-agent
6.4.2zabbix用户授权
如果zabbix agent是使用zabbix用户启动的,那么要在zabbix 用户授权使用特权命令,负责有些命令zabbix没有权限执行,会导致定义好的自治愈策略因为权限拒绝为执行失败。
[root@zabbix_agent ~]# cat /etc/sudoers | grep -Ev '^#|^$'
Defaults !visiblepw #不强制使用tty
zabbix ALL=NOPASSWD: ALL #授权指定用户执行特殊命令不再需要密码,比如sudo等
6.4.3创建动作
以Nginx监控为例,我们通过监控80端口的状态,如果不为1则说明Nginx服务器出现故障,我们通过自愈功能进行重启nginx服务
6.4.3.1创建动作
6.4.3.2执行远程操作
执行命令或者执行脚本
sudo /path/to/command
sudo /path/to/script.sh
sudo /apps/nginx/sbin/nginx
6.4.4验证自治愈功能
将被测试的服务手动停止运行,验证能否自动启动或重启,更多操作可以远程执行脚本。
过了一会服务被启动了,同时收到了邮件
当服务启动后
6.5grafana图形展示
grafana在之后的普罗米修斯中再来具体说,这里就简单介绍如何监控zabbix数据防止有小伙伴需要
6.5.1安装grafana服务
官网地址:https://grafana.com/grafana/download
[root@zabbix_agent ~]# wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.2.1-1.x86_64.rpm
[root@zabbix_agent ~]# yum install grafana-enterprise-8.2.1-1.x86_64.rpm
#开启服务
[root@zabbix_agent src]# systemctl restart grafana-server.service
#默认使用3000端口
[root@zabbix_agent src]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 [::]:3000 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:10050 [::]:*
6.5.2登录grafana
6.5.3安装装zabbix插件
官方地址:https://grafana.com/grafana/plugins/alexanderzobnin-zabbix-app/
[root@zabbix_agent src]# grafana-cli plugins install alexanderzobnin-zabbix-app
√ Downloaded alexanderzobnin-zabbix-app v4.2.4 zip successfully
Please restart Grafana after installing plugins. Refer to Grafana documentation for instructions if necessary.
[root@zabbix_agent src]# systemctl restart grafana-server.service
6.5.4启动zabbix插件
6.5.5添加Mysql数据源
6.5.6添加zabbix数据源
6.5.7添加Dashboard
官方网站:https://grafana.com/grafana/dashboards/?category=zabbix
6.5.7.1选择模版
6.5.7.2导入模板
我这里没有什么监控项,而且版本相差很多这是17年的模版,所以这就需要自己慢慢找一款合适的模版了
7、Zabbix 自动化运维
7.1Zabbix Agent批量部署
7.1.1源码编译安装
官网下载源码包,通过自定义编译参数、自定义配置文件和监控脚本实现安装
7.1.1.1准备好脚本和安装包
7.1.1.2脚本
[root@zabbix-web-server2 ~]# cat zabbix-agent.sh
#!/bin/bash
#Date:2021-12-24
#Author: Sunxiang
Agent_Vesion=5.0.19
DIR=`pwd`
grep "Ubuntu" /etc/issue &> /dev/null
if [ $? -eq 0 ];then
apt update
apt-get ?-y install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree ?openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute ?gcc openssh-server lrzsz tree ?openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute iotop unzip zip make
fi
grep "Kernel" /etc/issue &> /dev/null
if [ $? -eq 0 ];then
yum install ?vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel bc systemd-devel bash-completion traceroute -y
fi
mv ${DIR}/zabbix-${Agent_Vesion}.tar.gz /usr/local/src/
cd /usr/local/src/
tar xvf zabbix-${Agent_Vesion}.tar.gz
cd zabbix-${Agent_Vesion}/
./configure --prefix=/apps/zabbix_agent --enable-agent && make && make install
groupadd zabbix
useradd -g zabbix zabbix
\cp ${DIR}/zabbix-agent.service /lib/systemd/system/zabbix-agent.service
\cp ${DIR}/zabbix_agentd.conf /apps/zabbix_agent/etc/zabbix_agentd.conf
\cp ${DIR}/zabbix_agentd.conf.d/* /apps/zabbix_agent/etc/zabbix_agentd.conf.d/
HOST_IP=`ifconfig ens33 | grep -w inet | awk '{print $2}'`
sed -i "s/Hostname=/Hostname=${HOST_IP}/g" /apps/zabbix_agent/etc/zabbix_agentd.conf
chown zabbix.zabbix -R /apps/zabbix_agent/
systemctl daemon-reload && systemctl enable zabbix-agent && systemctl restart zabbix-agent
7.1.1.3zabbix-agent配置文件
[root@zabbix-web-server2 ~]# cat zabbix_agentd.conf | grep -Ev '^$|^#'
LogFile=/tmp/zabbix_agentd.log
Server=10.0.0.7
StartAgents=5
ServerActive=10.0.0.7
Hostname=
7.1.1.4服务启动脚本
[root@zabbix-web-server2 ~]# cat zabbix_agentd.conf | grep -Ev '^$|^#'
LogFile=/tmp/zabbix_agentd.log
Server=10.0.0.7
StartAgents=5
ServerActive=10.0.0.7
Hostname=
[root@zabbix-web-server2 ~]# cat zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=apps/zabbix_agent/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/apps/zabbix_agent/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
7.1.1.5安装演示
[root@zabbix-web-server2 ~]# ls
anaconda-ks.cfg zabbix-5.0.19.tar.gz zabbix-agent.service
reset.sh zabbix_agentd.conf zabbix-agent.sh
[root@zabbix-web-server2 ~]# bash -x zabbix-agent.sh
+ systemctl daemon-reload
+ systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
+ systemctl restart zabbix-agent
[root@zabbix-web-server2 ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 [::]:111 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
[root@zabbix-web-server2 ~]# ll /tmp/zabbix_agentd.pid
-rw-rw-r--. 1 zabbix zabbix 5 Dec 24 15:15 /tmp/zabbix_agentd.pid
7.1.2yum/apt安装
这个就自己动手丰衣足食,直接把官网上的命令复制一下就是一个脚本,自己做一个conf文件复制到各个服务器上,这样就省去了修改配置文件。easy~
7.2Zabbix API添加主机
官网地址:https://www.zabbix.com/documentation/5.0/zh/manual/api
通过API,实现完全自动化添加删除agent、关联模板等操作
高端操作,我的小单位没机会用。有兴趣的可以自己研究下