1. 程式人生 > >elk日誌大盤顯示和日誌監控報警配置實踐

elk日誌大盤顯示和日誌監控報警配置實踐

1. Logstash

1.1具體內容詳解

1.2使用整體配置

1.2.1專案工程中的配置

在logback對應的配置檔案logback-spring.xml中配置如下內容:

        注意encoder標籤中對應的三個欄位:requestUrl,traceId和clientIp,這三個是在要求在輸出日誌中增加這三個標籤,和logback對應的預設輸出合併,對應的輸出結果為:

1.2.2 日誌傳送到elasticsearch配置

具體對應conf配置如下:

input {

 file {

    type =>"XXX_kccf_pc_info"  ------對應的elasticsearch索引type值

   path => "/data/log/kccf_pc_info.*.log"     ------輸入日誌

   start_position => "beginning"

   codec => json {

            charset => "UTF-8"

       }

    }

}

filter {

   if[type] == "XXX_kccf_pc_info"

    {

       if "method=HEAD" in [requestUrl] {   ----------如果是心跳檢查(head)在不會將日誌拉取到elasticSearch

                drop {}

      }

          mutate {

                split =>["[requestUrl]",","]

         }

    }

   geoip {

           source => "ip"

           target => "geoip"

     }

}

filter {

   if[type] == "XXX_kccf_pc_info"

    {

        if [level] == "ERROR" and "PARAM_NO_PRIVILEGE" notin [message] and "ERROR-START" not in [message]

         {

          mutate {

              add_tag => "email"}

         }

     }

         geoip{

                     source=> "ip"

                     target => "geoip"

    }

}

output {

  if[type] == "XXX_kccf_pc_info"{

     elasticsearch {

       hosts => "XXXXX"

       index => "XXXX-%{+YYYY.MM.dd}"  ------elasticsearch對應的索引名稱

       sniffing => false

       manage_template => false

       flush_size => 3000

       idle_flush_time => 5

       user => "logstash"

       password => "logstash"

#       ssl => true

#       ssl_certificate_verification => false

#       truststore => "/etc/logstash/truststore.jks"

#       truststore_password => changeit

     }

  }

 if"email" in [tags] and [type] =="XXX_kccf_pc_info"

  {

   email{                ---------------------傳送錯誤日誌郵件

       port           =>    "587"

       address        =>    "smtp.XXXX.com"

       username       =>    "
[email protected]
" password => "xxxxxx" authentication => "login" use_tls => true from => "[email protected]" subject => "Waring: you have an error on host101.201.118.236(TYJ1)" to => "
[email protected]
" via => "smtp" body => "you hava an error ofkccf_pc_info! server_ip:XXX\n ERROR time: %{@timestamp}+08:00Hours ; \n ERROR message: %{message} ; \nLogger Name: %{logger_name}; \n Level:%{level} ; \n level_value:%{level_value}; \n Stack_trace : \n %{stack_trace}\n " } } }

2. Elastic search

2.1具體內容詳解

Elasticsearch叢集可以包含多個索引(資料庫),這些索引又包含多個型別(表)。這些型別包含多個文件(行),每個文件都有多個欄位(列)。

2.2 elasticsearch head介紹

可以檢視elasticsearch伺服器上各種資訊

2.3 searchguard 外掛

從對應配置檔名稱就可以看出來,就主要有以下主要關係:

2.4 script field

就是可以根據指令碼動態的在ElasticSearch中生成對應的field,而不是一開始就在mapping中定義的好的,後面在kibana配置大盤的時候會用到。

2.5 painless 指令碼

指令碼語言詳解:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/modules-scripting-painless.html

3.Kibana

3.1 具體內容詳解

3.2 searchguard 外掛

外掛下載地址和詳細說明參見:https://github.com/floragunncom/search-guard-kibana-plugin

3.3 sentinl 郵件報警外掛

注意:郵件配置的時候一定是授權碼,不是密碼,否則報授權失敗

4.日誌監控大盤配置

4.1 kibana日誌搜尋基本用法

AND,OR,NOT,範圍查詢語法支援

其實對於kibana查詢,還是可以使用filter進行查詢的(高版本已經支援了,但是我們使用的5.4需要經過下面的步驟來增加filter):

4.2 增加索引scriptfield

之所以要增加scriptfields是因為比如從對應的下面日誌中抽取對應的耗時:

method=com.kccf.pc.controller.article.ArticleController.getArticleListcost 22 milliseconds

要從對應的日誌中擷取對應的耗時內容,所以要使用指令碼來進行擷取,並將擷取的值存放在對應的script fields欄位中,供後面的Visualize使用。

4.3 Visualize配置

單擊“加號”新增一個檢視:

並選擇對應的檢視型別,然後選擇要從哪個索引採集資料進行配置:

當然X,Y軸都可以配置多個統計,如下面的:

4.4 Dashboard大盤配置

大盤就是將上面配置的多個Visualized放在一個地方進行顯示,如下圖所示:

新增大盤,通過如下操作:

將Visualized放置在大盤中:

5. 監控郵件報警sentinl配置

5.1 新增watcher配置

(1) General:表示多長時間執行一次,定時遍歷日誌

(2) Input:對elasticSearch中的索引或者索引列表進行過濾採集,得到最終的輸入

(3) Condition:就是過濾之後的日誌滿足什麼條件才進行報警

(4) Transform:對結果進行轉換

(5) Actions:到達報警條件了,進行什麼樣的處理,一般就是傳送郵件通知

5.1.1 Input過濾:

下面是配置的Input過濾:在最近一個小時內,耗時大於20毫秒的記錄進行過濾

{

 "search": {

   "request": {

      "index":[

       "indu_kccf_pc_info-*"

      ],

     "body": {

       "query": {

         "bool": {

           "must": [

              {

               "script": {

                 "script": {

                   "lang": "painless",

                   "params": {

                     "costTimeThrehold":20

                   },

                   "inline":"if(null != doc['message.keyword'].value &&doc['message.keyword'].value.trim().startsWith(\"method=\")&&doc['message.keyword'].value.trim().endsWith(\"milliseconds\")){Number costTimeNum = NumberFormat.getInstance().parse(doc['message.keyword'].value.substring(doc['message.keyword'].value.indexOf('cost')+4,doc['message.keyword'].value.lastIndexOf('milliseconds')-1).trim());if(costTimeNum.longValue() > params.costTimeThrehold) true; else false;}elsefalse;"

                  }

                }

              },

              {

               "range":{

                 "@timestamp": {

                   "gte": "now-1h",

                   "lte": "now",

                   "format": "epoch_millis"

                  }

                }

              }

            ]

          }

        }

      }

    }

  }

}

注意:inline裡面的指令碼功能就是擷取如下日誌中對應的耗時method=com.kccf.pc.controller.article.ArticleController.getArticleListcost 22 millisecondsRange對應的是時間範圍過濾。

5.1.2 Condition配置:

Condition配置就是對input過濾得到結果進行統計,如果統計的結果滿足設定的條件則進行觸發後面的行為:

上面的條件是Input對應的過濾結果的條數大於1則進行報警,這個指令碼是可以自己動態編寫的,因為sentinl外掛也是在elasticSearch中定義了自己對應的索引:watcher和watcher_alarms-時間,如下面在elasticSearch-head中對應的截圖所示:

{

    "_index":"watcher",

    "_type":"sentinl-watcher",

    "_id":"38eljz92mycwqi00ian55ng66r-0tqtq7q46valazkmg8yn20ggb9-im815vceg9gap6akbvjejnhfr",

    "_version":32,

    "_score":1,

    "_source":{

       "title":"所有",

       "disable":false,

       "report":false,

       "trigger":{

           "schedule":{

              "later":"every 1 secs"

           }

       },

       "input":{

           "search":{

              "request":{

                  "index":[

                     "cpcn-*"

                  ],

                  "body":{}

              }

           }

       },

       "condition":{

           "script":{

              "script":"payload.hits.total >0"

           }

       },

       "actions":{

           "error報警": {

              "throttle_period":"0h0m1s",

              "email":{

                  "to":"[email protected]",

                  "from":"[email protected]",

                  "subject":"報警",

                  "body":"event:{{payload.hits.total}} errorMsgConent:{{payload.hits.hits}}"

              }

           }

       }

    }

}

{

    "_index":"watcher",

    "_type":"sentinl-script",

    "_id":"8mmkkevvdr0g0sz3mmojn61or-s6hfac0a3y36ier49ju1sjor-keeuakonk0v51cntohp1ll3di",

    "_version":1,

    "_score":1,

    "_source":{

       "description":"input",

       "title":"error",

       "body":"{

       "search":{

           "request":{

              "index":["cpcn-*"],

              "body":{

                  "query":{

                     "bool":{

                         "must":[{

                                "wildcard":{

                                   "message":"*exception*"

                                }

                            },

                            {

                                "wildcard":{

                                   "message":"*error*"

                                }

                            },

                            {

                                "range":{

                                   "@timestamp":{

                                       "gte":"now-1h",

                                       "lte":"now",

                                       "format":"epoch_millis"

                                   }

                                }

                            }

                         ],

                         "must_not":[]

                     }

                  }

              }

           }

       }

    }

    "

}

}

(3)報警資訊內容對應的是索引watcher_alarms-時間型別為配置Action名稱的內容:

{

    "_index":"watcher_alarms-2018.04.09",

    "_type":"email_admin",------配置的action名稱

    "_id":"AWKphaIhjWbDkGCDylsw",

    "_version":1,

    "_score":1,

    "_source":{

       "@timestamp":"2018-04-09T08:28:50.080Z",

       "watcher":"watcher_title",

       "level":"high",

       "message":"Found 177 Events",

       "action":"email_admin",

       "payload":{

           "took":4,

           "timed_out":false,

           "_shards":{

              "total":25,

              "successful":25,

              "skipped":0,

              "failed":0

           },

           "hits":{

              "total":177,

              "max_score":1,

              "hits":[{

                  "_index":"cpcn-2018.01.17",

                  "_type":"logs",

                  "_id":"AWECHmRX1zYDH4X06oyZ",

                  "_score":1,

                  "_source":{

                     "@version":"1",

                     "host":"DESKTOP-7DN8E16",

                     "@timestamp":"2018-01-17T03:16:41.677Z",

                     "message":"qwe"

                  }

              }]

           }

       },

       "report":false

    }

}

注意上面的報警內容,正好是我們在Condition中配置的需要的資訊,如condition配置所示:

{

 "script": {

   "script": "payload.hits.total > 1"  -----正好對應的上面報警內容對應的記錄中的內容

  }

}

5.1.3 Actions配置:

Actions配置就配置在滿足報警條件的時候,如何進行處理,如下面報警條件滿足的時候進行郵件通知處理配置如下:

注意:body中的內容正是取索引watcher_alarms-時間型別為“方法耗時超過閾值報警”名稱的內容

相關推薦

elk日誌大盤顯示日誌監控報警配置實踐

1. Logstash1.1具體內容詳解1.2使用整體配置1.2.1專案工程中的配置在logback對應的配置檔案logback-spring.xml中配置如下內容:        注意encoder標籤中對應的三個欄位:requestUrl,traceId和clientIp

【Java】日誌知識總結經常使用組合配置(commons-logging,log4j,slf4j,logback)

ng- binder mono leading black auto erb param 1.2 Log4j Apache的一個開放源碼項目,通過使用Log4j,我們能夠控制日誌信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務 器

nginx日誌詳解日誌切割

日誌管理 我們觀察nginx的server段,可以看到如下類似資訊 #access_log logs/host.access.log main; 這說明 該server, 它的訪問日誌的檔案是 logs/host.access.log ,使用的 格式”main”格式.除

動態應用分組發布,實現從雲資源生產到監控報警配置的全自動化

雲監控 全自動 雲資源 images 應該 之間 說明 art 圖片 摘要: 動態應用分組發布,實現從客戶雲資源生產到監控報警配置的全自動化 現狀當前的監控報警體系裏,用戶生成新的ECS服務器後,需要手工將這些ECS歸類到各個應用分組中,才能關聯報警規則。 但是隨著上雲越來

k8s node alertmanager監控報警配置方法

配置 報警 www emf int fat cpu 監控 exporter 概述 節點本身的監控主要監控CPU、內存、磁盤IO、文件系統可用空間即可。比如,對於使用來prometheus的alertmanager來做node報警,rules配置可以參考如下點進行配置即可。

zabbix之 自定義記憶體使用率監控報警 配置zabbix當記憶體剩餘不足15%的時候觸發報警

配置zabbix當記憶體剩餘不足15%的時候觸發報警   zabbix預設的剩餘記憶體報警:Average Lack of available memory on server {HOST.NAME}{Template OS Linux:vm.memory.size[avai

Zabbix郵箱報警微信報警配置

郵箱報警 1.註冊163郵箱 2.登陸網頁郵箱設定客戶端授權密碼 服務端安裝MUA軟體:mailx # yum install mailx -y # mail -V 12.5 7/5/10 # mailx -V 12.5 7/5/10配置公網郵箱資訊: # vim /etc/mail.rc 追加

nginx的安裝核心模組與配置實踐

1.安裝 安裝環境準備: (1)linux 核心2.6及以上版本: 只有2.6之後才支援epool ,在此之前使用select或pool多路複用的IO模型,無法解決高併發壓力的問題。通過命令uname -a 即可檢視。 #檢視 linux 核心 uname -a (2)

ELK 經典用法—企業自定義日誌收集切割mysql模塊

地理 class linux. mys query code 如果 ip地址 dev 本文收錄在Linux運維企業架構實戰系列 一、收集切割公司自定義的日誌 很多公司的日誌並不是和服務默認的日誌格式一致,因此,就需要我們來進行切割了。 1、需切割的日誌示例 2018

Web 檔案管理系統日誌實時監控工具

Finder 現成的工具。  部署方便:下載 Finder 後解壓並拷貝到 tomcat/webapp/ROOT,啟動 tomcat 即可。 特點: Web版的tail, less, grep, 從幾M到幾十G的日誌檔案都流暢自如。 Web版的跳板機,堡壘機。Web SSH支援

mybaits(查詢與別名、日誌框架顯示sql語句、物件屬性資料庫表字段不匹配resultMap使用、mysql資料查詢分頁、執行sql儲存過程、動態SQL語句)

主要是各種配置檔案,建議把整個專案搬到自己電腦上慢慢看。 建立maven專案 首先是各種配置檔案: pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m

Windows下監控mysql正在執行的sql日誌

Windows下監控mysql正在執行的sql和日誌   我們開發的時候大部分是在本機進行,使用本地的資料庫, 以本機mysql為例,先檢視mysql日誌啟用情況,預設情況下mysql日誌是關閉狀態,可以通過如下語句 SHOW VARIABLES LIKE&

ELK實戰篇--logstash日誌收集eslaticsearchkibana

前篇: ELK6.2.2日誌分析監控系統搭建和配置 ELK實戰篇 好,現在索引也可以建立了,現在可以來輸出nginx、apache、message、secrue的日誌到前臺展示(Nginx有的話直接修改,沒有自行安裝) 編輯nginx配置檔案,修改以下內容(在http模組下新增

從零到日誌採集索引視覺化、監控報警、rpc trace跟蹤-分散式唯一ID生成

public class UniqueIdGen implements IdGen {    // 開始使用該演算法的時間為: 2017-01-01 00:00:00private static final long START_TIME = 1483200000000L;// 時間戳bit數,最多能支援到2

如何用istio實現監控日誌採集

大家都知道istio可以幫助我們實現灰度釋出、流量監控、流量治理等一些功能。每一個功能都幫助我們在不同場景中實現不同的業務。那我們Istio是如何幫助我們實現監控和日誌採集的呢?這裡我們依然以Bookinfo應用程式作為貫穿此任務的示例程式。首先在叢集中安裝並部署Istio。收集遙測資料 建立一個新的

如何用istio實現監控日誌采集

bec warning alt ply 0ms ima .cn 發送 times 大家都知道istio可以幫助我們實現灰度發布、流量監控、流量治理等一些功能。每一個功能都幫助我們在不同場景中實現不同的業務。那我們Istio是如何幫助我們實現監控和日誌采集的呢?這裏我們依然以

flume 對日誌監控日誌資料正則清洗最後實時集中到hbase中的示例

今天學習了flume的簡單用法,順便思考了一下,對標準日誌格式的資料實時清洗和集中儲存今天介紹一下運用正則表示式對資料進行實時清洗,將資料儲存到hbase中,前面簡單的不分列的儲存,就直接貼程式碼1、運用flume的HBasesink--SimpleHbaseEventSer

從零到日誌採集索引視覺化、監控報警、rpc trace跟蹤-架構介紹

接下去的幾篇部落格將介紹如何從零開發出一套集零侵入的日誌採集、日誌索引及視覺化、基於日誌監控報警、基於日誌rpc trace跟蹤進行系統性能分析的系統,之後都會稱為監控中心繫統。經測試,該系統的採集以及

從零到日誌採集索引視覺化、監控報警、rpc trace跟蹤-日誌索引

之前說到日誌事件的設計、如何埋點以及基於jvm的程式如何對接我們的系統,接下去我們說下日誌如何進行索引。通過前三篇部落格可以知道資料通過LOGGER.info等列印日誌的函式就可以存入kafka,所以我們對日誌建立索引只需要實時讀kafka寫入es,為了提高實時索引的速率,我

第124課:Spark Streaming效能優化:通過Spark Streaming進行裝置日誌監控報警及效能優化

通過Spark Streaming進行裝置日誌監控報警及效能優化 1、Spark Streaming進行裝置監控及報警 2、Spark Streaming進行裝置監控效能優化 ELK Stack:一整套開源的日誌處理平臺解決方案,可以集日誌的採集、檢索、視