2013年1月9日 星期三

工程師想要什麼?

我們組最近有個需求, 想要監控 mysql 各個 table 的 row size,

直接讓某台 cron 機器, 開 mysql connection 到各台 mysql 讀 INFORMATION_SCHEMA 是最直覺的,

也有同事說, 讓 mysql server 自己讀自己的 INFORMATION_SCHEMA,
讓別人透過 http 來讀 json 就好, 但是這樣可能就得跑一下 apache 之類的.

後來我研究了一下, 公司內部本來就有一個 package, 可以透過 http 提供 mysql 各項的 metrics,

原本想要稍微修改這個 package, 讓我們想要提供的資料可以套用進去,

更深入研究之後, 發現這個 package 的 desc 寫著 mysql status framework,

Framework 唷, 真厲害, 而他真的就是一套用 perl 寫的簡單 framework,

用了 AnyEvent::HTTPD 做前端, 用了內部的 dbm 當 storage,
只要繼承他的 perl module, 寫一些 callback function,
就可以把怎樣搜集資料, 以及 http handler 都搞定,

立馬就寫了一下, 大概不到一百行就搞定我們要的功能,
也不會有 performance impact,

因為往 mysql 的 query 都不是即時的,
是透過 collector 每多久查一下, 寫到 storage,
前端的 AnyEvent::HTTPD 收到 request, 往 storage 查, 馬上就吐出去.


簡單, 好用, 又讓我覺得很爽.

工程師想要的是什麼? 就是這種偶然遇到的小 hack 得到的喜悅呀.

沒有留言: