当前位置:   article > 正文

利用Docker-Compose部署ELK系统_docker-compose elk

docker-compose elk

ELK日志系统搭建

一、ELK日志系统简介

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。目前新增了一个FileBeat,它是一个轻量级的日志收集处理工具,Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,当前,官方也推荐使用此工具。

        目前Filebeat组件集成了Logstash所需的大部分功能,在某些情况下可以直接取代Logstash,该组件可以将收集到的数据进行加工并生成索引直接传给Elasticsearch。本文档依旧采用四个组件进行搭建。本文档搭建的ELK系统是一个较为简易的系统,并不涉及ELK较深的使用方法,可当作一个初学者搭建历程的日志记录,如有错误,还请各位大佬指正!

名称版本
Ubuntuubuntu-22.04-desktop-amd64
Elasticsearch7.17.1
Kibana7.17.1
Logstash7.17.1
FileBeat7.17.1

二、ELK日志系统搭建

1、环境搭建

#安装docker#

sudo apt install docker.io

#检查docker版本信息#

sudo docker --version 

Docker version 20.10.12, build 20.10.12-0ubuntu4

#安装docker-compose#

sudo apt install docker-compose

#检查docker-compose版本信息#
sudo docker-compose --version

docker-compose version 1.29.2, build unknown

#查看www文件夹的树图结构#

sudo tree /www

  1. /www
  2. ├── apps
  3. │   ├── elk_all.yml
  4. │   ├── elk_elasticsearch.yml
  5. │   ├── elk_filebeat.yml
  6. │   ├── elk_kibana.yml
  7. │   └── elk_logstash.yml
  8. ├── elasticsearch
  9. │   ├── conf
  10. │   │   └── elasticsearch.yml
  11. │   ├── data
  12. │   └── logs
  13. ├── filebeat
  14. │   ├── conf
  15. │   │   └── filebeat.yml
  16. │   ├── data
  17. │   └── logs
  18. ├── kibana
  19. │   └── conf
  20. │   └── kibana.yml
  21. ├── logstash
  22. │   └── conf
  23. │   └── logstash.conf
  24. └── welcome
  25. └── welcome.log

2、Elasticsearch的搭建与配置

创建elasticsearch所需的文件夹和docker-compose执行文件:

sudo mkdir -p /www/apps

#写入elasticsearch的docker-compose配置文件#
sudo vim /www/apps/elk_elasticsearch.yml

 elk_elasticsearch.yml的配置如下所示:

  1. version: "3"
  2. services:
  3. elasticsearch:
  4. container_name: elasticsearch
  5. hostname: elasticsearch
  6. image: registry.cn-hangzhou.aliyuncs.com/koujiang-images/elasticsearch:7.17.1
  7. restart: always
  8. user: root
  9. ports:
  10. - 9200:9200
  11. volumes:
  12. - /www/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml #elasticsearch配置文件的映射
  13. - /www/elasticsearch/data:/usr/share/elasticsearch/data #映射数据文件方便后期调试(需提前在相应文件家内创建)
  14. - /www/elasticsearch/logs:/usr/share/elasticsearch/logs #映射数据文件方便后期调试(需提前在相应文件家内创建)
  15. environment:
  16. - "discovery.type=single-node" #设置elasticsearch为单节点
  17. - "TAKE_FILE_OWNERSHIP=true"
  18. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  19. - "TZ=Asia/Shanghai"

创建elasticsearch所需的文件夹和配置文件:

sudo mkdir -p /www/elasticsearch/data
sudo mkdir -p /www/elasticsearch/logs
sudo mkdir -p /www/elasticsearch/conf

#写入elasticsearch的配置信息#
sudo vim /www/elasticsearch/conf/elasticsearch.yml

 elasticsearch.yml的配置如下所示:

  1. # 集群名称
  2. cluster.name: elasticsearch-cluster
  3. network.host: 0.0.0.0
  4. # 支持跨域访问
  5. http.cors.enabled: true
  6. http.cors.allow-origin: "*"
  7. # 安全认证
  8. xpack.security.enabled: false
  9. #http.cors.allow-headers: "Authorization"

创建 elasticsearch容器:

sudo docker-compose -f /www/apps/elk_elasticsearch.yml up -d

#检测 elasticsearch是否创建成功#

sudo curl 127.0.0.1:9200 

 展示如下信息则表示 elasticsearch创建成功:

  1. {
  2. "name" : "elasticsearch",
  3. "cluster_name" : "elasticsearch-cluster",
  4. "cluster_uuid" : "AG_lAnGBT06VnTJDHTSfEQ",
  5. "version" : {
  6. "number" : "7.17.1",
  7. "build_flavor" : "default",
  8. "build_type" : "docker",
  9. "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
  10. "build_date" : "2022-02-23T22:20:54.153567231Z",
  11. "build_snapshot" : false,
  12. "lucene_version" : "8.11.1",
  13. "minimum_wire_compatibility_version" : "6.8.0",
  14. "minimum_index_compatibility_version" : "6.0.0-beta1"
  15. },
  16. "tagline" : "You Know, for Search"
  17. }

 3、Kibana的搭建与配置

创建Kibana所需的docker-compose执行文件:

#写入Kibana的docker-compose配置文件#

sudo vim /www/apps/elk_kibana.yml 

 elk_kibana.yml的配置如下: 

  1. version: "3"
  2. services:
  3. kibana:
  4. container_name: kibana
  5. hostname: kibana
  6. image: registry.cn-hangzhou.aliyuncs.com/koujiang-images/kibana:7.17.1
  7. restart: always
  8. ports:
  9. - 5601:5601
  10. volumes:
  11. - /www/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml #配置文件的映射
  12. environment:
  13. - elasticsearch.hosts=http://本机IP地址:9200
  14. - "TZ=Asia/Shanghai"

创建Kibana所需的文件夹和配置文件: 

sudo mkdir -p /www/kibana/conf

sudo vim /www/kibana/conf/kibana.yml

 kibana.yml的配置如下:

  1. # 服务端口
  2. server.port: 5601
  3. # 服务IP
  4. server.host: "0.0.0.0"
  5. # ES
  6. elasticsearch.hosts: ["http://本机IP地址:9200"]
  7. # 汉化
  8. i18n.locale: "zh-CN"

创建 kibana容器:

docker-compose -f /www/apps/elk_kibana.yml up -d

 当在网页里输入“本机地址:5601”显示如下页面,则表明容器创建成功:

 4、Logstash的搭建与配置

创建Logstash所需的docker-compose执行文件:

#写入Logstash的docker-compose配置文件#
sudo vim /www/apps/elk_logstash.yml

 elk_logstash.yml的配置文件如下:

  1. version: "3"
  2. services:
  3. logstash:
  4. container_name: logstash
  5. hostname: logstash
  6. image: registry.cn-hangzhou.aliyuncs.com/koujiang-images/logstash:7.17.1
  7. command: logstash -f ./conf/logstash.conf
  8. restart: always
  9. volumes:
  10. # 映射到容器中
  11. - /www/logstash/conf/logstash.conf:/usr/share/logstash/conf/logstash.conf
  12. environment:
  13. - elasticsearch.hosts=http://本机IP地址:9200
  14. # 解决logstash监控连接报错
  15. - xpack.monitoring.elasticsearch.hosts=http://192.168.216.144:9200
  16. - "TZ=Asia/Shanghai"
  17. ports:
  18. - 5044:5044

创建Logstash所需的文件夹和配置文件: 

sudo mkdir -p /www/logstash/conf

sudo vim /www/logstash/conf/logstash.conf

logstash.conf的配置如下:

  1. input {
  2. beats {
  3. port => 5044
  4. client_inactivity_timeout => 36000
  5. }
  6. }
  7. # 分析、过滤插件,可以多个
  8. filter {
  9. grok {
  10. match => ["message", "%{TIMESTAMP_ISO8601:logdate}"]
  11. }
  12. date {
  13. match => ["logdate", "yyyy-MM-dd HH:mm:ss.SSS"]
  14. target => "@timestamp"
  15. }
  16. }
  17. output {
  18. elasticsearch {
  19. hosts => "http://本机IP地址:9200"
  20. index => "%{[fields][log_topics]}-%{+YYYY.MM.dd}"
  21. document_type => "%{[@metadata][type]}"
  22. }
  23. }

创建logstash容器:

sudo docker-compose -f /www/apps/elk_logstash.yml up -d

检验logstash容器:

sudo docker logs logstash -f

 当显示如下日志,则表明容器创建成功:

  5、Filebeat的搭建与配置

创建Filebeat所需的docker-compose执行文件:

#写入Filebeat的docker-compose配置文件#
sudo vim /www/apps/elk_filebeat.yml

 elk_filebeat.yml的配置如下所示:

  1. version: "3"
  2. services:
  3. filebeat:
  4. # 容器名称
  5. container_name: filebeat
  6. # 主机名称
  7. hostname: filebeat
  8. # 镜像
  9. image: registry.cn-hangzhou.aliyuncs.com/koujiang-images/filebeat:7.17.1
  10. # 重启机制
  11. restart: always
  12. # 启动用户
  13. user: root
  14. # 持久化挂载
  15. volumes:
  16. # 映射到容器中[作为数据源]
  17. - /var/lib/docker/containers:/var/lib/docker/containers
  18. - /www/welcome:/www/welcome
  19. # 方便查看数据及日志
  20. - /www/filebeat/logs:/usr/share/filebeat/logs
  21. - /www/filebeat/data:/usr/share/filebeat/data
  22. # 映射配置文件到容器中
  23. - /www/filebeat/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml
  24. # 使用主机网络模式
  25. network_mode: host

创建filebeat所需的文件夹和配置文件:

sudo mkdir -p /www/filebeat/logs
sudo mkdir -p /www/filebeat/data
sudo mkdir -p /www/filebeat/conf

#写入elasticsearch的配置信息#
sudo vim /www/filebeat/conf/filebeat.yml

 elasticsearch.yml的配置如下所示:

  1. filebeat.inputs:
  2. - type: log
  3. enabled: true
  4. scan_frequency: 1s
  5. paths:
  6. - /www/welcome/*.log
  7. multiline:
  8. pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}'
  9. negate: true
  10. match: after
  11. fields:
  12. log_topics: welcome
  13. #- type: docker
  14. # combine_partial: true
  15. # scan_frequency: 1s
  16. # containers:
  17. # path: "/var/lib/docker/containers"
  18. # ids:
  19. # - "*"
  20. # tags: ["docker"]
  21. # fields:
  22. # log_topics: docker
  23. - type: docker
  24. scan_frequency: 1s
  25. containers:
  26. path: "/var/lib/docker/containers"
  27. ids:
  28. - "#容器日志id(全称)#"
  29. tags: ["docker"]
  30. fields:
  31. log_topics: #标签名#
  32. output.logstash:
  33. hosts: ["192.168.216.144:5044"]

创建校验文件:

sudo mkdir -p /www/welcome

sudo vim /www/welcome/welcome.log

!!!!!WELCOME!!!!!

创建 elasticsearch容器:

sudo docker-compose -f /www/apps/elk_filebeat.yml up -d

#检测filebeat是否创建成功#

sudo docker logs filebeat -f

 展示如下信息则表示filebeat创建成功并处于监听状态中:

 进行如下操作对welcome.log的日志进行刷新,防止elasticsearch的索引刷新不成功:

sudo vim /www/welcome/welcome.log

!!!!!WELCOME!!!!!123123123

按照如下流程进行操作:

 

 

 

 6、创建总的docker-compose文件

创建集合上述四个组件的总docker-compose文件: 

sudo vim /www/apps/elk_all.yml

elk_all.yml的配置如下:

  1. version: "3"
  2. services:
  3. elasticsearch:
  4. container_name: elasticsearch
  5. hostname: elasticsearch
  6. image: registry.cn-hangzhou.aliyuncs.com/koujiang-images/elasticsearch:7.17.1
  7. restart: always
  8. user: root
  9. ports:
  10. - 9200:9200
  11. volumes:
  12. - /www/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  13. - /www/elasticsearch/data:/usr/share/elasticsearch/data
  14. - /www/elasticsearch/logs:/usr/share/elasticsearch/logs
  15. environment:
  16. - "discovery.type=single-node"
  17. - "TAKE_FILE_OWNERSHIP=true"
  18. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  19. - "TZ=Asia/Shanghai"
  20. kibana:
  21. container_name: kibana
  22. hostname: kibana
  23. image: registry.cn-hangzhou.aliyuncs.com/koujiang-images/kibana:7.17.1
  24. restart: always
  25. ports:
  26. - 5601:5601
  27. volumes:
  28. - /www/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml
  29. environment:
  30. - elasticsearch.hosts=http://192.168.216.144:9200
  31. - "TZ=Asia/Shanghai"
  32. depends_on:
  33. - elasticsearch
  34. logstash:
  35. container_name: logstash
  36. hostname: logstash
  37. image: registry.cn-hangzhou.aliyuncs.com/koujiang-images/logstash:7.17.1
  38. command: logstash -f ./conf/logstash.conf
  39. restart: always
  40. volumes:
  41. # 映射到容器中
  42. - /www/logstash/conf/logstash.conf:/usr/share/logstash/conf/logstash.conf
  43. environment:
  44. - elasticsearch.hosts=http://192.168.216.144:9200
  45. # 解决logstash监控连接报错
  46. - xpack.monitoring.elasticsearch.hosts=http://192.168.216.144:9200
  47. - "TZ=Asia/Shanghai"
  48. ports:
  49. - 5044:5044
  50. depends_on:
  51. - elasticsearch
  52. filebeat:
  53. # 容器名称
  54. container_name: filebeat
  55. # 主机名称
  56. hostname: filebeat
  57. # 镜像
  58. image: registry.cn-hangzhou.aliyuncs.com/koujiang-images/filebeat:7.17.1
  59. # 重启机制
  60. restart: always
  61. # 启动用户
  62. user: root
  63. # 持久化挂载
  64. volumes:
  65. # 映射到容器中[作为数据源]
  66. - /var/lib/docker/containers:/var/lib/docker/containers
  67. - /www/welcome:/www/welcome
  68. # 方便查看数据及日志
  69. - /www/filebeat/logs:/usr/share/filebeat/logs
  70. - /www/filebeat/data:/usr/share/filebeat/data
  71. # 映射配置文件到容器中
  72. - /www/filebeat/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml
  73. # 使用主机网络模式
  74. network_mode: host
  75. depends_on:
  76. - elasticsearch
  77. - logstash

(此文件可同时启动四个组件)

参考文档:Docker搭建ELK日志日志分析系统_真滴是小机灵鬼的博客-CSDN博客_elk日志分析系统docker

ELK7==docker-compose部署filebeat和ELK=filebeat收集springboot日志,logstash过滤后存入ES,kibana从ES读取数据并可视化显示_一个java开发的博客-CSDN博客_docker elk7

ELK 收集 Docker 日志_王清欢Randy的博客-CSDN博客_elk收集docker日志

ELK实现日志收集_混子工程师的博客-CSDN博客_elk日志收集

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/992953
推荐阅读
相关标签
  

闽ICP备14008679号