docker使用graylog管理项目日志(graylog docker)

graylog是一个比ELK更轻的框架,只需要在其中一台服务器安装graylog,其他服务器配置一下就可以了,相对来说比较简单

1 前提

安装graylog,可以参考我的文章《Docker-compose 安装graylog——最详细版》

2 在graylog的管理后台配置udp

docker使用graylog管理项目日志(graylog docker)

3 docker部署的项目

在docker-compose.yml中配置graylog即可

version: '3'services: euraka: build: /home/spring-java/eureka environment: TZ: Asia/Shanghai logging: #driver: "json-file" driver: "gelf" options: #max-size: "50m" #max-file: "8" gelf-address: "udp://172.16.11.15:12201" tag: "log-eureka" ports: - 8081:8081 expose: - 8081 volumes: - "/application/logs/eureka:/application/logs/business-discovery"

上面的tag用于标记日志的分类,用于筛选日志用

配置成driver: "gelf"之后,容器里面不会额外存日志,日志会发送到graylog服务器

但进入容器后还是可以查看到日志,这是为什么呢?

其实容器里面并没额外开辟磁盘,而是共用了volumes的磁盘,

当我们把主机的日志删除/application/logs/eureka,

容器里面的日志也没有了,说明容器自己没有存日志

driver: "gelf"设置为时,max-file max-size 不能放开

只有driver: "json-file"时才可以放开

4 查看日志

docker使用graylog管理项目日志(graylog docker)

可以将source和tag也显示出来,便于筛选

docker使用graylog管理项目日志(graylog docker)

docker使用graylog管理项目日志(graylog docker)

docker使用graylog管理项目日志(graylog docker)

未完:

上面的配置可以记录到每一个springboot的日志,以service为单位

如果是docker部署的tomcat,多个项目同时部署在一个tomcat上,此时tag只有一个,如何来区分每个项目的日志呢?这个问题待研究,网友们如果知道的可以在评论区贡献一下哦

如tomcat的配置graylog:

version: '3'services: tomcat: # restart: always # build: /home/spring-java/tomcat85 build: context: ./ dockerfile: Dockerfile container_name: tomcat8 logging: #driver: "json-file" driver: "gelf" options: #max-size: "50m" #max-file: "8" gelf-address: "udp://172.16.11.15:12201" tag: "log-tomcat" environment: TZ: Asia/Shanghai JAVA_OPTS: -Xms1024m -Xmx4096m -XX: UnlockCommercialFeatures -XX: FlightRecorder volumes: - ./conf:/usr/local/tomcat/conf - ./logs:/usr/local/tomcat/logs - ./webapps:/usr/local/tomcat/webapps ports: - 8088:8088 expose: - 8088

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年7月23日 上午10:13
下一篇 2022年7月23日 上午10:27

相关推荐