1. 程式人生 > >ELK 5.0.1+Filebeat5.0.1實時監控MongoDB日誌並使用正則解析mongodb日誌

ELK 5.0.1+Filebeat5.0.1實時監控MongoDB日誌並使用正則解析mongodb日誌

    關於ELK5.0.1的安裝部署,請參考博文( ELK 5.0.1+Filebeat5.0.1 for LINUX RHEL6.6 監控MongoDB日誌),
本文重點說明如何適用filebeat實時監控mongodb資料庫日誌及在logstash正則解析mongodb日誌。
    部署完ELK5.0.1後,在需要監控mongodb日誌的資料庫伺服器上部署filebeat來抓取日誌,
首先需要修改filebeat配置檔案:
[[email protected] filebeat-5.0.1]# pwd
/opt/filebeat-5.0.1
[[email protected] filebeat-5.0.1]# 
[[email protected]
filebeat-5.0.1]# ls
data  filebeat  filebeat.full.yml  filebeat.template-es2x.json  filebeat.template.json  filebeat.yml  scripts
[[email protected] filebeat-5.0.1]# cat filebeat.yml 
filebeat :
 prospectors :
  -
   paths :
       - /root/rs0-0.log   #filebeat負責實時監控的mongodb日誌
   document_type : mongodblog  #指定filebeat傳送到logstash的mongodb日誌的文件型別為document_type,一定要指定(logstash接收解析匹配要使用)
   input_type : log
 registry_file : 
   /opt/filebeat-5.0.1/data/registry
output.logstash:
  hosts: ["10.117.194.228:5044
"] #logstash服務部署的機器IP地址及執行的服務埠號
[[email protected] filebeat-5.0.1]# 
其次修改logstash配置檔案:
[[email protected] config]# pwd
/opt/logstash-5.0.1/config
[[email protected] config]# cat logstash_mongodb.conf 
#input {
# stdin {}
#}
input{
  beats {
    host => "0.0.0.0"
    port => 5044
    type => mongodblog  #指定filebeat輸入的日誌型別是mongodblog
  }
}

filter {
  if [type] == "mongodblog" { #過濾器,只處理filebeat傳送過來的mogodblog日誌資料
    grok {  #解析傳送過來的mognodblog日誌
       match => ["message","%{TIMESTAMP_ISO8601:timestamp}\s+%{MONGO3_SEVERITY:severity}\s+%{MONGO3_COMPONENT:component}\s+(?:\[%{DATA:context}\])?\s+%{GREEDYDATA:body}"]
    }
    if [component] =~ "WRITE" {
      grok { #第二層解析body部分,提取mongodblog中的command_type、db_name、command、spend_time欄位
        match => ["body","%{WORD:command_type}\s+%{DATA:db_name}\s+\w+\:\s+%{GREEDYDATA:command}%{INT:spend_time}ms$"]
      }
    } else {
        grok {
          match => ["body","\s+%{DATA:db_name}\s+\w+\:\s+%{WORD:command_type}\s+%{GREEDYDATA:command}protocol.*%{INT:spend_time}ms$"]
        }
    }
    date {
      match => [ "timestamp", "UNIX", "YYYY-MM-dd HH:mm:ss", "ISO8601"]
      remove_field => [ "timestamp" ]
    }
  }
}

output{
elasticsearch {
hosts => ["192.168.144.230:9200"]
index => "mongod_log-%{+YYYY.MM}"
}
stdout {
codec => rubydebug
}
}
[
[email protected]
config]# 
    然後,確保ELK服務端的服務程序都已經開啟,啟動命令:
[[email protected] ]$ /home/elasticsearch/elasticsearch-5.0.1/bin/elasticsearch

[[email protected] ~]# /opt/logstash-5.0.1/bin/logstash -f /opt/logstash-5.0.1/config/logstash_mongodb.conf 

[[email protected] ~]# /opt/kibana-5.0.1/bin/kibana
在遠端端啟動filebeat,開始監控mongodb日誌:
[[email protected] filebeat-5.0.1]# /opt/filebeat-5.0.1/filebeat -e -c /opt/filebeat-5.0.1/filebeat.yml -d "Publish"
2017/02/16 05:50:40.931969 beat.go:264: INFO Home path: [/opt/filebeat-5.0.1] Config path: [/opt/filebeat-5.0.1] Data path: [/opt/filebeat-5.0.1/data] Logs path: [/opt/filebeat-5.0.1/logs]
2017/02/16 05:50:40.932036 beat.go:174: INFO Setup Beat: filebeat; Version: 5.0.1
2017/02/16 05:50:40.932167 logp.go:219: INFO Metrics logging every 30s
2017/02/16 05:50:40.932227 logstash.go:90: INFO Max Retries set to: 3
2017/02/16 05:50:40.932444 outputs.go:106: INFO Activated logstash as output plugin.
2017/02/16 05:50:40.932594 publish.go:291: INFO Publisher name: se122
2017/02/16 05:50:40.935437 async.go:63: INFO Flush Interval set to: 1s
2017/02/16 05:50:40.935473 async.go:64: INFO Max Bulk Size set to: 2048
2017/02/16 05:50:40.935745 beat.go:204: INFO filebeat start running.
2017/02/16 05:50:40.935836 registrar.go:66: INFO Registry file set to: /opt/filebeat-5.0.1/data/registry
2017/02/16 05:50:40.935905 registrar.go:99: INFO Loading registrar data from /opt/filebeat-5.0.1/data/registry
2017/02/16 05:50:40.936717 registrar.go:122: INFO States Loaded from registrar: 1
2017/02/16 05:50:40.936771 crawler.go:34: INFO Loading Prospectors: 1
2017/02/16 05:50:40.936860 prospector_log.go:40: INFO Load previous states from registry into memory
2017/02/16 05:50:40.936923 registrar.go:211: INFO Starting Registrar
2017/02/16 05:50:40.936939 sync.go:41: INFO Start sending events to output
2017/02/16 05:50:40.937148 spooler.go:64: INFO Starting spooler: spool_size: 2048; idle_timeout: 5s
2017/02/16 05:50:40.937286 prospector_log.go:67: INFO Previous states loaded: 1
2017/02/16 05:50:40.937404 crawler.go:46: INFO Loading Prospectors completed. Number of prospectors: 1
2017/02/16 05:50:40.937440 crawler.go:61: INFO All prospectors are initialised and running with 1 states to persist
2017/02/16 05:50:40.937478 prospector.go:106: INFO Starting prospector of type: log
2017/02/16 05:50:40.937745 log.go:84: INFO Harvester started for file: /root/rs0-0.log
    我們看到,這裡已經開始實時監控mongodb日誌是/root/rs0-0.log;然後,我們去logstash開啟的前臺視窗,可以看到有如下資訊:
{
        "severity" => "I",
          "offset" => 243843239,
      "spend_time" => "0",
      "input_type" => "log",
          "source" => "/root/rs0-0.log",
         "message" => "2017-02-04T14:03:30.025+0800 I COMMAND  [conn272] command admin.$cmd command: replSetGetStatus { replSetGetStatus: 1 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:364 locks:{} protocol:op_query 0ms",
            "type" => "mongodblog",
            "body" => "command admin.$cmd command: replSetGetStatus { replSetGetStatus: 1 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:364 locks:{} protocol:op_query 0ms",
         "command" => "{ replSetGetStatus: 1 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:364 locks:{} ",
            "tags" => [
        [0] "beats_input_codec_plain_applied"
    ],
       "component" => "COMMAND",
      "@timestamp" => 2017-02-04T06:03:30.025Z,
         "db_name" => "admin.$cmd",
    "command_type" => "replSetGetStatus",
        "@version" => "1",
            "beat" => {
        "hostname" => "se122",
            "name" => "se122",
         "version" => "5.0.1"
    },
            "host" => "se122",
         "context" => "conn272"
}
這說明logstash按照配置檔案正常過濾並按照指定的正則解析了mongodblog日誌,再到kibana建立索引:

然後,就能在kibana自定義檢視檢視到監控到的Mongodb日誌了:


相關推薦

ELK 5.0.1+Filebeat5.0.1實時監控MongoDB日誌使用解析mongodb日誌

    關於ELK5.0.1的安裝部署,請參考博文( ELK 5.0.1+Filebeat5.0.1 for LINUX RHEL6.6 監控MongoDB日誌), 本文重點說明如何適用filebeat實時監控mongodb資料庫日誌及在logstash正則解析mongodb日誌。     部署完ELK5.

簡單Python3爬蟲程式(1)簡單架構:佇列、集合、

<span style="font-size:18px;">import re import urllib.request import urllib from collections i

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

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

搭建ELK(ElasticSearch+Logstash+Kibana)日誌分析系統(十四) logstash grok 解析日誌

摘要 這一節補充一下logstash使用grok正則解析日誌 Grok 是 Logstash 最重要的外掛。通過在filter中使用grok,可以把日誌中的關鍵字匹配出來。 grok正則主要有兩部分: 一是grok自帶的grok模式表示式,即是gr

Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules

time module clip modules 搜索 set 版本信息 ace 發現 本周開發中遇到了一個項目無法發布的問題 網上搜索到http://www.cnblogs.com/chanedi/articles/2112477.html這位同行的博客,順利解決問題,

全新的閃念膠囊,OneStep 1.5 以及 BigBang 2.0 更新後的 Smartisan OS 3.6 體驗

win .com googl 下午 老羅 free 好的 作者 沒有 本文標簽: OneStep1.5 BigBang2.0 SmartisanOS3.6 閃念膠囊 隨著堅果手機的發布,Smartisan OS 也得到了例行更新。包括了全新的閃念膠囊,OneStep 1.5

第五章 XSSworm剖析 5.1 web2.0應用安全

客戶端 request 結果 不但 暴露 疑問 t對象 網站 開發者 1、改變世界的web2.0 理解起來其實很簡單。web1.0,註重信息從大網站流向個人; web2.0,註重信息從個人流向個人 2、web2.0的安全性 帶來的威脅: ①web1.0只是鼓勵用戶取閱讀

Centos7 安裝Python3.6.5 及 安裝ipython 6.1.0

Python3.6.5安裝 Ipython6.1.0安裝 一、centos7 安裝 Python3.6.5教程1、在安裝Python之前,需要先安裝一些後面遇到的依賴問題(如果有依賴問題,按照提示安裝): yum -y install zlib-devel bzip2-devel openssl

Light Image Resizer(5.1.2.0)圖片批量處理工具便攜已註冊版

dib html 清晰 adobe cut 當前 支持 IT 水印 之前也分享過這類圖片批量處理工具,都還可以,今天就在來分享一個,這次的ui界面雞哥感覺還行,今天介紹的這個工具是Light Image Resizer,它可以把一張或多張圖片批量改大小,只需要把那些圖片拖到

用少於2MB內存存下5百萬個介於01千萬之間的整數

public 了解 需要 tail 十進制數 可能 light return style 使用bitmap,對每個bit為進行映射、 把每個bit位映射成一個整數, 在2.5億個整數中找出不重復的整數,註,內存不足以容納這2.5億個整數。 轉載自https://it

EOSIO最新兩個版本1.1.51.2.0更新說明

EOSIO 1.1.5 發行說明 原文件參見:https://github.com/EOSIO/eos/releases/tag/v1.1.5 問題描述 修復net_plugin中未經檢查的CPU和記憶體增長(#5202) 當多個連線建立條目導致未經檢查儲存和處理增長時,net-pl

springboot 1.5.2升級2.0.4 mongodb中QueryBuilder中DBObject被棄用,改為Document構造及解決方式

今天封裝mongo工具包,發現QueryBuilder中DBObject被棄用,改為Document構造。為什麼,我們稍微分析一下  Document實現Map,與基本的DBObject相比,可編寫的程式碼更少 DBObject雖然不被推薦,那些從2.x驅動程式系列可能繼續使用DB

關於ThinkPHP 5.0.x使用心得1

1.設計初衷 a.為API開發而設計的高效能框架 b.為了敏捷WEB應用開發和簡化企業應用開發而誕生 2.特點 a.免費開源,快速、簡單的面向物件的輕量級PHP開發框架 b.簡潔實用的設計原則 c.高效能,易於使用 3.安裝方式有3種,具體如下 a.在官網中下載安裝包進行安裝

centos7.5版本安裝nginx.1.14.0時需要安裝的依賴

這是我所使用的linux版本7.5的,建議大家在虛擬機器中安裝好linux之後快照備份一下 安裝好系統後想要安裝lnmp環境,先安裝nginx 我下的nginx的tar包是nginx-1.14.0這個版本 參考朋友寫的nginx原始碼安裝文章安裝nginx https://no

解決Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules專案無法加入到tomcat

解決Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules 無法加入到tomcat中 問題如下 1.在eclipse的workspace裡面找到該專案.sett

Elam的caffe筆記之配置篇:基於CentOS6.5 python3.6 CUDA8.0 cudnnv5.1 opencv3.1 下的caffe配置

Elam的caffe筆記之配置篇:基於CentOS6.5 python3.6 CUDA8.0 cudnnv5.1 opencv3.1 下的caffe配置 作為一個完完全全的linux小白,平時連cmd開啟資料夾都要百度的人,面對單獨配置caffe這個棘手任務,第一反應就是搜教程。

Windows10離線安裝Anaconda3-4.2.0-Windows-x86_64.exe(對應python3.5)和tensorflow_gpu-1.7.0-cp35-cp35m-win_amd

Windows10離線安裝Anaconda3-4.2.0-Windows-x86_64.exe(對應python3.5)和tensorflow_gpu-1.7.0-cp35-cp35m-win_amd64.whl(對應GPU版本的tensorflow,35表示著對應python3.5) 安裝這個

tomcat部署專案時 報錯Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules

Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules   解決方法: 找到檔案 .settings->org.eclipse.wst.common.

解決Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules問題

一般來說,這種問題就是Web專案不能通過eclipse載入到伺服器上 解決辦法: 1.在eclipse的workspace裡面找到該專案 .settings 資料夾 2.編輯org.eclipse.wst.common.project.facet.core.xml

ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 遠端命令執行漏洞利用(GetShell)(轉載)

ThinkPHP官方2018年12月9日釋出重要的安全更新,修復了一個嚴重的遠端程式碼執行漏洞。該更新主要涉及一個安全更新,由於框架對控制器名沒有進行足夠的檢測會導致在沒有開啟強制路由的情況下可能的getshell漏洞,受影響的版本包括5.0和5.1版本,推薦儘快更新到最新版本。 漏洞分析 Thin