graylog是一个比ELK更轻的框架,只需要在其中一台服务器安装graylog,其他服务器配置一下就可以了,相对来说比较简单
1 前提
安装graylog,可以参考我的文章《Docker-compose 安装graylog——最详细版》
2 在graylog的管理后台配置udp
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 查看日志
可以将source和tag也显示出来,便于筛选
未完:
上面的配置可以记录到每一个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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。