Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

讓 cacti 也能用中文
post by tommy @ 17 五月, 2006 16:34
前面提到了 rrdtool 的修改, 讓 rrdtool 能夠把中文字給畫出來. 而我這個懶人, 之前使用 rrdtool 都是透過 cacti 這東西. 所以, 自然也要讓 cacti 能夠接受中文才可以用.

cacti 是一個 php 的程式, 所以要支援中文是很簡單的事情. 首先, 我們把目前的 mysql 資料庫用 mysqldump 指令抓出來, 然後修改其中 CHARSET 的設定, 把原本的 latin1 改成 utf8, 然後再 restore 回去. 這樣子, 就可以在 cacti 使用的 mysql 資料庫中儲存中文了.

接著, 我們只要把 cacti 產生的 html 頁面, 加上 utf-8 的設定.

修改 include/top_header.php, 找到 <title> 的地方, 在這之前加上 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 就可以.

修改 lib/graph_export.php, 找到 <title> 的地方, 在這之前加上 <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> 就可以. (兩處)

修改 lib/database.php, 在 connect 之後加上 $cnn_id->Execute("set names 'utf8'");

如果你用 apache, 也可以在 cacti  的目錄下, 加上 .htaccess, 指定 AddDefaultCharset utf-8 來確定 apache 會送出 utf-8.

這樣子修改後, cacti 的頁面就變成 utf-8 了, 自然就可以輸入中文. 配合之前修成的 rrdtool, 就可以產生有中文字的圖了. 

Del.icio.us Furl HEMiDEMi Technorati MyShare
commons icon [1] 中文顯示 太棒了 [ 回覆 ]

大大您好,看到您這一篇實在太讚了,小弟也是將CACTI用在公司內部網路監看流量,但讓別人看時總得解釋這個流量是指那,您這篇文章實在太棒了,雖然小弟還沒成功做出來
,但還是要感謝您,有一個問題想請教,
lib/database.php, 在 connect 之後加上 $cnn_id->Execute("set names 'utf8'");
這裏可以麻煩您在說明多一點嗎,找不到您說的位置,麻煩您了

commons icon [2] 你好~~想請問關於CACTI設定問題 [ 回覆 ]

不好意思冒昧打擾你
想請問Cacti能設定每分鐘抓一次資料(或是由使用者自行決定時間),而不是固定五分鐘抓取一次資料
如可以的話該如何設定呢??
或是說無法設定必需加裝套件才可以??
謝謝

commons icon [3] [ 回覆 ]

如果是 cactid, 我沒用過, 不確定可不可以設定.
不過如果是透過 cmd.php 來執行, 是在 crond 中設定每五分鐘跑一次.
而 RRA 中的記錄, 本來就是每五分鐘一個單位, 如果你不是每五分鐘跑一次, 裡頭那些少的資料, 是不是就變成空白了呢?
這一點與 MRTG 的運作有些不同, MRTG 會使用之前的資料, 但是 RRDTool 不會. 所以產生的圖應該會很奇怪.

commons icon [4] cacti關於抓取SNMP Data 請教 [ 回覆 ]

您好:
拜讀過您的相關文章,真是太佩服了...關於cacti問題想請教您,我有一台ascenlink頻寬管理器,它的snmp用geniric SNMP無法抓取到資料,聽說是該廠商改過oid了
,因此我向該原廠要了oid/mibs, 但在cacti上卻不知何使用,在mrtg上的使用是這樣的,....

OID (IN)
WAN 1 : 1.3.6.1.4.1.8837.4.1.2.1.2.1.5.1
WAN 2 : 1.3.6.1.4.1.8837.4.1.2.1.2.1.5.2
WAN 3 : 1.3.6.1.4.1.8837.4.1.2.1.2.1.5.3
以此類推
OID (OUT)
WAN 1 : 1.3.6.1.4.1.8837.4.1.2.1.2.1.6.1
WAN 2 : 1.3.6.1.4.1.8837.4.1.2.1.2.1.6.2
WAN 3 : 1.3.6.1.4.1.8837.4.1.2.1.2.1.6.3

### Global Config Options

# for UNIX
# WorkDir: /home/http/mrtg

# or for NT
# WorkDir: c:\mrtgdata

### Global Defaults

# to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits

EnableIPv6: no
WorkDir: /var/www/html/mrtg
Options[_]: bits,growright,noinfo,unknaszero
NoMib2: Yes
SingleRequest: Yes

######################################################################
# System: AL610
# Description: Test
# Contact: AscenVision Tech.
# Location: TW
######################################################################

### Interface 1 >> Descr: 'WAN1' | Name: '' | Ip: '' | Eth: '' ###
Target[192.168.99.254_1]: 1.3.6.1.4.1.8837.4.1.2.1.2.1.5.1&1.3.6.1.4.1.8837.4.1.2.1.2.1.6.1:public@192.168.99.254
SetEnv[192.168.99.254_1]: MRTG_INT_IP="" MRTG_INT_DESCR="WAN1"
MaxBytes[192.168.99.254_1]: 1250000
Title[192.168.99.254_1]: Traffic Analysis for WAN1 -- AL610
PageTop[192.168.99.254_1]: Traffic Analysis for WAN1 -- AL610
System:
AL610 in TW
Maintainer:
AscenVision Tech.
Description:
WAN1
ifType:
ethernetCsmacd (6)
ifName:
Max Speed:
10.0 Mbits/s


### Interface 1 End

不知大大是否能指點一,二...感激不盡

commons icon [5] [ 回覆 ]

知道 OID 就自行新增 Data Sources, 利用 SNMP - Generic OID Template 這一個 template 來產生相關的 data source. 然後在新增 graph 時, 使用你新增的 data source 就應該可以了.

commons icon [6] Re:讓 cacti 也能用中文 [ 回覆 ]

Hi Tommy

冒昧請教一下,不知道你的 cacti 版本是?

我自從更新到最新的 0.8.6j 之後,好像這個

set names 'utf8'

就失效了哩

應該說,當我在看 host.php(全部的device)時,中文就亂了
但是點進去亂碼的那個device卻又顯示正常

不知道你有沒有遇過這種怪異的現象呢?

commons icon [7] Re:讓 cacti 也能用中文 [ 回覆 ]

我的版本是 0.8.6i
你的情形比較寄怪, 如果是沒有執行 set names 'utf8', 照說應該都不出確才對. 也許是別的因素吧.

commons icon [8] Re:讓 cacti 也能用中文 [ 回覆 ]

找出關鍵了
出在這個function上

commons icon [9] Re:讓 cacti 也能用中文 [ 回覆 ]

阿...被你的過濾機制濾掉程式碼了
總之就是出在
host.php 第857行 的 eregi_replace & preg_quote 兩個 function 上...

舊版的有這個嗎?

繼續研究...:D

commons icon [10] Re:讓 cacti 也能用中文 [ 回覆 ]

0.8.6i 的 host.php 在那附近也是有用到那兩個函式, 應該不是這個造成的.

迴響
暱稱:
標題:
個人網頁:
電子郵件:
迴響

  

Bad Behavior 已經阻擋了 256 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS