
Imaxe.cloud 与 Zabbix LLC 没有任何关联或协议。请阅读与 Zabbix LLC 的关系一节。
简介 #
Zabbix 是一套开源的企业级分布式监控方案,可以监控服务器、虚拟机、应用等网络中的各类指标。
我们的 Zabbix AMI 是在 AWS 上开箱即用地启用 Zabbix 的最佳方案,在原产品之上提供额外能力,并配备优质支持。
功能 #
通用
我们 Zabbix 镜像的主要特点:
- 基于 Ubuntu 安装,始终采用可用的最新稳定版本。
- 已安装最新稳定版的 Zabbix 服务器。
- 已安装并预配置最新稳定版的 Zabbix Web 界面。
- 使用最稳定版本的 nginx、PHP、MariaDB 服务器与 Zabbix 进行优化。
- Web 界面的全部语言均已安装并可用。
特色
我们的镜像还提供额外能力,让你以最快、最省心的方式用足云的能力:
- 专门的配置,通过 AWS SNS 发送通知。
- 专门的配置,用于配合自动伸缩组工作。
- CloudFormation 模板栈,创建所有相关资源(SNS、SQS、IAM 等)。
可用版本 #
我们提供的 Zabbix 版本及其主要特性:
Zabbix AMI 的旧版本已被 Zabbix LLC 封锁,该公司似乎不希望有任何形式的竞争。Imaxe.cloud 的产品提供了 Zabbix 自身所没有的独特功能,因此我们认为这是一个错误,并正在努力解决。
| AMI | Zabbix | Zabbix 支持 | Imaxe 支持 | SNS | 自动伸缩 | Ubuntu | PHP | MariaDB | Marketplace |
|---|---|---|---|---|---|---|---|---|---|
| Zabbix 7.0 v1.1 | 7.0 | ✓ | ✓ | ✓ | ✓ | 24.04 | 8.3 | 10.11 | 查看 → |
| Zabbix 6.4 v2.0 | 6.4 | ✗ | ✓ | ✓ | ✓ | 22.04 | 8.1 | 10.11 | 不可用 |
| Zabbix 6.0 v1.1 | 6.0 | ✓ | ✓ | ✓ | ✓ | 20.04 | 7.4 | 10.11 | 不可用 |
| Zabbix 4.4 v1.2 | 4.4 | ✗ | ✓ | ✓ | ✗ | 18.04 | 7.2 | 10.5 | 不可用 |
| Zabbix 4.2 v8.0 | 4.2 | ✗ | ✓ | ✓ | ✗ | 18.04 | 7.0 | 10.5 | 不可用 |
生命周期 #
Zabbix 的发布策略相当严格:每隔几个月,当时的稳定版本就会停止支持,必须升级到下一个大版本(连同其带来的各种麻烦)才能继续获得支持。
我们理解,有时要跟上这样严格的生命周期非常困难,因此为自己的镜像设计了一套生命周期策略:在尽可能兼容 Zabbix 生命周期的同时,为用户提供现有最好的支持。
Zabbix 的版本类型
目前 Zabbix 提供两种不同的版本:
- Standard 版: 包含最新的变更与功能,但没有 LTS 支持。
- LTS 版: 发布时同样包含最新的变更与功能,并且享有 LTS 支持。
对非 LTS 的 Standard 版的支持
为了让新客户能提前体验今后在 LTS 版本中会用到的优势,我们始终保持一份最新 Standard 版的可用镜像,并启用全部附加功能。
镜像版本号会随着新版本的发布而递增,Zabbix 版本号也会在其升级时随之变化。
对 LTS 版的支持
只要条件允许,我们会持续维护基于 LTS 版本构建的镜像,并每 3 个月更新一次操作系统与附加功能。
一旦出于技术或安全原因无法再让某个镜像保持可用,它会被下线,所有用户都会收到 AWS 的通知,说明更适合他们的新版本。
此外,只要可行,我们都会协助进行版本间迁移。
安装 #
安装流程与创建普通 EC2 实例一致。建议的规格为 c5.large。
安全组通常包含以下规则:
| 类型 | 协议 | 端口范围 | 来源 |
|---|---|---|---|
| (*) SSH | TCP | 22 | 0.0.0.0/0 |
| (*) HTTP | HTTP | 80 | 0.0.0.0/0 |
| (*) 自定义 TCP 规则 | TCP | 10050–10052 | 0.0.0.0/0 |
| HTTPS | HTTPS | 443 | 0.0.0.0/0 |
标注 (*) 的规则是必需的,用于访问 Web 界面或保障服务器正常运行。示例中虽然写的是 0.0.0.0/0,但我们建议把访问限制在自有网络或堡垒机。
实例运行后,可以通过以下方式登录:
- SSH: 使用启动实例时选择的
.pem密钥,用户名ubuntu。 - HTTP: 访问
http://zabbix.instance.ip/,用户名为Admin,密码为刚创建实例的 ID。
配置 #
这里的步骤都以默认用户 Admin 操作。
首次登录 Zabbix 时,有几项设置可以个性化你的使用体验并开始接收通知。点击左侧菜单的 User settings,再点 Profile。
为用户添加通知媒介
在接收通知之前,需要为用户添加一个邮箱地址(或你偏好的其他方式)。个人资料页有一个 Media 标签页;在其中点击 Add 链接会打开配置窗口。之后别忘了点击 Update 保存更改。
修改 Admin 用户的密码
默认情况下,Zabbix 镜像使用实例 ID 作为密码。这样保护访问是安全的,但你多半希望换成更好记、或符合自身安全策略的密码。
在 Profile 页面的 User 标签页中,点击 Change password,两次输入新密码后点击 Update 即可修改 Admin 密码。
修改界面语言
在个人资料页的 User 标签页中,可以通过 Language 选择界面语言。选择新语言、点击 Update 保存并重新登录后生效。
自动伸缩支持 # 进阶
AWS 自动伸缩如何与 Zabbix 协同工作?
要在 Zabbix 中处理自动伸缩,需要考虑三件事:
- 实例出现时把它加入 Zabbix。 可以用主动式 Zabbix agent 的自动注册来实现(6.4、6.0、4.0)。这样新实例出现时,Zabbix 会自动把它添加为新主机。
- 把实例 ID 存入 Zabbix 资产清单。 实例消失(scale in)时我们会收到带有其 ID 的消息,因此需要在主机清单里保存这个 ID,才能查找并删除对应主机。
- 接收 AWS 的伸缩消息。 发生伸缩事件时,AWS 会向你定义的 SNS 主题发布消息。把该主题接到 SQS 队列,我们就能从 Zabbix 读取消息,删除退出伸缩组的实例。

配置客户端
让客户端支持 Zabbix 自动伸缩需要两步:配置 Zabbix agent,并添加一个为 instance_id 监控项提供数据的用户参数文件。
Zabbix agent 配置
除了你可能需要的其他改动,Zabbix agent 的本地配置文件(通常是 /etc/zabbix/zabbix_agentd.conf)需要修改六处:
- 注释掉
Server选项。 - 添加
ServerActive=YOUR__ZABBIX__IP__ADDRESS以配置主动模式服务器。 - 注释掉
Hostname选项。 - 把
StartAgents设为0。 - 把
HostnameItem设为system.hostname。 - 把
HostMetadataItem设为system.uname。
这样配置后,Zabbix 客户端工作在主动模式(由客户端向服务器推送信息,而不是接受服务器的检查)。同时让 Zabbix 用机器名作为主机名,省去每次新服务器启动时都要改名。最后,让 Zabbix 把 uname 的输出作为主机元数据发送:AWS 实例使用特殊内核,其中会出现 aws 字样,可用于注册服务器。
instance_id 参数
默认情况下,自动伸缩产生的新服务器在 Zabbix 中会关联到名为 AWS EC2 Template 的特殊模板,其中的 instance_id 监控项与资产清单的 alias 字段绑定。为它提供数据,需要在 Zabbix 客户端上创建如下文件添加用户参数:
UserParameter=aws.ec2.instance_id,curl -s http://169.254.169.254/latest/meta-data/instance-id配置服务器
客户端配置完成后,下一步是让服务器删除已被移除的实例。最快最简单的做法分两步:把伸缩消息发送到 SQS 队列,并配置服务器读取该队列。
把伸缩消息发送到 SQS 队列
我们希望自动伸缩服务发出的通知保存在 SQS 队列中,以获得持久性与扩展性。由于 AWS 自动伸缩把通知发布到 SNS 主题,我们需要:
- 创建一个 SNS 主题。
- 创建一个 SQS 队列。
- 配置 SNS 把消息投递到 SQS。
- 创建一个可以读取消息的 IAM 用户。
由于这类配置比较繁琐,你可以用我们的 CloudFormation 模板栈在任意区域一次创建全部资源。部署完成后,Outputs 标签页会给出四个需要记录的值:
SNSTopicARN:所创建 SNS 主题的 ARN。SQSQueueURL:SQS 队列的 URL。SQSReadIAMUserAccessKey与SQSReadIAMUserSecretKey:IAM 用户的密钥与密钥串。
配置时需要这些值。编辑 /etc/zabbix/zabbix_ami.yml,找到类似下面的代码块:
sqs:
delay_seconds: 60
default_region: us-east-1
queues:
- url:
access_key_id:
secret_access_key:
region:每个带伸缩通知的 SQS 队列,都按已有条目的样子在数组中新增一项,填入 CloudFormation 给出的值。关于这个文件的更多说明见重要文件一节。
SNS 通知 #
本 Zabbix 安装已经可以通过 AWS SNS 发送消息。这种方式避免了从 AWS 发邮件的种种问题,并提供了先进而安全的通知体系。
配置通过 SNS 发送告警
最多可以配置 6 个不同的 SNS 主题,按重要程度区分发送:
| Zabbix 严重级别 | zabbix_ami.yml 中的键 |
|---|---|
| Not classified | not_classified |
| Information | information |
| Warning | warning |
| Average | average |
| High | high |
| Disaster | disaster |
要让 Zabbix 发送通知,需要创建这些主题以及一个能连接并发布消息的 IAM 用户。
创建 SNS 主题与 IAM 用户
使用我们的 SNS 主题与 IAM 用户 CloudFormation 模板栈会简单得多,它会一次创建好全部资源。部署完成后,Outputs 标签页会给出需要记录的值:
SNSNotClassified、SNSInformation、SNSWarning、SNSAverage、SNSHigh、SNSDisaster:各严重级别对应的 SNS 主题。ZabbixSendingUserAccessKeyId与ZabbixSendingUserSecretAccessKey:IAM 用户的密钥与密钥串。
根据部署模板栈时选择的选项,其中一个或多个值可能不会出现。
配置 /etc/zabbix/zabbix_ami.yml
/etc/zabbix/zabbix_ami.yml 中有专门配置 SNS 选项的一节:
sns:
aws:
access_key_id:
secret_access_key:
region:
topics:
not_classified: arn:aws:sns:eu-west-1:000000000000:sample-sns
information: arn:aws:sns:eu-west-1:000000000000:sample-sns
warning: arn:aws:sns:eu-west-1:000000000000:sample-sns
average: arn:aws:sns:eu-west-1:000000000000:sample-sns
high: arn:aws:sns:eu-west-1:000000000000:sample-sns
disaster: arn:aws:sns:eu-west-1:000000000000:sample-sns填写想用的 SNS 主题(愿意的话同一个主题可以重复使用),以及密钥、密钥串和区域。就这么简单!
配置 Zabbix 用户
最后一步是让 Zabbix 通过 SNS 发送通知:
- 用你的账号登录 Zabbix 界面。
- 进入 User settings → Profile。
- 打开 Media 标签页。
- 添加一个类型为 AWS SNS 的新媒介,勾选 Enabled,其余字段按需填写(Send to 目前未被使用)。
- 点击 Add 添加媒介,再点击 Update 保存更改。
CloudFormation #
由于创建全部所需的 AWS 资源比较繁琐,这里可以下载不同的 AWS CloudFormation 模板栈来简化工作。
SNS Topic + SQS Queue + IAM User
创建供伸缩组关联的 SNS 主题、接收其通知的 SQS 队列,以及可读取并删除队列消息的 IAM 用户。
重要文件 # 进阶
Zabbix 镜像里有几个你应当了解的特殊文件。
/etc/zabbix/zabbix_ami.yml
这是最重要的一个文件,它掌管着伸缩检查、SNS 通知等特色功能的配置。示例如下(数据为虚构):
zabbix:
api:
user: autoscaler_api_user
password: i-073672daf01037aea94
sns:
aws:
access_key_id: AKK4L6A3OXZZ5HE2POQRU7V
secret_access_key: cICycAg26hSDpsJwbhZjbaaYlt4Tz3n1xqE7Oxp6X2Hf
region: us-east-1
topics:
not_classified: arn:aws:sns:us-east-1:000000000:Zabbix-General-SNS
information: arn:aws:sns:us-east-1:000000000:Zabbix-General-SNS
warning: arn:aws:sns:us-east-1:000000000:Zabbix-General-SNS
average: arn:aws:sns:us-east-1:000000000:Zabbix-General-SNS
high: arn:aws:sns:us-east-1:000000000:Zabbix-General-SNS
disaster: arn:aws:sns:us-east-1:000000000:Zabbix-General-SNS
sqs:
delay_seconds: 60
default_region: us-east-1
queues:
- url: https://sqs.us-east-1.amazonaws.com/000000000/zabbix-pro-sqs-queue
access_key_id: AKIA3OXZZ5HEWUR5A16CNWH
secret_access_key: 8ttYO3Ba9K6p0C+aj3fH5cDt2eRLHmlkHbMtlrpv18S7KRbC
region: us-east-1目前该文件分为三部分:
zabbix:删除过期主机需要连接 Zabbix 服务器,因此要有 API 访问权限。我们会为此创建专用用户,其连接信息写在这里。sns:通过 SNS 发送告警所需的配置。这里设置 IAM 用户信息和将要使用的 SNS 主题。sqs:处理 AWS 伸缩消息的配置。这里定义队列的轮询间隔(delay_seconds)以及要检查的各个队列。
文件中含有明文 IAM 凭证。请限制其权限,并定期轮换密钥。
/var/log/zabbix-sqs-reader/zabbix-sqs-reader.log
该文件记录从 SQS 读取到的各类自动伸缩事件。
完成配置之前,你会看到消息 Ops! It looks like the file /etc/zabbix/zabbix_ami.yml hasn't been configured yet. We better sleep for 5 minutes.——这是正常的,配置好 zabbix_ami.yml 后就会消失。
镜像更新 # 进阶
动手之前请通读本节,并对所有数据做好备份。
Zabbix 会不断发布带来新功能与改进的新版本,因此最好定期更新我们的镜像。遗憾的是,这些新特性往往伴随数据库与内部结构的变化,升级既有安装时可能带来麻烦。
我们的 Zabbix 镜像正是规避这些问题的最佳方式:我们提供了一条比常规做法更快、更简单也更安全的大版本升级路径。
升级概览
我们镜像的升级流程相当简单:
- 导出当前数据库。
- 用最新稳定版本启动一个新镜像。
- 把数据库导出文件上传到新实例。
- 运行我们的迁移脚本。
这样新旧两个版本可以同时运行,你可以充分测试,确认一切正常后再迁移该实例的 EIP,或逐步切换客户端。
本教程中,源端指你现有的 Zabbix 服务器,目标端指新服务器。
升级流程
第 1 步:备份源端服务器
第一步是为源端服务器创建镜像,以免意外丢失数据。可参考 AWS 创建 AMI 的文档。
第 2 步:导出数据库并记录 Zabbix 版本
通过 SSH 登录实例并切换到 root:
sudo /bin/su -随后把数据库导出到文件:
mysqldump zabbix > zabbix_origin_database.sql最后把该文件下载到本机,以便稍后上传到新服务器。同时记录当前使用的 Zabbix 版本:在 Web 界面即可看到,形如 4.0、4.2、4.4 或 5.4。
第 3 步:启动新的 Zabbix 实例
下一步是用最新稳定版镜像创建新的 Zabbix 实例,可在我们的 AWS Marketplace 卖家主页找到。至少需要使用我们 Zabbix 镜像的 6.0 版本。
这个新实例就是我们迁移数据的目标端,它已经预装并更新到最新版本。启动之后,把源端服务器的数据库导出文件复制上去。
第 4 步:升级数据库
要导入现有数据库、升级到新版本并补齐必要配置,使用脚本 /opt/tools/bin/zabbix-ami-upgrade.sh。以 ubuntu 用户运行,并传入原 Zabbix 版本和导出文件。例如从 Zabbix 4.0 迁移:
/opt/tools/bin/zabbix-ami-upgrade.sh 4.0 zabbix_origin_database.sql过程中会逐步提示所执行的操作,结束后即可继续使用新的 Zabbix 服务器。
第 5 步:访问 Web 界面
迁移完成后即可打开 Web 界面查看服务器的整体状况。注意:需要使用与原服务器相同的用户名和密码。
第 6 步:迁移特殊配置并切换客户端
数据库可用之后,还要考虑此前可能安装在服务器上的其他配置,例如:
- 监控脚本。
- 额外的系统软件包。
- 已安装的 SSL 证书。
还需要把为该实例配置的 EIP 迁移过来,这样客户端就无需改动。
如果尚未使用 EIP,现在是开始使用的好时机;否则你必须在所有客户端上修改新服务器的 IP。
支持 #
使用这个 Zabbix AMI 包含以下方面的支持:
- AMI 的安装。
- 初始配置。
- 与 AMI 相关的附加配置(例如使用 Let’s Encrypt)。
- 与 AMI 相关的 Zabbix 配置。
- 通过 SNS 发送 Zabbix 通知。
- Zabbix 中的自动伸缩支持。
- 我们的 CloudFormation 模板栈。
- Zabbix 的通用支持。
- AMI 的更新、升级与迁移。
更新日志 #
镜像历史。日期为各版本在 AWS Marketplace 的发布时间。
Zabbix 7.0 · 1.1 版
发布我们 Zabbix 7.0 镜像的 1.1 版,已安装配置好 Zabbix,并支持自动伸缩与 SNS 通知。
Zabbix 6.4 · 1.0 版
发布我们 Zabbix 6.4 镜像的 1.0 版,已安装配置好 Zabbix,并支持自动伸缩与 SNS 通知。
Zabbix 6.0 · 1.0 版
发布我们 Zabbix 6.0 LTS 镜像的 1.0 版,已安装配置好 Zabbix,并支持自动伸缩与 SNS 通知。
Zabbix 5.4 · 1.0 版
发布我们 Zabbix 5.4 镜像的 1.0 版,已安装配置好 Zabbix,并支持自动伸缩与 SNS 通知。
与 Zabbix LLC 的关系 #
Imaxe.cloud 与维护 Zabbix 的公司 Zabbix LLC 没有、也从未有过任何形式的协议。
这里提供的信息与支持均为非官方性质,围绕自由软件产品 Zabbix 及我们在其之上构建的附加能力。