监控系统zabbix1.0
监控系统·············zabbix:
监控的作用:
为了保证集群的健康,我们需要监控服务器的状态,就有了监控系统,专门来监控服务器的状态
当服务器状态出现问题,可以用告警的形式来提示运维人员
服务器上部署的关键的业务组件:nginx,MySQL等,如果出现故障,它也可以提示给用户,尽早尽快的处理问题
监控系统只能发现,不能解决问题
zabbix是什么:
zabbix是一个基于web页面的(可视化系统),分布式的系统监控和网络监控的企业级的开源监控方案
zabbix的功能:
1、监控服务器关键硬件的状态
2、可以监控服务器的关键指标(内存,cpu等等)
3、可以监控服务器上关键应用的状态
4,可以监控网络设备(路由器,交换机等等)
5、关于监控容器(zabbix 5开始兼容容器的监控,但是效果不是很好,目前监控容器的主流还是普罗米修斯)
zabbix的组件:
C/S模式:client、server 服务端和客户端,zabbix server和zabbix-agent
c/s模式是一个数据采集的模式,客户端把数据发送给服务端
B/S模式: browser/server 浏览器和服务端 浏览器访问服务端的内容
b/s提供的是数据的展示和相关的监控项的配置
zabbix server 服务端
zabbix-agent 客户端
zabbix proxy 服务端的代理服务器,可以代替服务端收集客户端的数据,然后转发给服务端,降低服务端直接收集客户端数据带来的系统压力
zabbix get:zabbix的命令行工具
test1 192.168.31.10 zabbix server(服务端)
test2 192.168.31.11 zabbix-agent2(客户端) zabbix-proxy
test3 192.168.31.12 zabbix-agent2
qq邮箱的smtp不支持zabbix6
126网易 做smtp服务器
服务端:
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt -get update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y
apt install mariadb-server -y
mysql_secure_installation ············· 直接回车,yes,yes,设置密码,yes,no,yes,yes
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;
flush privileges;
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u root -p123456 zabbix
vim /etc/zabbix/zabbix_server.conf
129行dbpassword取消注释并修改为=rabbix
systemctl restart zabbix-server zabbix-agent apache2
乱码问题:
cd /usr/share/zabbix/assets/fonts将文件拖入此路径
cp /usr/share/zabbix/include/defines.inc.php将文件备份
vim /usr/share/zabbix/include/defines.inc.php
89行 改为simkai
147行 改为simkai
回到页面刷新
vim /etc/hosts添加映射
117行改为主服务器的地址
171行同上主服务器的地址
180行的注释行hostname删掉,并修改hostname为test1
zabbix的可用性:
zbx:监控服务器设备的网络,以及服务器健康状态,以及告警············90%
jmx:开发人员监控java应用程序使用的··········老程序员会使用
snmp:监控网络设备············10%
ipmi:通过网络管理服务器的电源,温度,风扇速度等等
客户端:
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg .....
apt -y install zabbix-agent2
systemctl status zabbix-agentd
vim /etc/zabbix/zabbix_agent2.conf
80行 地址指向为服务端(主)
133行 地址同上(主)
144行 注释掉的hostname删掉,修改hostname = test2
vim /etc/hosts 做映射
systemctl restart zabbix-agent2
apt -y install zabbix-get
zabbix_get -s '192.168.233.20' -p 10050 -k 'agent.ping'1
zabbix的监控的原理:
模板············ 监控项·············触发器·············实现监控(脚本的实现)
who | wc -l
vim /etc/zabbix_agent2.conf
290行 监控项目的配置文件路径
330行 脚本激活方式
cd /etc/zabbix/zabbix_agent2.d
vim user.conf
↓
UserParameter=login.user,who|wc-l
systemctl restart zabbix_agent2
回到服务端
zabbix_get -s '192.168.31.11' -p 10050 -k 'login.user'
工单系统
发起人 ··········· 》处理人(可能有多个) ·············》发起人(1个)
cd /opt
下载安装nginx
vim /etc/nginx
↓
gzip on;
server {
location /nginx_status {
stub_status on;
}
}
nginx -t
重启nginx服务
cd /etc/zabbix/zabbix_agent2.d
vim nginx_test.conf
↓
UserParameter=nginx.status[*], /opt/nginx.sh $1
cd /opt/
vim nginx.sh
#!/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scripts
HOST="localhost"
PORT=80
stub_status="stub_status"
NGINX_COMMAND=$1
nginx_check() {
if [ -f /sbin/pidof ]; then
/sbin/pidof nginx | wc -w
else
ps aux | grep -v "grep" | grep -c "nginx:"
fi
}
nginx_active(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://$HOST:$PORT/${stub_status}/" 2> /dev/null | awk 'NR==3 {print $3}'
}
case $NGINX_COMMAND in
check)
nginx_check
;;
active)
nginx_active
;;
reading)
nginx_reading
;;
writing)
nginx_writing
;;
waiting)
nginx_waiting
;;
accepts)
nginx_accepts
;;
handled)
nginx_handled
;;
requests)
nginx_requests
;;
*)
echo $"USAGE:$0 {check|active|reading|writing|waiting|accepts|handled|requests}"
esac
chmod 777 nginx.sh
systemctl restart zabbix-agent2.service
在服务端机 zabbix_get -s '192.168.31.11' -p 10050 -k 'login.user'
作业:监控mysql的状态,如果mysql服务关闭,发送邮件告警