230 字
1 分钟
logback同步日志到ELK
2023-05-26

使用docker-compose搭建ELK服务#

version: "2"
services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.10
    container_name: "es"
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      # - discovery.seed_hosts=es02,es03
      # - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
    volumes:
      - ./es/data:/usr/share/elasticsearch/data
      - ./es/plugins:/usr/share/elasticsearch/plugins
    ports:
      - "9200:9200"
      - "9300:9300"
    restart: always
  kibana:
    image: docker.elastic.co/kibana/kibana:7.17.10
    container_name: "kibana"
    restart: always
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://es:9200
      - I18N_LOCALE=zh-CN
    # volumes:
    #   - ./kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
    depends_on:
      - es
  logstash:
    image: docker.elastic.co/logstash/logstash:7.17.10
    container_name: logstash
    restart: always
    environment:
      - MONITORING_ELASTICSEARCH_HOSTS=http://es:9200
    volumes:
      - ./logstash/pipeline/:/usr/share/logstash/pipeline/
    ports:
      - 4567:4567
    depends_on:
      - es

添加logstash管道配置#

input {
  tcp { // 启动tcp服务,监听4567端口,接收logback发送的日志信息
    mode => "server"
    host => "0.0.0.0"
    port => 4567
    codec => json_lines
  }
}

filter {
  json {
    source => "message"
  }
}

output {
  elasticsearch {
    hosts => ["http://es:9200"]
    index => "%{[appname]}-%{+YYYY.MM.dd}"
    action => "create"
    #user => "elastic"
    #password => "changeme"
  }
}

springboot配置#

pom.xml文件

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.3</version>
</dependency>

logback-spring.xml配置

<!-- 输出到logstash -->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <!-- 上面logstash管道配置的端口 -->
    <destination>127.0.0.1:4567</destination>
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <!-- 添加自定义字段 json格式 -->
        <customFields>{"appname": "1110-server"}</customFields>
        <!-- 包含代码中通过MDC添加的字段 -->
        <includeMdc>true</includeMdc>
        <includeCallerData>true</includeCallerData>
    </encoder>
</appender>
logback同步日志到ELK
https://fuwari.vercel.app/posts/logback同步日志到elk/
作者
zengdw
发布于
2023-05-26
许可协议
CC BY-NC-SA 4.0