Docker搭建Plumelog并集成到SpringBoot(Logback)

开源地址:https://gitee.com/plumeorg/plumelog
同时分享一个大佬整理的各种docker compose:https://gitee.com/zhengqingya/docker-compose

搭建Plumelog服务端

依赖:

  • redis
  • elasticsearch
  • plumelog

下载大佬的compose文件:https://gitee.com/zhengqingya/docker-compose/tree/master/Linux/plumelog

docker-compose.yml

version: "3"

# 网桥 -> 方便相互通讯
networks:
  plumelog:
    ipam:
      driver: default
      config:
        - subnet: "172.23.0.0/24"

services:
  plumelog:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/plumelog:3.5.3
    container_name: plumelog
    restart: unless-stopped
    volumes:
      # 引用外部配置文件    ex: es,redis   (配置也可通过 -e 去修改)
      - ./app/plumelog/application.properties:/home/application.properties
    environment: # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      JAVA_OPTS: "-XX:+UseG1GC -Dspring.config.location=/home/application.properties,classpath:application.properties,"
    ports:
      - "8891:8891"
    depends_on:
      - elasticsearch
      - redis
    networks:
      plumelog:
        ipv4_address: 172.23.0.11

  elasticsearch:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/elasticsearch:7.14.1      # 原镜像`elasticsearch:7.14.1`
    container_name: plumelog_elasticsearch         # 容器名为'elk_elasticsearch'
    restart: unless-stopped                   # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
    volumes:                                  # 数据卷挂载路径设置,将本机目录映射到容器目录
      - "./app/elasticsearch/data:/usr/share/elasticsearch/data"
      - "./app/elasticsearch/logs:/usr/share/elasticsearch/logs"
      - "./app/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
    #      - "./app/elasticsearch/config/jvm.options:/usr/share/elasticsearch/config/jvm.options"
    environment:                              # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      discovery.type: single-node
      ES_JAVA_OPTS: "-Xmx512m -Xms512m"
      ELASTIC_PASSWORD: "123456" # elastic账号密码
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      plumelog:
        ipv4_address: 172.23.0.22

  redis:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/redis:7.0.5                    # 镜像'redis:7.0.5'
    container_name: plumelog_redis                                                             # 容器名为'redis'
    restart: unless-stopped                                                                   # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
    command: redis-server /etc/redis/redis.conf --requirepass 123456 --appendonly no # 启动redis服务并添加密码为:123456,默认不开启redis-aof方式持久化配置
    #    command: redis-server --requirepass 123456 --appendonly yes # 启动redis服务并添加密码为:123456,并开启redis持久化配置
    environment:                        # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
    volumes:                            # 数据卷挂载路径设置,将本机目录映射到容器目录
      - "./app/redis/data:/data"
      - "./app/redis/config/redis.conf:/etc/redis/redis.conf"  # `redis.conf`文件内容`http://download.redis.io/redis-stable/redis.conf`
    ports:                              # 映射端口
      - "6379:6379"
    networks:
      plumelog:
        ipv4_address: 172.23.0.33

启动: docker-compose up -d
授权app/elasticsearch解决es报错:chmod -R 777 ./app/elasticsearch
修改./app/plumelog/application.properties配置文件,注意redis的db序号,后面在集成springboot的时候需要对应上

spring.application.name=plumelog_server
spring.profiles.active=test-confidential
server.port=8891
spring.thymeleaf.mode=LEGACYHTML5
spring.mvc.view.prefix=classpath:/templates/
spring.mvc.view.suffix=.html
spring.mvc.static-path-pattern=/plumelog/**
spring.boot.admin.context-path=admin
management.health.elasticsearch.enabled=false

#值为4种 redis,kafka,rest,restServer
#redis 表示用redis当队列
#kafka 表示用kafka当队列
#rest 表示从rest接口取日志
#restServer 表示作为rest接口服务器启动
#ui 表示单独作为ui启动
#lite 简易模式启动不需要配置redis等
plumelog.model=redis
#plumelog.lite.log.path=/Users/chenlongfei/lucene
#如果使用kafka,启用下面配置
#plumelog.kafka.kafkaHosts=172.16.247.143:9092,172.16.247.60:9092,172.16.247.64:9092
#plumelog.kafka.kafkaGroupName=logConsumer

#如果启用内置redis,使用下面配置,这边填上本机的ip,和需要启动的端口号,如果你只启用内置的redis,下面关于redis的配置可以不用配置全部注释掉
# plumelog.inside.redis.host=127.0.0.1:7979

#队列redis地址,model配置redis集群模式,哨兵模式用逗号隔开,队列redis不支持集群模式
plumelog.queue.redis.redisHost=127.0.0.1:6379
#如果使用redis有密码,启用下面配置
plumelog.queue.redis.redisPassWord=123456
plumelog.queue.redis.redisDb=10
#哨兵模式需要配置的
#plumelog.queue.redis.sentinel.masterName=myMaster

#管理端redis地址 ,集群用逗号隔开,不配置将和队列公用
#plumelog.redis.redisHost=127.0.0.1:6379
#如果使用redis有密码,启用下面配置
#plumelog.redis.redisPassWord=123456
#plumelog.redis.redisDb=11
#哨兵模式需要配置的
#plumelog.redis.sentinel.masterName=myMaster

#如果使用rest,启用下面配置
#plumelog.rest.restUrl=http://127.0.0.1:8891/getlog
#plumelog.rest.restUserName=plumelog
#plumelog.rest.restPassWord=123456

#redis解压缩模式,开启后不消费非压缩的队列
#plumelog.redis.compressor=true

#elasticsearch相关配置,Hosts支持携带协议,如:http、https
plumelog.es.esHosts=127.0.0.1:9200
#plumelog.es.shards=5
#plumelog.es.replicas=0
#plumelog.es.refresh.interval=30s
#日志索引建立方式day表示按天、hour表示按照小时
#plumelog.es.indexType.model=day
#plumelog.es.maxShards=100000
#ES设置密码,启用下面配置
plumelog.es.userName=elastic
plumelog.es.passWord=123456
#是否信任自签证书
#plumelog.es.trustSelfSigned=true
#是否hostname验证
#plumelog.es.hostnameVerification=false


#单次拉取日志条数
plumelog.maxSendSize=100
#拉取时间间隔,kafka不生效
plumelog.interval=100

#plumelog-ui的地址 如果不配置,报警信息里不可以点连接
plumelog.ui.url=http://demo.plumelog.com

#管理密码,手动删除日志的时候需要输入的密码
admin.password=123456

#日志保留天数,配置0或者不配置默认永久保留
admin.log.keepDays=30
#链路保留天数,配置0或者不配置默认永久保留
admin.log.trace.keepDays=30
#登录配置,配置后会有登录界面
login.username=admin
login.password=admin

springboot集成

添加maven依赖

<dependency>
    <groupId>com.plumelog</groupId>
    <artifactId>plumelog-logback</artifactId>
    <version>3.5.3</version>
</dependency>

修改logback-spring.xml

添加appender

plumelog的appender是直接写入日志到redis中,因此appender需要配置redis的地址和db序号,与plumelog服务端需要保持一致,否则读取不到日志

<springProperty scope="context" name="APP_NAME" source="spring.application.name" />

<appender name="plumelog" class="com.plumelog.logback.appender.RedisAppender">
      <appName>${APP_NAME}</appName>
      <redisHost>172.28.51.191:6379</redisHost>
      <redisAuth>123456</redisAuth>
      <redisDb>10</redisDb>
  </appender>

将appender添加到root中

<root level="info">
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="DEBUG_FILE" />
    <appender-ref ref="INFO_FILE" />
    <appender-ref ref="ERROR_FILE" />
    <appender-ref ref="WARN_FILE" />
    <appender-ref ref="plumelog"/>
</root>

ok, 可以启动项目查看效果了!

posted @ 2023-12-27 10:55  六月瓜  阅读(53)  评论(0编辑  收藏  举报