2016/3/9

Graylog 研究心得與實測

剛好工作上有研究,架在CentOS 7上 ,記錄一下使用心得筆記.目前還在持續使用中,有任何問題或發現錯誤,歡迎討論 :)

需求原因:


平常在維護系統時,突然遇到狀況,需要一台一台登進去看log ,只能靠經驗逐漸縮小範圍來debug , 有時log 量太多,且分散在許多檔案,無法明確看出哪個時間點出問題.我們需要一個集中管理 log 的地方,也幫助往 devops 的趨勢發展,因為如果看log 更方便,RD 和QA會更願意勤勞追蹤問題, 系統運作也可以更透明化.

Graylog 是open source的 log 集中管理平台, 用來搜集,壓縮, index, 和分析來自很多device 的 log 資料;Graylog不會像 Splunk 需要依據使用量付費用買licence,安裝也算方便,很符合我們的需求.

安裝參考:


http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-install-graylog2-on-centos-7-rhel-7.html#axzz3hLHT1k83

架構:

input 包含幾種格式,比較特別的是GELF,它是 graylog 自己的 log 格式.Log 資料進來後,開始做一些即時的比對分類(根據我們設定的 rule ),然後送到 Elasticsearch 儲存.

MongoDB 是用來儲存除了 log data 以外的 metadata, 例如:stream rules .可以想成 web的資料庫. 不會有太大的負擔,graylog 未來也有計畫導入資料庫抽象層,到時就可以使用其他 databases (例如 mysql)去儲存.

與另一套開源的開源工具ELK (Elasticsearch, Logstash, Kibana)做比較:
Logstash 是用來搜集 log 資料,直接送到 Elasticsearch 時 , 需要自己指定 index,還要寫冗長的 filters 去設定時間區間;Graylog 則是會先進行 log 的前處理(壓縮分類等),還有依照時間順序送到 Elasticsearch 保存.
Kibana 提供 web 介面去呈現 Elasticsearch 裡面的 log  資料.  但它不能再 output 到其他 backend 做分析,也沒有客製化 alert 的功能;這些功能 graylog 都能做到.

實際測試:

我用一些方式對graylog server 進行壓力測試,主要是想看它可以承受一秒鐘多少 log 量,上表中 msgs/sec , process buffer, output buffer, Utilization 的數據都是由 graylog web interface 得到的,%CPU 的數據則是在 linux 下 top 指令獲得.目前實測結果,在還未調整任何參數的狀況下,大概能及時處理每秒 12000 左右的 log 而不會 queue 住.


有一次壓測真的把server 打掛了,主因是連續一小時左右,用每秒3萬多log 轟炸它,後來 JVM 的 Memory/Heap usage 那個長條圖縮不回去,就撐不住了.如果真的用量這麼大而且會持續很久,可以考慮調 processor 的數量或往官方建議的HA 架構設計.




參考資料:
1. 官方網站  https://www.graylog.org/







2015/9/5

Oswego 交換心得總整理

這篇是大四下在紐約州立大學-奧斯威格分校的學習生活總整理,按照繳交給教育部的報告格式,順便放上部落格分享 :)


一、  緣起

    自從進入資訊工程系後,就對美國 Computer Science 的發展很有興趣,尤其是對矽谷也很嚮往。大三時決定申請交換學生,以美國為目標。

二、  研修學校簡介

    Oswego 在美國的東北,離紐約市坐巴士大約要五個小時,在安大略湖旁邊。


   
    冬天十分寒冷,大約會到攝氏零下十幾度,有時遇到暴風雪還是要努力去上課。這間學校十分貼心,健身房、餐廳跟國際學生宿舍相連,所以不需忍受刺骨的寒風,也不須自己買食材烹煮,就能享用美食與使用運動器材。



三、  國外研修之課程學習(課內)

1.     充滿鼓勵的學習氣氛 :
    在選 Software Engineering 這堂課之前,我去找導師James Early 談,因為這堂課需要prerequisite (預先條件) 才能加選,於是我告訴老師我有Androidgit 使用經驗,也熟悉Java,希望我能加選。沒想到老師聽了後對我說: Outstanding! You will be an important person in your team. 我本來只是想取得符合加選這堂課的資格,卻意外得到他的讚賞,讓我決定一定要在這堂課中好好貢獻。
    另一個例子是,我們每周都需要上台小組報告進度給全班聽,雖然之前在台灣也有過類似經驗,但在美國不同的是,同學很喜歡提出問題。他們並不是要刻意刁難在台上的組別,而是想從其他組別的經驗中,更深入打聽好用的程式工具或處理資料的方式。這樣的情況讓我回想起在台灣時,自己有時候沒有很在意其他同學的報告,反而把時間拿去寫別堂課的作業,而錯失了吸取別人寶貴經驗的機會。美國同學樂於討論與分享的風氣,似乎幫助他們未來面對類似問題時,就算沒有實際經驗,也能想到多種解法,我覺得是值得學習的地方。



2.     領導力的展現 :
Software Engineering 這堂課需要分組寫程式做專案,但我的一個組員常翹課(可能因為是一三五早上8點的課,太早爬不起來)。有一天,另一位組員Justin 就跟我們討論 : 「有沒有辦法幫助他多來上課呢? 我每天是開車過來的,說不定我可以去載他。」我聽了很驚訝,因為以前我都認為有人翹課、不參與討論是他的事,到最後學期結束他的貢獻就是零,不需要花多餘的心力去關心他的狀況。但Justin的做法點醒了我,他說:「我們是一個5人團隊,如果就這樣少了一個人的貢獻,可能也會影響最後的成果。」




3.     特別的滑冰運動—Ice Skating





4.     多元的作業與學習
Int. Scripting/ Markup Language 這堂課程中,有一次老師指派的作業是到美國蠻熱門的自學網站「Codecademy」,去完成學習 phpjQuery的任務,我覺得這種方式很新鮮,也可以培養學生未來的自學能力。


5.     線上課程—Leadership in your field
這門課的通過條件是需要幫社區免費服務實習 60小時(整學期),才能拿到學分。我選的實習是用 WordPress 幫動物園主人建構他的網站,可是他不想花錢買樣板,又要求網站要活潑可愛討小朋友開心,只好用盡方法幫他加一些 plugin 跟照片。但是和美國、澳洲人合作溝通是不錯的體驗,後來的網站成果也算滿意,更重要的是,如果老闆提出不合理的要求,我學會如何跟他理論、解釋自己的做法。 (下圖為網站作品截圖)






四、  國外研修之生活學習(課外)
1.     室友的衝突
    Oswego很貼心,通常會把來自同樣國家的人分配在同一間雙人房裡,比較不會有生活習慣相差太多的問題。但是我和同樣中央大學過去的英文系好友,希望可以更融入美國學生們的生活或多練習英文,主動要求宿舍將我們兩個拆開,希望可以跟母語不是中文的人住在一起。於是我們兩個都分配到了美國室友,沒想到因為睡眠習慣的差異,讓我們的噩夢就此展開。

我的美國室友她凌晨四點帶男生進房間聊天,我被吵醒後就阻止他們說話 (我們有室友協議,有人在睡覺時不能在房間說話)。結果她就生氣了,還開始罵我...然後我實在吵不過她,就退回床上。一直吵鬧到5am,他們決定出去外面講,沒想到她鬧鐘設定6am,每隔15分鐘就響一次。等她回來我就問她為什麼這樣做? 她居然用很得意的表情看著我,完全沒有抱歉的意思就回到床上繼續睡....
我開始爭取自己的權益,寄信給宿舍長說想要換房間,但他一直不讓我換,要我先去找樓長幫忙溝通協調,但無奈過了一星期還是沒有解決,我和室友的關係也降到冰點,而宿舍長還是堅持不讓我換宿舍。後來想盡辦法,找Counseling Center (美國學校諮商中心的權限通常很大,跟他們說目前宿舍的狀況已經驗重影響到我的學習和生活)、找國際事務處、找其他師長,溝通了許久後才終於換到單人房,結束這場夢魘。

               整理一下和美國人談判的技巧,感謝眾多朋友的建議。
ü   美國人文化就是崇尚談判。在跟美國人談判的前提,是"你要影響到我,我就讓你也不得安寧"的這種作法會奏效。
ü   她快速講英文,你如果沒跟上就不斷請他重講就好。(sorry, could you repeat again ?)在他們文化裡面,如果他講的你沒聽懂,那是他們的問題。(跟華人文化也剛好相反。)
ü   不要擔心美國人那副兇狠的樣子,他們看起來像獅子只是威脅,但不會真的咬你一口的。
ü   強勢的說 if you don't "...." , I won't ".....". 跟他們條件交換。

最好的情況當然是大家都可以和平相處,但如果真的遇到不公平的事情,還是要勇敢捍衛自己的權益。

2.     參觀矽谷的科技公司
因為讀資工系的關係,對我來說,到美國一定要去矽谷朝聖,於是學期一結束,我和朋友就從紐約飛到舊金山附近,開始了矽谷之旅。因為很渴望去參訪矽谷的科技公司,厚著臉皮問朋友的朋友,也就是在裡面的工程師們,帶我們進去導覽。

Ø  Google :
很幸運看到 self-driving car 開在我們前面! 因為還在測試階段,所以車上有坐人,萬一有狀況可以手動駕駛。




Ø  Facebook :
Facebook 招牌的後面居然是 Sun! 沒有從後面走過去還真的很難發現這園區以前是昇陽的,彷彿見證了科技公司的興衰...
  


還有參觀很多startup 公司,包括我之前實習當Program manager 的公司 Fliptop,對矽谷的想法,也漸漸從迷戀崇拜到深入瞭解。





五、  研修之具體效益
1.     體驗不同的學習、教育方式,讓思考更靈活。
2.     語言能力提升,能應付各種狀況。
3.     專業能力培養,透過觀察矽谷科技公司,與裡面的員工交流,得到許多不同觀點與視野。
4.     獨立面對各種危險,學會保護自己。
5.     學會據理力爭,雖然在語言上比較弱勢,但還是要清楚表達自己的想法,學會和不同文化背景的人相處。



六、  感想與建議

    有時候常會想,當交換生大概是人生中最自由的一段時間了。雖然天氣寒冷,作業也很多,但卻忙得很開心!自己規劃旅行,自己解決困難與衝突,自己跟動物園主人開會展示實習做的網頁,教比自己年紀大的組員使用github,開始不害怕講英文,發現一個人也能夠活得很好。

    但是獨自一人在外面求學或旅行時,真的要好好保護自己,遇到不公平的事,也要勇於為自己的權益發聲。在美國若是自己一個人要搭計程車,如果是有 Uber的城市,建議優先叫 Uber。不要相信機場附近來路不明的計程車(有的人會假裝機場人員,說要登記你要去的地點,告訴你要去哪裡搭車。實際上則是把你帶到不合法的計程車旁,這時切記要趕快離開,往正常排班計程車方向走),我就曾經遇過這種危險情況,從紐約是機場出來後,坐10分鐘的計程車,卻被勒索將近台幣6千元。當時要上車前覺得怪怪的,但因為行李已經被他拿走,應該要當機立斷把行李拿回來,然後快步走回人群中,但當時自己一個人不敢和他正面衝突,所以還是上了車。總之旅行時不要太相信任何人,或結伴同行比較安全。