目录
前言:作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。
- 通过一个友好的界面进行浏览整个网站所有的服务器状态
- 可以在Web前端方便的查看监控数据
- 可以回溯寻找事故发生时系统的问题和报警情况
一、Zabbix简介
1.1 Zabbix概述
- zabbix是一个基于Web界而的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
- zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
- zabbix由2部分构成,zabbix server与可选组件zabbix agent。通过C/S模式采集数据,通过B/S 模式在Web端展示和配置。
- zabbix server 可以通过SNMP,zabbix agent, ping, 端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux等平台上。
- zabbixagent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
1.2 Zabbix 监控原理
zabbix agent安装在被监控的主机上,zabbix agent 负责定期收集客户端本地各项数据,并发送至zabbix server 端,zabbix server收到数据后,将数据存储到数据库中,用户基于ZabbixWEB可以看到数据在前端展现图像。当zabbix监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行--些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、 install 等)。
1.3 zabbix监控部署在系统中,包含常见的五个程序
zabbix_ server. zabbix_ _agent、zabbix_ _proxy、zabbix_get、zabbix_sende
- zabbix server: zabbix 服务端守护进程,其中zabbix_ agent. zabbix_ get. zabbix_ sender、zabbix_ proxy的数据最终都提交给zabbix server;
- zabbix agent: 客户端守护进程,负责收集客户端数据,例如:收集CPU负载、内存、硬盘使用情况等;
- zabbix proxy: zabbix 分布式代理守护进程,通常大于500 台主机,需要进行分布式监控架构部署;
- zabbix get: zabbix 数据接收工具,单独使用的命令,通常在server 或者proxy 端执行获取远程客户端信息的命令;
- zaabix sender: zabbix 数据发送工具,用户发送数据给server 或proxy端,通常用户耗时比较长的检查。
二、部署zabbix服务端
zabbix-server内存至少2G,推荐4G;
systemctl disable --now firewalld
setenforce 0
hostnamectl set -hostname zbx-server
//获取zabbix 的下载源
rpm -ivh https://mirrors. aliyun. com/ zabbix/zabbix/5.0/rhe1/7/x86 64/zabbix- release-5.0-1.e17。noarch. rpm
//更换zabbix.repo 为阿里源
cd /etc/yum. repos.d
sed -i 's#bttp://repe .zabbix. comhttps:/ /mirrors .aliyun。com/zabbix#' zabbix. repo
yum clean all && yum makecache
yum install -y zabbix-server -mysql zabbix- agent
//安装SCL (Software Collections), 便于后续安装高版本的php,默认yum安装的php 版本为5.4, 版本过低,zabbix 5.0版本对php版本最低要7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在/opt/rh目录下。
yum install -y centos- release-scl
//修改zabbix- front前端源,安装zabbix 前端环境到scl环境下
vim zabbix. repo
[zabbix- frontend]
将前端的仓库打开 设置为1
使用mysql数据库
//添加数据库用户,以及zabbix所而的数据库信息
mysql -u root -pabc123
CREATE DATABASE zabbix character set utf8 collate utf8_ bin;
GRANT all ON zabbix.* TO ' zabbix'@'&' IDENTIFIED BY 'zabbix' ;
flush privileges;
//导入数据库信息
rpm -ql zabbix-server -mysql
#查询sql文件的位置
zcat /usr/share/doc/ zabbix- server -mysq1-5.0.15/create.sq1.gz | mysql -uroot -pabc123 zabbix
//修改zabbix server 配置文件,修改数据库的密码
vim /etc/ zabbix/ zabbix_ server . conf
DBPassword= zabbix
#124行,指定zabbix 数据库的密码
//修改zabbix 的php配置文件
vim /etc/opt/ rh/ rh-php72/php- fpm. d/ zabbix. conf
php_ value [date. timezone] = Asia/ Shanghai #24行,取消注释,修改时区
/启动zabbix 相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
浏览器访问: http://192.168.80.20/ zabbix
点击下一步,设置数据库的密码zabbix
安装完成后,默认的登录账号和密码为: Admin/ zabbix
设置文件界面:点击左边菜单栏的[User settings] ,[ Language] 选择Chinese(zh_ CN), 再点击Update 更新。
/解决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
完成下列操作
三、部署zabbix 客户端
zabbix 5.0版本采用golang 语言开发的新版本客户端agent2 。
zabbix服务端zabbix_ server 默认使用10051 端口,客户端zabbix_ agent2 默认使用10050 端口。
systemctl disable --now firewalld
setenforce 0
hostnamectl set -hostname zbx- agent01
//服务端和客户端都配置时间同步
yum install -y ntpdate
ntpdate -u ntp. aliyun. com
//客户端配置时区,与服务器保持一致
mv /etc/localtime{, .bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/ localtime
//改置zabbix 的下载源,安装zabbix- agent2
rpm -ivh https:/ /mirrors. aliyun. com/ zabbix/zabbix/5.0/rhel/7/x8664/zabbix- release = 5.0-1。el7. noarch. rpm
cd /etc/yum. repos.d
sed -i 's#http://repe. zabbix。com#https; //mirrors. aliyun。com/ zabbix#' /etc/yum. repos . d/zabbix . repo
yum install -y zabbix- agent2
//修改agent2配置文件
vim /etc/zabbix/zabbix_ agent2. conf
......
Server=192.168.80.20 #80行,指定zabbix 服务端的IP 地址
ServerActive=192.168.80.20 #120行,指定zabbix 服务端的IP地址
Hostname= zbx- agent01 #131行,指定当前zabbix 客户端的主机名
//启动zabbix-agent2
systemctl start zabbix-agent2
systemctl enable zabbix-agent2
netstat -natp | grep zabbix
tcp6 0 0 :::10050 :::* LISTEN 43654/zabbix_agent2
//在服务端验证 zabbix-agent2 的连通性
yum install -y zabbix-get #安装 zabbix 主动获取数据的命令
zabbix_get -s '192.168.80.30' -p 10050 -k 'agent.ping'
1
zabbix_get -s '192.168.80.30' -p 10050 -k 'system.hostname'
zbx-agent01
在 Web 页而中添加 agent 主机
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】设置成 zbx-agent01
【可见的名称】设置成 zbx-agent01-192.168.130.132
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成192.168.130.132
右上角有个创建选项
四、自定义监控内容
案列:自定义监控客户端服务器登录的人数
需求:限制登录人数不超过3个,超过3个就发出报警信息
在客户端创建自定义key
1.明确需要执行的linux命令
who | wc -l
2.创建zabbix的监控项配置文件,用于自定义key
vim /etc/ zabbix/ zabbix_ agent2. conf
#可以将自定义的监控项配置文件创建在zabbix_ agent2.d目录中
268 Include= /etc/zabbix/zabbix_ agent2.d/* .conf
#自定义监控项的格式如下
291 #
Format: UserParameter=<key>, <shell command>
cd /etc/ zabbix/zabbix_ _agent2.d/
vim UserParameter_ login. conf
UserParameter=login.user, who | wc -1
systemctl restart zabbix- agent2
3.在服务端验证新建的监控项
zabbix_ get -s '192.168.80.30' -p 10050 -k ' login.user'
五、 在Web页面创建自定义监控项模板
1.创建模板
点击左边菜单栏【配置】中的【模板】,点击【创建模板】
【模板名称】设置成 Template Login User
【可见的名称】设置成 Template Login User
【群组】选择 Template
【描述】可自定义
点击 【添加】,此时就可在【链接的模板】中搜索到 Template Login User 了
2.创建应用集(用于管理监控项的)
点击上方菜单栏【应用集】,点击【创建应用集】
【名称】设置成 Login User
点击【添加】
3.创建监控项
点击上方菜单栏【监控项】,点击【创建监控项】
【名称】设置成 Number of login users
【键值】设置成login.user #键值必须要与自定义的监控项配置文件中设置的保持一致
【更新间隔】设置成10s
【历史数据保留时长】storage period 30d #保留时间可自定义设置
点击【添加】
4.创建触发器
(当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警)
点击上方菜单栏【触发器】,点击【创建触发器】
【名称】设置成 Number of login users is greater than 3
【严重性】设置成 一般严重
5. 创建图形
六、设置邮件报警
【SMTP服务器】设置成 smtp.qq.com
【SMTP服务器端口】设置成 25
【SMTP HELO】 设置成 qq.com
【SMTP电邮】设置成自己的邮箱地址,例如 qwe45456@qq. com
【认证】选择用户名和密码
【用户名称】设置成自己的邮箱地址,例如 qwe45456@qq. com
【密码】可登录QQ邮箱页而,点击【设置】-->【账户】中的【生成授权码】,通过短信获取授权码
【描述】可自定义
点击上方菜单栏【Message templates】,点击【添加】,【Message type】选择 问题,点击【更新】
点击【添加】,并测试功能
密码为授权码
点击左边菜单栏【User settings】 --> 【报警媒介】,点击【添加】
【类型】选择qq_Email
【收件人】设置成 [email protected]
【当启用时】设置成 1-7,00:00-24:00
点击【添加】
再点击【更新】
点击左边菜单栏【配置】中的【动作】
选择相对应的动作名称点击进入,点击【添加】
【类型】选择触发器,【触发器】点击选择 Nunber of login users is greater than 3
点击【启用】
//测试邮件报警
增加测试客户端的用户登录数超过触发器预设的值,查看【监测】-->【仪表盘】,确认报警
七、zabbix 自动发现与自动注册
zabbix 自动发现(对于 agent2 是被动模式)
zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。
缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。
1.确保客户端上的 zabbix-agent2服务状态正常
systemctl is-active zabbix- agent2.service
active
2.在 Web 页面删除原有的客户端主机
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
3.在服务端和客户端上配置 hosts 解析
vim /etc/hosts
192.168.80.20 zbx-server
192.168.80.30 zbx-agent01
两台都要输入
4.在 Web 页而配置自动发现
点击左边菜单栏【配置】中的【自动发现】,点击【创建发现规则】
【名称】设置成 mynetwork
【IP范围】设置成 192.168.80.1-254
【更新间隔】设置成 30s
【检查】点击【添加】,【检查类型】选择 Zabbix 客户端, 【端口范围】设置成 10050, 【键值】设置成 system.uname
【设备唯一性准则】选择 IP地址
【主机名称】选择 DNS名称
【可见的名称】选择 主机名称
勾选【已启用】 ,点击【更新】
点击左边菜单栏【配置】中的【动作】,上方菜单选择【Discovery actions】
勾选【Auto discovery. Linux servers.】 ,点击【启用】
点击左边菜单栏【配置】中的【主机】刷新,等待一段时间后即可刷新出自动发现的客户端主机
可在服务端查看 zabbix 日志
tail -f /var/log/ zabbix/zabbix_server.log
......
6601:20210922:225044.115 enabling Zabbix agent checks on host "zbx-agent01": host became available
unname 查看内核
自动可用
八、zabbix 自动注册
(对于 agent2 是主动模式)
zabbix agent2 会主动上报自己的信息,发给 zabbix server。
缺点是可能因为配置文件配置错误或者网络不通等原因导致 zabbix agent2 可能找不到 zabbix server。
1.环境准备
点击左边菜单栏【配置】中的【自动发现】,勾选发现规则,点击 禁用
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
vim /etc/hosts
192.168.80.20 zbx-server
192.168.80.30 zbx-agent01
2.修改 zabbix-agent2 配置文件
vim /etc/zabbix/ abbix_agent2.conf
......
HostnameItem=system.hostname #139行,取消注释
egrep -v "^#|^$" /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile-/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.80.20
ServerActive=192.168.80.20
Hostname=zbx-gent01
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
3.在 Web 页而配置自动注册
点击左边菜单栏【配置】中的【动作】,上方菜单选择【Autoregistration actions】,点击【创建动作】
【名称】设置成 Auto registration
点击【添加】,【类型】选择 主机名称,【操作者】选择 包含,【值】设置成 zbx-agent01
点击上方菜单栏【操作】,点击【添加】,【操作类型】选择 添加主机,点击【add】
再点击【添加】,【操作类型】选择 添加到主机群组,【主机群组】选择 Linux servers, 点击【add】