一、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获取相关数据。
二、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接口。
三、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.11.206 |
CentOS 7.6 x86_64 |
web01 |
Zabbix Database、Zabbix Server、Zabbix Web、Zabbix Agent |
192.168.11.207 |
CentOS 7.6 x86_64 |
web02 |
Zabbix Agent |
192.168.11.208 |
CentOS 7.6 x86_64 |
proxy |
Zabbix Proxy |
192.168.11.100 |
windows 10 |
node |
Zabbix Agent |
4、所有CentOS节点执行如下操作:
(1)关闭SELinux和firewalld
(2)配置服务器时间同步
(3)配置主机名
(4)配置hosts文件:
# vim /etc/hosts
192.168.11.206 web01
192.168.11.207 web02
192.168.11.208 proxy
(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
5、zabbix-server节点搭建LAMP环境:
说明:Zabbix Web依赖于LAMP环境,安装zabbix-web-mysql(4.0.16)软件包时默认会自动安装httpd(2.4.6)、PHP(5.4.16)、zabbix-web(4.0.16)等相关软件包,此处使用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、查看[email protected]用户的初始密码:# grep password /var/log/mysqld.log
i、配置安全向导:# mysql_secure_installation
j、授权root用户远程登录:
# mysql -uroot -p
mysql> create user [email protected]‘192.168.11.%‘ identified by ‘123456‘;
mysql> grant all on *.* to [email protected]‘192.168.11.%‘;
mysql> flush privileges;
#mysql -V
(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.11.%‘用户,并授权‘zbxuser‘@‘192.168.11.%‘用户远程管理:
# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user ‘zbxuser‘@‘192.168.11.%‘ identified by ‘123456‘;
mysql> grant all on zabbix.* to ‘zbxuser‘@‘192.168.11.%‘;
mysql> flush privileges;
(4)导入create.sql文件,初始化zabbix数据库(以下方法三选一):
# zcat /usr/share/doc/zabbix-server-mysql-4.0.16/create.sql.gz | mysql -uzbxuser -h192.168.11.206 -p zabbix
或
# gzip -d /usr/share/doc/zabbix-server-mysql-4.0.16/create.sql.gz
mysql> use zabbix;
mysql> source /usr/share/doc/zabbix-server-mysql-4.0.16/create.sql
或
# gzip -d /usr/share/doc/zabbix-server-mysql-4.0.16/create.sql.gz
# mysql -uzbxuser -h192.168.11.206 -p zabbix < /usr/share/doc/zabbix-server-mysql-4.0.16/create.sql
备注:gzip -d执行后自动删除create.sql.gz文件,保留解压后的create.sql文件
(5)检查zabbix数据库中是否创建了表:
# mysql -uzbxuser -h192.168.11.206 -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.11.206 |
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.11.206 |
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.11.206: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.11.206/zabbix #安装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)禁用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 (200)--> Update
(5)开启前端消息声音:
Admin --> Messaging --> Frontend messaging[勾上√,全选] --> Update
4、部署Zabbix Agent:
出现ZBX没有变绿,是因为没有安装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.11.206 |
# ListenPort=10050 |
ListenPort=10050 |
# ListenIP=0.0.0.0 |
ListenIP=192.168.11.206 |
ServerActive=127.0.0.1 |
ServerActive=192.168.11.206 |
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.11.206 |
说明:上述Zabbix Web中的Host name值要与该节点的主机名,以及/etc/zabbix/zabbix_agentd.conf配置文件中的Hostname参数值三者相同
备注:zabbix-server节点完成对自身状态的监控;
原文地址:https://www.cnblogs.com/comprehensive/p/12217570.html