1. 為什么需要集中的日志系統(tǒng)笨农?
在分布式系統(tǒng)中郭变,眾多服務(wù)分散部署在數(shù)十臺甚至是上百臺不同的服務(wù)器上涎永,要想快速方便的實(shí)現(xiàn)查找、分析和歸檔等功能一死,使用Linux命令等傳統(tǒng)的方式查詢到想要的日志就費(fèi)時(shí)費(fèi)力肛度,更不要說對日志進(jìn)行分析與歸納。
如果有一個(gè)集中的日志系統(tǒng)投慈,便可以將各個(gè)不同的服務(wù)器上面的日志收集在一起承耿,不僅能方便快速查找到相應(yīng)的日志冠骄,還有可能在眾多日志數(shù)據(jù)中挖掘到一些意想不到的關(guān)聯(lián)關(guān)系。
作為DevOps工程師加袋,會經(jīng)常收到分析生產(chǎn)日志的需求凛辣。在機(jī)器規(guī)模較少、生產(chǎn)環(huán)境管理不規(guī)范時(shí)锁荔,可以通過分配系統(tǒng)賬號蟀给,采用人肉的方式登錄服務(wù)器查看日志。然而高可用架構(gòu)中阳堕,日志通常分散在多節(jié)點(diǎn)跋理,日志量也隨著業(yè)務(wù)增長而增加。當(dāng)業(yè)務(wù)達(dá)到一定規(guī)模恬总、架構(gòu)變得復(fù)雜前普,靠人肉登錄主機(jī)查看日志的方式就會變得混亂和低效。解決這種問題的方法壹堰,需要構(gòu)建一個(gè)日志管理平臺:對日志進(jìn)行匯聚和分析拭卿,并通過Web UI授權(quán)相關(guān)人員查看日志權(quán)限。
2. 日志系統(tǒng)選擇與對比
關(guān)于企業(yè)級日志管理方案贱纠,比較主流的是ELK stack和Graylog峻厚。
常見的分布式日志系統(tǒng)解決方案有經(jīng)典的ELK和商業(yè)的splunk。為什么沒有選擇上面的兩種方案呢谆焊,原因主要是如下兩種:
ELK目前很多公司都在使用惠桃,是一種很不錯(cuò)的分布式日志解決方案,但是需要的組件多辖试,部署和維護(hù)相對復(fù)雜辜王,并且占用服務(wù)器資源多,此外kibana也在高版本中開始商業(yè)化罐孝。
splunk是收費(fèi)的商業(yè)項(xiàng)目呐馆,不在考慮范圍。
3. 認(rèn)識graylog
3.1 簡介
graylog是一個(gè)簡單易用莲兢、功能較全面的日志管理工具汹来,graylog也采用Elasticsearch作為存儲和索引以保障性能,MongoDB用來存儲少量的自身配置信息改艇,master-node模式具有很好的擴(kuò)展性收班,UI上自帶的基礎(chǔ)查詢與分析功能比較實(shí)用且高效,支持LDAP遣耍、權(quán)限控制并有豐富的日志類型和標(biāo)準(zhǔn)(如syslog,GELF)并支持基于日志的報(bào)警炮车。
在日志接收方面通常是網(wǎng)絡(luò)傳輸舵变,可以是TCP也可以是UDP酣溃,在實(shí)際生產(chǎn)環(huán)境量級較大多數(shù)采用UDP,也可以通過MQ來消費(fèi)日志纪隙。
3.2 優(yōu)勢
部署維護(hù)簡單
資源占用較少
查詢語法簡單易懂(對比ES的語法…)
內(nèi)置簡單的告警
可以將搜索結(jié)果導(dǎo)出為 json
UI 比較友好
3.3 graylog單機(jī)架構(gòu)圖
3.4 graylog集群架構(gòu)
4.2 Graylog優(yōu)缺
4.2.1赊豌、Graylog優(yōu)點(diǎn)
- 一體化方案,安裝方便绵咱,不像ELK有3個(gè)獨(dú)立系統(tǒng)間的集成問題碘饼。
- 采集原始日志,并可以事后再添加字段悲伶,比如http_status_code艾恼,response_time等等。
- 自己開發(fā)采集日志的腳本麸锉,并用curl/nc發(fā)送到Graylog Server钠绍,發(fā)送格式是自定義的GELF,F(xiàn)lunted和Logstash都有相應(yīng)的輸出GELF消息的插件花沉。自己開發(fā)帶來很大的自由度柳爽。實(shí)際上只需要用inotify_wait監(jiān)控日志的MODIFY事件,并把日志的新增行用curl/nc發(fā)送到Graylog Server就可碱屁。
- 搜索結(jié)果高亮顯示磷脯,就像google一樣。
- 搜索語法簡單娩脾,比如: source:mongo AND reponse_time_ms:>5000 赵誓,避免直接輸入elasticsearch搜索json語法搜索條件可以導(dǎo)出為elasticsearch的搜索json文本,方便直接開發(fā)調(diào)用elasticsearch rest api的搜索腳本晦雨。
3.2.2架曹、Graylog缺點(diǎn)
- 控制臺操作頁面是英文的,針對國內(nèi)開發(fā)使用者使用起來不方便闹瞧,還得額外漢化绑雄,漢化可能失敗
- 使用網(wǎng)絡(luò)傳輸,可能會占用項(xiàng)目網(wǎng)絡(luò)