Graylog搭建步骤
Github: https://github.com/osiegmar/logback-gelf
浅尝感言:日志是定位问题好的工具,及时的日志监控等于有一个良好的系统运行保障。
1、简介
Graylog是一个生产级别的日志收集系统,集成Mongo和Elasticsearch进行日志收集。其中Mongo用于存储Graylog的元数据信息和配置信息,ElasticSearch用于存储数据。
架构图
2、环境搭建(以下版本可对应升级)
Docker1.13.1
ESelasticsearch-oss:6.6.1
Docker-compse 1.21.2
3、使用,linux下新建yml文件.搭建成功的简单例子,更换访问IP
version: '2' services: mongodb: image: mongo:3 graylog: image: graylog/graylog:3.0 environment: - GRAYLOG_PASSWORD_SECRET=somepasswordpepper - GRAYLOG_ROOT_PASSWORD_SHA2=8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 - GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.xxx.xxx:9000/ - GRAYLOG_ELASTICSEARCH_HOSTS=http://192.168.xxx.xxx:9200/ - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai links: - mongodb:mongo - elasticsearch depends_on: - mongodb - elasticsearch ports: - 9000:9000 - 1514:1514 - 1514:1514/udp - 12201:12201 - 12201:12201/udp
docker启动命令(在docker-compse.yml目录下):docker-compose up
备注:注意端口是否可以访问,关闭防火墙,或者开端口
4、启动成功访问界面(http://192.168.xxx.xxx:9000/)

5、新建input

6、项目springboot(已更新至4.0.1)
导入依赖
<dependency> <groupId>de.siegmar</groupId> <artifactId>logback-gelf</artifactId> <version>2.0.0</version> </dependency>
resources下新建(以上截图的配置),更换访问IP
<configuration> <!-- 配置控制台的输出日志 --> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <!-- 定义日志输出的格式 --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern> %d - [%thread] %-5level %logger{35} - [%line] - %msg%n </pattern> </layout> </encoder> </appender> <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender"> <graylogHost>192.168.xxx.xxx</graylogHost> <graylogPort>12201</graylogPort> <!-- 最大GELF数据块大小(单位:字节),508为建议最小值,最大值为65467 --> <maxChunkSize>508</maxChunkSize> <!-- 是否使用压缩 --> <useCompression>true</useCompression> <encoder class="de.siegmar.logbackgelf.GelfEncoder"> <originHost>192.168.xxx.xxx</originHost> <!-- 是否发送原生的日志信息 --> <includeRawMessage>false</includeRawMessage> <includeMarker>true</includeMarker> <includeMdcData>true</includeMdcData> <includeCallerData>false</includeCallerData> <includeRootCauseData>false</includeRootCauseData> <!-- 是否发送日志级别的名称,否则默认以数字代表日志级别 --> <includeLevelName>true</includeLevelName> <shortPatternLayout class="ch.qos.logback.classic.PatternLayout"> <pattern>%m%nopex</pattern> </shortPatternLayout> <fullPatternLayout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d - [%thread] %-5level %logger{35} - %msg%n</pattern> </fullPatternLayout> <!-- 配置应用名称(服务名称),通过staticField标签可以自定义一些固定的日志字段 --> <staticField>app_name:user-service</staticField> <staticField>os_arch:${os.arch}</staticField> <staticField>os_name:${os.name}</staticField> <staticField>os_version:${os.version}</staticField> </encoder> </appender> <root level="info"> <appender-ref ref="consoleLog" /> <appender-ref ref="GELF" /> </root> </configuration>
简单的例子配置可以使用以下
<configuration> <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender"> <graylogHost>localhost</graylogHost> <graylogPort>12201</graylogPort> </appender> <root level="debug"> <appender-ref ref="GELF" /> </root> </configuration>
Java代码:
Logger log = LoggerFactory.getLogger(UserController.class); log.error("============error日志",e);
浙公网安备 33010602011771号