SpringBoot使用Graylog日志收集
发布日期:2021-05-09 02:25:52 浏览次数:11 分类:博客文章

本文共 6440 字,大约阅读时间需要 21 分钟。

本文介绍SpringBoot如何使用Graylog日志收集。

1.Graylog介绍

Graylog是一个生产级别的日志收集系统,集成Mongo和Elasticsearch进行日志收集。其中Mongo用于存储Graylog的元数据信息和配置信息,ElasticSearch用于存储数据。

架构图如下:

生产环境配置图如下:

2.安装Graylog

在官方文档上推荐了很多种安装的方式,这里以docker-compose的方式为例,进行安装Graylog,mongo,elasticsearch。

docker-compose.yml内容如下(这里是在官网的基础上改了一下):

version: '2'	services:	  # MongoDB: https://hub.docker.com/_/mongo/	  mongodb:	    image: mongo:3	  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.6/docker.html	  elasticsearch:	    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.1	    environment:	      - http.host=0.0.0.0	      - transport.host=localhost	      - network.host=0.0.0.0	      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"	    ulimits:	      memlock:	        soft: -1	        hard: -1	    mem_limit: 512m	  # Graylog: https://hub.docker.com/r/graylog/graylog/	  graylog:	    image: graylog/graylog:3.0	    environment:	      # CHANGE ME (must be at least 16 characters)!	      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper	      # Password: admin	      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918	      - GRAYLOG_HTTP_EXTERNAL_URI=http://106.13.35.42:9000/	    links:	      - mongodb:mongo	      - elasticsearch	    depends_on:	      - mongodb	      - elasticsearch	    ports:	      # Graylog web interface and REST API	      - 9000:9000	      # Syslog TCP	      - 1514:1514	      # Syslog UDP	      - 1514:1514/udp	      # GELF TCP	      - 12201:12201	      # GELF UDP	      - 12201:12201/udp

其中106.13.35.42是我的外网ip,本地服务使用127.0.0.1即可。

其他方式可以查看官方文档,https://docs.graylog.org/en/3.0/pages/installation.html

3.配置Graylog

在浏览器访问http://ip:9000,如图:

这里默认用户名密码都是admin,进入后如图所示。

选择System按钮中的input,录入一个输入源,如图

这里以GELF UDP为例,在图中位置选择GELF UDP,选择完成后点击Launch new input,如图

在Node处选择自己安装的,剩下的就根据需要填写即可,如图

保存完成后如图,到这里就已经配置完成了。

4.SpringBoot日志输出到Graylog

这里分别举例Logback日志和Log4j2日志。

4.1 Logback日志

这里使用的logback-gelf向Graylog输出日志,在github上有对logback-gelf的详细使用介绍,这里只是简单举例。Github地址:https://github.com/osiegmar/logback-gelf。

新建项目,加入logback-gelf依赖,pom文件如下:

4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
com.dalaoyang
springboot2_graylog
0.0.1-SNAPSHOT
springboot2_graylog
springboot2_graylog
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
de.siegmar
logback-gelf
2.0.0
org.springframework.boot
spring-boot-maven-plugin

加入logback日志配置,新建logback-spring.xml,内容如下:

${CONSOLE_LOG_PATTERN}
UTF-8
106.13.35.42
12201

启动项目,当前项目端口是8081,查看Graylog控制台如图:

4.2 Log4j2日志

log4j2日志使用的是log4j2-gelf依赖,github上面也有对应的介绍,pom文件如下:

4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.4.RELEASE
com.dalaoyang
springboot2_graylog_log4j
0.0.1-SNAPSHOT
springboot2_graylog_log4j
springboot2_graylog_log4j
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter
spring-boot-starter-logging
org.springframework.boot
org.springframework.boot
spring-boot-starter-log4j2
org.graylog2.log4j2
log4j2-gelf
1.3.1
org.springframework.boot
spring-boot-maven-plugin

创建log4j2-spring.xml进行配置输出日志信息,如下:

%d{yyyy-MM-dd HH:mm:ss:SSS} - %-5level - %pid - %t - %c{1.}:%L - %m%n

这个项目使用的端口号是8888,可以在日志中清晰的看到。

5. ELK vs Graylog

这里仅以日志收集为例,简单说一下二者之间的选择,我个人的建议就是取决于现有技术栈,比如现在就有现成的Mongodb,那么选择Graylog可以节省不少成本,ELK类似,不要盲目的追求技术而选择。

6. 源码

springboot2_graylog源码地址:https://gitee.com/dalaoyang/springboot_learn/tree/master/springboot2_graylog

springboot2grayloglog4j源码地址:https://gitee.com/dalaoyang/springboot_learn/tree/master/springboot2_graylog_log4j

转载地址:https://www.cnblogs.com/felordcn/p/12142510.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:使用 Gitea 快速搭建私有 Git 版本控制服务
下一篇:双十一程序员剁手不完全指南

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月20日 03时37分32秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

mysql分组显示行号_mysql 显示行号,以及分组排序 2019-04-21
MySQL常见的主从复制架构_如何搭建经典的MySQL 主从复制架构 2019-04-21
编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为3.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?... 2019-04-21
python 公众号引流_公众号引流方法有哪些? 2021-06-24
java 减少内存_java中减少内存占用小技巧 2019-04-21
centos 7 mysql图形界面_centos7-vnstat图形界面搭建 2019-04-21
java 防渗透_「java、工程师工作经验怎么写」-看准网 2019-04-21
java中跳出当前循环怎么做_在java中,如何跳出当前的多重循环? 2019-04-21
java程序中执行maven_java – 将一个enviornment变量传递给Maven中的已执行进程 2019-04-21
java16下载_java lombok下载 2019-04-21
python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解) 2019-04-21
java安全初始化_java安全编码指南之:声明和初始化 2019-04-21
java jstat gc_分析JVM GC及内存情况的方法 2019-04-21
php pclzip.lib.php,php使用pclzip类实现文件压缩的方法(附pclzip类下载地址) 2019-04-21
php dns更新,php_mzdns: 站群,大量域名 通过 dns 服务商 api 批量添加 ip 工具。你懂的~ 基于 mzphp2 框架。... 2019-04-21
jdk 1.8 java.policy,JDK1.8 导致系统报错:java.security.InvalidKeyException:illegal Key Size 2019-04-21
php linux权限,Linux权限详细介绍 2019-04-21
典型环节的matlab仿真分析,典型环节的MATLAB仿真.doc 2019-04-21
Php contenttype类型,各种类型文件的Content Type 2019-04-21
php使用redis持久化,redis如何持久化 2019-04-21