【Zabbix】开源分布式监控系统---Zabbix 6.4.8 源码包安装与配置 一、前置知识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所有服务器分别关闭防火墙和内核安全机制[rootlocalhost ~]# systemctl disable firewalld --now[rootlocalhost ~]# setenforce 02.2.2所有服务器分别设置网络yum源[rootlocalhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo[rootlocalhost ~]# yum clean all yum makecache2.2.3所有服务器分别修改主机名[rootlocalhost ~]# hostnamectl set-hostname zbx bash[rootlocalhost ~]# hostnamectl set-hostname proxy bash[rootlocalhost ~]# hostnamectl set-hostname server01 bash[rootlocalhost ~]# hostnamectl set-hostname server02 bash2.2.4所有服务器分别修改hosts文件[rootlocalhost ~]# cat /etc/hostsEOF192.168.10.131 zbx 192.168.10.132 proxy 192.168.10.133 server01 192.168.10.134 server02 EOF2.2.5所有服务器分别同步时间[rootlocalhost ~]# yum -y install chrony[rootlocalhost ~]# systemctl restart chronyd[rootlocalhost ~]# chronyc sources -v2.3、LNMP环境搭建zbx主机2.3.1配置Yum仓库1设置yum源[rootzbx ~]# curl -o \/etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo2安装php7的仓库[rootzbx ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm3创建mariadb的仓库文件[rootzbx ~]# cat EOF/etc/yum.repos.d/mariadb.repo[mariadb]name MariaDB baseurl https://mirrors.aliyun.com/mariadb/yum/10.11/centos/7/x86_64/ gpgcheck0 EOF4建立yum缓存[rootzbx ~]# yum makecache fast2.3.2安装php、nginx、mariadb1安装php7.4[rootzbx ~]# yum install -y --enablereporemi --enablereporemi-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-cmake libxml2-devel net-snmp net-snmp-devel libevent-devel curl-devel2安装mariadb数据库和nginx[rootzbx ~]# yum -y install mariadb-server mariadb-devel nginx备注zabbix6.4.8需要的各个平台软件的版本如下mysql的版本要求8.0.30-8.1.Xmariadb的版本要求10.5.00-11.1.Xnginx的版本要求1.20 or laterphp的版本要求7.4.0 -8.2.X且不支持PHP8.02.3.3配置nginx1生成nginx配置文件[rootzbx ~]# cd /etc/nginx[rootzbx nginx]# cp nginx.conf nginx.conf.bak[rootzbx nginx]# cp nginx.conf.default nginx.conf2修改nginx配置文件[rootzbx nginx]# vim nginx.confserver{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启动服务并设为开机自启动[rootzbx ~]# nginx -t#启动Nginx[rootzbx ~]# systemctl enable nginx --now#启动PHP-FPM[rootzbx ~]# systemctl enable php-fpm --now#启动Mariadb[rootzbx ~]# systemctl enable mariadb --now2.3.5设置数据库密码[rootzbx ~]# mysqladmin -u root password pwd123 #密码为pwd1232.3.6测试LNMP环境[rootzbx ~]# mkdir /www[rootzbx ~]# vim /www/test.php?php$linkmysqli_connect(127.0.0.1,root,pwd123);if($link)echo恭喜你数据库连接成功啦;mysqli_close($link);?[rootzbx ~]# curl 192.168.10.131/test.php恭喜你数据库连接成功啦2.3.7修改php配置文件[rootzbx ~]# cp /etc/php.ini{,.bak}[rootzbx ~]# vim /etc/php.inimax_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配置文件[rootzbx ~]# useradd -M -s /sbin/nologin zabbix[rootzbx ~]# vim /etc/php-fpm.d/www.confuser zabbix#24行group zabbix#26行[rootzbx ~]# systemctl restart php-fpm2.4创建zabbix数据库并导入数据2.4.1创建zabbix数据库#登录数据库[rootzbx ~]# mysql -uroot -ppwd123#创建zabbix数据库和zabbix_proxy数据库MariaDB[(none)] create database zabbix charactersetutf8 collate utf8_bin;MariaDB[(none)] create database zabbix_proxy charactersetutf8 collate utf8_bin;#授予zabbix数据库权限MariaDB[(none)] grant all privileges on zabbix.*to zabbix%identified byzabbix;MariaDB[(none)] grant all privileges on zabbix.*to zabbixlocalhostidentified byzabbix;#授予zabbix_proxy数据库权限MariaDB[(none)] grant all privileges on zabbix_proxy.*tozabbixlocalhostidentified byzabbix;MariaDB[(none)] grant all privileges on zabbix_proxy.*tozabbix%identified byzabbix;MariaDB[(none)]exit2.4.2导入zabbix数据[rootzbx ~]# tar zxvf zabbix-6.4.8.tar.gz -C /usr/src[rootzbx ~]# cd /usr/src/zabbix-6.4.8/database/mysql/[rootzbx mysql]# mysql -uzabbix -pzabbix zabbix schema.sql[rootzbx mysql]# mysql -uzabbix -pzabbix zabbix images.sql[rootzbx mysql]# mysql -uzabbix -pzabbix zabbix data.sql[rootzbx mysql]# mysql -uzabbix -pzabbix zabbix_proxy schema.sql备注如果需要运行zabbix server需要导入schema.sql、images.sql、data.sql 这三个文件到zabbix数据库如果需要运行zabbix proxy需要导入schema.sql到zabbix_proxy数据库。2.5Zabbix Server安装与配置2.5.1源码安装zabbix server[rootzbx ~]# cd /usr/src/zabbix-6.4.8/[rootzbx 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[rootzbx 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-getzabbix_get 是一种命令行的应用–enable-java启动java-agent 用于监控java类需要安装JAVA环境–enable-ipv6启用IPv6–with-libcurl 和 --with-libxml2 配置选项对虚拟机监控是必须的2.5.2优化zabbix server命令路径[rootzbx zabbix-6.4.8]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/[rootzbx zabbix-6.4.8]# ln -s /usr/local/zabbix/bin/* /usr/local/bin2.5.3优化zabbix server服务控制脚本[rootzbx zabbix-6.4.8]# cd /usr/src/zabbix-6.4.8/misc/init.d/fedora/core[rootzbx core]# cp zabbix_agentd zabbix_server /etc/init.d/[rootzbx core]# cd /etc/init.d/[rootzbx init.d]# vim zabbix_agentdBASEDIR/usr/local/zabbix#22行修改代码[rootzbx init.d]# vim zabbix_serverBASEDIR/usr/local/zabbix#22行修改代码2.5.4修改zabbix server配置文件[rootzbx init.d]# cd /usr/local/zabbix/etc[rootzbx etc]# cp zabbix_server.conf{,.bak}[rootzbx etc]# vim zabbix_server.confLogFile/tmp/zabbix_server.log#38行日志文件路径LogFileSize1024#47行日志分割文件大小单位MDBHostlocalhost#87行数据库主机名DBNamezabbix#99行数据库名DBUserzabbix#115行数据库用户名DBPasswordzabbix#123行数据库用户密码StartPollers30#208行启动poller进程数量server主动收集agent数据一般可以比cpu总核数大一些但是不能太多。StartTrappers10#265行启动Trappers进程数量server被动接收agent数据CacheSize256M#443行用于存储主机、监控项和触发器数据的内存缓存大小HistoryCacheSize256M#468行用于存储历史数据的共享内存大小根据内存情况尽量调大TrendCacheSize256M#486行趋势数据缓存的大小ValueCacheSize8M#505行历史数据缓存大小0为不缓存Timeout10#515行proxy以及agent与Server连接的超时时间单位为秒2.5.5修改zabbix agent配置文件[rootzbx etc]# cp zabbix_agentd.conf{,.bak}[rootzbx etc]# vim zabbix_agentd.confLogFile/tmp/zabbix_agentd.log#30行存放日志路径Server127.0.0.1#113行指定server的IP开启被动模式ServerActive127.0.0.1#167行指定server的IP开启主动模式HostnameZabbix server#178行本机在Zabbix服务器中的名称此名称需要与server端的Web 页面上的主机名称一致#HostnameItemsystem.hostname#186行zabbix自动获取主机名,默认是注释的。当Hostname参数已设置值时此参数失效。HostnameItem的优化级低于Hostname。#HostMetadata#197行主机元数据的标识可以满足于云环境主机的使用。仅适用于自动发现情况下。备注利用HostnameItemzabbix可以动态获取主机的名称。如果配置 HostnameItemsystem.hostname 而未配置 Hostnamexxx参数那么在web监控页面显示的主机的可见名称为客户端主机的主机名即通过system.hostname 命令得到的结果如果配置Hostnamexxx 而未配置HostnameItemsystem.hostname 参数那么在web监控页面显示的主机的可见名称为 xxx即以配置文件中的Hosename定义的为准如果都未配置 HostnameItemsystem.hostname 和 Hostnamexxx 这两个参数那么在web监控页面显示的主机的可见名称为客户端主机的主机名即通过 hostname 命令得到的结果如果同时配置 HostnameItemsystem.hostname 和 Hostnamexxx 参数那么在web监控页面显示的主机的可见名称为 xxx 即以配置文件中的Hostname定义的为准如果要对一大批主机进行自动配置时推荐使用HostnameItem避免了每台主机单独设置hostname的麻烦。2.5.6复制zabbix网站程序[rootzbx etc]# cd /usr/src/zabbix-6.4.8/ui/[rootzbx ui]# cp -rf * /www[rootzbx ui]# chown -R zabbix:zabbix /www[rootzbx ui]# cd2.5.7启动zabbix server[rootzbx ~]# chkconfig zabbix_agentd on[rootzbx ~]# chkconfig zabbix_server on[rootzbx ~]# systemctl start zabbix_agentd --now[rootzbx ~]# systemctl start zabbix_server --now2.5.8查看zabbix server端口[rootzbx ~]# netstat -anpt | grep zabbixtcp 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_server2.6、Zabbix Web配置1登录zabbix浏览器访问http://192.168.10.131/index.php2设置语言语言设置为 “简体中文zh_CN”3检查环境要求所有必要条件都是“OK”的提示。4填写数据库信息5主机名称设置6确认信息7确认安装8登录界面默认账号Admin 默认密码zabbix9查看登录后的界面10更改设置操作步骤“用户设置”—“配置”—“更改语言和时区、修改密码”2.7、Zabbix Proxy配置proxy主机2.7.1导入数据库省略在本案例中zabbix proxy的数据库一同放在了zabbix server服务器安装的mysql数据库中需要前往zabbix server主机将schema.sql文件导入到zabbix_proxy数据库。[rootzbx ~]# cd /usr/src/zabbix-6.4.8/database/mysql/ [rootzbx ~]# mysql -uzabbix -pzabbix zabbix_proxy schema.sql2.7.2设置yum源[rootproxy ~]# curl -o \ /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo [rootproxy ~]# curl -o \ /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo [rootproxy ~]# yum makecache fast2.7.3安装依赖包[rootproxy ~]# 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-devel2.7.4源码安装zabbix proxy[rootproxy ~]# tar zxvf zabbix-6.4.8.tar.gz -C /usr/src/ [rootproxy ~]# cd /usr/src/zabbix-6.4.8/ [rootproxy zabbix-6.4.8]# ./configure \ --prefix/usr/local/zabbix \ --enable-proxy \ --with-mysql \ --with-net-snmp \ --with-libcurl \ --with-libxml2 \ --with-unixODBC [rootproxy zabbix-6.4.8]# make make install2.7.5修改zabbix proxy配置文件[rootproxy zabbix-6.4.8]# cp /usr/local/zabbix/etc/zabbix_proxy.conf{,.bak} [rootproxy zabbix-6.4.8]# vim /usr/local/zabbix/etc/zabbix_proxy.conf ProxyMode0 #13行取消注释0为主动模式1为被动模式默认为主动模式 Server192.168.10.131 #32行proxy收集数据提交给server HostnameZabbix proxy #42行本机在Zabbix服务器中的名称需要与web页面设置一致 ListenPort10051 #58行取消注释监听端口 LogFile/tmp/zabbix_proxy.log #84行存放日志路径 DBHost192.168.10.131 #151行指定proxy采集到的数据存放的数据库地址 DBNamezabbix_proxy #165行指定proxy采集到的数据存放的数据库名称 DBUserzabbix #180行指定连接数据库的用户 DBPasswordzabbix #188行指定连接数据库的用户密码 ProxyConfigFrequency60 #247行proxy从server获取配置数据的频率 DataSenderFrequency3 #256行proxy发送监控数据给server的频率 Timeout4 #476行指定时间内agent没把监控项的数据发送给proxy则超时 ExternalScripts${datadir}/zabbix/externalscripts #525行存放告警脚本的路径2.7.6启动zabbix proxy服务[rootproxy zabbix-6.4.8]# useradd -M -s /sbin/nologin zabbix [rootproxy zabbix-6.4.8]# /usr/local/zabbix/sbin/zabbix_proxy2.7.7查看zabbix proxy端口[rootproxy zabbix-6.4.8]# netstat -anpt | grep zabbix_proxy tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 24857/zabbix_proxy2.7.8Web界面添加proxy代理操作步骤“管理”—“Proxy”—“创建Proxy代理”Zabbix专栏学习指南开源分布式监控系统—Zabbix理论介绍开源分布式监控系统—Zabbix 6.4.8 源码包安装与配置开源分布式监控系统—Zabbix Agent 安装与配置开源分布式监控系统—Zabbix 主被动模式介绍与配置开源分布式监控系统—Zabbix 主被动模式介绍与配置总结整理不易如果对你有帮助请记得点赞关注收藏。更多Zabbix相关知识持续分享中。