日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在12個小時,搞定日志監(jiān)控?

日志監(jiān)控,是每個公司必須解決的一個問題。創(chuàng)業(yè)型公司,如何用半天的時間,搞定一個可擴(kuò)展,通用的日志監(jiān)控框架,是今天要聊的話題。

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),澄城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:澄城等地區(qū)。澄城做網(wǎng)站價格咨詢:13518219792

什么是日志監(jiān)控?

關(guān)于日志,不同公司,情況不同:

(1) A類公司:沒有日志;

(2) B類公司:有日志,只有用戶說系統(tǒng)掛了,或者有bug的時候,才會登錄到系統(tǒng)看看日志,大部分日志打印得對心所欲,缺乏組織性和系統(tǒng)性;

畫外音:很多時候,追查bug發(fā)現(xiàn)日志信息不全,要先上線一個有日志的版本,以幫助定位bug。

(3) C類公司:有日志,有日志規(guī)范,系統(tǒng)性的組織和收集了日志;

對日志進(jìn)行監(jiān)控,先于用戶發(fā)現(xiàn)系統(tǒng)的故障,實(shí)時告警,就是今天要討論的日志監(jiān)控問題。

日志監(jiān)控有什么需求?

對于日志的監(jiān)控,一般有這么幾類需求:

(1) 某種級別的日志(例如FATAL級別,或者ERROR級別的日志)一旦出現(xiàn),或者超過一定頻率,就告警;

(2) 包含某些特殊含義關(guān)鍵字(例如OutOfMemory,或者Exception)的異常日志,一旦出現(xiàn),或者超過一定頻率,就告警;

(3) 包含某些特殊含義關(guān)鍵字(例如Login,或者Click)的正常日志,一旦一定時間周期沒有出現(xiàn),就告警;

其中,前兩類需求,屬于異常日志監(jiān)控范疇,出現(xiàn)異常,實(shí)施告警。第三類需求,屬于正常日志監(jiān)控范疇,一定的時間沒有出現(xiàn)“正?!?,就默認(rèn)異常,實(shí)施告警。

為什么不是一出現(xiàn)異常日志就告警呢?

避免抖動引起的誤報(bào),一般到達(dá)一定頻率才會告警,這屬于告警策略的一部分。

為什么說,目錄與日志的規(guī)范化,是通用日志監(jiān)控的前提?

這是一個線上模塊的目錄示例:

  • 有源代碼:hello.c
  • 有可執(zhí)行文件:a.out
  • 有配置文件:hello.conf
  • 有備份日志:hello.log.2018012812
  • 有日志:hello.log
  • 有臨時文件:tmp

體會一下,運(yùn)維同學(xué)看到這樣的線上文件部署,是什么感受?

畫外音:沒見過源代碼直接部署到線上的?

有什么常見的目錄規(guī)范呢?

目錄規(guī)范化不但對日志監(jiān)控,對自動化運(yùn)維都極為重要,要是線上目錄都瞎搞,幾乎沒有辦法實(shí)現(xiàn)自動化運(yùn)維。

常見的目錄規(guī)范有兩類:

  • 模塊優(yōu)先類目錄規(guī)范;
  • 功能優(yōu)先類目錄規(guī)范;

什么是模塊優(yōu)先的目錄規(guī)范?

如上圖,以模塊名為優(yōu)先組織目錄:

  • 根目錄下,有das,entry,logic三個模塊目錄;
  • 在模塊目錄下,又分別有存放可執(zhí)行文件,配置文件,日志文件的bin目錄,conf目錄,以及l(fā)og目錄;

什么是功能優(yōu)先的目錄規(guī)范?

如上圖,以功能為優(yōu)先組織目錄:

  • 根目錄下,二進(jìn)制目錄bin,配置文件目錄conf,日志目錄log;
  • 功能目錄下,有das,entry,logic等不同模塊的目錄;

樓主旗幟鮮明的推薦第二種,功能優(yōu)先的目錄規(guī)范,對二進(jìn)制備份,配置備份,日志清理都非常方便。

有什么常見的日志規(guī)范呢?

日志規(guī)范化不但對日志監(jiān)控,對大數(shù)據(jù)體系建設(shè)都極為重要,需要考慮規(guī)范:

(1) 日志分級規(guī)范:不同級別的日志理應(yīng)打到不同的文件中,例如FATAL級,ERROR級,WARM級,LOG級,INFO級,DEBUG級:

 
 
 
 
  1. fatal.log 
  2. error.log 
  3. info.log 
  4. debug.log 
  5. … 

(2) 日志切分規(guī)范:運(yùn)維應(yīng)該提供自動化的日志切分工具,支持小時級別,或者天級別的日志切分,曾經(jīng)看過一個120G的access日志,從日志中g(shù)rep出某個uid的日志,是極其低效的:

 
 
 
 
  1. daojia.log.2018012800 
  2. daojia.log.2018012801 
  3. … 
  4. daojia.log.2018012823 

(3) 日志格式規(guī)范:日志格式規(guī)范是一個可展開的話題,此處不展開;

畫外音:是不是有小伙伴在思考,ca,自己怎么沒有這三類規(guī)范呢?

通用可擴(kuò)展日志監(jiān)控框架,有什么思路?

制訂了目錄規(guī)范,日志規(guī)范之后,要建立日志監(jiān)控框架,實(shí)施異常與正常的日志監(jiān)控,就簡單多了,主要有集中式監(jiān)控,分散式監(jiān)控兩類思路。

什么是集中式日志監(jiān)控?

集中式的日志監(jiān)控,最流行的莫過于ELK:

  • 各個機(jī)器節(jié)點(diǎn)上部署logstash,收集日志;
  • 收集的日志匯總到ES;
  • 通過Kibana做統(tǒng)一分析和展現(xiàn);

運(yùn)維的同學(xué)對這一套集中式日志監(jiān)控系統(tǒng)非常熟悉。

什么是分散式日志監(jiān)控?

ELK有點(diǎn)重,三套系統(tǒng)搭建與運(yùn)維起來比較麻煩,如果只是為了實(shí)現(xiàn)ERROR日志的監(jiān)控,異常關(guān)鍵字監(jiān)控,正常關(guān)鍵字監(jiān)控,有點(diǎn)殺雞用牛刀了。

與集中式的日志監(jiān)控相比,分散式的日志監(jiān)控,就顯得輕量級許多,非常適用與早期的創(chuàng)業(yè)型公司,其思路為:

  • 通過日志監(jiān)控模塊,對不同集群,進(jìn)行ERROR日志閾值設(shè)置,進(jìn)行異常關(guān)鍵字設(shè)置,正常關(guān)鍵字設(shè)置;
  • 日志監(jiān)控中心模塊,進(jìn)行統(tǒng)一調(diào)度,將配置分發(fā)到不同機(jī)器的agent節(jié)點(diǎn)上;
  • agent節(jié)點(diǎn)模塊,并不統(tǒng)一收集日志,而是接收到監(jiān)控中心分發(fā)的log監(jiān)控配置,在各個機(jī)器上實(shí)施日志監(jiān)控,如果觸發(fā)日志監(jiān)控策略,立刻發(fā)起告警;

與ELK相比,這個日志監(jiān)控框架會簡單的多,而且擴(kuò)展性非常好。

如何半天搞定日志監(jiān)控框架?

整個框架設(shè)計(jì)如上,大致分為三個部分:

(1)被監(jiān)控集群;

(2)基礎(chǔ)信息與服務(wù);

  • cluster.info.xml:存儲集群信息
  • owner.info.xml:存儲集群責(zé)任人信息
  • mail.service/SM.service:告警基礎(chǔ)服務(wù)

(3)日志監(jiān)控框架; 集群信息與負(fù)責(zé)人信息,與前文描述的一樣。

集群配置cluster.info.conf

 
 
 
 
  1. [daojia_main] 
  2. ip.list : ip1, ip2, ip3 
  3. log.path : /home/work/log/daojia_main/ 
  4. owner.list : shenjian, zhangsan 
  5.   
  6. [daojia_user] 
  7. ip.list : ip4, ip5, ip6 
  8. log.path : /home/work/log/daojia_user/ 
  9. owner.list : shenjian 

責(zé)任人配置owner.info.conf

 
 
 
 
  1. [shenjian] 
  2. email : XX@XX.com 
  3. phone :15912345678 
  4.   
  5. [zhangsan] 
  6. email : YY@YY.com 
  7. phone :18611220099 

日志監(jiān)控框架又分為兩個模塊:

可擴(kuò)展監(jiān)控配置文件log.monitor.conf

 
 
 
 
  1. [log.monitor.item] 
  2. cluster.name : daojia_main 
  3. # error日志監(jiān)控,每分鐘超過此閾值就告警 
  4. error.log. threshold : 10 
  5. # 異常關(guān)鍵字監(jiān)控,日志出現(xiàn)這些關(guān)鍵字就告警 
  6. bad.key : exeption | timeout | coredump 
  7. # 正常關(guān)鍵字監(jiān)控,日志每分鐘不出現(xiàn)這些關(guān)鍵字就告警 
  8. good.key : login | user | click 
  9.   
  10. [log.monitor.item] 
  11. cluster.name : daojia_user 
  12. error.log.threshold : 10 

日志監(jiān)控調(diào)度框架,這里需要編碼啦,偽代碼如下:

 
 
 
 
  1. Array[log-monitor] A1= Parse(log.monitor.config); 
  2. Array[cluster-info] A2= Parse(cluster.info.config); 
  3. Array[owner-info] A3= Parse(owner.info.config); 
  4.   
  5. // 遍歷所有監(jiān)控項(xiàng) 
  6. for(each item in A1){ 
  7.          //取出監(jiān)控項(xiàng)的集群名,閾值,異常/正常關(guān)鍵詞 
  8.          clusterName= item.clusterName; 
  9.          threshold= item.threshold; 
  10.          badKey= item.badkey; 
  11.          goodKey= item.goodkey; 
  12.   
  13.          //由集群名,獲取集群信息 
  14.          clusterInfo= A2[clusterName]; 
  15.          //獲取日志目錄,集群ip列表,集群負(fù)責(zé)人列表 
  16.          logPath= clusterInfo.path; 
  17.          Listips = clusterInfo.ip; 
  18.          Listowners = clusterinfo.owner; 
  19.          
  20.          //集群內(nèi)的每一個ip實(shí)例,都需要日志監(jiān)控 
  21.          for(each ip in ips){ 
  22.                    //登錄到這一臺機(jī)器 
  23.                    ssh $ip 
  24.                    //跳到相關(guān)的目錄下 
  25.                    cd $logPath 
  26.                    //查看近一分鐘error日志數(shù)量 
  27.                    $count= `grep $time error.log | wc -l` 
  28.                    //查看badkey與goodkey 
  29.                    $boolBad= `grep $badkey *` 
  30.                    $boolGood= `grep $goodkey *` 
  31.   
  32.                    if($count< threshold &&  
  33.                         $boolBad==NO && 
  34.                          $boolGood==YES){ 
  35.                             //正常,繼續(xù)監(jiān)控 
  36.                             continue; 
  37.                   } 
  38.   
  39.                   // 否則,對所有集群負(fù)責(zé)人發(fā)送告警 
  40.                   for(each owner in owners){ 
  41.                            // 略… 
  42.                   } 
  43.          } 

一個簡單的調(diào)度框架,看明白了嗎?

【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】


網(wǎng)站名稱:如何在12個小時,搞定日志監(jiān)控?
標(biāo)題來源:http://www.dlmjj.cn/article/dpgohep.html