原理:
五个组件:
1.server:核心引擎负责收集和接收监控设备的数据同事与其他组件进行通信,并管理所有组件
规则包括触发器、报警、监控采集等
2.GUI:这是 web 管理界面
3.database:这是数据存储库
4.proxy:这是实现分布式监控架构或共享的可选组件Zabbix Server负载,增加
Zabbix Server性能。它的主要功能是协助Zabbix Server收集监控主机或设备的数量
据。Zabbix proxy收集到的数据首先存储在本地临时数据库中,然后定期发送到Zabbix
server中,即便Zabbix Server和Zabbix proxy断开连接不会导致数据丢失(数据保证
可以留出时间proxy在配置文件中设置)
5.agent:客户端
建筑与使用:
1.安装 zabbix 仓库:rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-
release-5.4-1.el8.noarch.rpm
2.安装所需工具:dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent @httpd @mariadb -y
3.创建初始化数据库:
1.mysql -uroot(账户) -p123456(密码)
2.创建数据库:create database zabbix character set utf8 collate utf8_bin;
3.创建本地用户:create user zabbix@localhost identified by 'password';
4.授权:grant all privileges on zabbix.* to zabbix@localhost;
5.退出:quit;
4.导入初始架构和数据,然后输入刚刚创建用户的密码(password)
编辑:vim /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz
开头加入:use zabbix;
输入:zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -uzabbix -pzabbix
5.编辑配置文件:/etc/zabbix/zabbix_server.conf
DBPassword=password(刚才的用户密码)
6.启动并启动自启动:
systemctl restart zabbix-server zabbix-agent httpd php-fpm mariadb
systemctl enable zabbix-server zabbix-agent httpd php-fpm mariadb
7.进入 zabbix 打开127.0.0.1/zabbix
8.默认账号密码为:Admin / zabbix
9.安装中文界面:dnf install langpacks-zh_CN.noarch glibc-common
10.编辑:vim /usr/share/zabbix/include/locales.inc.php ,找到zh_CN ,将 flase 改为 true
11.修改(注:如果不能选择,则安装 dnfinstalllangpacks-zh_CN.noarch glibc-common -y)
12.有乱码的时候,复制 Windows 文件到此路径:/usr/share/zabbix/assets/fonts
13.重命名:mv msyh.ttc msyh.ttf
14.编辑这两个地方:vim /usr/share/zabbix/include/defines.inc.php
监控主机:
1.安装监控端 zabbix-agent:
1.下载仓库:rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-
5.4-1.el8.noarch.rpm
2.安装:dnf install zabbix-agent -y
3.编辑文件:vim /etc/zabbix/zabbix_agentd.conf
Hostname=被监控主机 ip
Server=zabbix服务器 ip
4.启动:systemctl start zabbix-agent
5.自启动:systemctl enable zabbix-agent
6.检查端口:netstat -tpln | grep 10050
2.创建被监控主机:
钉钉告警:
1.创建机器人
2.设置安全设置
3.保存链接
4.打开 zabbix-server,进入此目录:cd /usr/lib/zabbix/alertscripts
5.编辑脚本:vim dingding.py
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=fb93c68ef62a9ab9786520ccc259b0ccf6be6b867cf182302065cc645bfba8a8" #说明:这里改为自己创建的机器人webhook的值
user=sys.argv[1]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
f=open("/var/log/zabbix/dingding.log","a ")
else:
f=open("/var/log/zabbix/dingding.log","w ")
f.write("\n" "--"*30)
if x.json()["errcode"] == 0:
f.write("\n" str(datetime.datetime.now()) " " str(user) " " "发送成功" "\n" str(text))/p>
f.close()
else:
f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text))
f.close()
6.赋予执行权限:chmod +x dingding.py
7.创建日志目录:mkdir /var/log/zabbix/dingding.log
授权:chmod 755 /var/log/zabbix/dingding.log
8.授权:chown zabbix.zabbix /var/log/zabbix/dingding.log
9.主配置文件编辑:vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts(刚刚脚本的路径)
10.测试脚本:./dingding.py test gaojing "测试下"
11.创建 zabbix 报警媒介
12.给用户添加报警媒介
13.创建动作
14.测试成功
监控 mysql 的主从:
1.被监控端安装 zabbix-agent:
1.下载仓库:rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-
5.4-1.el8.noarch.rpm
2.安装:dnf install zabbix-agent2 -y
3.编辑文件:vim /etc/zabbix/zabbix_agent2.conf
Hostname=被监控主机 ip
Server=zabbix服务器 ip
ServerAcite = zabbix服务器 ip
ListenIP=0.0.0.0
ListenPort=端口
4.启动:systemctl start zabbix-agent2
5.开机自启:systemctl enable zabbix-agent2
6.查看端口:netstat -tpln | grep 10050
2.创建目录:mkdir /etc/zabbix/test
3.编辑脚本:vim /etc/zabbix/test/mysql_slvae_status.sh
#!/bin/bash
USER="test"
PASSWD="123456"
NAME=$1
function IO {
Slave_IO_Running=`mysql -u $USER -p$PASSWD -h 172.17.0.2 -P 33007 -e "show slave status\G;" 2> /dev/null |grep Slave_IO_Running |awk '{print $2}'`
if [ $Slave_IO_Running == "Yes" ];then
echo 0
else
echo 1
fi
}
function SQL {
Slave_SQL_Running=`mysql -u $USER -p$PASSWD -h 172.17.0.2 -P 33007 -e "show slave status\G;" 2> /dev/null |grep Slave_SQL_Running: |awk '{print $2}'`
if [ $Slave_SQL_Running == "Yes" ];then
echo 0
else
echo 1
fi
}
case $NAME in
io)
IO
;;
sql)
SQL
;;
*)
echo -e "Usage: $0 [io | sql]"
esac
注意:需先创建一个 mysql 登录的账号,-h 的 ip 为 docker 映射的 ip ,-P 则是端口
4.授权:chmod +x mysql_slvae_status.sh
5.编辑文件:vim /etc/zabbix/zabbix_agent2.d/userparameter_mysql_slave.conf
UserParameter=mysql.slave[*],/etc/zabbix/test/mysql_slvae_status.sh $1 #注意路径
6.防火墙放行:iptables -I INPUT -p tcp -m tcp --dport 10050 -m comment --comment
"zabbix_agentd listen " -j ACCEPT
7.保存以及重启:service iptables save && service iptables restart
8.重启:systemctl restart zabbix-agent2
9.重启 docker:systemctl restart docker
10.重启容器:docker restart mm
11.在 server 上测试,能否成功:zabbix_get -s 218.75.249.55 -k mysql.slave[sql]
12.配置监控主机的监控项:
13.配置触发器:
14.配置动作:
监控 mysql 的状态:
1.被监控端安装 zabbix-agent:
1.下载仓库:rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-
5.4-1.el8.noarch.rpm
2.安装:dnf install zabbix-agent2 -y
3.编辑文件:vim /etc/zabbix/zabbix_agent2.conf
Hostname=被监控主机 ip
Server=zabbix服务器 ip
ServerAcite = zabbix服务器 ip
ListenIP=0.0.0.0
ListenPort=端口
4.启动:systemctl start zabbix-agent2
5.开机自启:systemctl enable zabbix-agent2
6.查看端口:netstat -tpln | grep 10050
2.防火墙放行:iptables -I INPUT -p tcp -m tcp --dport 10050 -m comment --comment
"zabbix_agentd listen " -j ACCEPT
3.保存以及重启:service iptables save && service iptables restart
4.重启 docker:systemctl restart docker
5.重启容器:docker restart mm
6.配置模板:
ping 监控:
1.安装工具:yum install zabbix-sender -y
2.编辑脚本:vim ping.sh
#!/bin/bash
PINGCMD=/usr/bin/ping
SENDCMD=/usr/bin/zabbix_sender
CHECKHOST=15.235.132.1 #ping 的地址
ZABBIXSERVER=103.138.75.5 #zabbix 服务器
ZABBIXPORT=10051 #zabbix 侦听端口
LOCALHOST=194.233.77.26 #被监控主机,zabbix 的名称
PAG_NUM=1
ZAX_KEY=ping #键值
check_ping() {
$PINGCMD -c $PAG_NUM $CHECKHOST >/dev/null 2>&1
if [ $? -eq 0 ];then
RESPONSE_TIME=`$PINGCMD -c $PAG_NUM -w 1 $CHECKHOST |head -2 |tail -1|awk '{print $(NF-1)}'|cut -d= -f2`
echo $RESPONSE_TIME
else
echo 0
fi
}
send_data() {
DATA=`check_ping`
$SENDCMD -z $ZABBIXSERVER -s $LOCALHOST -k $ZAX_KEY -o $DATA
}
while true
do
send_data
sleep 0.5
done
3.在被监控的主机上创建监控项:
4.创建图形:
5.运行:nohup /bin/bash ping.sh &
注意:需要隔段时间处理