LNMP 方式部署 zabbix 5.0

Posted cnsre运维博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP 方式部署 zabbix 5.0相关的知识,希望对你有一定的参考价值。

文章链接

Zabbix 5.0 LTS新增功能

新版本附带了可用性,安全性和完整性方面的重大改进列表。Zabbix团队遵循的主要策略是使Zabbix尽可能可用。Zabbix是一种开源,免费的监视解决方案,现在可以在内部和云中部署。在RedHat / IBM,SuSE,Ubuntu的最新版本的平台,容器和Linux发行版中可用。现在,一键式Zabbix部署也可以在Azure,AWS,Google Cloud,IBM / RedHat Cloud,Oracle和Digital Ocean上使用。现在,在Red Hat和Azure市场上提供Zabbix技术支持服务。

此外,Zabbix监视工具还提供了与Messenger,票务和警报系统的大量现成集成。新版本扩展了可以轻松监控的受支持服务和应用程序的列表。

  • 自动化和发现:新的Zabbix版本具有改进的自动化功能。新版本增加了自动发现硬件组件,与Windows相关的资源以及Java度量的高级发现的功能。
  • 可扩展性:Zabbix UI已经过优化,可以简化对数百万个设备的监视。
  • 新的Zabbix监视代理程序具有“官方支持”状态。新的可扩展代理为最苛刻的客户和复杂的用例提供了高级功能。它基于插件体系结构,具有使用各种方法和技术收集度量标准数据的能力。我们相信它是市场上最先进的监控代理。
  • 安全性方面的重大改进:新的改进确保所有Zabbix组件以安全的方式进行通信,并且还使用安全协议进行出站通信,而不会以任何方式影响性能。对于在高度敏感的环境中使用Zabbix的用户而言,可配置的密码以及为度量定义黑名单和白名单的能力至关重要。
  • TimescaleDB的压缩:时间序列数据压缩有助于提高性能和效率,同时降低运营成本。
  • 可用性改进:新版本针对宽屏进行了优化,除了Zabbix UI的其他增强功能之外,还引入了对第三方UI模块的支持。
    Zabbix 5.0是具有5年官方支持的LTS(长期支持)版本。它结合了创新和稳定性,并包括经过时间检验的功能,这些功能已在Zabbix 4.2和4.4的非LTS版本中引入,这使其成为大型企业环境的理想选择。

    硬件配置需求

参考 zabbix 5.0 中文手册

环境 平台 CPU/内存 数据库 硬盘 监控主机数
小型 centOS 2CPU/1GB mysql、InnoDB 普通 100
中型 centOS 2CPU/2GB MySQL、InnoDB 普通 500
大型 Red HatEnterpirse Linux 4CPU/8GB MySQL、InnoDB 或PostgreSQL RAID 10 或 SSD 大于1000
超大型 Red HatEnterpirse Linux 8CPU/16GB MySQL、InnoDB 或PostgreSQL RAID 10 或 SSD 大于10000

前端软件需求

参考 zabbix 5.0 中文手册

Zabbix 前端需要使用下列软件:
软件
版本 备注
Apache 1.3.12 或以上
php 5.4.0 或以上
PHP 扩展库:
软件
版本 备注
gd 2.0 or later PHP GD 扩展库必须支持 PNG 图像(--with-png-dir)、JPEG 图像 (--with-jpeg-dir) 和 FreeType 2 (--with-freetype-dir).
bcmath php-bcmath (--enable-bcmath)
ctype php-ctype (--enable-ctype)
libXML 2.6.15 或以上 php-xml or php5-dom,如果发布者提供独立的部署包。
xmlreader php-xmlreader,如果发布者提供独立的部署包。
xmlwriter php-xmlwriter,如果发布者提供独立的部署包。
session php-session,如果发布者提供独立的部署包。
sockets php-net-socket (--enable-sockets) 。用户脚本支持所需要的组件。
mbstring php-mbstring (--enable-mbstring)
gettext php-gettext (--with-gettext)。用于多语言翻译支持。
ldap php-ldap。只有在前端使用 LDAP 认证时才需要。
ibm_db2 使用 IBM DB2 作为 Zabbix 后端数据库所需要的组件。
mysqli 使用 MySQL 作为 Zabbix 后端数据库所需要的组件。
oci8 使用 Oracle 作为 Zabbix 后端数据库所需要的组件。
pgsql 使用 PostgreSQL 作为 Zabbix 后端数据库所需要的组件。

环境准备

CentOS Linux release 7.9.2009 (Core)
nginx 1.16.1
zabbix-server 5.0.14
zabbix-agent  5.0.14
MariaDB 5.5.68
PHP 7.4.22

关闭防火墙及selinux

systemctl stop firewalld && systemctl disable firewalld
sed -i \'s/SELINUX=enforcing/SELINUX=disabled/g\' /etc/selinux/config

修改阿里云yum源

参考链接

# 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载新的CentOS-Base.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 添加EPEL
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 清理缓存并生成新的缓存
yum clean all
yum makecache

PHP 7.4 安装配置

添加源

yum install epel-release -y
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

安装PHP

yum --enablerepo=remi install php74-php -y

安装你所需要php扩展模块

yum --disablerepo="*" --enablerepo="centos-sclo-rh" install rh-php72-php-gd rh-php72-php-bcmath rh-php72-php-mbstring rh-php72-php-mysqlnd rh-php72-php-xml rh-nginx116-nginx rh-php72 rh-php72-php-fpm rh-php72-php-ldap -y

安装其他依赖

安装zabbix报错,提示Requires: libiksemel.so.3()(64bit),该文件为内核链接文件,无法绕过只有解决了这个依赖才可能继续安装,解决的方法为缺什么补什么,它要这个就给它。

# 提示 需要:Requires: libiksemel.so.3()(64bit) 
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpm
yum install iksemel-1.4-6.sdl7.x86_64.rpm -y
# 提示 需要:libwebp.so.4()(64bit)
wget http://vault.centos.org/7.9.2009/os/Source/SPackages/libwebp-0.3.0-7.el7.src.rpm
yum install libwebp -y
# 提示 需要:libjpeg.so.62()(64bit)
wget http://vault.centos.org/7.9.2009/os/Source/SPackages/libjpeg-turbo-1.2.90-8.el7.src.rpm
yum install libjpeg-turbo -y
# 提示 需要:libXpm.so.4()(64bit)
wget http://vault.centos.org/7.9.2009/os/Source/SPackages/libXpm-3.5.12-1.el7.src.rpm
yum install libXpm -y
# 提示 需要:gd
wget http://vault.centos.org/7.9.2009/updates/Source/SPackages/gd-2.0.35-27.el7_9.src.rpm
yum install gd -y

修改配置文件

sed -i "s#max_execution_time = 30#max_execution_time = 600#g" /etc/php.ini
sed -i "s#max_input_time = 60#max_input_time = 600#g" /etc/php.ini
sed -i "s#memory_limit = 128M#memory_limit = 256M#g" /etc/php.ini
sed -i "s#post_max_size = 8M#post_max_size = 32M#g" /etc/php.ini
sed -i "s#upload_max_filesize = 2M#upload_max_filesize = 16M#g" /etc/php.ini
sed -i "s/;date.timezone =/date.timezone = Asia\\/Shanghai/g" /etc/php.ini

运行并查看版本, 重启命令, 添加自动启动,链接php文件

#运行并查看版本
php74 -v
#重启命令php-fpm
systemctl restart php74-php-fpm
#添加自动启动
systemctl enable php74-php-fpm
#查看php7.4的安装路径
whereis php
#链接php文件
ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php

安装其他依赖

安装zabbix报错,提示Requires: libiksemel.so.3()(64bit),该文件为内核链接文件,无法绕过只有解决了这个依赖才可能继续安装,解决的方法为缺什么补什么,它要这个就给它。

# 提示 需要:Requires: libiksemel.so.3()(64bit) 
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpm
yum install iksemel-1.4-6.sdl7.x86_64.rpm -y
# 提示 需要:libwebp.so.4()(64bit)
wget http://vault.centos.org/7.9.2009/os/Source/SPackages/libwebp-0.3.0-7.el7.src.rpm
yum install libwebp -y
# 提示 需要:libjpeg.so.62()(64bit)
wget http://vault.centos.org/7.9.2009/os/Source/SPackages/libjpeg-turbo-1.2.90-8.el7.src.rpm
yum install libjpeg-turbo -y
# 提示 需要:libXpm.so.4()(64bit)
wget http://vault.centos.org/7.9.2009/os/Source/SPackages/libXpm-3.5.12-1.el7.src.rpm
yum install libXpm -y
# 提示 需要:gd
wget http://vault.centos.org/7.9.2009/updates/Source/SPackages/gd-2.0.35-27.el7_9.src.rpm
yum install gd -y

zabbix 服务安装

安装 Zabbix 存储库

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

安装 Zabbix 服务器和代理

yum install zabbix-server-mysql zabbix-agent -y

安装 zabbix 前端

yum -y install yum-utils   
yum-config-manager --enable rhel-server-rhscl-7-rpms -y

编辑配置文件

编辑配置文件 /etc/yum.repos.d/zabbix.repo 并启用Zabbix 前端存储库

vi /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...

安装前端所需软件

yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y

数据库安装配置

安装数据库

yum install -y mariadb-server mariadb

启动服务

systemctl start mariadb

设置服务开启自启动

systemctl enable mariadb

登录数据库

mysql -uroot -p
修改默认密码
mysql> SET PASSWORD = PASSWORD(\'cnsre.cn\');
#cnsre.cn是你的新密码

如何解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements呢?

# 修改validate_password_policy参数的值
set global validate_password_policy=0; 
# 再修改密码的长度
set global validate_password_length=1;
# 再次执行修改密码就可以了
ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'cnsre.cn\';
# 允许root远程登陆
GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'%\' IDENTIFIED BY \'cnsre.cn\' WITH GRANT OPTION;

创建初始数据库

在数据库主机上运行以下代码

# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by \'password\';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> flush privileges;
mysql> quit;

导入模板数据

导入初始架构和数据
方法1

 zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uroot -p

方法2

# 切换到 create.sql.gz 目录 我的目录如下
cd /usr/share/doc/zabbix-server-mysql-5.0.14
gzip  -d create.sql.gz
mysql -uroot -p
mysql> use zabbix;
mysql> source /usr/usr/share/doc/zabbix-server-mysql-5.0.14/create.sql

配置Zabbix-server

mv /etc/zabbix/zabbix_server.conf  /etc/zabbix/zabbix_server.conf.bak
vim /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
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=1024M
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

配置zabbix-agent

mv /etc/zabbix/zabbix_agent.conf  /etc/zabbix/zabbix_agent.conf.bak
vim /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=
ListenPort=10050
ServerActive=
Hostname=
Include=/etc/zabbix/zabbix_agentd.d/

nginx 安装配置

为 Zabbix 前端配置 PHP

编辑文件 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf,取消注释和设置 listenserver_name 指令。

# listen 80;
# server_name example.com;

编辑文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf ,将 nginx 添加到 listen.acl_users 指令。

listen.acl_users = apache,nginx

然后取消注释并为设置正确的时区。

php_value[date.timezone] = Asia/Shanghai

启动所有服务

systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl status  zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm 

检查端口

[root@localhost ~]# netstat  -pntl 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18862/nginx: master 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      968/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1258/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      18816/zabbix_agentd 
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      18813/php-fpm: mast 
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      18700/mysqld        
tcp6       0      0 :::80                   :::*                    LISTEN      18862/nginx: master 
tcp6       0      0 :::22                   :::*                    LISTEN      968/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1258/master         
tcp6       0      0 :::10050                :::*                    LISTEN      18816/zabbix_agentd 

访问配置 zabbix 前端

连接到新安装的Zabbix前端: http://server_ip

⚠️ 如果打开页面访问不到 zabbix 页面,将 /etc/opt/rh/rh-nginx116/nginx/nginx.conf 配置文件中的 server 模块注释掉重启即可







默认的用户 Admin/zabbix
好了,到这里,我们就已经完成了Zabbix 5.0 LTS 的安装,快去体验吧。
文章链接

以上是关于LNMP 方式部署 zabbix 5.0的主要内容,如果未能解决你的问题,请参考以下文章

zabbix3.0 LNMP安装部署

LNMP与Zabbix4.0 环境部署

Zabbix部署-LNMP环境

zabbix3.0 LNMP安装部署 centos7

zabbix--源码安装部署zabbix3.2

NO.A.0003.zabbix_lnmp_zabbix.server/zabbix.agent编译安装教程