ELK系列(四)、Logstash讀取nginx日誌寫入ES中

前面講了ELK的部署以及Logstash的插件的安裝方式,本篇就介紹一下如何使用Logstash讀取nginx的日誌,並寫入ES中,通過Kibana分析。

ELK系列(一)、安裝ElasticSearch+Logstash+Kibana+Filebeat-v7.7.0

ELK系列(二)、在Kibana中使用RESTful操作ES庫

ELK系列(三)、安裝Logstash插件及打包離線安裝包

-----------------------------使用Logstash讀取nginx日誌------------------------------------

日誌格式

上面講了如何給Logstash安裝插件以及離線安裝,安裝好的插件就在Logstash目錄下:

/opt/app/logstash-7.7.0/vendor/bundle/jruby/2.5.0/gems

nginx的日誌默認結構爲HTTPD_COMBINEDLOG,可以對比/usr/local/nginx/conf/nginx.conf和/opt/app/logstash-7.7.0/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns/httpd 中的格式,然後我們就可以直接使用該格式的正則作爲filter內容。

輸出到控制檯

配置logstash配置文件:

vim $LS_HOME/config/logstash_nginxlog2print.conf 

input {
   # 從文件讀取日誌信息
   file {
        path => "/usr/local/nginx/logs/access.log"
        type => "system"
        start_position => "beginning"
    }
 }

filter {
   grok {
      match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
}

output {
       # 標準輸出
       stdout {}
}

啓動驗證:

bin/logstash -f config/logstash_nginxlog2print.conf 

刷新nginx頁面,或使用curl命令訪問nginx,然後查看logstash的打印信息:

其中setting {:sincedb_path=>"/opt/app/logstash-7.7.0/data/plugins/inputs/file/.sincedb_d2343edad78a7252d2ea9cba15bbff6d", :path=>["/usr/local/nginx/logs/access.log"]}表示此配置文件讀取該access.log文件,且讀取的位置信息記錄在sincedb文件內,下次再啓動對這個日誌文件的監控都會從記錄的offset開始讀,因此如果需要從頭讀取需要把這個文件先刪掉。

輸出到ES

配置logstash配置文件

vim $LS_HOME/config/logstash_nginxlog2es.conf 

input {
   # 從文件讀取日誌信息
   file {
        path => "/usr/local/nginx/logs/access.log"
        type => "nginx_access"
        start_position => "beginning"
    }
 }

filter {
   grok {
      match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
}

output {
       # 輸出es
       elasticsearch {
          hosts => ["wykd:9200"]
          index => "nginx-%{+YYYY.MM.dd}"
      }

}

啓動驗證

先刪掉剛纔的sincedb文件,然後啓動監控並寫入ES:

rm -rf /opt/app/logstash-7.7.0/data/plugins/inputs/file/.sincedb_d2343edad78a7252d2ea9cba15bbff6d

bin/logstash -f config/logstash_nginxlog2es.conf 

Kibana中分析nginx日誌

可以在kibana中看到nginx日誌的索引已經自動創建了,此時我們使用curl命令訪問nginx,該索引內的數據量也會實時變化:

在kibana中創建index patten,並在discover中查看index數據:

 

如果對你有幫助,請點個贊鼓勵一下作者吧~ 謝謝!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章