020-zabbix修改主机名为中文名

我这边zabbix版本有2.4和3的都有。

要让zabbix主机名支持中文,,需要修改zabbix的php代码文件,如下图修改完中文主机名是不支持的:

 

 

实现步骤:

进到zabbix web目录,一般在/var/www/zabbix或者/usr/share/zabbix下

一、

修改/usr/share/zabbix/include/defines.inc.php文件中修改,我的在788行(zabbix-2.4.8),加入中文字符支持,原始正则:

define('ZBX_PREG_INTERNAL_NAMES', '([0-9a-zA-Z_\. \-]+)');

 

 修改为:

// \x80-\xff:匹配用GBK (GB2312/GB18030)编码的所有汉字和标点符号

define('ZBX_PREG_INTERNAL_NAMES', '([0-9a-zA-Z_\. \-\x{80}-\x{ff}]+)');

 

修改后,主机名和监控项名都可以输入中文了。

 

二、让触发器表达式也支持中文(我测试了 我的zabbix是4.2):

在$ZABBIX_PATH/include/classes/parsers/CTriggerExpression.php文件中天加,使触发器表达式支持中文:

1
2
3
4
5
6
7
8
9
private  function  isHostChar( $c ) {
                $cc =ord( $c );
                if  (( $c  >=  'a'  &&  $c  <=  'z' ) || ( $c  >=  'A'  &&  $c  <=  'Z' ) || ( $c  >=  '0'  &&  $c  <=  '9' )
                                ||  $c  ==  '.'  ||  $c  ==  ' '  ||  $c  ==  '_'  ||  $c  ==  '-'  ||  $cc  > 127) {
                        return  true;
                }
 
                return  false;
        }