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

行云流水
2022-05-19 / 0 评论 / 763 阅读 / 正在检测是否收录...

前言

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

es集群部署

安装docker

docker和docker-compose一键安装脚本

docker-compose.yml

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

# 集群名称
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

# 集群名称
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"

启动

docker-compose up -d

健康检查


通过filebeat传输日志

服务器部署

es集群确认

# 检测集群是否健康
# green表示正常
curl '127.0.0.1:9200/_cat/health?v'

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

kibana 使用

访问

http://ip:5601

message日志

评论 (0)

取消
只有登录/注册用户才可评论