4 返回值的编码

Zabbix server 要求每个返回的文本值都采用 UTF8 编码。 这与任何类型的检查相关:Zabbix agent、SSH、Telnet 等。

不同的被监控系统/设备和检查可能会在值中返回非 ASCII 字符。 在这种情况下,几乎所有的 zabbix 监控项键都包含一个额外的 监控项 参数 - <encoding>。 该键参数是可选的,但如果返回值不是 UTF8 编码并且包含非 ASCII 字符,则应指定该参数。 否则,结果可能是非预期且不可预测的。

以下描述了在这种情况下使用不同数据库后端时的行为。

MySQL

如果一个值在非 UTF8 编码中包含非 ASCII 字符,则该字符及其后面的内容在数据库存储该值时将被丢弃。zabbix_server.log 中不会写入任何警告信息。
至少适用于 MySQL version 5.1.61

PostgreSQL

如果某个值在非 UTF8 编码中包含非 ASCII 字符,则会导致 SQL query 失败(PGRES_FATAL_ERROR:ERROR invalid byte sequence for encoding),并且数据不会被存储。相应的警告信息将写入 zabbix_server.log
至少适用于 PostgreSQL version 9.1.3