前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于docker部署elk进行日志管理和分析

基于docker部署elk进行日志管理和分析

作者头像
IT不难
发布2022-05-23 09:52:10
4960
发布2022-05-23 09:52:10
举报
文章被收录于专栏:IT不难技术家园

前言

ELK 是 Elasticsearch、Logstrash 和 Kibana 的缩写,它们代表的是一套成熟的日志管理系统,ELK Stack 已经成为目前最流行的集中式日志解决管理方案。

Elasticsearch

分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作

Logstrash

数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;

Kibana

数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示

Filebeat

ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发是对它的替代。在需要采集日志数据的服务上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取日志文件数据,迅速发送到 Logstash 进行解析,或直接发送到 Elasticsearch 进行集中式存储和分析。

es集群部署

安装docker

docker和docker-compose一键安装脚本

docker-compose.yml

代码语言:javascript
复制
version: '3'
services:
  es-master:
    image: elasticsearch:7.16.2
    container_name: es-master
    restart: always
    user: root
    environment:
      # 开启内存锁定
      - "bootstrap.memory_lock=true"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "TAKE_FILE_OWNERSHIP=true"
      - "TZ=Asia/Shanghai"
    ulimits:
      # 取消内存相关限制  用于开启内存锁定
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./conf/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /data/ly-elk/master/data:/usr/share/elasticsearch/data
      - /data/ly-elk/master/logs:/usr/share/elasticsearch/logs
      - /data/ly-elk/master/plugins:/usr/share/elasticsearch/plugins
    ports:
      - "9200:9200"
      - "9300:9300"
    mem_limit: 3g
    networks:
      - elk
  es-slave1:
    image: elasticsearch:7.16.2
    container_name: es-slave1
    restart: always
    user: root
    environment:
      # 开启内存锁定
      - "bootstrap.memory_lock=true"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "TAKE_FILE_OWNERSHIP=true"
      - "TZ=Asia/Shanghai"
    ulimits:
      # 取消内存相关限制  用于开启内存锁定
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./conf/es-slave1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /data/ly-elk/slave1/data:/usr/share/elasticsearch/data
      - /data/ly-elk/slave1/logs:/usr/share/elasticsearch/logs
      - /data/ly-elk/slave1/plugins:/usr/share/elasticsearch/plugins
    ports:
      - "9201:9201"
      - "9301:9301"
    mem_limit: 3g
    networks:
      - elk

  kibana:
    image: kibana:7.16.2
    container_name: kibana
    restart: always
    depends_on:
      - es-master   #kibana在elasticsearch启动之后再启动
      - es-slave1
    environment:
      - "ELASTICSEARCH_HOSTS=http://es-master:9200"
      - "I18N_LOCALE=zh-CN"
      - "TZ=Asia/Shanghai"
    ports:
      - "5601:5601"
    volumes:
      - ./conf/kibana.yml:/usr/share/kibana/config/kibana.yml
    networks:
      - elk

  logstash:
    image: logstash:7.16.2
    container_name:  logstash
    restart: always
    depends_on:
      - es-master #logstash在elasticsearch启动之后再启动
      - es-slave1
    environment:
      - "elasticsearch.hosts=http://es-master:9200"
      - "xpack.monitoring.elasticsearch.hosts=http://es-master:9200"
      - "xpack.monitoring.enabled=true"
      - "TZ=Asia/Shanghai"
    volumes:
      - ./conf/logstash/:/usr/share/logstash/pipeline
    ports:
      - "5044:5044" #设置端口
    networks:
      - elk

networks:
  elk:

es-master.yml

代码语言:javascript
复制
# 集群名称
cluster.name: es-cluster
# 节点名称
node.name: es-master
# 是否可以成为master节点
node.master: true
# 是否允许该节点存储数据,默认开启
node.data: true
# 网络绑定
network.host: 0.0.0.0
# 设置对外服务的http端口
http.port: 9200
# 设置节点间交互的tcp端口
transport.port: 9300
# 集群发现
discovery.seed_hosts:
  - es-master
  - es-slave1
# 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
cluster.initial_master_nodes:
  - es-master
# 支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# 安全认证
xpack.security.enabled: false
#http.cors.allow-headers: "Authorization"

es-slave1.yml

代码语言:javascript
复制
# 集群名称
cluster.name: es-cluster
# 节点名称
node.name: es-slave1
# 是否可以成为master节点
node.master: true
# 是否允许该节点存储数据,默认开启
node.data: true
# 网络绑定
network.host: 0.0.0.0
# 设置对外服务的http端口
http.port: 9200
# 设置节点间交互的tcp端口
transport.port: 9300
# 集群发现
discovery.seed_hosts:
  - es-master
  - es-slave1
# 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算
cluster.initial_master_nodes:
  - es-master
# 支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# 安全认证
xpack.security.enabled: false
#http.cors.allow-headers: "Authorization"

启动

代码语言:javascript
复制
docker-compose up -d

健康检查

es 集群状态

通过filebeat传输日志

服务器部署

基于docker的filebeat在需要收集日志的服务器上单独启动

docker-compose.yml

代码语言:javascript
复制
version: "3"
services:
  filebeat:
    # 容器名称
    container_name: filebeat
    # 主机名称
    hostname: filebeat
    # 镜像
    image: elastic/filebeat:8.2.0
    # 重启机制
    restart: always
    # 启动用户
    user: root
    # 持久化挂载
    volumes:
      # 映射到容器中[作为数据源]
      - /var/log/messages:/log/messages

      # 方便查看数据及日志(可不映射)
      - /data/ly-elk/filebeat/logs:/usr/share/filebeat/logs
      - /data/ly-elk/filebeat/data:/usr/share/filebeat/data

      # 映射配置文件到容器中
      - ./conf/filebeat.yml:/usr/share/filebeat/filebeat.yml
    # 使用主机网络模式
    network_mode: host

filebeat.yml

代码语言:javascript
复制
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /log/messages
  fields:
    log_type: syslog

output.logstash:
  hosts: ["127.0.0.1:5044"]
  enabled: true
  worker: 1
  compression_level: 3
  loadbalance: true

启动

代码语言:javascript
复制
docker-compose up -d

es集群确认

确认es是否收到日志

代码语言:javascript
复制
# 检测集群是否健康
# green表示正常
curl '127.0.0.1:9200/_cat/health?v'

# 列出所有索引
# 是否收到日志
curl '127.0.0.1:9200/_cat/indices?v'

kibana 使用

访问

http://ip:5601

首页

message日志

可观测性-->日志-->流式传输

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • es集群部署
    • 安装docker
      • docker-compose.yml
        • es-master.yml
          • es-slave1.yml
            • 启动
              • 健康检查
              • 通过filebeat传输日志
                • 服务器部署
                  • es集群确认
                  • kibana 使用
                    • 访问
                      • message日志
                      相关产品与服务
                      容器镜像服务
                      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档