ELK日誌管理平臺

ELK

ELK是日誌收集、索引與檢索三件套,包含了三個組件

  • ElasticSearch
  • Logstash
  • Kibana

機器要求

三臺機器,機器的配置視線上日誌量而定

ES集羣:三臺機器

Logstash:一臺機器

Kibana:一臺機器

其中一臺機器不存儲ES數據,這臺機器同時安裝了ES、Logstash和Kibana

 

1、elasticsearch 安裝配置

配置文件 elasticsearch.yml

cluster.name: es-cluster
node.name: node0
path.data: /tmp/elasticsearch/data 
path.logs:  /tmp/elasticsearch/logs
network.host: ***
http.port: 9200
discovery.zen.ping.unicast.hosts: ["***"]

 

該配置說明如下:

cluster.name,集羣名,同一個集羣下配置同一個名字
node.name,節點名,同一個集羣下不同節點配置不同的名稱
path.data,數據存儲目錄,生產環境中需要指定一個容量比較大的磁盤
path.logs,日誌存儲目錄
network.host,本機ip
http.port,默認爲9200
discovery.zen.ping.unicast.hosts,集羣中其他機器的ip地址

查看集羣master狀態
http://ip:port/_cat/master?pretty

ElasticSearch刪除索引
使用命令

curl -XDELETE 'http://ip:port/logstash-2016.12.12?pretty'
其中logstash-2016.12.12爲索引名

查看ElasticSearch所有索引
http://ip:port/_cat/indices

ES後臺運行
一般來說我們不希望關閉終端時,ES進程中止,這時需要以後臺運行的方式運行ES

./elasticsearch -d 

 

安裝logstash

logstash要求java版本爲1.8及以上

安裝過程爲下載tar.gz文件後上傳至服務器

3.1 配置文件

在logstash的config同級目錄下新建etc文件夾用於存放配置文件,新建配置文件es-test.conf,內容如下:

input
{
 file
{
  path =>"/home/contentdev/elk/test.log"
}
}
 
output
{
  elasticsearch{
    hosts => ["ip:port"]
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
}

實戰:從filebeat接收 日誌數據。

input{
#       file{
#         path => "/zccdata/data/test.log"
#         start_position => "beginning"
#         type => "zcclog"
#       }
        beats{
          port => "5044"
        }
}
filter{
        grok{
          match => {"message" => "%{COMBINEDAPACHELOG}"}
        }
        mutate{
          remove_field => "host"
        }
}
#output{
#       if[level] == "debug"{
#       if "zcclog" in [tags]{
#         stdout{codec => rubydebug}
#       }
#}
output{
        if "zcclog" in [tags]{
          elasticsearch{
            hosts => "192.168.88.139:9200"
            index => "zcclog_%{level}_%{+YYYY.MM.dd}"
            document_type => "test"
          }
        }
}

filebeat 配置

filebeat.inputs:
 - type: log
   paths:
     - /zccdata/data/logs/*.log
   tags: ["zcclog"]
#   include_lines: ['ERROR', 'WARN']
   fields:
     level: debug
     review: 1
   fields_under_root: true
   multiline:
     pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
     negate: true
     match: after
output.logstash:
  hosts: ["192.168.88.139:5044"]

安裝kibana
安裝流程詳見:https://www.elastic.co/guide/en/kibana/current/targz.html

安裝完畢後需要配置config下的kibana.yml配置文件,配置一下幾項即可:

server.port:5601,打開註釋即可
server.host,配置本機ip,啓動後可以通過ip+端口訪問
elasticsearch.url,配置es的域名(ip)+端口
kibana.index,打開註釋即可

啓動kibana

cd到bin目錄,執行下面的命令

nohup ./kibana &

 

ES數據定期刪除
如果不刪除ES數據,將會導致ES存儲的數據越來越多,磁盤滿了之後將無法寫入新的數據。這時可以使用腳本定時刪除過期數據。

#/bin/bash
#es-index-clear
#只保留15天內的日誌索引
LAST_DATA=`date -d "-15 days" "+%Y.%m.%d"`
#刪除上個月份所有的索引
curl -XDELETE 'http://ip:port/*-'${LAST_DATA}'*'
可以視個人情況調整保留的天數,這裏的ip和port同樣設置爲不存儲數據的那臺機器。該腳本只需要在ES中一臺機器定時運行即可。

crontab -e添加定時任務:

0 1 * * * /search/odin/elasticsearch/scripts/es-index-clear.sh

每天的凌晨一點清除索引。

 

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