CentOS 7.7 yum方式安装配置Zabbix 4.0 LTS详解(一)
一、Zabbix相关知识简介:
1、监控的维度:
监控内容 | 监控方式 |
物理硬件:CPU温度、主板温度、风扇转速、电压、功率等 | IPMI、机房巡检 |
操作系统:CPU负载、内存使用率、磁盘使用率、磁盘I/O、网卡流量等 | Linux模板 |
应用软件:Nginx、php-fpm、Redis、MySQL、Tomcat等 | 定制开源模板 |
业务:业务状态、网页速度、PV、UV、IP、活跃用户数、每日成交量等 | 腾讯分析、Matomo等 |
交换机、路由器、UPS等网络设备 | SNMP |
日志 | ELK、GoAccess、AWStats |
说明:PV、UV、IP名词解释
PV:Page View,访问量,即页面浏览量或点击量,衡量网站用户访问的网页数量,在一定统计周期内用户每打开或刷新1个页面就记录1次,多次打开或刷新同1页面则浏览量累计。
UV:Unique Visitor,独立访客,统计1天内访问某站点的用户数(以cookie为依据),访问网站的1台电脑客户端为1个访客,可以理解成访问某网站的电脑的数量,网站判断来访电脑的身份是通过来访电脑的cookies实现的,如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的,如果用户不保存cookies访问、清除了cookies或更换设备访问,计数会加1,00:00-24:00内相同的客户端多次访问只计为1个访客。
IP:Internet Protocol,独立IP数,指1天内多少个独立的IP浏览了页面,即统计不同的IP浏览用户数量,同一IP不管访问了几个页面,独立IP数均为1,不同的IP浏览页面,计数会加1,IP是基于用户广域网IP地址来区分不同的访问者的,多个用户(多个局域网IP)在同1个路由器(同1个广域网IP)内上网,可能被记录为1个独立IP访问者,如果用户不断更换IP,则有可能被多次统计。
2、Zabbix组件:
(1)Zabbix Server:负责接收Zabbix Agent或Zabbix Proxy发送的报告信息,并负责组织配置信息、统计信息及操作数据等。
(2)Zabbix Database:用于存储所有Zabbix的配置信息及监控数据的数据库,监控数据包括
a、历史数据:每次采样的结果,保存时长相对较短
b、趋势数据:聚合数据,保存相对较长周期内的数据
(3)Zabbix Web:Zabbix的GUI接口,管理员通过Web界面管理Zabbix配置以及查看Zabbix相关监控信息,可以单独部署在独立的服务器上。
(4)Zabbix Agent:部署在被监控主机上,负责收集被监控主机的数据,并发往Zabbix Server或Zabbix Proxy。
(5)Zabbix Proxy:可选组件,用于分布式监控环境,收集局部区域内Zabbix Agent的监控数据,并统一发往Zabbix Server。
说明:一般情况下,将Zabbix Agent部署在被监控主机上采集数据,报告给负责监控的中心主机,中心主机也就是master/agent模型中的master,负责监控的中心主机被称为Zabbix Server,Zabbix Server将从Zabbix Agent接收到的信息存储于Zabbix Database中,如果管理员需要查看各种监控信息,则需要使用PHP编写的Zabbix Web,且依赖于LAMP环境,不管是Zabbix Server,或Zabbix Web,都需要连接到Zabbix Database获取相关数据。
3、Zabbix常用术语:
(1)host:主机,需要被Zabbix监控的对象,主机必须属于某个主机组。
(2)host group:主机组,是具有相同属性、特征、角色的多个主机组成的逻辑单元。
(3)item:监控项,一个特定监控指标的相关数据,这些数据来自于被监控对象,监控项是Zabbix进行数据收集的核心,没有监控项将没有数据,相对某监控对象来说,每个监控项都由"key"进行标识。
(4)key:键,如果想要获取监控项对应的数据,则必须通过某个key去获取,Zabbix中自带一些key,这些key往往比较通用,通过这些key可以监控CPU、内存、硬盘等常用指标,获取不同的指标信息,但如果这些自带的key无法满足监控需求时,也可以自定义key,通过自定义key执行相应的操作。
(5)trigger:触发器,一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在其合理范围内,即阈值,接收到的数据量达到阈值时,触发器状态将从"OK"转变为"Problem",当数据量再次回归到合理范围时,其状态将从"Problem"转换回"OK"。
(6)event:事件,当触发器的状态发生改变时,会产生对应的事件,由触发器的状态改变而产生的事件被称为"触发器事件",Zabbix中,事件分为触发器事件、自动发现事件、自动注册事件和内部事件。
(7)action:动作,指对于特定事件事先定义的处理方法,包含操作(如发送通知)和条件(何时执行操作)。
(8)escalation:报警升级,发送告警或执行远程命令的自定义方案,如每隔5分钟发送一次告警,共发送5次等。
(9)media:媒介,发送通知的手段或通道,如Email、Jabber或SMS等。
(10)notification:通知,通过选定的媒介向用户发送有关某事件的信息。
(11)remote command:远程命令,预定义的命令,可在被监控主机处于某特定条件下时自动执行。
(12)template:模板,用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule,模板可直接链接至单个主机。
(13)application:应用,一组item的集合。
(14)web scennario:web场景,用于检测web站点可用性的一个或多个HTTP请求。
(15)frontend:前端,Zabbix的web接口。
4、Zabbix支持的通信方式:
(1)Agent:通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的Agent,推荐首选此种方式。
(2)SSH/Telnet:通过远程控制协议进行通信。
(3)SNMP:Simple Network Management Protocol,简单网络管理协议,通过SNMP协议与被监控对象进行通信,通常无法在路由器、交换机这种硬件上安装Agent,但是这些硬件往往都支持SNMP协议,SNMP是一种比较久远的、通行的协议,大部分网络设备都支持这种协议,其实SNMP协议的工作方式也可以理解为master/agent的工作方式,只不过是在这些设备中内置了SNMP的Agent而已。
(4)IPMI:Intelligent Platform Management Interface,智能平台管理接口,通过IPMI接口进行监控,可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
(5)JMX:Java Management Extensions,Java管理扩展,监控JVM虚拟机时,较常使用此种方式。
5、Zabbix的工作模式:
(1)主动模式:Zabbix Agent会将采集完的数据主动发送给Zabbix Server,可减轻Zabbix Server的压力。
(2)被动模式:Zabbix Agent不主动发送数据,而是等待Zabbix Server过来拉取数据,默认为被动模式。
说明:不管是主动模式还是被动模式,都是对于Zabbix Agent来说的,主动模式与被动模式可以并存
二、准备工作:
1、Zabbix版本选择:https://www.zabbix.com/life_cycle_and_release_policy
备注:建议选择LTS(Long Term Support,长期支持)版本
2、相关网址:
(1)Zabbix下载地址:https://www.zabbix.com/download/
(2)Zabbix 4.0 LTS中文产品手册:https://www.zabbix.com/documentation/4.0/zh/manual
3、演示环境:
IP | 操作系统 | 主机名 | 角色 |
192.168.0.120 | CentOS 7.7 x86_64 | zabbix-server | Zabbix Database、Zabbix Server、Zabbix Web、Zabbix Agent |
192.168.0.121 | CentOS 7.7 x86_64 | sh-proxy | Zabbix Proxy |
192.168.0.122 | CentOS 7.7 x86_64 | node-122 | Zabbix Agent |
192.168.0.130 | Windows Server 2012 R2 | node-130 | Zabbix Agent |
4、所有CentOS节点执行如下操作:
(1)关闭SELinux和firewalld
(2)配置服务器时间同步
(3)配置主机名
(4)配置hosts文件:
# vim /etc/hosts
192.168.0.120 zabbix-server
192.168.0.121 sh-proxy
192.168.0.122 node-122
(5)配置epel源:# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm
(6)配置Zabbix的yum源:
# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
# rpm -ql zabbix-release
# cat /dev/null > /etc/yum.repos.d/zabbix.repo
# vim /etc/yum.repos.d/zabbix.repo
[aliyun-zabbix]
name=Aliyun Zabbix Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[aliyun-zabbix-non-supported]
name=Aliyun Zabbix Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
5、zabbix-server节点搭建LAMP环境:
说明:Zabbix Web依赖于LAMP环境,安装zabbix-web-mysql(4.0.14)软件包时默认会自动安装httpd(2.4.6)、PHP(5.4.16)、zabbix-web(4.0.14)等相关软件包,此处使用yum方式安装PHP 7.2版本。CentOS 7.7中MariaDB的版本为5.5.64,版本较低,升级为MariaDB 10.4版本后在导入create.sql文件时会提示"ERROR 1118 (42000) at line 1278: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.",所以Zabbix Database使用MySQL 5.7。此处不单独安装httpd,并将Zabbix Database、Zabbix Server、Zabbix Web都部署在zabbix-server节点上,实际生产环境中可以分开部署。
(1)安装配置MySQL 5.7:
a、查看系统中是否已经存在MariaDB:
# rpm -qa | grep -i mariadb --> mariadb-libs-5.5.64-1.el7.x86_64
# yum -y remove mariadb-libs
b、安装mysql57-community-release-el7.rpm:
# rpm -ivh http://repo.mysql.com/mysql57-community-release-el7.rpm
备注:安装后会在/etc/yum.repos.d目录中生成mysql-community-source.repo和mysql-community.repo
c、安装MySQL 5.7相关软件包:
# yum list all | grep mysql-community
# yum -y install mysql-community-client mysql-community-common mysql-community-devel mysql-community-libs mysql-community-libs-compat mysql-community-server mysql-community-test
d、初始化MySQL 5.7:# mysqld --initialize --user=mysql --datadir=/var/lib/mysql
备注:初始化之前确保/var/lib/mysql目录为空
e、修改my.cnf配置文件:
# mv /etc/my.cnf /etc/my.cnf.bak
# vim /etc/my.cnf
[mysqld]
port=3306
socket=/var/lib/mysql/mysql.sock
datadir=/var/lib/mysql
pid-file=/var/run/mysqld/mysqld.pid
log-error=/var/log/mysqld.log
lower_case_table_names=1
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
innodb_file_per_table=1
skip_name_resolve=1
slow_query_log=1
slow_query_log_file=mysql-slow.log
symbolic-links=0
explicit_defaults_for_timestamp=1
server_id=1
sync_binlog=1
innodb_flush_log_at_trx_commit=1
log_bin=mysql-bin
log_bin_index=mysql-bin.index
binlog_format=row
f、启动MySQL:
# systemctl start mysqld
# systemctl status mysqld
# ps aux | grep mysqld
# ss -tunlp | grep -w :3306
# tail -100 /var/log/mysqld.log
g、配置开机自启:# systemctl enable mysqld
h、查看root@localhost用户的初始密码:# grep password /var/log/mysqld.log
i、配置安全向导:# mysql_secure_installation
j、授权root用户远程登录:
# mysql -uroot -p
mysql> create user root@'192.168.0.%' identified by '123456';
mysql> grant all on *.* to root@'192.168.0.%';
mysql> flush privileges;
(2)安装配置PHP 7.2:
a、安装webtatic-release.rpm:# rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
b、安装PHP 7.2相关软件包:
# yum list all | grep php
# yum -y install mod_php72w php72w-cli php72w-common php72w-devel php72w-fpm php72w-gd php72w-ldap php72w-mbstring php72w-mysqlnd php72w-opcache php72w-xml
c、查看PHP版本:# php -version
三、zabbix-server节点部署Zabbix Server、Zabbix Web和Zabbix Agent:
1、部署Zabbix Server:
(1)安装zabbix-server-mysql软件包:# yum -y install zabbix-server-mysql
(2)查看Zabbix Server版本:# zabbix_server -V
(3)创建zabbix数据库和'zbxuser'@'192.168.0.%'用户,并授权'zbxuser'@'192.168.0.%'用户远程管理:
# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zbxuser'@'192.168.0.%' identified by '123456';
mysql> grant all on zabbix.* to 'zbxuser'@'192.168.0.%';
mysql> flush privileges;
(4)导入create.sql文件,初始化zabbix数据库(以下方法三选一):
# zcat /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql.gz | mysql -uzbxuser -h292.168.0.120 -p zabbix
或
# gzip -d /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql.gz
mysql> use zabbix;
mysql> source /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql
或
# gzip -d /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql.gz
# mysql -uzbxuser -h292.168.0.120 -p zabbix < /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql
备注:gzip -d执行后自动删除create.sql.gz文件,保留解压后的create.sql文件
(5)检查zabbix数据库中是否创建了表:
# mysql -uzbxuser -h292.168.0.120 -p123456 -e 'use zabbix; show tables;' 2> /dev/null | wc -l
(6)修改zabbix_server.conf配置文件:
# rpm -ql zabbix-server-mysql
# cd /etc/zabbix
# cp zabbix_server.conf{,.bak}
# vim zabbix_server.conf
修改前 | 修改后 |
# ListenPort=10051 | ListenPort=10051 |
# LogType=file | LogType=file |
LogFile=/var/log/zabbix/zabbix_server.log | 保持默认 |
LogFileSize=0 | 保持默认 |
PidFile=/var/run/zabbix/zabbix_server.pid | 保持默认 |
# DBHost=localhost | DBHost=192.168.0.120 |
DBName=zabbix | 保持默认 |
DBUser=zabbix | DBUser=zbxuser |
# DBPassword= | DBPassword=123456 |
# DBSocket= | DBSocket=/var/lib/mysql/mysql.sock |
# DBPort= | DBPort=3306 |
# ListenIP=127.0.0.1 | ListenIP=192.168.0.120 |
AlertScriptsPath=/usr/lib/zabbix/alertscripts | 保持默认 |
ExternalScripts=/usr/lib/zabbix/externalscripts | 保持默认 |
# FpingLocation=/usr/sbin/fping | FpingLocation=/usr/sbin/fping |
# AllowRoot=0 | AllowRoot=0 |
# User=zabbix | User=zabbix |
(7)启动Zabbix Server:
# systemctl start zabbix-server
# systemctl status zabbix-server
# ps aux | grep zabbix_server
# ss -tunlp | grep -w 10051
# tail -100 /var/log/zabbix/zabbix_server.log
(8)配置开机自启:# systemctl enable zabbix-server
2、部署Zabbix Web:
(1)安装zabbix-web-mysql软件包:# yum -y install zabbix-web-mysql
(2)修改httpd.conf配置文件:
# vim /etc/httpd/conf/httpd.conf
修改前 | 修改后 |
#ServerName www.example.com:80 | ServerName 192.168.0.120:80 |
(3)启动httpd:
# systemctl start httpd
# systemctl status httpd
# ps aux | grep httpd
# ss -tunlp | grep -w :80
(4)配置开机自启:# systemctl enable httpd
(5)浏览器访问http://192.168.0.120/zabbix
说明:/etc/httpd/conf.d/zabbix.conf配置文件中已针对PHP 5.4优化,但目前安装的是PHP 7.2,需要修改/etc/php.ini配置文件,Zabbix相关PHP网页全存放在/usr/share/zabbix目录下
# vim /etc/php.ini
修改前 | 修改后 |
post_max_size = 8M | post_max_size = 16M |
max_execution_time = 30 | max_execution_time = 300 |
max_input_time = 60 | max_input_time = 300 |
;date.timezone = | date.timezone = Asia/Shanghai |
重启httpd:# systemctl restart httpd
刷新网页,必须所有的检查项都为"OK"才能继续:
安装后生成的配置文件:/etc/zabbix/web/zabbix.conf.php
登录Zabbix Web,用户名Admin,密码zabbix:
3、Zabbix Web简单配置:
(1)修改Admin用户默认密码:
Administration --> Users --> Admin --> Change password --> 输入2次新密码root@123 --> Update
新密码:root@123
退出重新登录
(2)禁用guest用户:
Administration --> User groups --> 勾选Guests组 --> Disable
Administration --> Users --> guest用户的状态已变为Disabled
(3)修改刷新不支持项的时间间隔:
Administration --> General --> Other --> Refresh unsupported items默认10m修改为30s --> Update
(4)调整每页显示的行数,默认为50行:
右上角Admin--> User --> Rows per page --> Update
(5)开启前端消息声音:
右上角Admin--> Messaging --> Frontend messaging --> Update
4、部署Zabbix Agent:
说明:出现上述监控提示是因为zabbix-server节点没有安装Zabbix Agent
(1)安装zabbix-agent软件包:# yum -y install zabbix-agent
(2)修改zabbix_agentd.conf配置文件:
# cd /etc/zabbix
# cp zabbix_agentd.conf{,.bak}
# vim zabbix_agentd.conf
修改前 | 修改后 |
PidFile=/var/run/zabbix/zabbix_agentd.pid | 保持默认 |
# LogType=file | LogType=file |
LogFile=/var/log/zabbix/zabbix_agentd.log | 保持默认 |
LogFileSize=0 | 保持默认 |
# EnableRemoteCommands=0 | EnableRemoteCommands=1 |
Server=127.0.0.1 | Server=192.168.0.120 |
# ListenPort=10050 | ListenPort=10050 |
# ListenIP=0.0.0.0 | ListenIP=192.168.0.120 |
ServerActive=127.0.0.1 | ServerActive=192.168.0.120 |
Hostname=Zabbix server | Hostname=zabbix-server |
# AllowRoot=0 | AllowRoot=0 |
# User=zabbix | User=zabbix |
Include=/etc/zabbix/zabbix_agentd.d/*.conf | 保持默认 |
# UnsafeUserParameters=0 | UnsafeUserParameters=1 |
说明:
Server:使用于被动模式,指定允许哪台Zabbix Server主动拉取当前Zabbix Agent的数据,此IP为Zabbix Server的IP,实现基于IP的访问控制,如果有多个IP,使用逗号分隔。
ServerActive:使用于主动模式,指定Zabbix Agent将信息主动推送至哪台Zabbix Server,如果有多个IP,使用逗号分隔。
(3)启动Zabbix Agent:
# systemctl start zabbix-agent
# systemctl status zabbix-agent
# ps aux | grep zabbix_agent
# ss -tunlp | grep -w 10050
# tail -100 /var/log/zabbix/zabbix_agentd.log
(4)配置开机自启:# systemctl enable zabbix-agent
5、配置Zabbix Web:
Configuration --> Hosts --> Zabbix server --> Update
修改前 | 修改后 |
Host name: Zabbix server | Host name: zabbix-server |
Visible name: | Visible name: Zabbix server |
IP address: 127.0.0.1 | IP address: 192.168.0.120 |
说明:上述Zabbix Web中的Host name值要与该节点的主机名,以及/etc/zabbix/zabbix_agentd.conf配置文件中的Hostname参数值三者相同
备注:zabbix-server节点完成对自身状态的监控