1【简介】
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix由zabbix server与可选组件zabbix agent两部门组成。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
2【主要特点】
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
多种监控方式:Zabbix支持SNMP、JMX、IPMI等多种监控方式,可以监控网络设备、操作系统、数据库、Web应用程序等各种系统组件。
自定义监控项:Zabbix允许用户自定义监控项,可以通过脚本、API等方式添加自定义监控项,以监测企业的特定应用程序和业务需求。
高度可配置:Zabbix提供了大量的配置选项,可以根据需要灵活配置监控对象、告警规则、通知方式、用户权限等设置。
丰富的预警机制:Zabbix支持多种告警规则,可以通过Email、短信、声音、微信等多种方式向管理员发送告警信息,支持条件触发、阈值判断等多种告警方法。
可视化展示:Zabbix提供了丰富的可视化展示功能,可以通过仪表盘、图表、地图等方式呈现监控数据。
网络拓扑图:Zabbix支持绘制全局网络拓扑图以及单个设备的拓扑图,可以帮助管理员更好地了解网络结构和连接状态。
3【主要功能】
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
4【基本构成】
1、Agent
zabbix agent通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给zabbix server。
2、Server
zabbix server是zabbix的核心组件,server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。
3、web页面
web页面也是zabbix的一部分,通常和zabbix server位于一台物理设备上,但是在特殊情况下也可以分开配置。web页面主要提供了直观的监控信息,以方便运维人员监控管理。
3、数据库
zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。
4、proxy
zabbix proxy可以根据具体生产环境进行采用或者放弃。如果使用了zabbix proxy,则其会替代zabbix server采集数据信息,可以很好的分担zabbix server的负载。zabbix proxy通常运用与架构过大、zabbix server负载过重,或者是企业设备跨机房、跨网段、zabbix server无法与zabbix agent直接通信的场景。
主动模式和被动模式
zabbix的数据收集分为两种模式:
主动模式:zabbix客户端主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server。
被动模式:zabbix server向 agent 请求获取监控项的数据,zabbix agent返回数据。
5【安装】
1.防火墙和SELINUX
网络方面先关闭防火墙和SELINUX。
systemctl stop firewalld.service #关闭防火墙服务
systemctl disable firewalld.service #开机不启动
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #替换文本参数
grep SELINUX=disabled /etc/selinux/config #查文本状态
setenforce 0 #关闭当前SELINUX
2.禁用EPEL提供的Zabbix包
如果你下载了epel,编辑配置文件/etc/yum.repos.d/epel.repo 添加语句excludepkgs=zabbix*。
[epel]
...
excludepkgs=zabbix*
#先查看head cat more tail有没有这个配置文件,没有直接下一步
3.安装zabbix存储库
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
dnf clean all
4.安装Zabbix server,Web前端,agent
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
5.创建数据库
需要先安装数据库,如已将安装数据库,直接创建一个zabbix数据库并支持中文.
create database zabbix character set utf8mb4 collate utf8mb4_bin;
#创建一个zabbix用户并赋权给zabbix用户
create user zabbix@localhost identified by '9529';
#赋权
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
#查看
SELECT Host, User FROM mysql.user;
6.导入初始架构和数据,
系统将提示您输入新创建的密码
#导入
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
#禁用
set global log_bin_trust_function_creators = 0;
7.为Zabbix server 配置数据库
#编辑文件
vim /etc/zabbix/zabbix_server.conf
#取消DBPassword注释,并赋值
DBPassword=9529
8.为zabbix配置时区
vim /etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai #此项默认被注释,需要去掉开头的“;”,并指定时区为 Asia/Shanghai
9.安装中文包
yum install langpacks-zh_CN.noarch
10.启动Zabbix server和agent进程
systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm
11.日志
journalctl -xeu httpd.service
tail /var/log/zabbix/zabbix_server.log
12.错误整理
实践错误1:安装配置好无法启动httpd服务(tip:当一起启动失败,分别启动,查看是哪些启动失败,一个一个解决)
查看:查看日志journalctl -xeu httpd.service,Can t open PID file /run/zabbix/zabbix_server.pid (yet?) 错误。查看解决办法,无用。
继续查看tail /var/log/zabbix/zabbix_server.log:错误大概意思为为数据库非zabbix数据库。
解决:数据库配置错误,删除已经创建的数据库,重新根据官方文档进行配置。
总结:安装配置要细心,最好按照官方文档,结合博客。
实践错误2:访问192.168.58.129/zabbix/出现500错误,“白屏”
查看:错误日志httpd错误日志:提示,/etc/zabbix/web/maintenance.inc.php不存在;打开目录确实不存在。不知道去哪了,自己也没删除什么东西,重新从头执行安装语句,发现无用,挣扎。
解决:在另外一台虚拟机下重新安装,发现存在目录,所以是安装过程出现了问题,我复制了一份该文件,然后重启,访问。成功。
总结:emmm,体现vm快照功能的方便之处了,应该事先拍摄快照,遇到解决麻烦的问题直接重新开始。
13.访问
192.168.58.129/zabbix/
6【添加监控主机】
在被监控主机上安装部署zabbix-agent,并修改配置文件(zabbix_agentd.conf)的参数。然后在zabbix 服务端zabbix-get检查是否可以监控。如果可以了,就可以在web页面添加了,要监控那些就套用具体模板。
1.关闭防火墙和SELINUX
systemctl disable firewalld
setenforce 0
#顺便修改个主机名
hostnamectl set-hostname zbx-agent01
reboot
2.下载zabbix-agent
#下载源
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
dnf install zabbix-agent
3.修改配置
vim /etc/zabbix/zabbix_agentd.conf
......
Server=192.168.88.50 #指定 zabbix 服务端的 IP 地址
ServerActive=192.168.88.50 #指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01 #指定当前 zabbix 客户端的主机名
#相当于同时设置主动模式和被动模式
agent端的主动模式和被动模式
1.被动模式:
(1)Server:用于指定允许哪台服务器拉取当前服务器的数据, 当agent端工作于被动模式,则代表server端会主动拉取agent端数据, 那么server端的IP必须与此参数的IP对应,此参数用于实现基于IP的访问控制, 如果有多个IP ,可以使用逗号隔开。 (2)ListenPort:用于指定当agent端工作于被动模式时所监听的端口号, 默认端口为10050,也就是说,server端默认访问10050端口,从而拉取数据。 (3)ListenIP:用于指定agent端工作于被动模式时所监听的IP地址, 默认值为0.0.0.0,表示监听本机的所有IP地址。 (4)StartAgents:用于指定预生成的agent进程数量。
2.主动模式:
(1)ServerActive:此参数用于指定当agent端工作于主动模式时, 将信息主动推送到哪台server上,当有多个IP时,可以用逗号隔开。 (2)Hostname:此参数用于指定当前主机的主机名, server端通过此参数对应的主机名识别当前主机。 (3)RefreshActiveChecks: 此参数用于指明agent端每多少秒主动将采集到的数据发往server端。
4.测试连通性
在服务端测试
yum install -y zabbix-get #安装 zabbix 主动获取数据的命令
zabbix_get -s '192.168.58.130' -p 10050 -k 'agent.ping'
1 #返回1则表示可以连通
zabbix_get -s '192.168.58.130' -p 10050 -k 'system.hostname'
zbx-agent01
-s 指定ip
-p 指定端口
-k 指定key
#常用的键值
agent.ping #服务端与客户端是否连通,返回1表示可达,返回非表示不可达
system.hostname #系统主机名
agent.hostname #客户端主机名
net.if.in[if,<mode>] #网络接口进入的流量统计,if表示网卡名称,带<>的参数表示可以省略
net.if.out[if,<mode>] #网络接口流出的流量统计
proc.num[<name>,<user>,<state>,<cmdline>,<zone>] #进程数
net.tcp.port[<ip>,port] #检查是否能建立tcp连接到指定端口,返回0表示不能连接,返回1表示可以连接
5.重启zabbix-agent
systemctl restart zabbix-agent
6.web端配置
点击左边菜单栏【监测】中的【主机】,右上角点击【创建主机】
【主机名称】输入 zbx-agent01
【可见的名称】输入 zbx-agent01-192.168.58.130
【模板】搜索 Linux ,选择 Linux by Zabbix agent
【群组】选择 Linux servers
【Interfaces】点击添加 客户端,【IP地址】输入 192.168.88.130
7【自定义监控项】
key:
在zabbix中,我们要监控的某一个指标,被称为”监控项”,就像我们的磁盘使用率,在zabbix中就可以被认为是一个”监控项”(item),如果要获取到”监控项”的相关信息,我们则要执行一个命令,但是我们不能直接调用命令,而是通过一个”别名”去调用命令,这个”命令别名”在zabbix中被称为”键”(key)。
例子:监控主机登录人数,只允许2人登录
1.创建自定义key
在服务端命令
# zabbix_get -s '192.168.58.130' -p 10050 -k 'system.hostname'
1.明确执行客户端数据获取数据的命令
who | wc -l #登录用户
2.创建 zabbix 的监控项配置文件,用于自定义 key.
查看配置文件
vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf #表示可以吧=把自定义监控项配置文件添加到该目录下
3.创建配置文件
cd /etc/zabbix/zabbix_agentd.d/
vim UserParameter_login.conf
#在文件中写入
# 格式: Format: UserParameter=<key>,<shell command>
UserParameter=login.user,who|wc -l
#重启
systemctl restart zabbix-agent.service
查看状态
2.服务端测试
[root@centos9 ~]# zabbix_get -s '192.168.58.130' -p 10050 -k 'login.user'
2
测试成功
3.WEB端添加
1.创建模板
2.创建应用集(类似于文件夹,文佳佳下放置监控项)
3.创建监控项,自定义item
4.创建触发器,当监控项获取到值时,进行和触发器比较,判断,决定是否报警
5.创建图形
6.将具体的主机和该模板相连接
8【邮件告警】
1.创建媒介
2.填写信息
3.测试
#问题:Emmm,无语住了,使用smtp.qq.com服务器测试一直出现无法登陆错误,密码也没错,刚开始以为zabiix服务器上没安装smtp服务器导致,纯扯淡,不是一个东西。
#在zabbix服务器上安装个postfix邮件服务,配置一下,然后smtp服务器填写自己zabbix那台服务器好了(iau.com)
【tip】虽然但是,最终还是没收到邮件,查看日志就是什么SDF验证不通过,不知道是不是域名设置的问题,需要去注册才行,但是看其他地方的贴直接就能收到。不知道咋回事,有懂的大佬指导一下。
9【自动注册和发现】
1.可控监控模板克隆
2.自动注册和自动发现
3.使用zabiix的api接口,利用curl语言,或者开发自己的编程脚本。
自动发现和自动注册
自动发现:server主动的去发现所有客户端,将客户端的信息登记在服务器上
缺点是zabbix-server压力会比较大
自动注册:zabbix-agent主动上报信息,发给zabbx-server,
缺点是agent可能找不到server
自动注册
1.修改agent配置文件
vim /etc/zabbix/zabbix_agent.conf
grep -Ev '^#|^$' /etc/zabbix/zabbix_agent.conf
^#:匹配以#开头的字符串。
|^$:匹配空字符串。
2.重启
3.web:
告警---动作---自动注册动作-创建----填写主机名----添加操作--添加主机、添加到主机组、关联模板--添加
10【分布式监控】
proxy,代理服务器
三台虚拟机
server-----proxy-----agent
作个人学习笔记使用,待添加…