詳解EFK搭建過程及ES的生命周期管理
概述
今天主要介紹下EFK搭建過程及ES的生命周期管理,平臺(tái)采用EFK(ElasticSearch-6.6.1 + FileBeat-6.6.2 + Kibana-6.6.1)架構(gòu)。建議三個(gè)組件主次版本保持一致。
EFK概念
EFK采用集中式的日志管理架構(gòu)
- elasticsearch:一個(gè)開源分布式搜索引擎,提供搜集、分析、存儲(chǔ)數(shù)據(jù)三大功能。它的特點(diǎn)有:分布式,零配置,自動(dòng)發(fā)現(xiàn),索引自動(dòng)分片,索引副本機(jī)制,restful風(fēng)格接口,多數(shù)據(jù)源,自動(dòng)搜索負(fù)載等。
- kibana:可以為Logstash 、Beats和ElasticSearch提供友好的日志分析Web 界面,可以幫助匯總、分析和搜索重要數(shù)據(jù)日志。
- filebeat:輕量級(jí)日志采集器。需要在每個(gè)應(yīng)用服務(wù)器配置filebeat,來采集日志,并輸出到elasticsearch

一、ElasticSearch
- #rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- #vi/etc/yum.repos.d/elasticsearch.repo
- =====================================================
- [elasticsearch-6.x]
- name=Elasticsearch repository for 6.x packages
- baseurl=https://artifacts.elastic.co/packages/6.x/yum
- gpgcheck=1
- gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
- enabled=1
- autorefresh=1
- type=rpm-md
- =====================================================
- # yum install elasticsearch
- # vim /etc/elasticsearch/elasticsearch.yml
- ====================================================
- network.host: 0.0.0.0
- ====================================================
- # service elasticsearch restart
二、Kibana
1、部署
- # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- # vim /etc/yum.repos.d/kibana.repo
- =====================================================
- snippet.bash
- [kibana-6.x]
- name=Elasticsearch repository for 6.x packages
- baseurl=https://artifacts.elastic.co/packages/6.x/yum
- gpgcheck=1
- gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
- enabled=1
- autorefresh=1
- type=rpm-md
- =====================================================
- # yum install kibana
- # vim /etc/kibana/kibana.yml
- =====================================================
- server.host: "kibana服務(wù)器ip"
- elasticsearch.hosts: ["http://ES服務(wù)器IP:9200"]
- #如果通過反向代理訪問,則還需要添加如下配置。路徑具體值視情況而定
- server.basePath: "/kibana"
2、下載漢化包并復(fù)制到指定目錄
- wget https://codeload.github.com/anbai-inc/Kibana_Hanization/zip/master
- unzip master
- cp -r Kibana_Hanization-master/translations/ /usr/share/kibana/src/legacy/core_plugins/kibana/
-
- #修改語言配置
- #vim /etc/kibana/kibana.yml
- ======================================
- i18n.locale: "zh_CN"
- ======================================
3、重啟服務(wù)
- service kibana restart
三、FileBeat
Filebeat隸屬于Beats家族。目前Beats家族包含六種工具:
Packetbeat(搜集網(wǎng)絡(luò)流量數(shù)據(jù))
Metricbeat(搜集系統(tǒng)、進(jìn)程和文件系統(tǒng)級(jí)別的 CPU 和內(nèi)存使用情況等數(shù)據(jù))
Filebeat(搜集文件數(shù)據(jù))
Winlogbeat(搜集 Windows 事件日志數(shù)據(jù))
Auditbeat( 輕量型審計(jì)日志采集器)
Heartbeat(輕量級(jí)服務(wù)器健康采集器)
1、部署
- # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- # vim /etc/yum.repos.d/filebeat.repo
- ==================================================
- snippet.bash
- [filebeat-6.x]
- name=Elasticsearch repository for 6.x packages
- baseurl=https://artifacts.elastic.co/packages/6.x/yum
- gpgcheck=1
- gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
- enabled=1
- autorefresh=1
- type=rpm-md
- ==================================================
- # yum install filebeat
2、配置
/etc/filebeat/filebeat.yml
- filebeat.inputs:
- # Each - is an input. Most options can be set at the input level, so
- # you can use different inputs for various configurations.
- # Below are the input specific configurations.
- - type: log
- # Change to true to enable this input configuration.
- enabled: true
- # Paths that should be crawled and fetched. Glob based paths.
- paths:
- - d:/ams_logs/*.log
- encoding: gbk
- # 輸出配置
- output.elasticsearch:
- # Array of hosts to connect to.
- hosts: ["ES服務(wù)器IP:9200"]
3、重啟服務(wù)
service filebeat restart
效果圖如下:

四、ES生命周期管理
對(duì)于日志數(shù)據(jù),由于單個(gè)索引的存儲(chǔ)量的瓶頸,ES一般推薦使用時(shí)間作為后綴為同一份日志數(shù)據(jù)創(chuàng)建多個(gè)索引,而用戶則通過一個(gè)定時(shí)器來定時(shí)刪除過期的索引。ES在6.6之后,在x-pack中推出了索引生命周期管理相關(guān)的API來簡化與增強(qiáng)類似日志數(shù)據(jù)索引的管理。該方案基于時(shí)間將索引數(shù)據(jù)分為四個(gè)階段:Hot、Warm、Cold、Delete,對(duì)于這四種并給不同的數(shù)據(jù)階段,ES也給出了不同的數(shù)據(jù)處理方式,最終實(shí)現(xiàn)日志的生命周期管理
1、策略配置
管理→Index Lifecycle Policies,Create Policy,

2、日志生成
filebeat提供了兩種日志生成方式。一般情況下,建議使用默認(rèn)生成策略
2.1、默認(rèn)生成策略
打開filebeat配置文件,添加如下內(nèi)容。使用本方案所對(duì)應(yīng)的策略配置名稱,必須為 beats-default-policy

- output.elasticsearch:
- hosts: ["ES服務(wù)器IP:9200"]
- ilm.enabled: true
- ilm.rollover_alias: "fsl.ams"
- ilm.pattern: "{now/d}-000001"
2.2、高級(jí)生成策略
打開filebeat配置文件,添加如下內(nèi)容。在6.6.1版本下,使用本方案前,請(qǐng)事先在es上創(chuàng)建合適的索引模板。否則其直接生成的索引將不會(huì)存在別名(疑似bug),最終造成無法使用生命周期策略。
- output.elasticesarch:
- hosts: ["ES服務(wù)器IP:9200"]
- index: fsl.ams-%{+yyyy.MM.dd}
- setup.template.name: "fsl.ams"
- setup.template.pattern: "fsl.ams-*"
- setup.template.settings.index.lifecycle.rollover_alias: "fsl.ams"
- setup.template.settings.index.lifecycle.name: "beats-default-policy"
