zabbix 监控软件
1、定义
自带图形化界面,通过网页就可以监控所有服务器的状态
事件告警,邮箱通知(噩梦)
2、zabbix是什么?
web界面提供的分布式监控以及网络监控功能的开源的企业级的软件解决方案。
服务端和监控端(客户端)
zabbix可以提供各种类型的监控模版,保证服务器的正常运行,灵活的通知机制可以让管理员快速定位
3、zabbix由两部分组成
1.1 zabbix-server,在server上可选安装zabbix-agent
1.2 收集数据的模式c/s(client/server 客户端到服务端)
展示数据和配置数据
B/S(browes/server)页面配置
zabbix-server 服务端 收集数据 提供网页和配置数据
zabbix-agent 客户端 把收集到数据发给服务端
4、zabbix的数据流向
5、zabbix五大组件
1.1 zabbix-server
1.2 zabbix-agent
1.3 zabbix-proxy :代理
代理:代理服务器的作用:如果所有的客户端都想服务端一起发数据,服务端的压力会比较大,发送到代理服务器,代理服务器处理完之后再发给server,减轻主服务器的压力
1.4 zabbix-get:是zabbix命令行工具
1.5 zabbix-sender:发送器,可以将客户端的数据进行自定义操作后再发送到服务端,也可以通过脚本,把脚本处理过的数据发送到客户端
6、部署 zabbix 5.0
test1 192.168.100.11 服务端
test2 192.168.100.12 客户端
# test1和test2
systemctl stop firewalld
setenforce 0
(*)修改主机名
hostnamectl set-hostname test1
hostnamectl set-hostname test2
su
(*)时间同步操作
yum -y install ntpdate
ntpdate ntp.aliyun.com
date
# test1---服务端
(*)获取zabbix的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d # ls
(*)修改zabbix的下载源
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 # 安装服务端和客户端
(*)配置php的库
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
wq!
yum clean all && yum makecache # 清缓存创建元数据
vim zabbix.repo
把[zabbix-frontend]下的
enabled改成1 #开启安装源
wq!
(*)安装依赖项
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl # 注意zabbix5以上需要php7.2以上版本
(*)安装 zabbix 所需的数据库
yum install -y mariadb-server mariadb
systemctl restart mariadb.service
mysql_secure_installation #初始化数据库,并设置密码:123456
回车 输入密码 y、y、y、y
(*)数据库操作
mysql -u root -p123456
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
exit
(*)导入数据库信息
rpm -ql zabbix-server-mysql #查询 sql 文件的位置 看版本号
zcat /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz | mysql -uroot -p123456 zabbix
vim /etc/zabbix/zabbix_server.conf
set nu
12 端口默认不动 # ListenPort=10051
38 日志文件默认不动 LogFile=/var/log/zabbix/zabbix_server.log
124 取消注释 DBPassword=zabbix
wq!
(*)修改 zabbix 的 php 配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
Gset nu G
取消注释 Asia/Shanghai
wq!
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm # 重启
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm # 开机自启
# 浏览器访问 192.168.100.11/zabbix
1、Next step、OK、
2、端口3306、密码zabbix
3、Host:192.168.100.11(ip地址)
Name:server-test1(目的:进入到主机里面以name的形式展示主机名称,方便:服务器名字统一)
4、 Next step
5、USername:Admin
Password:zabbix
6、左表,改中文
7、如何查看监控?
点击左表主机、名称Zabbix server左击图形、乱码形式
# 解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
# test2---客户端
cd /etc/yum.repos.d
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 # ls
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo # 修改zabbix的下载源
yum makecache # 建立缓存数据
yum install -y zabbix-agent2 # 安装服务端和客户端
vim /etc/zabbix/zabbix_agent2.conf
set nu
80 Server指向服务端 Server=192.168.100.11
125 ServerActive也指向服务端 ServerActive=192.168.100.11
136 改成自己主机的名称 Hostname=test2
wq!
systemctl restart zabbix-agent2.service
netstat -natp | grep zabbix # 查看端口是否启动,启动则ok
# test1
vim /etc/zabbix/zabbix_agentd.conf
set nu
117 Server指向服务端 Server=192.168.100.11
163 ServerActive也指向服务端 ServerActive=192.168.100.11
174 改成自己主机的名称 Hostname=test1
wq!
systemctl restart zabbix-agent.service
netstat -natp | grep zabbix # 查看端口是否启动,启动则ok
# 浏览器 192.168.100.11/zabbix
1、点左表配置主机--点名称;Zabbix server--修改客户端ip为192.168.100.11 --更新--刷新
# test1
yum -y install zabbix-get
zabbix_get -s '192.168.100.12' -p 10050 -k 'agent.ping'
# 1 代表通
zabbix_get -s '192.168.100.12' -p 10050 -k 'system.hostname'
zbx-agent01
# 查看客户端的主机名
# 浏览器 192.168.100.11/zabbix
1、左边配置主机:右上创建主机
2、主机名称:test2
可见名称:zabbix_agent02
群组:选择、linux servers
客户端:192.168.100.12(自己的ip地址)
端口:不用动
点击添加 # 此时是红的表示没有添加完
3、点击名称zabbix_agent02
模版:链接新模版,搜索 Linux ,选择 Template OS Linux by Zabbix agent,更新
ZBX:zabbix的缩写,默认模式,监控网络和设备,服务。大部分情况都是默认模式
SNMP:simple network managementProtocol 简单网络管理协议,用来管理和监控网络设备的协议
IMX:专门监控java程序的
IPMI:管理服务器硬件,服务器的电源,温度,风扇速度等待
6.1 如何来监控客户端?
test2--客户端
who | wc -l # 记录当前登录系统的用户数
who #
(*)当前登录系统不能超过三个,三个会告警、发邮件
vim /etc/zabbix/zabbix_agent2.conf
set nu
273 Include=/etc/zabbix/zabbix_agent2.d/*.conf
表示:保存监控脚本的默认路径,文件名可以自定义,但是必须是以.conf为结尾。
296 # Format: UserParameter=<key>,<shell command>
# 脚本的监控格式 UserParameter=***.***,who | wc -l 也可是是shell脚本,要绝对路径且有执行权限>
wq!
cd /etc/zabbix/zabbix_agent2.d/ # 切换到Inclue路径下,这是shell监控脚本的路径
vim user_login.conf # 必须以.conf结尾
UserParameter=login.user,who | wc -l
wq!
systemctl restart zabbix-agent2.service
test1--服务端
zabbix_get -s '192.168.100.12' -p 10050 -k 'login.user' # 查看登录客户机的数量
回到zabbix页面
1、点左表配置模版、右上创建模版
2、模版名称:Temlate Login User
可见名称:Temlate Login User
群组:Temlates
描述:随便写,可写,可不写
点击添加
3、点左表配置、模版
名称:搜索login,下面出现 Temlate Login User 点击
4、应用集:右上创建应用集
名称:Login User
点击添加 # 下方应用集出现 Login User
5、监控项:右上创建监控项
名称:Number of login users
键值:login.user # 这个名称就是写在脚本里面的login.user
更新时间:10s # 给小点
新应用集:不变
应用集:点login.user
测试:出现测试监控项,主机地址192.168.100.12
端口10050
点击获取值
获取值并进行测试 # 此时添加登录主机,再次点击,获取值有变动,即可开始添加
触发器:创建触发器
名称:Number of login users is greater than 6
严重性:看情况写
表达式:添加、监控项Template Login User Number of login users
功能:last()最后(最近)的T值
结果:设置大于6触发
插入
添加
图形:创建图形
名称:Number of login users 长宽高默认
监控项:添加 Template Login User Number of login users 后面的颜色自己选
添加
6、与主机进行关联
左表配置主机、点击需要关联的主机zabbix-agent02
点击模版,链接新模版 搜索login,下面出现 Temlate Login User 点击 更新
点击检测主机,zabbix_agent02 问题框出现橙色1,# 表示此时登录主机超过规定主机,登出主机,刷新,即恢复正常
点击监测主机,zabbix_agent02,左击图形,出现zabbix_agent02:Number of login users
### 以上是告警
1、点管理-报警媒介类型-右上创建媒介类型
2、名称:QQmail
类型:电子邮件
SMTP服务器:smtp.qq.com
端口:25
SMTP HELLO:qq.com
SMTP电邮:1786105561@qq.com
认证:用户名和密码
用户:1786105561@qq.com
密码:
---点开qq邮箱、设置、账号(POP3开头)、服务状态(默认关闭)、管理服务、生成授权码、微信扫描、生成码
3、消息模版,添加、(使用默认即可);在到媒介类型添加
4、左表用户设置、报警媒介、类型添加
类型:QQmail
收件人:1786105561@qq.com
当启用时:1-7.00:00~24:00
添加 更新
5、左表配置、动作、启用、
标签:添加
新的触发条件:类型:触发器、选择、添加、更新
## 邮件通知
6.2 怎么监控nginx?
# test2---客户机
yum -y install nginx
vim /etc/nginx/nginx.conf
在server下
location /nginx_status {
stub_status on;
access_log off;
}
wq!
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
wq!
chmod 777 test-nginx.sh
cd /etc/zabbix/zabbix_agent2.d/
vim nginx_test.conf
UserParameter=nginx.status[*],/opt/test-nginx.sh $1
wq!
systemctl restart zabbix-agent2.service
# test1
查看状态
zabbix_get -s '192.168.100.12' -p 10050 -k 'nginx.status[check]'
nginx开启数字大于0,nginx关闭服务等于0
回到zabbix页面
1、点左表配置模版、右上创建模版
2、模版名称:Temlate Nginx Status
可见名称:Temlate Nginx Status
群组:Temlates
描述:随便写,可写,可不写
点击添加
3、点左表配置、模版
名称:nginx(自带的)、点击下方Temlate Nginx Status
4、应用集:右上创建应用集
名称:nginx status
点击添加 # 下方应用集出现nginx status
5、监控项:右上创建监控项
名称:Nginx is running
键值:nginx.status[check] # 这个名称就是写在脚本里面的nginx.status[check]
更新时间:10s # 给小点
新应用集:不变
应用集:点login.user
测试:出现测试监控项,主机地址192.168.100.12
端口10050
点击获取值
获取值并进行测试 # 此时添加登录主机,再次点击,获取值有变动,即可开始添加
触发器:创建触发器
名称:Nginx is down
严重性:看情况写
表达式:添加、监控项Template Nginx Status Nginx is running
功能:last()最后(最近)的T值
结果:设置等于0表示挂了
插入
添加
图形:创建图形
名称: Nginx is running 长宽高默认
监控项:添加 Nginx is running 后面的颜色自己选
添加
6、与主机进行关联
左表配置主机、点击需要关联的主机zabbix-agent02
点击模版,链接新模版 搜索nginx,下面出现 Temlate Nginx Status 点击 更新
点击检测主机,zabbix_agent02 左击图形,出现zabbix_agent02:Number of login users
### 以上是告警
1、左表用户设置、报警媒介、类型添加
类型:QQmail
收件人:1786105561@qq.com
当启用时:1-7.00:00~24:00
添加 更新
5、左表配置、动作、启用、
标签:添加
新的触发条件:类型:触发器、选择、添加nginx is down、更新
## 邮件通知
7、zabbix自动注册
test1 192.168.100.11
test3 192.168.100.13
test3
hostnamectl set-hostname test3
su
同时
systemctl stop firewalld
setenforce 0
vim /etc/hosts
192.168.100.11 test1
192.168.100.13 test3
wq!
test3
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d/
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
yum makecache
yum -y install zabbix-agnet2
vim /etc/zabbix/zabbix_agent2.conf
set nu
80 Server指向服务器地址 Server=192.168.100.11
125 ServerActive指向服务器地址 ServerActive=192.168.100.11
136 Hostname指向本机主机名 Hostname=test3
144 取消注释 HostnameItem=system.hostname
wq!
systemctl restart zabbix-agent2.service
zabbix的web界面
1、左表配置:自动发现,右上创建发现规则
名称:xy102
IP范围:(可以指定单机地址,也可以指定范围额)
更新时间:10s
检查类型:
添加:Zabbix客户端
端口:10050
键值:system.uname # 获取客户机的主机名称
其他不动,点击添加 # 查看一下xy102的状态是否启用
2、左表配置:自动发现,左上触发器动作
发现动作、默认不动、点击已启用、点击更新
# 会有一个小问题,到服务端 tail -f /var/log/zabbix/zabbix_server.log 会发现找不到客户端的主机
systemctl restart zabbix-agent2.service
# 出现连接不到主机的情况 114行 再次重启服务端 检查主机名、检查映射
test1终端
zabbix_get -s '192.168.100.13' -p 10050 -k 'system.hostname'
可以访问到test3的主机名,就表示是zabbix页面的问题,重启等待
在zabbix的web页面,点击检测,主机,出现刚刚添加的test3
-------------------------------------
test3
egrep -v "^#|^$" /etc/zabbix/zabbix_agent2.conf
8、zabbix分布式监控
分布式监控:zabbix代理服务添加主机
test4 192.168.100.14
zabbix的web页面
1、点击左表配置动作,状态变为停用
2、点击左表配置主机,点击test3删除,查看监测主机test3被删除
test4
systemctl stop firewalld
setenforce 0
hostnamectl set-hostname test4
su
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d/
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
yum makecache
yum -y install zabbix-proxy-mysql zabbix-get
yum -y install mariadb-server mariadb # 安装mariadb服务端和客户端
systemctl restart mariadb.service
mysql_secure_installation # 数据库初始化
回车 y 123456 yyyyy
mysql -u root -p123456
CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
exit
rpm -ql zabbix-proxy-mysql
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.42/schema.sql.gz | mysql -u root -p123456 zabbix_proxy
vim /etc/zabbix/zabbix_proxy.conf
set nu
30 Server指向服务端 Server=192.168.100.11
49 Hostname指向本机主机名 Hostname=test4
196 取消注释 DBPassword=zabbix
### 173 DBName=zabbix_proxy 188 DBUser=zabbix
wq!
systemctl restart zabbix-proxy.service
test1
vim /etc/hosts
192.168.100.11 test1
192.168.100.13 test3
192.168.100.14 test4
wq!
test3
vim /etc/hosts
192.168.100.11 test1
192.168.100.13 test3
192.168.100.14 test4
wq!
test4
vim /etc/hosts
192.168.100.11 test1
192.168.100.13 test3
192.168.100.14 test4
wq!
zabbix的web页面
配置动作 停用
管理:agent代理程序,创建代理
代理程序名称:test4
系统代理程序模式:主动式
代理地址:192.168.100.14
添加
test3
vim /etc/zabbix/zabbix_agent2.conf
set nu
80 Server指向代理服务器 Server=192.168.100.14
125 ServerActive指向代理服务器 ServerActive=192.168.100.14
wq!
systemctl restart zabbix-agent2.service
看一下test1的日志(tail -f /var/log/zabbix/zabbix_server.log)
zabbix的web页面
1、左表配置主机,创建主机
主机名称:test3
可见名称:test3
群组:Linux servers
接口客户端:192.168.100.13
由agent代理程序检测:test4
2、模版
链接新模版:Templates OS Linux by Zabbix agent
添加
test4
tail -f /var/log/zabbix/zabbix_proxy.log
test1
systemctl restart zabbix-server.service
zabbix的web页面
左表配置主机,test3的代理程序出现test4,表示是通过代理服务器添加的
9、设置zabbix-snmp监控
snmp:简单网络管理协议。用来监控网络设备的,如交换机、路由器
设备监控:交换机、路由器、服务器、打印机
性能监控:监控网络设备的cpu、带宽利用率、内存
监控告警、发邮件
test1
yum -y install net-snmp net-snmp-utils
vim /etc/snmp/snmpd.conf
set nu
54 下添加
view systemview included .1 # 可以监视所有snmp
wq!
systemctl restart snmpd
zabbix的web页面
配置、主机、Zabbix Server(服务端)
接口:添加SNMP(地址127.0.0.1可以,写ip地址也可以)
SNMP版本:SNMPv2
更新
删除之前模版(配置:取消链接并清理)
链接新模版:Templates OS Linux SNMP
更新 Zabbix Server(服务端)可用性变为SNMP
10、zabbix总结
会看:配置-主机-图形
会配:监控脚本的位置
(在客户端,脚本的配置路径在配置文件里面有)
(在服务端,模版、应用集、监控项、触发器、图形)
3、自动发现和代理要会配置(手动、自动–比较多、代理)
4、添加到了邮件告警组,第一时间响应