Table of Contents

6 返回值编码

Zabbix server 要求所有返回的文本值均采用 UTF8 编码。 这适用于各类检查类型:Zabbix agent、SSH、Telnet 等。

不同的被监控系统/设备和检查可能返回包含非 ASCII 字符的值。针对此类情况,几乎所有 Zabbix 键值都包含一个额外的 监控项 键参数——<encoding>。该键参数为可选参数,但当返回值未采用 UTF8 编码且包含非 ASCII 字符时,必须指定此参数。否则可能导致不可预期且不可预测的结果。

以下描述在此类情况下不同数据库后端的行为表现。

MySQL

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

PostgreSQL

如果值包含非UTF8编码的非ASCII字符,这将导致SQL query执行失败(PGRES_FATAL_ERROR:ERROR 无效的字节序列编码),数据将不会被存储。系统会在zabbix_server.log中记录相应的警告信息。该问题至少存在于PostgreSQL版本 9.1.3中。