Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)

ELK是由 Elasticsearch、Logstash和Kibana 三部分组件组成。

Elasticsearch 是个开源分布式搜索引擎,它的特色有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。node

Logstash 是一个彻底开源的工具,它能够对你的日志进行收集、分析,并将其存储供之后使用 nginx

kibana 是一个开源和免费的工具,它能够为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,能够帮助您汇总、分析和搜索重要数据日志。git

+github

Filebeat 是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并未来自成百上千台机器的数据发送到 Logstash 或 Elasticsearch。
docker

 

 

 Docker 镜像统一从 https://hub.docker.com/ 下载 (安装时请使用统一版本)json

 

、Docker 安装 Elasticsearch

官网镜像地址:https://hub.docker.com/_/elasticsearchvim

找到目前最新的(Tags)是 7.1.1ruby

# 下载镜像 查看镜像
docker pull elasticsearch:7.1.1
docker images

# 建立自定义的网络(用于链接到链接到同一网络的其余服务(例如Kibana))
docker network create somenetwork

# 运行
elasticsearch
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.1.1

# 查看容器状态
docker ps

# 检测 elasticsearch 是否启动成功
curl 127.0.0.1:9200

Elasticsearch 安装启动完成

 

2、Docker 安装 Kibana

官网镜像地址:https://hub.docker.com/_/kibanarestful

使用和 elasticsearch 相同版本镜像 7.1.1 (不同可能会出现问题)网络

# 下载镜像 查看镜像
docker pull kibana:7.1.1
docker images

注意:在本例中,Kibana使用默认配置,并但愿链接到正在运行的Elasticsearch实例http://localhost:9200

# 运行 Kibana
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.1.1

# 查看容器启动状态
docker ps

 

访问 http://127.0.0.1:5601  (启动可能会较慢,如失败等几秒再尝试刷新一下)

 

Kibana 安装启动完成

 

3、Docker 安装 Logstash

官网镜像地址:https://hub.docker.com/_/logstash

使用同版本镜像 7.1.1 

# 下载镜像 查看镜像
docker pull logstash:7.1.1
docker images

 

我在工做目录创建一个 docker 目录 并在里面建立了 logstash 目录,用来存放全部配置

 

里面放了 logstash 的配置文件

 

logstash.yml (文件内容)

path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash
conf.d/test.conf (文件内容)

input {
    beats {
    port => 5044
    codec => "json"
}
}

output {
  elasticsearch { hosts => ["elasticsearch:9200"] }
  stdout { codec => rubydebug }
}
启动 Logstash 

记得映射上面两个目录 {path}

docker run -it -d -p 5044:5044 --name logstash --net somenetwork -v {path}/logstash.yml:/usr/share/logstash/config/logstash.yml -v {path}/conf.d/:/usr/share/logstash/conf.d/ logstash:7.1.1

查看容器运行状态
docker ps

启动成功

 

4、Docker 安装 Filebeat

官网镜像地址:https://hub.docker.com/_/filebeat

使用同版本镜像 7.1.1 

# 下载镜像 查看镜像
docker pull store/elastic/filebeat:7.1.1
docker images

# 下载默认官方配置文件 (暂时在当前目录建立一个 filebeat 目录 用来放 filebeat 配置文件)
curl -L -O https://raw.githubusercontent.com/elastic/beats/7.1/deploy/docker/filebeat.docker.yml

# 打开配置文件
vim
filebeat.docker.yml


# 增长下面的配置 (收集 .log 数据 把数据发送到当前网络5044端口 (logstash 端口) )
# 这个地方的 .log 要保证有几条测试数据

filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/*.log

output.logstash:
hosts: ['{ip}:5044']
 

# 运行Filebeat

# 请更改下面两个路径
{nginx-path} = 本地的日志文件目录(映射到容器中 做为数据源)
{path} = Filebeat配置文件路径
{ip} =
elasticsearch 地址
docker run--name filebeat--user=root -d --net somenetwork --volume="{nginx-path}:/var/log/nginx/" --volume="{path}/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" --volume="/var/run/docker.sock:/var/run/docker.sock:ro" store/elastic/filebeat:7.1.1
 

# 查看容器启动状态
docker ps

 

 

 

启动成功 

如今去 Kibana 查看数据,已经有数据了 

 

(你们不要拿来命令就执行啊,中间有些路径之类的要本身改改。)到此 最基本的几个软件通信配置 结束了。

还有不少要探索的地方。

待续...
相关文章
相关标签/搜索