zabbix5.0 监控服务搭建部署
zabbix相关介绍
Zabbix 是由 Alexei Vladishev 创建,目前是由 Zabbix SIA 在持续开发和提供支持。
Zabbix 是一种企业级的分布式开源监控解决方案。
Zabbix 是一款能够监控众多网络参数和服务器的健康度和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的警报。这样可以快速相应服务器问题。Zabbix 基于存储的数据提供出色的报告和数据可视化。这些功能使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持轮询和被动捕获。所有的 Zabbix 报告、统计信息和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您的网络状态和服务器健康状况可以从任何地方进行评估。在经过适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于拥有少量服务器的小型组织,还是拥有大量服务器的大型公司而言,同样适用。
Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和分发的。这意味着它的源代码是免费分发的,并且可供公共使用。
zabbix5的版本具备哪些新特性
- 增加了监控项预测试功能
- 自动发现规则进行重新定义与延伸,支持过滤监控、触发器、主机
- 监控项取值:256 上调到 2048
- MD5 指纹加密 改进为bcrypt 技术
- 不再支持ES7以前的版本
- 全面支持zabbix-agent2
LTS:线性发布版,稳定持续维护版本
标准版:类似小白鼠,不提供持续维护的
zabbix监控服务架构模型
snmp:zabbix监控网络性能所依赖协议
IPMI:用于监控物理硬件性能指标,可以获取物理设备的温度、CPU温度,风扇转速
JMX:监控java项目所使用的出口。
SSH:支持ssh登陆的设备都能获得到数据,比如交换机的、linux等等,但前提是设备有ssh功能。比如使用ssh方式收集linux的文件系统挂载情况
安装部署zabbix监控架构
1) 部署环境
部署环境 | |
---|---|
系统 | Centos7 |
web应用 | Nginx |
进程 | php7.2 |
数据库 | maraiadb 5.5 |
2) 安装部署服务端
# zabbix配置下载源
[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 单独配置前端源,并安装
# 下载依赖
yum install centos-release-scl -y
# 安装server服务
yum install zabbix-server-mysql -y
# 修改/etc/yum.repos.d/zabbix.repo 启用zabbix前端仓库
[root@zabbix-server /etc/yum.repos.d]# vim zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
# enabled=0 改成等于1启用
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
# 安装前端组件
yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y
3)准备数据库环境
安装数据库mysql或则mariadb
# 安装数据库服务
yum install mariadb-server -y
# 启动maraiadb-server
systemctl enable --now mariadb.service
[root@zabbix-server ]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]> # 创建zabbix业务库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]>
MariaDB [(none)]> # 授权zabbix用户
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by ‘zabbix‘;
Query OK, 0 rows affected (0.00 sec)
# 查看zabbix-server-mysql相关文件
[root@zabbix-server ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-5.0.14
/usr/share/doc/zabbix-server-mysql-5.0.14/AUTHORS
/usr/share/doc/zabbix-server-mysql-5.0.14/COPYING
/usr/share/doc/zabbix-server-mysql-5.0.14/ChangeLog
/usr/share/doc/zabbix-server-mysql-5.0.14/NEWS
/usr/share/doc/zabbix-server-mysql-5.0.14/README
/usr/share/doc/zabbix-server-mysql-5.0.14/create.sql.gz # zabbix初始化业务数据库sql
/usr/share/doc/zabbix-server-mysql-5.0.14/double.sql
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix
# 导入业务数据到zabbix库
[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql-5.0.14/create.sql.gz | mysql zabbix
配置服务端环境
1)配置zabbix_server连接数据库
[root@zabbix-server ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBName=zabbix # 要连接的数据库名称
DBUser=zabbix # 数据库用户名
DBPassword=zabbix # 数据库密码
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
2)配置Nginx
# 查看zabbix-nginx相关配置文件
[root@zabbix-server ~]# rpm -ql zabbix-nginx-conf-scl
/etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
# 编辑配置文件
[root@zabbix-server ~]# vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server {
listen 80;
server_name test.zabbix.com;
root /usr/share/zabbix;
# 配置本地hosts文件
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
192.168.15.200 test.zabbix.com
3) 配置php
[root@zabbix-server /etc/opt/rh/rh-php72/php-fpm.d]# cat zabbix.conf
listen.acl_users = apache,nginx
php_value[date.timezone] = Asia/Shanghai
4) 重启服务
systemctl restart zabbix-server rh-nginx116-nginx.service rh-php72-php-fpm.service
# 加入开机自启
systemctl enable zabbix-server rh-nginx116-nginx.service rh-php72-php-fpm.service
在浏览器访问当前部署的机子的ip地址或则本地解析的域名即可开始网页安装部署zabbix
配置web界面连接数据库相关数据
设置zabbix监控项目名称
确认配置信息
web界面配置成功
默认登陆账号密码
界面设置中文
zabbix-agent2 安装部署
Zabbix-agent2 作为一款新的agent,未来可能会替代原有的agent。
特性:
- 降低了TCP连接的数量
- zabbix-agent2用go语言开发,集成了zabbix-agent原有的所有功能,并且易于通过插件扩展第三方功能。
安装agent2
# 配置源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 下载
yum install zabbix-agent2 -y
配置文件解释
Alias
key的别名,例如 Alias=ttlsa.userid:
vfs.file.regexp[/etc/passwd,^ttlsa:.:([0-9]+),,,,\1],
或者ttlsa的用户ID。你可以使用key:
vfs.file.regexp[/etc/passwd,^ttlsa:.: ([0-9]+),,,,\1],
也可以使用ttlsa.userid。
# 备注: 别名不能重复,但是可以有多个alias对应同一个key。
AllowRoot
默认值:0
是否允许使用root身份运行zabbix,如果值为0,
并且是在root环境下,zabbix会尝试使用zabbix用户运行,
如果不存在会告知zabbix用户不存在。
0 - 不允许
1 - 允许
BufferSend
#取值范围:1-3600
#默认值:5
#数据存储在buffer中最长多少秒
BufferSize
#取值范围:2-65535
#默认值:100
#buffer最大值,如果buffer满了,zabbix将会将检索到的数据发送给zabbix server或者proxy
DebugLevel
#取值范围:0-5
#默认值:3
#指定日志级别
0 - basic information about starting and stopping of Zabbix processes
1 - critical级别
2 - error级别
3 - warnings级别
4 - debug级别
5 - extended debugging (与级别4一样. 只能使用runtime control 来设置.)
EnableRemoteCommands
#默认值:0
#是否运行zabbix server在此服务器上执行远程命令
0 - 禁止
1 - 允许
HostMetadata
取值范围:0-255 字符
仅用于主机自动注册功能,如果当前值定义,
那么它的值默认为HostMetadataItem的值。这个选项在2.2.0之后加入,
并且确保支付不能超过限制,以及字符串必须是UTF8,否则服务器无法启动
# 主机自动注册的时候区分主机分类配置模板和监控项的依据 根据主机元数据不同分类监控模板设置
zabbix自动注册请参考:zabbix客户端自动注册(84)
HostMetadataItem
功能同上,如果HostMetadata值未设置,
这个配置才有效。支持使用UserParameters、alias、system.run[]
Hostname
默认值:HostnameItem配置的值
主机名,必须唯一,区分大小写。Hostname必须和zabbix web上配置的一直,
否则zabbix主动监控无法正常工作。为什么呢?因为agent拿着这个主机名去问server,
我有配置主动监控项 吗?server拿着这个主机名去配置里面查询,然后返回信息。
支持字符:数字字母、‘.‘、‘ ‘、 ‘_‘、 ‘-‘,不超过64个字符
HostnameItem
默认值:system.hostname
设置主机名,只有当HostMetadata没设置,她才生效。
不支持UserParameters 、aliases,支持system.run[]
Include
包含自配置文件,不同的配置写到不同的文件中,
然后include,配置文件会显得规范。
例如: /absolute/path/to/config/files/*.conf. Zabbix 2.4.0开始支持正则表达式。
ListenIP
#默认值:0.0.0.0
#监听IP地址,默认为所有接口,多个ip之间使用逗号分隔
ListenPort
#取值范围:1024-32767
#默认值10050
#监听端口
LoadModule
#加载模块文件,可以写多个
#格式: LoadModule=
#必须配置LoadModulePath,指定模块目录
#zabbix模块请参考:zabbix加载扩展模块 第三方库支持(92)
LoadModulePath
模块路径,绝对路径,如上
更多参数说明如下
LogFile
#日志文件路径
#如果未配置,日志会记录到syslog中
LogFileSize
#取值范围:0-1024
#默认值:1
#日志文件大小,单位为MB。
#0 - 关闭自动轮滚.
#备注:如果日志文件到达了最大值并且文件轮滚失败,那么老日志文件会被清空掉。
LogRemoteCommands
#默认值:0
#记录原型执行的shell命令日志,级别为warrning
0 - disabled
1 - enabled
MaxLinesPerSecond
#取值范围:1-1000
#默认值:100
#处理监控类型为log何eventlog日志时,agent每秒最大发送的行数。默认为100行
zabbix日志监控请参考:zabbix监控日志文件 MySQL日志为例(95)
PidFile
#默认值:/tmp/zabbix_agentd.pid
PID文件名
RefreshActiveChecks
#取值范围:60-3600
#默认值:120
#多久时间(秒)刷新一次主动监控配置信息,如果刷新失败,那么60秒之后会重试一次
Server
#zabbix_agent2被动模式 zabbix_server配置自动发现客服端需要设置此ip
ServerActive
#zabbix_agent2主动模式连接 zabbix_server配置自动注册客服端需要设置此ip
SourceIP
#zabbix对外连接的出口IP地址
StartAgents
#取值范围:0-100
#默认值:3
#zabbix启动之后开启被动监控的进程数量,如果设置为0,那么zabbix被动监控被禁用,并且不会监听相应端口,也就是说10050端口不会开启。
Timeout
#默认值:1-30
#默认值:3
#超时时间
UnsafeUserParameters
#取值范围:0,1
#默认值: 0
#允许所有字符的参数传递给用户定义的参数。
User
#默认值:zabbix
#运行zabbix程序的用户,如果AllowRoot被禁用,才有效果
UserParameter
#用户自定义key,格式: UserParameter=,
#例如:serParameter=system.test,who|wc -l
zabbix 实战应用详解
web界面介绍:
主机-->监控项-->模板-->触发器-->执行动作-->告警媒介
添加主机
客服端
vim /etc/zabbix/zabbix-agent2.conf
Server=服务端的ip
服务端web界面配置
zabbix服务端安装测试命令zabbix_get
# 下载rpm
wget https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-get-5.0.14-1.el7.x86_64.rpm
# 安装
[root@zabbix-server ~]# yum localinstall -y zabbix-get-5.0.14-1.el7.x86_64.rpm
zabbix 实现自动化监控
自动发现
zabbix-server 主动通过指定的某网段,进行扫描
1)添加自动发现规则
配置自动发现规则
2)添加自动发现动作
配置自动发现扫描到主机后触发的动作
成功监测
自动注册
zabbix-agent 主动找zabbix-server
1)配置zabbix客户端
需要配置三个关键参数
- ServerActive
- 元数据
- hostname
[root@zabbix-agent1 ~]# egrep -v ‘^$|^#‘ /etc/zabbix/zabbix_agent2.conf
ServerActive=192.168.15.200 # 主动连接主机的IP地址
Hostname=zabbix-agent1 # 主机的名称(web配置时需要一致)
HostMetadata=zabbix_agent_test # 主机源数据(区别不同的主机分类检测)
2)web端添加相应策略
一切配置好后重启下agent端加速检测
zabbix-proxy分布式监控
应用场景:
- 监控远程区域设备
- 监控本地网络不稳定区域
- 监控上千设备时,减轻 zabbix server 的负荷
- 简化分布式监控的维护
环境设置
主机名 | 主机 | IP | 功能 |
---|---|---|---|
zabbix-server | zabbix-server | 192.168.15.200 | zabbix服务端 |
zabbix-proxy | zabbix-proxy | 192.168.15.220 | zabbix代理端 |
zabbix-agent1 | zabbix-agent1 | 192.168.15.201 | zabbix-agent客户端 |
zabbix-agent2 | zabbix-agent2 | 192.168.15.202 | zabbix-agent客户端 |
安装代理服务
# 配置源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 安装
yum install zabbix-proxy -y
# 准备数据库(部署方式和服务端一致)
安装zabbix-proxy代理数据库
# 安装数据库服务
yum install mariadb-server -y
# 启动maraiadb-server
systemctl enable --now mariadb.service
[root@zabbix-server ]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]> # 创建zabbix_proxy业务库
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]>
MariaDB [(none)]> # 授权zabbix_proxy用户
MariaDB [(none)]> grant all on zabbix_proxy.* to zabbix_proxy@localhost identified by ‘zabbix_proxy‘;
Query OK, 0 rows affected (0.00 sec)
# 查看zabbix-proxy-mysql相关文件
[root@zabbix-proxy ~]# rpm -ql zabbix-proxy-mysql
/etc/logrotate.d/zabbix-proxy
/etc/zabbix/zabbix_proxy.conf
/usr/lib/systemd/system/zabbix-proxy.service
/usr/lib/tmpfiles.d/zabbix-proxy.conf
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-5.0.14
/usr/share/doc/zabbix-proxy-mysql-5.0.14/AUTHORS
/usr/share/doc/zabbix-proxy-mysql-5.0.14/COPYING
/usr/share/doc/zabbix-proxy-mysql-5.0.14/ChangeLog
/usr/share/doc/zabbix-proxy-mysql-5.0.14/NEWS
/usr/share/doc/zabbix-proxy-mysql-5.0.14/README
/usr/share/doc/zabbix-proxy-mysql-5.0.14/schema.sql.gz # zabbix_proxy 初始化数据库
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix
# 导入业务数据到zabbix库
[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.14/schema.sql.gz | mysql zabbix_proxy
配置代理服务参数
1. zabbix-proxy 指向服务端
Hostname 指定的名称一定要与web中创建的agent名相一致
[root@zabbix-proxy ~]# egrep -v ‘^#|^$‘ /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 # 代理模式 0: 主动模式 1: 被动模式 默认被动模式
Server=192.168.15.200
Hostname=zabbix_proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
# 启动并加入开机自启
[root@zabbix-proxy ~]# systemctl enable --now zabbix-proxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-proxy.service to /usr/lib/systemd/system/zabbix-proxy.service.
2. 配置客户端
server指向proxy代理端
[root@zabbix-agent1 ~]# 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.15.220 # 被动模式上报的代理或则服务端ip
ListenPort=10050
ServerActive=192.168.15.220:10051 # 主动上报的ip地址
Hostname=zabbix_agent1 # 主机名称web端配置需要跟agent端这个配置名称一致
HostMetadata=zabbix_agent_test # 元数据 分类管理主机的依据
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
[root@zabbix-agent2 ~]# 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.15.220 # 被动模式上报的代理或则服务端ip
ServerActive=192.168.15.220:10051 # 主动上报的ip地址
Hostname=zabbix_agent2 # 主机名称web端配置需要跟agent端这个配置名称一致
HostMetadata=zabbix_agent_test # 元数据 分类管理主机的依据
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
web界面配置
代理配置
查看代理端
日志报错说明
# zabbix_agent2 报错
2021/08/23 11:39:20.604932 [101] no active checks on server [192.168.15.220:10051]: host [zabbix_agent2] not found
# zabbix_proxy 报错
3504:20210823:114053.613 cannot send list of active checks to "192.168.15.201": host [zabbix_agent1] not found
# zabbix_server 服务端报错
4526:20210823:113558.673 cannot parse proxy data from active proxy at "192.168.15.220": proxy "zabbix_proxy" not found
以上报错直接忽略就好 因为web端还没有监测到所以会报错没有找到
解决办法 web 成功检测到代理端和主机客户端并建立连接后 重启下代理端和服务端报错就解决了
添加主机
可以通过重启客户端或则agent端加速访问