通过 Docker 部署 ELK 日志收集系统


说明: elasticsearch、kibana、logstash、filebeat 版本要一致,elasticsearch-head 方便通过浏览器查看elasticsearch 的状态和索引数据。

工作原理: 通过 filebeat(轻量级数据收集引擎)收集日志后,推送给 Logstash (数据收集处理引擎)进行过滤、分析、丰富、统一格式等操作,将处理后的日志存储在 Elasticsearch (分布式搜索引擎)的索引中,最后由 Kibana(可视化化平台)搜索、展示存储在 Elasticsearch 中索引数据。

环境说明:

应用版本
docker19.03.9
elasticsearch7.17.2
kibana7.17.2
logstash7.17.2
filebeat7.17.2
elasticsearch-head5.0

1. 镜像拉取

docker pull  docker.elastic.co/elasticsearch/elasticsearch:7.17.2
docker pull  mobz/elasticsearch-head:5                           
docker pull  docker.elastic.co/kibana/kibana:7.17.2             
docker pull  docker.elastic.co/logstash/logstash:7.17.2     
docker pull  docker.elastic.co/beats/filebeat:7.17.2           

2. elasticsearch 安装

  1. 准备 elasticsearch.yml 文件
# 创建文件夹
mkdir /home/southgisdata/elasticsearch
# 创建 elasticsearch.yml 文件
vi  /home/southgisdata/elasticsearch/elasticsearch.yml
------------------------写入---------------------------
network.host: 0.0.0.0 
cluster.name: "docker-cluster" 
http.cors.enabled: true 
http.cors.allow-origin: "*" 
#cluster.initial_master_nodes: ["node-1"] 
xpack: 
 ml.enabled: false
 monitoring.enabled: false 
 security.enabled: false 
 watcher.enabled: false
#去除以下两项的注释,则开启身份认证
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
------------------------结束---------------------------
  1. 运行 elasticsearch 容器
docker run -d --restart=always -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /home/southgisdata/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
--name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.17.2
  1. 验证
    浏览器验证: 访问 192.168.1.100:9200
    在这里插入图片描述

命令行验证: curl http://localhost:9200/_nodes/http?pretty
在这里插入图片描述

注意: 如果出现以下报错!!!
在这里插入图片描述
处理方法如下:

  1. 修改内存:
    在/etc/sysctl.conf文件,最后添加以下内容:
vm.max_map_count=262144        
  1. 开启配置文件elasticsearch.yml 的以下配置:
cluster.initial_master_nodes: ["node-1"]

3. elasticsearch-head 安装

  1. 运行 elasticsearch-head 容器
docker run -d --restart=always -p 9100:9100 --name elasticsearch-head mobz/elasticsearch-head:5
  1. 修改 vendor.js 主要是能让数据浏览右边显示索引数据
    在这里插入图片描述
# 创建文件夹
mkdir -p /home/southgisdata/elasticsearch-head
# 进入文件夹下
cd /home/southgisdata/elasticsearch-head
# 拷贝 vendor.js 文件到宿主机上
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js ./
# 修改 vendor.js 文件内容
sed -i '/contentType:/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js

sed -i '/var inspectData = s.contentType/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js
  1. 再次运行 elasticsearch-head 容器
# 删除容器
docker rm -f elasticsearch-head
# 运行容器
docker run -d --restart=always -p 9100:9100 -v /home/southgisdata/elasticsearch-head/vendor.js:/usr/src/app/_site/vendor.js --name elasticsearch-head mobz/elasticsearch-head:5
  1. 验证
    **浏览器验证:**访问 192.168.1.100:9100
    在这里插入图片描述

4. logstash 安装

  1. 准备 logstash.yml、pipelines.yml 配置文件
# 创建文件夹
mkdir -p /home/southgisdata/logstash/config
# 创建 logstash.yml 文件
vi /home/southgisdata/logstash/config/logstash.yml
------------------------写入---------------------------
config:
  reload:
    automatic: true
    interval: 3s
xpack:
  management.enabled: false
  monitoring.enabled: false
------------------------结束---------------------------

# 创建 pipelines.yml 文件
vi /home/southgisdata/logstash/config/pipelines.yml
------------------------写入---------------------------
- pipeline.id: test
  path.config: "/usr/share/logstash/pipeline/logstash-filebeat.conf"
------------------------结束---------------------------
  1. 准备 logstash-filebeat.conf 配置文件
# 创建文件夹
mkdir -p /home/southgisdata/logstash/pipeline
# 创建 logstash.yml 文件
vi /home/southgisdata/logstash/pipeline/logstash-filebeat.conf
------------------------写入---------------------------
# 访问端口配置
input {
  beats {
    port => 5044
  }
}

# 过滤条件配置
#filter{
#  grok{
#    match => {
#    "message" => "%{COMBINEDAPACHELOG}"
#   }
#  }
#}

# 输出到ES配置
output {
  elasticsearch {
    hosts => ["http://192.168.1.100:9200"]	            
    index => "nginx_log"
  }
}
------------------------结束---------------------------
  1. 运行 logstash 容器
docker run -d  -p 5044:5044 \
-v /home/southgisdata/logstash/pipeline:/usr/share/logstash/pipeline \
-v /home/southgisdata/logstash/config:/usr/share/logstash/config \
--name logstash docker.elastic.co/logstash/logstash:7.17.2
  1. 验证
    启动时间要两分钟左右,之后试着访问web,即可在es-head的web界面看到nginx_log的索引
    在这里插入图片描述

5. kibana 安装

  1. 准备 kibana.yml 配置文件
# 创建文件夹
mkdir -p /home/southgisdata/kibana
# 创建 kibana.yml 配置文件
vi /home/southgisdata/kibana/kibana.yml
------------------------写入---------------------------
server.name: kibana
# 允许所有地址访问
server.host: "0.0.0.0"
# elasticsearch的地址
elasticsearch.hosts: ["http://192.168.1.100:9200/"] 
xpack.monitoring.ui.container.elasticsearch.enabled: true
------------------------写入---------------------------
  1. 运行 kibana 容器
docker run -d --restart=always -p 5601:5601 \
-v /home/southgisdata/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
--name kibana docker.elastic.co/kibana/kibana:7.17.2
  1. 验证
    查看 elasticsearch-head 会发现多了几个索引,这几个索引是 kibanna 生成的。
    在这里插入图片描述

6. filebeat 安装

  1. 准备 filebeat.yml 配置文件
# 创建文件夹
mkdir -p /home/southgisdata/filebeat
# 创建 kibana.yml 配置文件
vi /home/southgisdata/filebeat/filebeat.yml
------------------------写入---------------------------
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/access.log   #日志文件路径

output.logstash:
  hosts: ["192.168.1.100:5044"]  #logstash访问地址
------------------------写入---------------------------
  1. 运行 filebeat 容器
    映射了 filebeat 配置文件和 nginx 日志,这样 nginx 日志有变化时映射过去的文件也会随之同步。
docker run -d --restart=always --name filebeat \
-v /home/southgisdata/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /usr/local/nginx/logs/access.log:/var/log/access.log \
-d docker.elastic.co/beats/filebeat:7.17.2
  1. 验证
    查看 nginx_log 的索引,可以看到 nginx 的日志数据。
    在这里插入图片描述

7. 通过 kibana 展示收集的数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以使用Docker部署ELKElasticsearch, Logstash, Kibana)堆栈。以下是一些步骤: 1. 安装DockerDocker Compose:请确保你的机器上已经安装了DockerDocker Compose。 2. 创建一个新的目录并在该目录下创建一个`docker-compose.yml`文件。 3. 在`docker-compose.yml`文件中添加以下内容: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: elasticsearch environment: - discovery.type=single-node ports: - 9200:9200 - 9300:9300 volumes: - ./data:/usr/share/elasticsearch/data logstash: image: docker.elastic.co/logstash/logstash:7.14.0 container_name: logstash volumes: - ./logstash/config:/usr/share/logstash/pipeline ports: - 5044:5044 kibana: image: docker.elastic.co/kibana/kibana:7.14.0 container_name: kibana ports: - 5601:5601 ``` 这个`docker-compose.yml`文件定义了三个服务:Elasticsearch、Logstash和Kibana。每个服务都使用了ELK堆栈的官方Docker镜像。 4. 创建一个`data`目录,用于保存Elasticsearch的数据。 5. 在一个终端窗口中,导航到包含`docker-compose.yml`文件的目录,并运行以下命令来启动ELK堆栈: ```bash docker-compose up ``` 这将启动Elasticsearch、Logstash和Kibana容器,并将它们连接在一起。 6. 访问Kibana:在浏览器中访问`http://localhost:5601`,你将看到Kibana的登录界面。 现在,你已经成功地使用Docker部署ELK堆栈。你可以通过Logstash将日志数据发送到Elasticsearch,并使用Kibana来可视化和分析这些日志数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值