ELK简介
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
详细介绍请查阅官网:https://www.elastic.co/cn/
ELK部署
环境
- 安装好docker以及docker-compose组件
安装步骤
这里使用的都是6.3.0版本的镜像
具体可使用版本可查阅地址:https://www.docker.elastic.co/
1. 拉取镜像:使用docker pull
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.0
docker pull docker.elastic.co/kibana/kibana:6.3.0
docker pull docker.elastic.co/logstash/logstash:6.3.0
2. 使用tag命令重新打包镜像(名字太长,用起来麻烦)
docker tag docker.elastic.co/elasticsearch/elasticsearch:6.3.0 elasticsearch:latest
docker tag docker.elastic.co/kibana/kibana:6.3.0 kibana:latest
docker tag docker.elastic.co/logstash/logstash:6.3.0 logstash:latest
3. 本地新建好文件夹,目录结构如下
dockerfile
|- elasticsearch
| |- data
|- logstash
| |- config-dir
| | |- logstash.conf
|- docker-compose.yml
4. 编写docker-compose.yml文件
version: ‘3’
services:
elasticsearch:
image: elasticsearch:latest
container_name: elasticsearch
restart: always
networks:
- elk
ports:
- “9200:9200”
- “9300:9300”
volumes:
- ./elasticsearch/data:/usr/share/elasticsearch/data
logstash:
image: logstash:latest
container_name: logstash
restart: always
networks:
- elk
ports:
- "9601:9601"
volumes:
- ./logstash/config-dir:/config-dir
command: logstash -f /config-dir
depends_on:
- elasticsearch
kibana:
image: kibana:latest
container_name: kibana
restart: always
networks:
- elk
ports:
- "5601:5601"
depends_on:
- elasticsearch
networks:
elk:
5. 编写logstash.conf文件
input {
tcp {
port => 9601 #监听端口
mode => "server" #使用服务模式
tags => ["tags"]
codec => json_lines #使用json格式传输数据
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "%{[appname]}-%{+YYYY.MM.dd}" #使用应用名称和时间为日志索引
}
stdout {
codec => rubydebug
}
}
启动环境
- 打开终端,进入dockerfile目录
- 使用docker-compose up -d(以后台模式启动,既不输出日志)