2008年3月10日 星期一

Mysql module for bsnmpd (FreeBSD native snmp daemon)

最近算頗忙, 小孩都生出來了, 回家就是要幫忙帶小孩, 忙這忙那的...

不過上班的閒暇之餘, 寫了這個小東西, mysql module for bsnmpd.

在我的認知當中, 好像大部分的 monitor 機制 (nagios, cacti 等), monitor mysql 的時候,

都是由 moniter node 連線到 mysql server, 取得一些資訊後,把資料存起來.

這樣 mysql server 一多, 要就是紀錄每台的 username, password 等,

不然就是大家都用一樣的密碼.

其實很怪, 為甚麼 monitor node 要裝那麼多 client library?

不能有更簡單的方法嗎?

SNMP 好像原本的構想就是這樣, 只要大家符合了 snmp protocol, 理論上就可以取得你想要的資訊,

只是 server side 要自己去擴充而已.

FreeBSD 在 5.x (應該是這時候) 引進了 bsnmpd, 他比較好玩的是, 可以自己寫 module 去擴充原本沒有的東西,

現在已經有了一些 module, pf, netgraph, hostres 等等.

snmp_mysql 的 source code 可以在這邊找到.

解開之後,  "make" 就可以生出 snmp_mysql.so & snmp_mysql.so.5

copy 進 /usr/lib 就可以了 (其實 /usr/local/lib 才對)

然後把同目錄下的 snmp_mysql.conf copy 到 /usr/local/etc

這個檔案裡面只有兩行, 你的 mysql username & password, 自行修改.

然後修改 /etc/snmpd.config

增加下面這行

begemotSnmpdModulePath."mysql"  = "/usr/lib/snmp_mysql.so"

重跑 ("/etc/rc.d/bsnmpd restart") bsnmp 就好.

sockstat 就可以看到 bsnmpd 有連接到 mysql.sock

使用方法, 用 perl or php snmp module 就可以連接,

uid 如下.

1.3.6.1.4.1.12325.1.204.1.1.1.0 Connections

1.3.6.1.4.1.12325.1.204.1.1.2.0 SlowQuery

1.3.6.1.4.1.12325.1.204.1.1.3.0 Uptime

1.3.6.1.4.1.12325.1.204.1.1.4.0 Questions.

沒有留言: