1、ELK的组成部分

基于Elasticsearch+Kibana+Filebeat简单说明_log

  • 通过上图我们可以看到,ELK 是由三个Elastic 的产品组合而成,
  • 分别是ElasticSearch、Logstash 和Kibana。
  • 三者之间是的部署关系如下图所示:
  • Logstash 就好比是挖矿工,将原料采集回来存放到ElasticSearch 这个仓库中,
  • Kibana 再将存放在ElasticSearch 中的原料进行加工包装成产品,输出到web 界面。
  • 基本工作原理如下图所示:

2、详细说明

Elasticsearch是个开源分布式搜索引擎,特点:分布式,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,可对日志进行收集、分析,并将过滤后的数据转给Elasticsearch使用
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供友好的web可视化界面,帮助您汇总、分析和搜索重要数据日志。
beats是开源的轻量级数据传输组件,面向简单明确的数据传输场景,可将数据传输给Logstash 和 ElasticSearch,安装在采集端
X-Pack是Elastcsearch的扩展插件,包括基于用户的安全管理、集群监控告警、数据报表导出、图探索,需分别在Elasticsearch和kibana节点安装,X-Pack是付费的。

常用于对应用产生的日志进行收集、整理、展示。

若想快速上手尝试下ELK,本文能帮到你
最简单的ELK架构  filebeat --> elasticsearch --> kibana
ELK服务器上安装elasticsearch+kibna,其他产生日志的服务器上安装filebeat

1,elasticsearch安装

yum install -y java-1.8.0

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.1.rpm
rpm -ivh elasticsearch-6.0.1.rpm

vi /etc/elasticsearch/elasticsearch.yml
cluster.name: my-app
node.name: elk-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200

systemctl daemon-reload
systemctl enable elasticsearch
systemctl restart elasticsearch
systemctl status elasticsearch

http://10.31.44.167:9200 若能看到文字最后'for search, you know',即启动成功

2,kibana安装

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.1-x86_64.rpm
rpm -ivh kibana-6.0.1-x86_64.rpm

vi /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
kibana.index: ".kibana"

systemctl enable kibana
systemctl start kibana
systemctl status kibana

3,客户端    filebeat安装

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.0.1-x86_64.rpm
rpm -ivh filebeat-6.0.1-x86_64.rpm

vi /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
tags: [webA]
setup.kibana:
host: "10.31.44.167:5601"
output.elasticsearch:
hosts: ["10.31.44.167:9200"]

systemctl enable filebeat
systemctl start filebeat
systemctl status filebeat

 

管理地址:http://10.31.44.167:5601

基于Elasticsearch+Kibana+Filebeat简单说明_Kibana _02


如图,将默认的logstash-*改为filebeat-*,create

基于Elasticsearch+Kibana+Filebeat简单说明_log_03


选择左边栏‘discovery’即可看到收集的日志展示

完整的ELK是:filebeat --> logstash --> elasticsearch --> kibana

filebeat配置

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
tags: [webA]
output.logstash:
hosts: ["10.31.44.167:5044"]

logstash配置

input {  
beats {
port => 5044
}
}
output{
elasticsearch {
hosts => ["10.31.44.167:9200"]
index => "test"
}
}

随后需在kibana上index pattern里添加logstash里配置的index名称beat,查看到对应的日志记录即success

为保证安全可将filebeat和logstash之间的传输加密,方法如下:

用openssl分别在filebeat和logstash上的当前目录下生成证书
openssl req -subj '/CN=10.31.44.167/' -days $((100*365)) -batch -nodes -newkey rsa:2048 -keyout ./filebeat.key -out ./filebeat.crt
将生成的证书放到/etc/pki/tls/certs/
最后将crt证书相互放到filebeat和logstash上

filebeat配置
tls:
## logstash server 的自签名证书。
certificate_authorities: ["/etc/pki/tls/certs/logstash.crt"]
certificate: "/etc/pki/tls/certs/filebeat.crt"
certificate_key: "/etc/pki/tls/private/filebeat.key"

logstash配置

input {
beats {
port => 5044
ssl => true
ssl_certificate_authorities => ["/etc/pki/tls/certs/filebeat.crt"]
ssl_certificate => "/etc/pki/tls/certs/logstash.crt"
ssl_key => "/etc/pki/tls/private/logstash.key"
ssl_verify_mode => "force_peer"
}
}

 

参考文档:

1、Logstash官方文档地址:https://www.elastic.co/guide/en/logstash/current/index.html

2、Filebeat官方文档地址:https://www.elastic.co/guide/en/beats/filebeat/current/index.html

3、Elasticsearch官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

4、Kibana 官方文档地址:https://www.elastic.co/guide/en/kibana/current/index.html