众所周知,Zabbix官方维护了多个GNU/Linux发行版的安装包存储库,使用户可以以最便捷的方法执行软件软件或更新至最新版本。应遵循官网上的建议安装指南,即可使用Zabbix官方安装包,完成部署。本文分享用户在使用Zabbix安装包时遇到的一些常见的混淆点。
一 为哪个操作系统提供哪些安装包?
我们创建了一个表,让用户通过操作系统对安装包的可用性一目了然。此外,会阐明某些具体问题来消除任何可能存在的误解。特别是关于“不再为某些操作系统提供安装包”的问题。
平台支持,点击查看完整版
Zabbix安装包依赖于操作系统提供的其他安装包,这一点是非常重要的。无论是前端所需的web server和PHP安装包,还是所有其他Zabbix组件所需的OpenSSL安装包,Zabbix都受限于操作系统附带的这些安装包的版本或版本的更新程度。
任何专业系统管理员都明白安装最新安全更新的必要性,这是保持系统安全的核心措施之一。除非系统提供必要的安全更新,否则不应使用该系统。但是,除了安全之外,还有其他方面需要考虑。
举个具体案例:Red Hat Enterprise Linux 7。实际上,RHEL/CentOS 7构成了Zabbix安装的一大块内容。
敲黑板!RHEL、CentOS和Oracle Linux使用相同的安装包,因此当提到RHEL时,也指的是CentOS。
二 为什么Zabbix5.2只为RHEL提供
zabbix-agent,zabbix-sender,zabbix-get?
很多人可能已经注意到,当Zabbix5.2发布时,只为RHEL7提供了zabbix-agent, zabbix-sender 和 zabbix-get。这是什么原因?
Red Hat backposts 为旧的安装包提供安全修复,这是非常有用的。但是,Zabbix用作依赖项的基本安装包相当陈旧。
例如,RHEL 7的官方更新源中,提供以下安装包:
- PHP 5.4.16
- MariaDB 5.5.68 & PostgreSQL 9.2.24
- OpenSSL 1.0.2k
让我们看看这些版本的安装包作为Zabbix的依赖,具体有些什么问题。
PHP 5.4
从Zabbix5.0开始,前端组件需要依赖PHP 7.2或更高版本。简单地说,我们的前端开发人员需要利用新的PHP特性来改善用户体验。此外,7.2是上游版本中最老的受支持版本。
可想而知,由于随系统分发的是PHP 5.4版本,这让在RHEL7上使用Zabbix安装包时会导致一些问题,这是由于发行了PHP 5.4版本。原本打算完全放弃对RHEL7上Zabbix5.0前端的支持,但在与支持团队协商后,决定设法继续提供这些安装包。
Red Hat Software Collections 中,Zabbix5.0前端安装包是基于PHP 7.2的RH SCL。虽然保留下来了,但这仍然不是最明确的解决办法。很多事情不得不改变通常的做法。必须对配置文件和用户说明进行更改。更改了存储库结构,并重命名了与前端相关的安装包,以包含“scl”后缀来显示已更改。结果就是这些更改使得维护安装包相当困难。此外,在安装这些安装包时,尤其是从以前的版本升级时,用户需要特别注意。
顺带提一下,有相同问题的基于Debian的发行版,前端安装包已完全不支持。
旧数据库和OpenSSL
与数据库的安全连接是在Zabbix5.0的新功能,但是它在RHEL7上不能实现。
实操一下。将DBTLSConnect=required选项放入/etc/zabbix/zabbix_server.conf文件并尝试重新启动Zabbix server。将出现以下错误告知失败:
"DBTLSConnect" configuration parameter cannot be used: Zabbix server was compiled without PostgreSQL or MySQL library version that support TLS
失败的原因是RHEL7提供旧的数据库安装包。虽然使用RH-SCL是可选的方案,但实施RH-SCL比直接调试Zabbix5.0前端组件至让其正常工作所耗费的精力更多。考虑到RHEL7即将退出,实现和支持它需要付出太多的努力。
另一个问题是低版本的OpenSSL安装包不支持使用TLS 1.3等特性。
例如,将TLSCipherPSK13=TLS_AES_128_GCM_SHA256 设置添加到/etc/zabbix/zabbix_proxy.conf,然后重启server。proxy日志文件中会出现以下错误。
cannot set list of TLS 1.3 PSK ciphersuites: compiled with OpenSSL version older than 1.1.1. Consider not using parameters "TLSCipherPSK13" or "--tls-cipher13"
RHEL8完全支持TLS 1.3。
HashiCorp 保险库的使用也可能受到低版本OpenSSL版本的影响。
此外,可能还有一些尚未被发现的潜在问题。由于RHEL7上低版本安装包的性质,很难完全预测会出什么问题。
三 总结
考虑到以上所有因素,决定不为RHEL7提供Zabbix5.2 server组件和前端组件的安装包。尽管对某些用户来说非常不方便,但这迟早要做。它也可以在Zabbix5.4或Zabbix6.0中才做,但也只是将它清除更彻底而已。这是一个痛苦但必要的改变。
哦,对了!我们还是在这些Linux分发版的存储库中,提供了Zabbix 5.2 proxy的安装包以保持某些向后兼容性。但请记住,许多新功能在这些包中并不支持,包括:
- 不支持TLS 1.3
- 不支持与加密数据库连接
最重要的是,到Zabbix 5.4,将移除在RHEL7上部署proxy的支持。
注意:
RHEL7仍将为现有的Zabbix客户提供支持。
简而言之,请升级到RHEL 8,这是迟早要做。升级然后忘了这些曾经存在的问题吧。
注意:
我们知道CentOS 8生命周期最近的变化,并正在调查它对Zabbix安装包的影响。
其他升级方式
当然,RHEL升级的成本可能会过高。那如果由于某种原因无法升级,有哪些可选项?
- 使用容器镜像实施部署。这可能是最先进的方案。Zabbix有很棒的容器镜像。如果使用Zabbix 5.2有障碍,请考虑使用它们。
- 改用Zabbix5.0 LTS。为RHEL7 提供Zabbix5.0安装包,并在一段时间内支持。尽管存在上述已知问题,但这仍是个很好的选择。
- 从源码编译。当然,这是一条艰难的路。获取源码,开始编译。如果您选择走这条路,那么您必须考虑到系统上的旧安装包可能导致的潜在问题。
最后,我们建议将此作为升级的动力。如果您真的需要Zabbix的新功能,可以考虑使用最新的操作系统。
2021在线课第一节课将于本月29日开课!思德结合自身使用经验和群内用户的提问,设计如下课表。线上直播上课,互动性更强,欢迎提问交流。