一、前置知识
1.1、Zabbix产品周期
为了确保Zabbix为其用户和客户提供质量符合预期的产品和计划性的支持,每个新的Zabbix软件版本发布都遵循产品周期和到期时间的标准。 对Zabbix终端用户来说,Zabbix的产品周期使新版本的内容更具可预测性和可管理性。
从2001年Zabbix软件首次发布开始,新的稳定版本每一年半发布一次,对于所有稳定版本,Zabbix客户都将获得为期五年的 服务与支持 可以根据以下表格查看当前Zabbix版本的支持服务及其时限:
LTS(长期支持版本):每一年半发布一次,且免费提供5年支持;
稳定版:每半年发布一次,免费提供6个月支持;
1.2、安装要求
Zabbix可以运行于虚拟环境也可以部署在物理服务器上,因为zabbix采集数据主要是文本,对网络带宽要求不高,千兆速率足矣,只要满足性能上的要求即可,主要为CPU、内存和硬盘三项。结合 zabbix 官网给出的指标、实际监控项数量、历史记录保存时间长度。根据上表的参考标准,测试环境建议小型化部署。
1.3、安装方式
Zabbix安装方式有很多种,主要有:yum安装、源码包安装、容器安装等。本文主要介绍源码包安装。
二、Zabbix 6.4.8 源码包安装与配置
2.1、设备列表
2.2、基础环境设置
2.2.1:所有服务器分别关闭防火墙和内核安全机制
[root@localhost ~]# systemctl disable firewalld --now
[root@localhost ~]# setenforce 0
2.2.2:所有服务器分别设置网络yum源
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# yum clean all && yum makecache
2.2.3:所有服务器分别修改主机名
[root@localhost ~]# hostnamectl set-hostname zbx && bash
[root@localhost ~]# hostnamectl set-hostname proxy && bash
[root@localhost ~]# hostnamectl set-hostname server01 && bash
[root@localhost ~]# hostnamectl set-hostname server02 && bash
2.2.4:所有服务器分别修改hosts文件
[root@localhost ~]# cat >>/etc/hosts<<EOF
192.168.10.131 zbx
192.168.10.132 proxy
192.168.10.133 server01
192.168.10.134 server02
EOF
2.2.5:所有服务器分别同步时间
[root@localhost ~]# yum -y install chrony
[root@localhost ~]# systemctl restart chronyd
[root@localhost ~]# chronyc sources -v
2.3、LNMP环境搭建
zbx主机
2.3.1:配置Yum仓库
(1)设置yum源
[root@zbx ~]# curl -o \
/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@zbx ~]# curl -o \
/etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
(2)安装php7的仓库
[root@zbx ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
(3)创建mariadb的仓库文件
[root@zbx ~]# cat <<EOF>/etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.11/centos/7/x86_64/
gpgcheck=0
EOF
(4)建立yum缓存
[root@zbx ~]# yum makecache fast
2.3.2:安装php、nginx、mariadb
(1)安装php7.4
[root@zbx ~]# yum install -y --enablerepo=remi --enablerepo=remi-php74 \
mod_php php-gd* php php-opcache php-mbstring php-mysqlnd \
php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-fpm php-devel php-bcmath php-ldap \
gcc gcc-c++ make libxml2-devel net-snmp net-snmp-devel libevent-devel curl-devel
(2)安装mariadb数据库和nginx
[root@zbx ~]# yum -y install mariadb-server mariadb-devel nginx
备注:
zabbix6.4.8需要的各个平台软件的版本如下:
- mysql的版本要求8.0.30-8.1.X
- mariadb的版本要求10.5.00-11.1.X
- nginx的版本要求1.20 or later
- php的版本要求7.4.0 -8.2.X,且不支持PHP8.0
2.3.3:配置nginx
(1)生成nginx配置文件
[root@zbx ~]# cd /etc/nginx
[root@zbx nginx]# cp nginx.conf nginx.conf.bak
[root@zbx nginx]# cp nginx.conf.default nginx.conf
(2)修改nginx配置文件
[root@zbx nginx]# vim nginx.conf
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root /www;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
}
2.3.4:启动服务并设为开机自启动
[root@zbx ~]# nginx -t
#启动Nginx
[root@zbx ~]# systemctl enable nginx --now
#启动PHP-FPM
[root@zbx ~]# systemctl enable php-fpm --now
#启动Mariadb
[root@zbx ~]# systemctl enable mariadb --now
2.3.5:设置数据库密码
[root@zbx ~]# mysqladmin -u root password 'pwd123' #密码为pwd123
2.3.6:测试LNMP环境
[root@zbx ~]# mkdir /www
[root@zbx ~]# vim /www/test.php
<?php
$link=mysqli_connect('127.0.0.1','root','pwd123');
if($link) echo "恭喜你,数据库连接成功啦!!";
mysqli_close($link);
?>
[root@zbx ~]# curl 192.168.10.131/test.php
恭喜你,数据库连接成功啦!!
2.3.7:修改php配置文件
[root@zbx ~]# cp /etc/php.ini{,.bak}
[root@zbx ~]# vim /etc/php.ini
max_execution_time = 300
#388行,最长执行时间是300 秒,数值 0 表示没有执行时间的限制,你的程序需要跑多久便跑多久
max_input_time = 300
#398行,以秒为单位设定了脚本接收输入的最大时间
memory_limit = 128M
#409行,可以使用的最大内存量
post_max_size = 16M
#694行,服务器可以接收的最大POST数据大小
upload_max_filesize = 2M
#846行,指定PHP允许上传的文件的最大大小
date.timezone = Asia/Shanghai
#923行,设置时区
bcmath.scale = 1
#1205行,所有bcmath 函数中十进制数字的数目
2.3.8:修改php-fpm配置文件
[root@zbx ~]# useradd -M -s /sbin/nologin zabbix
[root@zbx ~]# vim /etc/php-fpm.d/www.conf
user = zabbix #24行
group = zabbix #26行
[root@zbx ~]# systemctl restart php-fpm
2.4:创建zabbix数据库并导入数据
2.4.1:创建zabbix数据库
#登录数据库
[root@zbx ~]# mysql -uroot -ppwd123
#创建zabbix数据库和zabbix_proxy数据库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
#授予zabbix数据库权限
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix';
#授予zabbix_proxy数据库权限
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost' identified by 'zabbix';
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'%' identified by 'zabbix';
MariaDB [(none)]> exit
2.4.2:导入zabbix数据
[root@zbx ~]# tar zxvf zabbix-6.4.8.tar.gz -C /usr/src
[root@zbx ~]# cd /usr/src/zabbix-6.4.8/database/mysql/
[root@zbx mysql]# mysql -uzabbix -pzabbix zabbix <schema.sql
[root@zbx mysql]# mysql -uzabbix -pzabbix zabbix <images.sql
[root@zbx mysql]# mysql -uzabbix -pzabbix zabbix <data.sql
[root@zbx mysql]# mysql -uzabbix -pzabbix zabbix_proxy <schema.sql
备注:
- 如果需要运行zabbix server,需要导入schema.sql、images.sql、data.sql 这三个文件到zabbix数据库
- 如果需要运行zabbix proxy,需要导入schema.sql到zabbix_proxy数据库。
2.5:Zabbix Server安装与配置
2.5.1:源码安装zabbix server
[root@zbx ~]# cd /usr/src/zabbix-6.4.8/
[root@zbx zabbix-6.4.8]# ./configure --prefix=/usr/local/zabbix/ \
--enable-server --enable-agent --with-mysql --with-libcurl \
--with-libxml2 --with-net-snmp --with-unixODBC --with-zabbix-get
[root@zbx zabbix-6.4.8]# make && make install
备注:
–prefix=/usr/local/zabbix:指定zabbix安装路径
–enable-server:启动server端
–enable-agent:启动agent端
–with-mysql:编译连接mysql相关依赖包
–with-libcurl:启动curl相关 ,对 SMTP 身份验证
–with-libxml2:启动xml相关 ,提供对XML文档的各种操作
–with-net-snmp:启动snmp相关,用于snmp监控设备 ,支持snmp协议
–with-unixodbc:启动odbc相关用于监控数据库
–with-zabbix-get:zabbix_get 是一种命令行的应用
–enable-java:启动java-agent 用于监控java类,需要安装JAVA环境
–enable-ipv6:启用IPv6
–with-libcurl 和 --with-libxml2 配置选项对虚拟机监控是必须的
2.5.2:优化zabbix server命令路径
[root@zbx zabbix-6.4.8]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
[root@zbx zabbix-6.4.8]# ln -s /usr/local/zabbix/bin/* /usr/local/bin
2.5.3:优化zabbix server服务控制脚本
[root@zbx zabbix-6.4.8]# cd /usr/src/zabbix-6.4.8/misc/init.d/fedora/core
[root@zbx core]# cp zabbix_agentd zabbix_server /etc/init.d/
[root@zbx core]# cd /etc/init.d/
[root@zbx init.d]# vim zabbix_agentd
BASEDIR=/usr/local/zabbix #22行,修改代码
[root@zbx init.d]# vim zabbix_server
BASEDIR=/usr/local/zabbix #22行,修改代码
2.5.4:修改zabbix server配置文件
[root@zbx init.d]# cd /usr/local/zabbix/etc
[root@zbx etc]# cp zabbix_server.conf{,.bak}
[root@zbx etc]# vim zabbix_server.conf
LogFile=/tmp/zabbix_server.log
#38行,日志文件路径
LogFileSize=1024
#47行,日志分割文件大小(单位M)
DBHost=localhost
#87行,数据库主机名
DBName=zabbix
#99行,数据库名
DBUser=zabbix
#115行,数据库用户名
DBPassword=zabbix
#123行,数据库用户密码
StartPollers=30
#208行,启动poller进程数量,server主动收集agent数据,一般可以比cpu总核数大一些,但是不能太多。
StartTrappers=10
#265行,启动Trappers进程数量,server被动接收agent数据
CacheSize=256M
#443行,用于存储主机、监控项和触发器数据的内存缓存大小
HistoryCacheSize=256M
#468行,用于存储历史数据的共享内存大小,根据内存情况尽量调大
TrendCacheSize=256M
#486行,趋势数据缓存的大小
ValueCacheSize=8M
#505行,历史数据缓存大小,0为不缓存
Timeout=10
#515行,proxy以及agent与Server连接的超时时间(单位为秒)
2.5.5:修改zabbix agent配置文件
[root@zbx etc]# cp zabbix_agentd.conf{,.bak}
[root@zbx etc]# vim zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
#30行,存放日志路径
Server=127.0.0.1
#113行,指定server的IP,开启被动模式
ServerActive=127.0.0.1
#167行,指定server的IP,开启主动模式
Hostname=Zabbix server
#178行,本机在Zabbix服务器中的名称,此名称需要与server端的Web 页面上的主机名称一致
#HostnameItem=system.hostname
#186行,zabbix自动获取主机名,默认是注释的。当Hostname参数已设置值时,此参数失效。HostnameItem的优化级低于Hostname。
#HostMetadata=
#197行,主机元数据的标识,可以满足于云环境主机的使用。仅适用于自动发现情况下。
备注:
-
利用HostnameItem,zabbix可以动态获取主机的名称。
-
如果配置 HostnameItem=system.hostname 而未配置 Hostname=xxx参数,那么在web监控页面显示的主机的可见名称为客户端主机的主机名(即通过system.hostname 命令得到的结果)
-
如果配置Hostname=xxx 而未配置HostnameItem=system.hostname 参数,那么在web监控页面显示的主机的可见名称为 xxx(即以配置文件中的Hosename定义的为准)
-
如果都未配置 HostnameItem=system.hostname 和 Hostname=xxx 这两个参数,那么在web监控页面显示的主机的可见名称为客户端主机的主机名(即通过 hostname 命令得到的结果)
-
如果同时配置 HostnameItem=system.hostname 和 Hostname=xxx 参数,那么在web监控页面显示的主机的可见名称为 xxx (即以配置文件中的Hostname定义的为准)
-
如果要对一大批主机进行自动配置时,推荐使用HostnameItem,避免了每台主机单独设置hostname的麻烦。
2.5.6:复制zabbix网站程序
[root@zbx etc]# cd /usr/src/zabbix-6.4.8/ui/
[root@zbx ui]# cp -rf * /www
[root@zbx ui]# chown -R zabbix:zabbix /www
[root@zbx ui]# cd
2.5.7:启动zabbix server
[root@zbx ~]# chkconfig zabbix_agentd on
[root@zbx ~]# chkconfig zabbix_server on
[root@zbx ~]# systemctl start zabbix_agentd --now
[root@zbx ~]# systemctl start zabbix_server --now
2.5.8:查看zabbix server端口
[root@zbx ~]# netstat -anpt | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 15295/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 14455/zabbix_server
2.6、Zabbix Web配置
(1)登录zabbix
浏览器访问:http://192.168.10.131/index.php
(2)设置语言
语言设置为 “简体中文(zh_CN)”
(3)检查环境
要求所有必要条件都是“OK”的提示。
(4)填写数据库信息
(5)主机名称设置
(6)确认信息
(7)确认安装
(8)登录界面
默认账号:Admin 默认密码:zabbix
(9)查看登录后的界面
(10)更改设置
操作步骤:“用户设置”—>“配置”—>“更改语言和时区、修改密码”
2.7、Zabbix Proxy配置
proxy主机
2.7.1:导入数据库(省略)
在本案例中,zabbix proxy的数据库一同放在了zabbix server服务器安装的mysql数据库中,需要前往zabbix server主机,将schema.sql文件导入到zabbix_proxy数据库。
[root@zbx ~]# cd /usr/src/zabbix-6.4.8/database/mysql/
[root@zbx ~]# mysql -uzabbix -pzabbix zabbix_proxy <schema.sql
2.7.2:设置yum源
[root@proxy ~]# curl -o \
/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@proxy ~]# curl -o \
/etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@proxy ~]# yum makecache fast
2.7.3:安装依赖包
[root@proxy ~]# yum -y install gcc libxml2-devel unixODBC-devel net-snmp-devel \
libcurl-devel libssh2-devel OpenIPMI-devel openssl-devel openldap-devel libevent \
libevent-devel mariadb-devel
2.7.4:源码安装zabbix proxy
[root@proxy ~]# tar zxvf zabbix-6.4.8.tar.gz -C /usr/src/
[root@proxy ~]# cd /usr/src/zabbix-6.4.8/
[root@proxy zabbix-6.4.8]# ./configure \
--prefix=/usr/local/zabbix \
--enable-proxy \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--with-unixODBC
[root@proxy zabbix-6.4.8]# make && make install
2.7.5:修改zabbix proxy配置文件
[root@proxy zabbix-6.4.8]# cp /usr/local/zabbix/etc/zabbix_proxy.conf{,.bak}
[root@proxy zabbix-6.4.8]# vim /usr/local/zabbix/etc/zabbix_proxy.conf
ProxyMode=0
#13行,取消注释,0为主动模式,1为被动模式,默认为主动模式
Server=192.168.10.131
#32行,proxy收集数据提交给server
Hostname=Zabbix proxy
#42行,本机在Zabbix服务器中的名称,需要与web页面设置一致
ListenPort=10051
#58行,取消注释,监听端口
LogFile=/tmp/zabbix_proxy.log
#84行,存放日志路径
DBHost=192.168.10.131
#151行,指定proxy采集到的数据存放的数据库地址
DBName=zabbix_proxy
#165行,指定proxy采集到的数据存放的数据库名称
DBUser=zabbix
#180行,指定连接数据库的用户
DBPassword=zabbix
#188行,指定连接数据库的用户密码
ProxyConfigFrequency=60
#247行,proxy从server获取配置数据的频率
DataSenderFrequency=3
#256行,proxy发送监控数据给server的频率
Timeout=4
#476行,指定时间内,agent没把监控项的数据发送给proxy则超时
ExternalScripts=${datadir}/zabbix/externalscripts #525行,存放告警脚本的路径
2.7.6:启动zabbix proxy服务
[root@proxy zabbix-6.4.8]# useradd -M -s /sbin/nologin zabbix
[root@proxy zabbix-6.4.8]# /usr/local/zabbix/sbin/zabbix_proxy
2.7.7:查看zabbix proxy端口
[root@proxy zabbix-6.4.8]# netstat -anpt | grep zabbix_proxy
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 24857/zabbix_proxy
2.7.8:Web界面添加proxy代理
操作步骤:“管理”—>“Proxy”>—>“创建Proxy代理”
Zabbix专栏学习指南:
开源分布式监控系统—Zabbix理论介绍
开源分布式监控系统—Zabbix 6.4.8 源码包安装与配置
开源分布式监控系统—Zabbix Agent 安装与配置
开源分布式监控系统—Zabbix 主被动模式介绍与配置
开源分布式监控系统—Zabbix 主被动模式介绍与配置
总结:整理不易,如果对你有帮助,请记得点赞,关注,收藏。更多Zabbix相关知识持续分享中。