#zabbix5#在CentOS8安装Zabbix5

2020-07-0613:09:54
评论

如何10分钟内在CentOS 8 / RHEL 8上安装Zabbix 5!

前言

Zabbix服务器可以在任何Linux发行版上安装,但是在本教程中,我将展示如何在CentOS 8 / RHEL 8上安装最新版本– Zabbix Server 5.0。

Zabbix是100%免费的开源最终企业级软件,旨在监视IT基础架构组件和服务的可用性和性能。 您可以阅读有关Zabbix受欢迎程度的案例研究,并在本文中找到有关开源运动的更多信息。

#zabbix5#在CentOS8安装Zabbix5
Zabbix5 预览

首先,我们将安装和配置Zabbix服务器,然后安装和配置数据库,这是一张前端的图片,以更好地了解Zabbix架构。

#zabbix5#在CentOS8安装Zabbix5
Zabbix5 程序流程

正文

安装步骤一共12步,一个隐藏章节

步骤1:将SELinux设置为宽松模式
步骤2:安装Zabbix服务器,前端和代理
步骤3:安装和配置数据库
步骤4:启动Zabbix服务器和代理进程
步骤5:配置防火墙
步骤6:配置Zabbix前端
步骤7:使用Zabbix默认登录凭据登录到前端
*特殊:让Zabbix支持网页中文和图形中文


步骤8:在History和Events表上创建MySQL分区 ( 订阅)
步骤9:优化Zabbix服务器(可选)
步骤10:优化MySQL / MariaDB数据库(可选)
步骤11:如何管理Zabbix / MySQL / Apache服务
步骤12:在Zabbix上启用和配置SELinux

步骤1:将SELinux永久关闭

关闭SElinux 。别问为什么,问就是百度

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config && setenforce 0 

步骤2:安装Zabbix服务器,前端和代理

在CentOS 8上安装Zabbix 5 .rpm软件包,清理存储库并安装Zabbix服务器,前端和代理:

# Zabbix 5.0 LTS version 支持到2025年5月31日

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
dnf clean all
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent zabbix-get

您可以在官方网站上找到有关Zabbix生命周期和发布政策的更多信息。

步骤3:安装和配置数据库

在此安装中,我将使用密码RootPasswd作为root密码,并使用zabbixDBpass作为Zabbix密码作为DB。考虑到安全原因,请考虑更改密码

a. 安装 MariaDB

dnf -y install mariadb-server && systemctl start mariadb && systemctl enable mariadb

b. 初始化 database

通过更改MySQL根root的默认密码来保护MySQL:

mysql_secure_installation
Enter current password for root (enter for none): 回车
Set root password? [Y/n]: Y
New password: <Enter root DB password>
Re-enter new password: <Repeat root DB password>
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

c. 创建 database

mysql -uroot -p'RootPasswd' -e "create database zabbix character set utf8 collate utf8_bin;"
mysql -uroot -p'RootPasswd' -e "grant all privileges on zabbix.* to [email protected] identified by 'zabbixDBpass';"

d. 导入初始架构和数据

暂时禁用严格模式(ZBX-16465)以避免MySQL错误
“ERROR 1118 (42000) at line 1284: Row size too large (> 8126)”:

mysql -uroot -p'RootPasswd' zabbix -e "set global innodb_strict_mode='OFF';"

Zabbix服务器的导入数据库架构(最多持续5分钟):

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

启用严格模式:

mysql -uroot -p'RootPasswd' zabbix -e "set global innodb_strict_mode='ON';"

e. 在Zabbix配置文件中输入数据库密码

使用以下命令打开zabbix_server.conf文件:
sudo vim /etc/zabbix/zabbix_server.conf”,
并以这种格式在文件的任何位置添加数据库密码:

DBPassword=zabbixDBpass

保存并退出文件(ESC , 后连续输入ZZ)。

步骤4:启动Zabbix服务器和代理进程

systemctl restart zabbix-server zabbix-agent 
systemctl enable zabbix-server zabbix-agent

步骤5:配置防火墙

firewall-cmd --add-service={http,https} --permanent
firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent
firewall-cmd --reload

步骤6:配置Zabbix前端

a. 为Zabbix前端配置PHP

使用命令编辑文件“ /etc/php-fpm.d/zabbix.conf”:

sudo vim /etc/php-fpm.d/zabbix.conf

文件中以“;”开头的需要取消注释,并将Europe/Riga 设置为所在国家的时区,例如:

php_value[date.timezone] = Asia/Shanghai

设置PHP-FPM

pm = ondemand # 原dynamic
pm.max_requests = 100

保存并退出文件(ESC , 后连续输入ZZ)。

b. 重新启动Apache Web服务器,并使其在系统启动时启动

systemctl restart nginx php-fpm
systemctl enable nginx php-fpm

C. 配置Web前端

使用URL连接到新安装的Zabbix前端:http://server_ip_or_name/zabbix 并配置所有需要的设置。 基本上,您只需要为Zabbix DB用户输入密码,对于其他所有内容,只需单击“下一步”。 在本教程中,Zabbix数据库密码为zabbixDBpass

#zabbix5#在CentOS8安装Zabbix5
Zabbix5 安装图1 - 欢迎首页
#zabbix5#在CentOS8安装Zabbix5
Zabbix5 安装图2 - 确认环境
#zabbix5#在CentOS8安装Zabbix5
Zabbix5 安装图 - 开始安装
#zabbix5#在CentOS8安装Zabbix5
Zabbix5 安装图 - 输入基本信息
#zabbix5#在CentOS8安装Zabbix5
zabbix5 安装图 - 安装前摘要
#zabbix5#在CentOS8安装Zabbix5
Zabbix5 安装完成

就是这样,你已经安装了Zabbix5监控系统!

步骤7:使用Zabbix默认登录凭据登录到前端

使用Zabbix的默认管理员用户名和密码登录 http://server_ip_or_name/zabbix 的Zabbix前端:

用户名:Admin
密码:zabbix

#zabbix5#在CentOS8安装Zabbix5
准备登陆
#zabbix5#在CentOS8安装Zabbix5
Zabbix5 前端控制台

恭喜!
您已经在CentOS 8上成功安装了Zabbix 5,现在您可以监视任何东西了!
无需更改其他任何内容,因为其他步骤是可选的。

*特殊

让Zabbix5支持图形中文

查找Zabbix所使用的语言包
find / -name *font* -print | grep zabbix  &&  ll `find / -name *font* -print | grep zabbix`

cd /usr/share/zabbix/assets/fonts
rm -rf graphfont.ttf 
yum install -y wget && wget  https://oss.pealog.com/tools/graphfont.ttf

让Zabbix5 支持网页中文

安装zh_CN语言包

dnf install langpacks-zh_CN.noarch
安装glibc-common实现对语言包的识别:

dnf install glibc-common
说明;如果已安装过,需要重新安装,用reinstall

dnf reinstall glibc-common
因为需要让它识别已安装的语言包

安装完成后,回到网页后台- 用户 - 管理员 ,将语言设置 中文(ZH-CN)

步骤8:在History和Events表上创建MySQL分区 ( 订阅)

Zabbix的内务处理负责删除旧的趋势和历史数据。使用SQL删除查询从数据库中删除旧数据可能会对数据库性能产生负面影响。因此,我们许多人都收到了令人讨厌的警报“ Zabbix housekeeper processes more than 75% busy”。

使用数据库分区可以轻松解决该问题。分区为每个小时或一天创建表,并在不再需要它们时将其删除。SQL DROP比DELETE语句更有效。

您可以使用此简单指南在5分钟内对MySQL表进行分区。

步骤9:优化Zabbix服务器(可选)

如果您监视的是少数设备,则无需为此优化而烦恼,但如果您计划监视大量设备,则继续执行此步骤。
打开“zabbix”服务器配置包含以下命令的文件:
“vim /etc/zabbix/zabbix_server.conf”
服务器配置“并将此配置添加到文件中的任何位置:

StartPollers=100
StartPollersUnreachable=50
StartPingers=50
StartTrappers=10
StartDiscoverers=50
StartPreprocessors=15
StartHTTPPollers=5
StartAlerters=5
StartTimers=2
StartEscalators=2
CacheSize=128M
HistoryCacheSize=64M
HistoryIndexCacheSize=32M
TrendCacheSize=32M
ValueCacheSize=256M

保存并退出文件(ESC , 后连续输入ZZ)。

这不是一个完美的配置,请记住,您可以优化它甚至更多。假设您不使用ICMP检查,那么将“StartPingers”参数设置为1,或者如果您不使用活动代理,则将“StartTrappers”设置为1,依此类推。您可以在官方文档中找到有关Zabbix服务器配置文件中支持的参数的更多信息。
如果您尝试启动Zabbix服务器,您将在日志“[Z3001] connection to database 'Zabbix' failed: [1040] Too many connections” in the log “/var/log/zabbix/zabbix_server.log“因为我们使用的Zabbix服务器进程超过了MySQL的处理能力。我们需要增加并发客户端连接的最大允许数量,并优化MySQL,所以请进入下一步。

步骤10:优化MySQL/MariaDB数据库(可选)

a.创建自定义MySQL配置文件

创建文件“10_my_tweaks.cnf“ ,执行 ”vim /etc/my.cnf.d/10_my_tweaks.cnf“并粘贴此配置:

[mysqld]
max_connections                = 555
innodb_buffer_pool_size        = 1200M

innodb-log-file-size           = 128M
innodb-log-buffer-size         = 128M
innodb-file-per-table          = 1
innodb_buffer_pool_instances   = 8
innodb_old_blocks_time         = 1000
innodb_stats_on_metadata       = off
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-flush-log-at-trx-commit = 2

tmp-table-size                 = 96M
max-heap-table-size            = 96M
open_files_limit               = 65535
max_connect_errors             = 1000000
connect_timeout                = 60
wait_timeout                   = 28800

保存并退出文件(ESC , 后连续输入ZZ),并设置正确的文件权限:

sudo chown mysql:mysql /etc/my.cnf.d/10_my_tweaks.cnf
sudo chmod 644 /etc/my.cnf.d/10_my_tweaks.cnf

有两件事要记住!
配置参数max_connections必须大于所有Zabbix代理进程的总数加上150。您可以使用下面的命令自动检查Zabbix进程的数量,并在该数量上添加150:

 egrep "^Start.+=[0-9]"  /etc/zabbix/zabbix_server.conf  |  awk -F "=" '{s+=$2} END {print s+150}'
404

第二个最重要的参数是innodb_buffer_pool_size,它决定了MySQL可以获得多少内存来缓存innodb表和索引数据。如果服务器上只安装了数据库,则应该将该参数设置为系统内存的70%。
但是,在本例中,我们与Zabbix和Apache进程共享一个服务器,因此您应该将innodb_buffer_pool_大小设置为系统总内存的40%。这将是1600MB,因为我的CentOS服务器有4GB的RAM。
我没有任何内存问题,但是如果您的Zabbix代理由于内存不足而崩溃,请减少“innodb_buffer_pool_size”并重新启动MySQL服务器。
请注意,如果您遵循此配置,则由于新的Zabbix配置,您将在Zabbix前端收到“Too many processes on the Zabbix server”警报。增加触发阈值或关闭警报是安全的(选择“问题”选项卡→左键单击警报→选择“配置”→从“已启用”中删除复选框→点击“更新”按钮)

b. 重新启动Zabbix服务器和MySQL服务

按以下相同顺序停止和启动服务:

sudo systemctl stop zabbix-server
sudo systemctl stop mysql
sudo systemctl start mysql
sudo systemctl start zabbix-server

步骤11:如何管理Zabbix/MySQL/Apache服务

有时您需要检查或重新启动Zabbix、MySQL或Apache服务–使用下面的命令来执行此操作。

Zabbix Server
sudo systemctl <status/restart/start/stop> zabbix-server

MySQL/MariaDB Server
sudo systemctl <status/restart/start/stop> mysql

Apache Server
sudo systemctl <status/restart/start/stop> httpd 

PHP FastCGI Process Manager
sudo systemctl <status/restart/start/stop> php-fpm

Zabbix Agent
sudo systemctl <status/restart/start/stop> zabbix-agent 

步骤12:在Zabbix上启用和配置SELinux

虽然在实验室环境中禁用SELinux是可以接受的,但根据本地安全it团队的要求,您可能需要在生产环境中启用和配置SELinux。
在本指南的开头,我们没有完全关闭SELinux,而是设置为在许可模式下工作,这意味着它将记录所有安全错误,但不会阻止任何东西。
如果您不小心让它处于强制模式,那么您将在Zabbix前端收到“Zabbix服务器未运行:显示的信息可能不是当前的”警告,以及日志文件中的“无法设置资源限制:[13]权限被拒绝”。
不用担心,这个问题很容易解决,所以不需要进一步延迟,让我们为Zabbix配置SELinux!

a. SELinux:允许http守护程序连接到Zabbix:


启用SELinux boolean“httpd_can_connect_zabbix”,它将允许http守护程序连接到zabbix:

setsebool -P httpd_can_connect_zabbix 1

b. SELinux:允许Zabbix连接到所有TCP端口:


启用SELinux boolean“zabbix\u can\u network”,它将允许zabbix连接到所有TCP端口:

setsebool -P zabbix_can_network 1

c.将SELinux设置为在强制模式下工作


通过将SELinux设置为在强制模式下工作来启用SELinux:

setenforce 1 && sed -i 's/^SELINUX=.*/SELINUX=enforcing/g' /etc/selinux/config

并检查SELinux状态:

# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31

d. 为Zabbix创建其他SELINUX策略

为了以防万一,我们将为审核日志中的每个错误创建一个附加的SELinux策略(“ /var/log/audit/audit.log”)

为此,我们将需要policycoreutils-python工具,因此请安装它:

yum install policycoreutils-python

创建一个自定义策略包:

grep "denied.*zabbix" /var/log/audit/audit.log | audit2allow -M zabbix_policy

安装自定义SELinux策略包:

semodule -i zabbix_policy.pp

做得好! 您已经为Zabbix配置了SELinux!

豌豆日志
  • 本文由 发表于 2020-07-0613:09:54
  • 转载请务必保留本文链接:https://pealog.com/177.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: