最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot使用Graylog日志收集的實(shí)現(xiàn)示例

 更新時(shí)間:2019年04月23日 09:52:35   作者:dalaoyang  
Graylog是一個(gè)生產(chǎn)級(jí)別的日志收集系統(tǒng),集成Mongo和Elasticsearch進(jìn)行日志收集,這篇文章主要介紹了SpringBoot使用Graylog日志收集的實(shí)現(xiàn)示例,感興趣的小伙伴們可以參考一下

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

1.Graylog介紹

Graylog是一個(gè)生產(chǎn)級(jí)別的日志收集系統(tǒng),集成Mongo和Elasticsearch進(jìn)行日志收集。其中Mongo用于存儲(chǔ)Graylog的元數(shù)據(jù)信息和配置信息,ElasticSearch用于存儲(chǔ)數(shù)據(jù)。

架構(gòu)圖如下:

生產(chǎn)環(huán)境配置圖如下:

2.安裝Graylog

在官方文檔上推薦了很多種安裝的方式,這里以docker-compose的方式為例,進(jìn)行安裝Graylog,mongo,elasticsearch。

docker-compose.yml內(nèi)容如下(這里是在官網(wǎng)的基礎(chǔ)上改了一下):

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是我的外網(wǎng)ip,本地服務(wù)使用127.0.0.1即可。

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

3.配置Graylog

在瀏覽器訪問(wèn)http://ip:9000,如圖:

這里默認(rèn)用戶名密碼都是admin,進(jìn)入后如圖所示。

選擇System按鈕中的input,錄入一個(gè)輸入源,如圖

這里以GELF UDP為例,在圖中位置選擇GELF UDP,選擇完成后點(diǎn)擊Launch new input,如圖

在Node處選擇自己安裝的,剩下的就根據(jù)需要填寫即可,如圖

保存完成后如圖,到這里就已經(jīng)配置完成了。

4.SpringBoot日志輸出到Graylog

這里分別舉例Logback日志和Log4j2日志。

4.1 Logback日志

這里使用的logback-gelf向Graylog輸出日志,在github上有對(duì)logback-gelf的詳細(xì)使用介紹,這里只是簡(jiǎn)單舉例。Github地址:https://github.com/osiegmar/logback-gelf

新建項(xiàng)目,加入logback-gelf依賴,pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.dalaoyang</groupId>
  <artifactId>springboot2_graylog</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>springboot2_graylog</name>
  <description>springboot2_graylog</description>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>de.siegmar</groupId>
      <artifactId>logback-gelf</artifactId>
      <version>2.0.0</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

加入logback日志配置,新建logback-spring.xml,內(nèi)容如下:

<configuration>

  <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
  <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
  <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
  <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>${CONSOLE_LOG_PATTERN}</pattern>
      <charset>UTF-8</charset>
    </encoder>
  </appender>

  <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
    <graylogHost>106.13.35.42</graylogHost>
    <graylogPort>12201</graylogPort>
  </appender>

  <!-- 控制臺(tái)輸出日志級(jí)別 -->
  <root level="info">
    <appender-ref ref="GELF" />
    <appender-ref ref="STDOUT" />
  </root>


</configuration>

啟動(dòng)項(xiàng)目,當(dāng)前項(xiàng)目端口是8081,查看Graylog控制臺(tái)如圖:

4.2 Log4j2日志

log4j2日志使用的是log4j2-gelf依賴,github上面也有對(duì)應(yīng)的介紹,pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.dalaoyang</groupId>
  <artifactId>springboot2_graylog_log4j</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>springboot2_graylog_log4j</name>
  <description>springboot2_graylog_log4j</description>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <exclusions>
        <exclusion>
          <artifactId>spring-boot-starter-logging</artifactId>
          <groupId>org.springframework.boot</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

    <dependency>
      <groupId>org.graylog2.log4j2</groupId>
      <artifactId>log4j2-gelf</artifactId>
      <version>1.3.1</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

創(chuàng)建log4j2-spring.xml進(jìn)行配置輸出日志信息,如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF" packages="org.graylog2.log4j2">
  <Properties>
    <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss:SSS} - %-5level - %pid - %t - %c{1.}:%L - %m%n</Property>
  </Properties>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT" follow="true">
      <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
      <PatternLayout pattern="${LOG_PATTERN}"/>
    </Console>
    <GELF name="gelfAppender" server="106.13.35.42" port="12201" hostName="appserver01.example.com">
      <PatternLayout pattern="%logger{36} - %msg%n"/>
      <Filters>
        <Filter type="MarkerFilter" marker="FLOW" onMatch="DENY" onMismatch="NEUTRAL"/>
        <Filter type="MarkerFilter" marker="EXCEPTION" onMatch="DENY" onMismatch="ACCEPT"/>
      </Filters>
      <!-- Additional fields -->
      <KeyValuePair key="foo" value="bar"/>
      <KeyValuePair key="jvm" value="${java:vm}"/>
    </GELF>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="gelfAppender"/>
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

這個(gè)項(xiàng)目使用的端口號(hào)是8888,可以在日志中清晰的看到。

5. ELK vs Graylog

這里僅以日志收集為例,簡(jiǎn)單說(shuō)一下二者之間的選擇,我個(gè)人的建議就是取決于現(xiàn)有技術(shù)棧,比如現(xiàn)在就有現(xiàn)成的Mongodb,那么選擇Graylog可以節(jié)省不少成本,ELK類似,不要盲目的追求技術(shù)而選擇。

6. 源碼

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringMVC實(shí)現(xiàn)注解式權(quán)限驗(yàn)證的實(shí)例

    SpringMVC實(shí)現(xiàn)注解式權(quán)限驗(yàn)證的實(shí)例

    本篇文章主要介紹了SpringMVC實(shí)現(xiàn)注解式權(quán)限驗(yàn)證的實(shí)例,可以使用Spring MVC中的action攔截器來(lái)實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解下。
    2017-02-02
  • 關(guān)于idea2020.3升級(jí)lombok不能使用的問(wèn)題

    關(guān)于idea2020.3升級(jí)lombok不能使用的問(wèn)題

    這篇文章主要介紹了關(guān)于idea2020.3升級(jí)lombok不能使用的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 解析Java中的默認(rèn)方法

    解析Java中的默認(rèn)方法

    這篇文章主要介紹了Java中的默認(rèn)方法,包括繼承和調(diào)用等Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-07-07
  • SpringBoot底層注解超詳細(xì)介紹

    SpringBoot底層注解超詳細(xì)介紹

    這篇文章主要介紹了SpringBoot底層注解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-09-09
  • java的泛型你真的了解嗎

    java的泛型你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了java的泛型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • java?實(shí)現(xiàn)獲取指定位置后的第一個(gè)數(shù)字

    java?實(shí)現(xiàn)獲取指定位置后的第一個(gè)數(shù)字

    這篇文章主要介紹了java?實(shí)現(xiàn)獲取指定位置后的第一個(gè)數(shù)字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java數(shù)組與字符串深入探索使用方法

    Java數(shù)組與字符串深入探索使用方法

    在今天的文章中,我將為你詳細(xì)講述Java學(xué)習(xí)中重要的一節(jié) [ 數(shù)組與字符串 ] ,帶你深入了解Java語(yǔ)言中數(shù)組的聲明、創(chuàng)建和初始化方法,字符串的定義以及常用到的操作方法
    2022-07-07
  • Java處理表格的實(shí)用工具庫(kù)

    Java處理表格的實(shí)用工具庫(kù)

    EasyExcel是一個(gè)基于Java的簡(jiǎn)單、省內(nèi)存的讀寫Excel的開源項(xiàng)目,在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M(fèi)的Excel,下面這篇文章主要給大家分享介紹了一個(gè)關(guān)于Java處理表格的實(shí)用工具庫(kù),需要的朋友可以參考下
    2021-11-11
  • springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過(guò)程解析

    springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java8的Lambda和排序

    Java8的Lambda和排序

    這篇文章主要介紹了Java8的Lambda和排序,對(duì)數(shù)組和集合進(jìn)行排序是Java 8 lambda令人驚奇的一個(gè)應(yīng)用,我們可以實(shí)現(xiàn)一個(gè)Comparators來(lái)實(shí)現(xiàn)各種排序,下面文章將有案例詳細(xì)說(shuō)明,想要了解得小伙伴可以參考一下
    2021-11-11

最新評(píng)論

达拉特旗| 虹口区| 辛集市| 隆回县| 兴文县| 阳东县| 通州区| 九龙坡区| 西和县| 杭州市| 嘉兴市| 福泉市| 苏尼特右旗| 常州市| 丰顺县| 水富县| 汝南县| 子洲县| 阿克陶县| 林甸县| 东山县| 栖霞市| 嘉禾县| 文山县| 鲁山县| 金门县| 军事| 洛南县| 工布江达县| 安阳县| 托里县| 出国| 宝坻区| 常德市| 北辰区| 大厂| 甘洛县| 大悟县| 宁海县| 台江县| 上蔡县|