1、概念
自带图形化界面,通过网页就可以监控所有服务器的状态。
事件告警、邮件通知
web界面提供的分布式监控以及网络监控功能的开源的企业级的软件解决方案
zabbix可以提供各种类型的监控模版,保证服务器的正常运行,灵活的通知机制可以让管理员快速定位
2、zabbix的组成
收集数据的模式:c/s模式client/sever,客户端到服务端
展示数据和配置数据:B/S模式browes/server
2.1zabbix-server
zabbix-server服务端,收集数据,提供网页和配置数据
2.2zabbix-agent
zabbix-agent客户端,把收集到的数据发给服务端
3、zabbix的五大组件
3.1zabbix-server
Zabbix 服务器是Zabbix监控系统的核心组件。它负责从各种监视设备收集数据、存储数据,并为用户提供Web界面,
以可视化和分析所收集的信息。服务器处理并存储从Zabbix代理和其他来源接收到的数据。
3.2zabbix-agent
Zabbix 代理是安装在要监视的目标系统上的软件组件。
它收集各种指标,如CPU使用率、内存使用率、磁盘空间和自定义应用程序指标,
并将这些信息发送到Zabbix服务器进行进一步处理。
3.3zabbix_proxy
Zabbix代理是可选的组件,可部署以分发从代理收集的数据负载。
代理服务器的作用:如果所有的客户端都向服务端一起发数据,服务端的压力会比较大,发送到代理服务器,代理服务器处理完之后再发给server,可以减轻主服务器的压力
3.4zabbix-get
Zabbix 获取,是zabbix的命令行工具
3.5zabbix sender
Zabbix发送器,可以将客户端的数据进行自定义操作之后再发送到服务端,也可以通过脚本把脚本处理过的数据发送到客户端
4、zabbix的数据流向
5、部署zabbix5.0
#客户端test1操作如下:
systemctl stop firewalld
setenforce 0
#时间同步
yum -y install ntpdate
ntpdate ntp.aliyun.com
date
#获取zabbix的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#修改zabbix的源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
#建立元数据清缓存
yum clean all && yum makecache
#安装
yum install -y zabbix-server-mysql zabbix-agent
#配置yum源
vim CentOS-SCLo-scl-rh.repo
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#清缓存建立元数据
yum clean all && yum makecache
#修改zabbix-front前端源
vim zabbix.repo
enabled=1
#开启安装源
#安装php库
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
#安装数据库
yum install -y mariadb-server mariadb
#重启
systemctl restart mariadb.service
#初始化
mysql_secure_installation
#登录数据库
mysql -u root -p123456
#创建库和用户
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
#赋权
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
#刷新
flush privileges;
#查询sql文件的位置
rpm -ql zabbix-server-mysql
#导入zabbix监控系统所需的mysql数据库架构
zcat /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz | mysql -uroot -p123456 zabbix
#修改zabbix配置文件
vim /etc/zabbix/zabbix_server.conf
124行 取消注释 DBPassword=zabbix
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
最后一行取消注释 php_value[date.timezone] = Asia/Shanghai
#重启,设置开机自启
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
#浏览器访问192.168.230.10/zabbix
#安装解决乱码的工具
yum install -y wqy-microhei-fonts
#执行
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
#test2操作如下:
#获取zabbix的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#修改zabbix的源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
#建立元数据
yum makecache
#安装zabbix-agent2
yum install -y zabbix-agent2
#修改配置文件
vim /etc/zabbix/zabbix_agent2.conf
80行 server=192.168.230.10
125行 serveractive=192.168.230.10
136行 hostname=test2
#重启
systemctl start zabbix-agent2
systemctl enable zabbix-agent2
#查看端口是否开启
netstat -antp | grep 10050
#test1安装zabbix主动获取数据的命令
yum -y install zabbix-get
zabbix_get -s '192.168.230.20' -p 10050 -k 'agent.ping'
结果为“1”表示ping的通
#获取主机名
zabbix_get -s '192.168.230.20' -p 10050 -k 'system.hostname'
#test1配置文件修改
vim /etc/zabbix/zabbix_agentd.conf
117行 Server=192.168.230.10
163行 ServerActive=192.168.230.10
174行 Hostname=test1
#重启
systemctl restart zabbix-agent.service
#打开zabbix
配置——主机——创建主机
主机名称:test2
可见的名称:zabbix-agent02
群组:Linux servers
接口:客户端 192.168.230.20
端口 10050
点击添加
点击zabbix-agent02——模版——链接新模版Template OS Linux by Zabbix agent——更新——查看仪表板
6、自定义监控内容
#浏览器访问192.168.230.10/zabbix
检测——主机——可用性
ZBX:ZABBIX的缩写,默认模式,监控网络和设备、服务,大部分情况都是默认模式
SNMP:simple network management protocol简单网络管理协议,用来管理和监控网络设备的协议
JMX:专门监控java程序
IPMI:用来管理服务器硬件,服务器的电源、温度、风扇的速度等
test2
who | wc -l
#记录当前登录系统的用户数
登录当前系统的不能超过3个,大于3个就会告警并且发邮件
#监控的脚本
vim /etc/zabbix/zabbix_agent2.conf
273行 Include=/etc/zabbix/zabbix_agent2.d/*.conf
#这个路径就是来保存监控脚本的默认路径,文件名可以自定义,但是必须是以.conf为结尾
297行 Format:UserParameter=<key>,<shell command>
#脚本的监控格式,UserParameter=***.***,who | wc -l,也可以是shell脚本,要绝对路径且有执行权限
#配置脚本
cd /etc/zabbix/zabbix_agent2.d
vim user_login.conf
UserParameter=login.user,who | wc -l
systemctl restart zabbix-agent2.service
#test1验证
zabbix_get -s '192.168.230.20' -p 10050 -k 'login.user'
#回到zabbix服务器
#告警操作
1、配置——模版——创建模版
模版名称:Template Login User
可见的名称:Template Login User
群组:Templates
点击添加
在模版中搜索login,点开
2、应用集——创建应用集
名称:Login User,点击添加
3、监控项——创建监控项
名称:Number of login users
键值:login.user
更新间隔:10s
应用集:Login User
测试没问题点添加
4、触发器——创建触发器
名称:Number of login users is greater than 3
严重性:一般严重
表达式添加以下内容:
监控项:Template Login User: Number of login users
功能:last()-最后(最近)的T值
结果:>3
点击插入
最后点击添加
5、图形——创建图形
名称:Number of login users
监控项——添加 Template Login User: Number of login users
最后再点击添加
6、配置——主机——点击zabbix-agent02——模版——链接新模版 Template Login User——更新
管理——报警媒介类型
名称:QQmail
SMTP服务器:smtp.qq.com
SMTP HELLO:qq.com
SMTP电邮:自己的邮箱号
输入用户名和密码
消息模版——添加默认模版——添加
7、用户设置——报警媒介——添加
类型:QQmail
收件人:邮箱号
添加——更新
8、配置——动作——选择 Report problems to Zabbix administrators——添加
类型:触发器
触发器:Number of login users is greater than 3
添加——更新——将状态已停用改为已启用
查看是否收到邮件
#监控脚本
#test2安装nginx
yum -y install nginx
vim /etc/nginx/nginx.conf
location /nginx_status {
stub_status on;
access_log off;
}
nginx -t
systemctl restart nginx
#统计nginx状态的脚本
cd /opt
vim test-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 test-nginx.sh
cd /etc/zabbix/zabbix_agent2.d
vim nginx_test.conf
UserParameter=nginx.status[*],/opt/test-nginx.sh $1
systemctl restart zabbix-agent2.service
#回到test1测试一下
zabbix_get -s '192.168.230.20' -p 10050 -k 'nginx.status[check]'
结果为0表示nginx挂了
#回到zabbix服务器
1、配置——模版——创建模版
模版名称:Template Nginx Status
可见的名称:Template Nginx Status
群组:Template
然后点击添加
2、选择Template Nginx Status
应用集——创建应用集
名称:nginx.status
点击添加
3、监控项——创建监控项
名称:Nginx is running
键值:nginx.status[check]
更新间隔:10s
应用集:nginx.status
测试——添加
4、触发器——创建触发器
名称:Nginx is down
严重性:严重
添加表达式
监控项:Template Nginx Status: Nginx is running
功能:last()-最后(最近)的T值
结果:=0
点击插入,最后点击添加
5、图形——创建图形
名称:Nginx is running
监控项: Template Nginx Status: Nginx is running
然后添加添加
6、配置——主机——zabbix-agent02——模版
链接新模版:Template Nginx Status
点击更新
检测——主机——zabbix-agent02——图形——查看是否添加成功
发送邮件:
配置——动作——选择Report problems to Zabbix administrators——添加触发条件
类型:触发器
触发器:Template Nginx Status:Nginx is dowm
然后点击添加——更新
测试:
将nginx停掉,看是否收到邮件