Docker安裝Elasticsearch+kibana+filebeat(7.3.1)

關於elk這方面的介紹我這邊就不多說了,之前有過介紹。我這篇文章爲了應對目前我們這個公司業務量不大情況而搭建的日誌收集系統。

一、安裝Elasticsearch

官網鏈接https://www.elastic.co

安裝docker我這裏及不說了

從官網拉取elasticsearch鏡像

[root@devon ~]# docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.1

[root@devon ~]# docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.3.1 <!--啓動-->

二、安裝kibana

拉取kibana鏡像

[root@devon ~]# docker pull docker.elastic.co/kibana/kibana:7.3.1

啓動

[root@devon ~]# docker run --name kibana -d -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://192.168.10.8:9200 kibana:7.3.1 <!--IP換成自己的-->

[root@devon ~]# docker run --name kibana -d -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://192.168.10.8:9200 kibana:7.3.1
0e07e9d646fe3e0786e434d2b97a813dac9c17cbd2ea664e0e5151dc4c4d4417
[root@devon ~]# docker ps -a

CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS            
0e07e9d646fe        kibana:7.3.1                                          "/usr/local/bin/du..."   8 seconds ago       Up 7 seconds      
400f07c09c01        docker.elastic.co/elasticsearch/elasticsearch:7.3.1   "/usr/local/bin/do..."   6 hours ago         Up 6 hours

訪問kibana IP+5601
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)

下面我們就利用filebeat收集日誌吧

[root@devon ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz

[root@devon ~]# tar -zxf filebeat-6.2.4-linux-x86_64.tar.gz -C /data/

[root@devon ~]# mv /data/filebeat-6.2.4-linux-x86_64/ /data/filebeat-6.2.4

[root@devon ~]# vim /data/filebeat-6.2.4/filebeat.yml

怎麼利用filebeat設置多個索引,方便查詢日誌呢,我選擇自定義的filebeat.yml文件

下面是我簡單的收集的三個Java服務的日誌。也可以更改默認模板,如果安裝了logstash,格式需要修改,分析日誌的格式一般由開發定。他們若有特殊要求格式,就另有他們便也json格式文件或者其他格式。

filebeat.prospectors:
- input_type: log
  paths:
    - /var/application/ivy-user-service/logs/catalina.out
  fields:
    type: "user"
- input_type: log
  paths:
    - /var/application/ivy-sbd-service/logs/catalina.out
  fields:
    type: "sbd"
- input_type: log
  paths:
    - /var/application/ivy-order-service/logs/catalina.out
  fields:
    type: "order"
  json.message_key: log
  json.keys_under_root: true
output.elasticsearch:
  hosts: ["192.168.20.10:9200"]
  #index: "logs-%{[beat.version]}-%{+yyyy.MM.dd}"
  indices:
    - index: "user-service-log"
      when.equals:
        fields.type: "user"
    - index: "sbd-service-log"
      when.equals:
        fields.type: "sbd"
    - index: "order-service-log"
      when.equals:
        fields.type: "order"

然後如果我們有利用elasticsearch-head插件來管理集羣的話我們可以看到
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
elasticsearch-head默認9100端口,爲了避免端口發生衝突我就更改了下。如果線上的話,也沒必要用這個管理。看自己的需求吧。

利用kibana和elasticsearch索引關聯
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
其上面的圖是我6.8.2版本的kinbana,到現在的7.3.1幾乎沒有差別

下面我們就來創建可視化圖形吧。
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
7.3.1版本創建圖表發生一點變化。
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
可以根據自己的需求來創建不同樣式的圖表,這裏我就先創建line圖表
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
點擊你想創建的索引

Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
Docker安裝Elasticsearch+kibana+filebeat(7.3.1)
至於kibana其他功能就自己探討嘍,

如果這樣的架構滿足不了也可以換成elk+kafaka+zookeeper等等

如果是集羣模式的可以介紹兩個管理集羣的插件。

cerebo是kopf在es5上的替代者,通過web界面來管理和監控elasticsearch集羣狀態信息

bigdesk 統計分析和圖表化elasticsearch集羣狀態信息

ES數據定期刪除

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

#/bin/bash
#es-index-clear
#只保留7天內的日誌索引
LAST_DATA=`date -d "-7 days" "+%Y.%m.%d"`
#刪除上個月份所有的索引
curl -XDELETE 'http://ip:port/*-'${LAST_DATA}'*'

可以視個人情況調整保留的天數,這裏的ip和port同樣設置爲不存儲數據的那臺機器。該腳本只需要在ES中一臺機器定時運行即可。然後再調用crontab
crontab -e添加定時任務:

0 1 * * * /root/cron/del_es.sh

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

也可以把es-index-clear.sh內容換成其它優秀代碼,如下:

#!/bin/bash

###################################
#刪除早於十天的ES集羣的索引
###################################
function delete_indices() {
    comp_date=`date -d "10 day ago" +"%Y-%m-%d"`
    date1="$1 00:00:00"
    date2="$comp_date 00:00:00"

    t1=`date -d "$date1" +%s` 
    t2=`date -d "$date2" +%s` 

    if [ $t1 -le $t2 ]; then
        echo "$1時間早於$comp_date,進行索引刪除"
        #轉換一下格式,將類似2017-10-01格式轉化爲2017.10.01
        format_date=`echo $1| sed 's/-/\./g'`
        curl -XDELETE http://127.0.0.1:9200/*$format_date
    fi
}

curl -XGET http://127.0.0.1:9200/_cat/indices | awk -F" " '{print $3}' | awk -F"-" '{print $NF}' | egrep "[0-9]*\.[0-9]*\.[0-9]*" | sort | uniq  | sed 's/\./-/g' | while read LINE
do
    #調用索引刪除函數
    delete_indices $LINE
done

下面這兩個腳本是在網上借鑑的,歡迎大家一起學習研究。

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