1. 程式人生 > >zabbix修改主機名為中文名

zabbix修改主機名為中文名

alt col reg 2.3 tchar ret 表達式 spa ||

我這邊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是2.4.8和3都沒有這個參數,加了也沒用):這一步沒有成功,沒有這個參數,加了也沒用,會的可以告知下。下面的內容是網上復制過來的沒改,我的版本沒有這個參數。

在$ZABBIX_PATH/include/classes/parsers/CTriggerExpression.php文件中修改808行(zabbix-2.2.3),使觸發器表達式支持中文:

 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;
        }

  

zabbix修改主機名為中文名