Filebeat,Redis和ELK6.x集中式日誌解決方案

簡介

           ELK 不是一款軟件,而是 Elasticsearch、Logstash 和 Kibana 三種軟件產品的首字母縮寫。這三者都是開源軟件,通常配合使用,而且又先後歸於 Elastic.co 公司名下,所以被簡稱爲 ELK Stack。而redis作爲一款性能優良的消息隊列。更是適合用在此場景中。

         下面是針對每個技術我的博客詳解。

          1.Elasticsearch6.x介紹

          2.Logstash6.x介紹

           3.Kibana6.x 介紹

          4.redis基礎介紹

  filebeat就在這裏介紹了。

        Filebeat是一個日誌文件託運工具,在你的服務器上安裝客戶端後,filebeat會監控日誌目錄或者指定的日誌文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),並且轉發這些信息到elasticsearch或者logstarsh中存放。所以說filebeat就是logstash-agent端的取代產品。且性能優良。


基本架構

 下圖是經典的日誌收集流程,只不過我們這次要在filebeat與Logstash之間加上一個消息隊列redis,Logstash服務端只需要從redis中獲取想要的數據。而所有的客戶端直接將數據發往redis。

 準備環境。

 Centos7 3臺,Elasticsearch6.1,logstash6.1,kibana6.1,filebeat安裝包。epel的yum源

1.首先配置 filebeat。

  安裝filebeat。只需 yum -y install filebeat 。安裝完成後,修改配置文件 /etc/filebeat/filebeat.yml

內容如下:

filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 3
setup.kibana:
output.redis:
   hosts: ["192.168.40.133"]
   port: 6379
   key: "nginx-log"

這樣的配置是 從 /var/log/nginx下讀取所有以.log結尾的文件。且發送到redis。且redis中以list方式存儲。鍵名爲 nginx-log

配置完成後。啓動redis。再啓動filebeat。

systemctl start redis

systemctl start filebeat

接下來應該讓logstash從redis中間鍵中讀取數據。那麼配置logstash。配置文件爲 /etc/logstash/conf.d/nginx.conf

input {
  redis {
    port => "6379"
    host => "192.168.40.133"
    data_type => "list"
    type => "log"
    key => "nginx-log"
  }
}
filter {
  grok {
    match => {
      "message" => '%{IPORHOST:remote_ip} - %{DATA:user_name} \[%{HTTPDATE:time}\] "%{WORD:request_action} %{DATA:request} HTTP/%{NUMBER:http_version}" %{NUMBER:response} %{NUMBER:bytes} "%{DATA:referrer}" "%{DATA:agent}"'
    }
  }
  date {
    match => [ "time", "dd/MMM/YYYY:HH:mm:ss Z" ]
    locale => en
  }
  geoip {
    source => "remote_ip"
    target => "geoip"
  }
  useragent {
    source => "agent"
    target => "user_agent"
  }
}
output {
  elasticsearch {
     hosts => "192.168.40.133:9200"
     index => "logstash-%{+YYYY.MM.dd}"
  }
}

配置完成後,啓動logstash。 logstash -f /etc/logstash/conf.d/nginx.conf。或systemctl start logstash

這裏logstash從redis中讀取數據。而將數據過濾後再發送至Elasticsearch。過濾時用到了grok將數據格式化。user_agent,geoip等等插件。

再啓動Elasticsearch和kibana。

在瀏覽器訪問kibana所在主機的5601端口。選擇Management。創建index parttern。


創建 logstash-*

好了,大功告成!




發佈了146 篇原創文章 · 獲贊 94 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章