天天看點

zabbix修改之中文主機名

讓zabbix主機名支援中文,如下圖:

<a href="http://s3.51cto.com/wyfs02/M00/39/36/wKiom1O2QwWz7F21AADEbwEm4tY362.jpg" target="_blank"></a>

讓觸發器表達式也支援中文:

<a href="http://s3.51cto.com/wyfs02/M00/39/38/wKioL1O2R53gv8n2AADVBhAM2-U480.jpg" target="_blank"></a>

實作步驟:

假如zabbix web目錄位置在/var/www/zabbix,定義zabbix目錄

ZABBIX_PATH=/var/www/zabbix

一、

在$ZABBIX_PATH/include/defines.inc.php檔案中修改943行(zabbix-2.2.3),加入中文字元支援,原始正則:

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

修改為:

<code>// \x80-\xff:比對用GBK (GB2312/GB18030)編碼的所有漢字和标點符号</code>

<code>define(</code><code>'ZBX_PREG_INTERNAL_NAMES'</code><code>, </code><code>'([0-9a-zA-Z_\. \-\x{80}-\x{ff}]+)'</code><code>);</code><code>/* !!! Don't forget sync code with C !!! */</code>

修改後,主機名和監控項名都可以輸入中文了。

二、

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

<code>        </code><code>private</code> <code>function</code> <code>isHostChar(</code><code>$c</code><code>) {</code>

<code>                </code><code>$cc</code><code>=ord(</code><code>$c</code><code>);</code>

<code>                </code><code>if</code> <code>((</code><code>$c</code> <code>&gt;= </code><code>'a'</code> <code>&amp;&amp; </code><code>$c</code> <code>&lt;= </code><code>'z'</code><code>) || (</code><code>$c</code> <code>&gt;= </code><code>'A'</code> <code>&amp;&amp; </code><code>$c</code> <code>&lt;= </code><code>'Z'</code><code>) || (</code><code>$c</code> <code>&gt;= </code><code>'0'</code> <code>&amp;&amp; </code><code>$c</code> <code>&lt;= </code><code>'9'</code><code>)</code>

<code>                                </code><code>|| </code><code>$c</code> <code>== </code><code>'.'</code> <code>|| </code><code>$c</code> <code>== </code><code>' '</code> <code>|| </code><code>$c</code> <code>== </code><code>'_'</code> <code>|| </code><code>$c</code> <code>== </code><code>'-'</code> <code>|| </code><code>$cc</code> <code>&gt; 127) {</code>

<code>                        </code><code>return</code> <code>true;</code>

<code>                </code><code>}</code>

<code>                </code><code>return</code> <code>false;</code>

<code>        </code><code>}</code>

本文在原作者的基礎上做了補充。

本文轉自 張斌_青島 51CTO部落格,原文連結:http://blog.51cto.com/qicheng0211/1434451

繼續閱讀