zabbix作业
zabbix作业
1 实现对系统层的监控 监控 cpu 内存 硬盘 磁盘 (可以用模板)
环境准备:虚拟机
zabbix服务器:10.0.1.149
zabbix客户端:10.0.1.150
01---#部署zabbix服务端 客户端
zabbix5.0 TLS部署 #官网推荐yum方式部署
#------------------------------zabbix-server部署------------------------------#
#官方地址
https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginx
#系统和内核版本
CentOS Linux release 7.6.1810、内核3.10.0-957.el7.x86_64)
#安装zabbix仓库、zabbix软件和数据库,修改仓库配置
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum clean all && yum install -y zabbix-server-mysql zabbix-agent
yum install -y centos-release-scl #升级gcc
sed -i '11s/enabled=0/enabled=1/' /etc/yum.repos.d/zabbix.repo #开启安装源
yum install -y zabbix-web-mysql-scl
yum install -y zabbix-nginx-conf-scl
yum install -y mariadb-server
#启动数据库
systemctl enable mariadb --now
初始化数据库,并设置密码
mysql_secure_installation
mysql -uroot -p123456 进入数据库
#数据库脚本导入
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
#导入初始架构和数据,系统将提示您输入新创建的密码
use zabbix;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
#为Zabbix server配置数据库
sed -i 's/# DBPassword=/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf
#为Zabbix前端配置PHP #必须访问server_name,否则报错403.server_name填IP即可
#一定要修改example.com为自己访问的域名
sed -i 's/#\ listen\ 80;/\ listen\ 80;/' /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
sed -i 's/#\ server_name\ example.com;/\ server_name\ local.zabbix.com;/' /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
sed -i 's/listen.acl_users = apache/listen.acl_users = apache,nginx/' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
#修改前端页面访问真实资源目录
sed -i 's@\ root\ /opt/rh/rh-nginx116/root/usr/share/nginx/html;@\ root\ /usr/share/zabbix;@' /etc/opt/rh/rh-nginx116/nginx/nginx.conf
#更改时区亚洲上海
sed -i '$iphp_value[date.timezone] = Asia/Shanghai' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
#启动服务并设置开机自启
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
#访问403是server_name设置问题
#默认登录的账号密码
账号:Admin 密码:zabbix #Admin首字母大写,测试修改账号密码都为admin小写
#更改为中文
User settings-->Language-->Chinese(zh_CN) Update更新即可
#------------------------------zabbix-server END------------------------------#
#
#------------------------------zabbix-server配置grafana------------------------------#
02---#安装客户端
安装源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
替换阿里云源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
安装客户度:
yum install zabbix-agent2 -y
启动 客户端: systemctl restart zabbix-agent2
systemctl status zabbix-agent2
systemctl enable zabbix-agent2
配置文件重新配置:
cp /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent3.conf
egrep -v "^$|#" zabbix_agent3.conf >zabbix_agent2.conf
客户端配置文件
cd /etc/zabbix/
echo > zabbix_agent2.conf
[root@centos7mage ~]# grep '^[A-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=10.0.1.149 #zabbix服务端ip
ServerActive=10.0.1.149 #zabbix服务端ip
Hostname=slb #客户端名称(任意名称)
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
重启zabbix服务端
systemctl restart zabbix-agent2
03---报错解决思路
1.防火墙未关闭
2.服务端server.conf配置文件有误
3.客户端agent2.conf配置文件有误
4.服务器是否开启了多个进程
5.客户端是否开启了多个进程(没有开启进程)
6.客户端/服务端重启zabbix服务后要等待一分钟,再看结果
7.zabbix服务器数据库密码是否开启
cd /etc/zabbix/zabbix_server.conf
122 # Mandatory: no
123 # Default:
124 DBPassword=zabbix
04---解决zabbix服务端乱码
yum install wqy-microhei-fonts -y
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
systemctl restart zabbix-server
05---效果如下
2 .实现zabbix 比如80端口进程宕机 邮件报警 实战演示
环境准备:虚拟机
zabbix服务器:10.0.1.149
zabbix客户端:10.0.1.150
思路
01 取值
netstat -tulpn | grep -wc 80
02 编辑配置文件(客户端)
cd /etc/zabbix/zabbix_agent2.d
vim nginx.conf
UserParameter=nginx.port,netstat -tuln| grep -wc 80
systemctl restart zabbix-agent2
03 服务端测试
zabbix_get -s 10.0.1.150 -p 10050 -k nginx.port
04 配置监控项和触发器
名称:nginx状态
键值:nginx.port
05 个人邮箱 企业邮箱
15178374440@163.com
06 开启邮箱smtp功能 授权码
PSOHJFUPVIXBZSBD
#以下属于zabbix服务端web页面设置
07 创建报警媒介类型
名称
邮件报警
类型
电子邮件
SMTP服务器
smtp.163.com
SMTP服务器端口
465
SMTP HELO
163.com
SMTP电邮
15178374440@163.com
安全链接
无STARTTLS(纯文本通信协议扩展)SSL/TLS
SSL验证对端
SSL验证主机
认证
无用户名和密码
用户名称
15178374440@163.com
PSOHJFUPVIXBZSBD
07 配置发件人 (先设置群组-在设置用户)
7.1 #群组创建
管理-创建群组--开发组/运维组
管理-用户--zhangfei/lisi(任意设置)--
报警媒介:邮件报警邮件报警 15178374440@163.com 1-7,00:00-24:00 未信警一严灾 已启用
7.2 #用户创建
超级管理员
用户类型 超级管理员 (#这里测试时不给超级管理员,邮件发送不了,我暂时不知道是什么问题)
权限
主机群组 权限
所有组 读写
7.3 #模版
#故障模板
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
#恢复模板
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
08 配置收件人 ----配置动作 (#什么时候发邮件)
配置--动作--创建动作--运维报警--条件(A 触发器示警度 大于等于 未分类)--操作--操作(1 发送消息给用户群组: 运维组 通过 邮件报警
立即地 默认)--恢复(发送消息给用户群组: 运维组 通过 邮件报警)
09 测试 (把nginx服务停止一下)
systemctl stop httpd
或
nginx -s stop
10 效果如下
QQ邮箱
163邮箱
3 监控一个ip状态 是否正常
环境准备:虚拟机
zabbix服务器:10.0.1.149
zabbix客户端:10.0.1.150
思路
01 创建监控项
名称 :网络宕机
类型 :简单检查
键值 :icmpping
主机接口:10.0.1.150 : 10050 (你要监控多少台,这里选择多少台)
02 创建触发器
名称 网路宕机
操作数据
严重性 灾难
表达式 {slb:icmpping.last()}=0
1 正常
0 宕机
03 测试
客户端 :init 0(模拟故障)
04 效果如下
4.主动模式和被动模式的区别
被动模式:服务端发送一条指令,客户端就执行一次,100条指令就需要来回100次
主动模式:agent主动采集,采集完一起发给server ,server端不干预,大大减轻server压力
5.监控mysql性能的监控
#步骤
环境:虚拟机
准备:10.0.1.149(zabbix服务器)
10.0.1.151 (mysql服务器--这个如果一般是配置好的,没有配置,可配置mysql服务)
01 安装php
yum -y install php php-mysql
02 安装数据库(有就不用安装了)
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum -y install mysql-community-server
mysql_secure_installation
账号:root
密码:123
03 下载percona monitor(三种方式任选一)
(rpm包)
https://www.percona.com/downloads/percona-monitoring-plugins/1.1.5/percona-zabbix-templates-1.1.5-1.noarch.rpm
https://files.cnblogs.com/files/blogs/816085/percona-monitoring-plugins-1.1.5.tar.gz?t=1712678060&download=true
(tar包)
https://www.percona.com/downloads/percona-monitoring-plugins/1.1.5/percona-monitoring-plugins-1.1.5.tar.gz
(网页下载)
https://link.csdn.net/?target=https%3A%2F%2Fwww.percona.com%2Fdownloads%2Fpercona-monitoring-plugins%2F1.1.5%2Fpercona-zabbix-templates-1.1.5-1.noarch.rpm
rpm -ivh percona-zabbix-templates-1.1.5-1.noarch.rpm
.
├── scripts
│ ├── get_mysql_stats_wrapper.sh #调用php脚本并过滤
│ └── ss_get_mysql_stats.php #获取mysql状态的脚本
└── templates
├── userparameter_percona_mysql.conf #zabbix监控项配置文件
└── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.5.xml #zabbix模板文件
04 修改percona monitor配置文件
cd /var/lib/zabbix/percona/scripts
vim get_mysql_stats_wrapper.sh
19 RES=`HOME=~zabbix mysql -uroot -p123 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_ Running):' | awk -F: '{print $2}' | tr '\n' ','`
vim ss_get_mysql_stats.php
30 $mysql_user = 'root';
31 $mysql_pass = '123';
systemctl restart zabbix-agent2
05 复制percona模板到zabbix监控目录
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agent2.d/mysql.conf
06 重启zabbix服务端 zabbix客户端(msyql)
07 zabbixweb页面设置监控msyql------操作
**percona模板包**
https://files.cnblogs.com/files/blogs/816085/zbx_percona_mysql_templatenwq.xml?t=1712677974&download=true
如下图
以下是zabbix监控mysql的页面配置图
6.实战演示 自动注册功能,实现批量自动监控服务器
#步骤
一、安装 Agent
安装源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
替换阿里云源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
安装客户度:
yum install zabbix-agent2 -y
启动 客户端: systemctl restart zabbix-agent2
systemctl status zabbix-agent2
systemctl enable zabbix-agent2
配置文件重新配置:
cp /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent3.conf
egrep -v "^$|#" zabbix_agent3.conf >zabbix_agent2.conf
二、配置 --客户端配置文件
cd /etc/zabbix/
echo > zabbix_agent2.conf
[root@centos7mage ~]# grep '^[A-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=10.0.1.149
ServerActive=10.0.1.149
Hostname=slb
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
三、启动 Agent
systemctl restart zabbix-agent2
#报错解决
1.防火墙未关闭
2.服务端server.conf配置文件有误
3.客户端agent2.conf配置文件有误
4.服务器是否开启了多个进程
5.客户端是否开启了多个进程(没有开启进程)
6.客户端/服务端重启zabbix服务后要等待一分钟,再看结果
------------------------------------------------------
四、zabbix服务器Web 前端配置
1.配置 --->> 自动发现 --->> 创建自动发现
2.创建动作--配置 --->> 动作 -->> 创建自动发现动作
补充
二-- 主动客户端自动注册
自动注册(agent auto-registration)功能主要用于Agent主动且自动向Server注册。与前面的Network discovery具有同样的功能,但是这个功能更适用于特定的环境,当存在一个条件未知(如agent端的IP地址段、agent端的操作系统版本等信息)时,Agent去请求Server仍然可以实现主机自动添加到zabbix web中的功能。比如云环境下的监控,云环境中,IP分配就是随机的,这个功能就可以很好的解决类似的问题
在客户端配置文件中设置参数, 在zabbix web中配置一个动作
- 修改客户端配置文件
# 打开客户端配置文件zabbix_agentd.conf,修改如下配置:
Server=192.168.10.10
ServerActive=192.168.10.10 #这里是主动模式下zabbix服务器的地址
Hostname=test
HostMetadata=linux zabbix.98stack #这里设置了两个元数据,一个是告诉自己是linux服务器,另一个就是写一个通用的带有公司标识的字符串。
自动注册请求发生在每次客户端发送一个刷新主动检查请求到服务器时,请求的延时在客户端中配置文件zabbix_agentd.conf的RefreshActiveChecks 参数中指定,第一次请求将在客户端重启之后立即发送
2.配置网络自动注册规则
配置 --->> 动作 -->> 创建自动注册动作
三--低级别发现 Low-level discovery
在对主机的监控中,可能出现这样的情况,例如对某主机网卡eth0进行监控,可以指定需要监控的网卡是eth0,而将网卡作为一个通用监控项时,根据主机操作系统的不同,网卡的名称也不完全相同,有些操作系统的网卡名称是eth开头的,而有些网卡名称是em开头的,还有些网卡是enps0开头的,遇到这种情况,如果分别针对不同的网卡名设置不同的监控项,那就太繁琐了,此时使用zabbix的低级发现功能就可以解决这个问题。
在 Zabbix中, 支持三种现成的类型的数据项发现,分别是:
文件系统发现
网络接口发现
SNMP OID发现
CPU核和状态
zabbix 自带的 LLD key:
vfs.fs.discovery #适用于zabbix agent监控方式
snmp.discovery #SNMP agent监控方式
net.if.discovery #适用于zabbix agent监控方式
system.cpu.discovery #适用于zabbix agent监控方式
可以用 zabbix-get 来查看key获取的数据,对于snmp,不能通过zabbix-get 来验证,只能在 web 页面中进行配置使用.
例子:
]#/usr/local/zabbix/bin/zabbix_get -s 172.16.213.232 -k net.if.discovery
{"data":[{"{#IFNAME}":"eth0"},{"{#IFNAME}":"lo"},{"{#IFNAME}":"virbr0-nic"},{"{#IFNAME}":"virbr0"}]}