自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ELK太重?試試輕量級(jí)分布式日志框架GrayLog

開(kāi)發(fā) 架構(gòu)
在微服務(wù)架構(gòu)中,一個(gè)服務(wù)通常都會(huì)有多個(gè)實(shí)例,而這些服務(wù)實(shí)例可能會(huì)被部署到不同的機(jī)器或虛擬容器上。此時(shí)對(duì)于日志數(shù)據(jù)的查看和分析就會(huì)變得困難起來(lái),因?yàn)檫@些服務(wù)的日志數(shù)據(jù)都散落在各自實(shí)例所在的機(jī)器或容器上。

在微服務(wù)架構(gòu)中,一個(gè)服務(wù)通常都會(huì)有多個(gè)實(shí)例,而這些服務(wù)實(shí)例可能會(huì)被部署到不同的機(jī)器或虛擬容器上。此時(shí)對(duì)于日志數(shù)據(jù)的查看和分析就會(huì)變得困難起來(lái),因?yàn)檫@些服務(wù)的日志數(shù)據(jù)都散落在各自實(shí)例所在的機(jī)器或容器上。例如,我現(xiàn)在要在訂單服務(wù)里查找一個(gè)訂單id為1的日志,而訂單服務(wù)有10個(gè)實(shí)例并且部署在10臺(tái)不同的機(jī)器上,那么我就得一臺(tái)臺(tái)的去找這個(gè)日志數(shù)據(jù)。所以這時(shí)候我們就需要有一個(gè)可以實(shí)現(xiàn)日志聚合的工具,將所有實(shí)例的日志數(shù)據(jù)都聚合在一個(gè)地方,那么我們就不需要到每個(gè)實(shí)例去找日志了,而本文將使用的日志聚合工具為Graylog

部署Graylog

老樣子,直接上docker-compose,如果一直跟著我的步伐,應(yīng)該對(duì)著不陌生了。docker-compose.yml 的內(nèi)容其實(shí)我也是抄官網(wǎng)的,這里還是貼下吧(就不用你們翻了)

version: '3'
services:
    mongo:
      image: mongo:4.2
      networks:
        - graylog
    elasticsearch:
      image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
      environment:
        - http.host=0.0.0.0
        - transport.host=localhost
        - network.host=0.0.0.0
        - "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m"
      ulimits:
        memlock:
          soft: -1
          hard: -1
      deploy:
        resources:
          limits:
            memory: 1g
      networks:
        - graylog
    graylog:
      image: graylog/graylog:4.2
      environment:
        - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
        - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
        - GRAYLOG_HTTP_EXTERNAL_URI=http://ip:9009/ # 這里注意要改ip
      entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
      networks:
        - graylog
      restart: always
      depends_on:
        - mongo
        - elasticsearch
      ports:
        - 9009:9000
        - 1514:1514
        - 1514:1514/udp
        - 12201:12201
        - 12201:12201/udp
networks:
    graylog:
      driver: bridg

這個(gè)文件里唯一需要改動(dòng)的就是 ip (本來(lái)的端口是 9000 的,我由于已經(jīng)占用了 9000 端口了,所以我這里把端口改成了 9009 ,你們可以隨意)

嗯,寫完 docker-compose.yml 文件,直接 docker-compose up -d 它就啟動(dòng)起來(lái)咯。

啟動(dòng)以后,我們就可以通過(guò) ip:port 訪問(wèn)對(duì)應(yīng)的Graylog后臺(tái)地址了,默認(rèn)的賬號(hào)和密碼是 admin/admin

圖片圖片

隨后,我們配置下 inputs 的配置,找到 GELF UDP ,然后點(diǎn)擊 Launch new input ,只需要填寫 Title 字段,保存就完事了(其他不用動(dòng))。

圖片圖片

Spring Boot 集成GrayLog

首先創(chuàng)建一個(gè)SpringBoot項(xiàng)目,SpringBoot默認(rèn)自帶的日志框架是Logback,我們可以到 Graylog組件市場(chǎng)查找Logback相應(yīng)的組件。

添加依賴如下:

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

接著在項(xiàng)目的resources目錄下,新建一個(gè)logback.xml文件,編輯文件內(nèi)容如下:

<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
  <!-- Graylog服務(wù)的地址 -->
  <graylogHost>ip</graylogHost>
  <!-- UDP Input端口 -->
  <graylogPort>12201</graylogPort>
  <!-- 最大GELF數(shù)據(jù)塊大?。▎挝唬鹤止?jié)),508為建議最小值,最大值為65467 -->
  <maxChunkSize>508</maxChunkSize>
  <!-- 是否使用壓縮 -->
  <useCompression>true</useCompression>
  <encoder class="de.siegmar.logbackgelf.GelfEncoder">
    <!-- 是否發(fā)送原生的日志信息 -->
    <includeRawMessage>false</includeRawMessage>
    <includeMarker>true</includeMarker>
    <includeMdcData>true</includeMdcData>
    <includeCallerData>false</includeCallerData>
    <includeRootCauseData>false</includeRootCauseData>
    <!-- 是否發(fā)送日志級(jí)別的名稱,否則默認(rèn)以數(shù)字代表日志級(jí)別 -->
    <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>

    <!-- 配置應(yīng)用名稱(服務(wù)名稱),通過(guò)staticField標(biāo)簽可以自定義一些固定的日志字段 -->
    <staticField>app_name:austin</staticField>
  </encoder>
</appender>

在這個(gè)配置信息里,唯一要改的也只是 ip 的地址,到這里接入就完畢了,我們?cè)俅蜷_(kāi)控制臺(tái),就能看到日志的信息啦。

圖片圖片

配置完成后啟動(dòng)項(xiàng)目,啟動(dòng)完成后正常情況下可以在Graylog的Search界面中查看日志信息:

圖片圖片

點(diǎn)擊一條日志信息會(huì)展開(kāi)詳細(xì)的字段:

圖片圖片

以上是最簡(jiǎn)單的日志配置,如果希望對(duì)更多配置項(xiàng)進(jìn)行自定義的話,可以參考該組件的GitHub文檔,上面有具體的配置項(xiàng)說(shuō)明

現(xiàn)在我們已經(jīng)成功將項(xiàng)目的日志數(shù)據(jù)發(fā)送到了Graylog服務(wù),如果我們想在Graylog上檢索日志也很簡(jiǎn)單,只需要使用一些簡(jiǎn)單的語(yǔ)法即可,例如我要查詢包含Mapping的日志信息:

圖片圖片

還可以使用一些條件表達(dá)式,例如我要查詢message字段包含http,并且日志級(jí)別為INFO的日志信息:

圖片圖片

常用的日志搜索語(yǔ)法如下:

  • 模糊查詢:直接輸入要查詢的內(nèi)容,例如:orderid
  • 精確查詢:要查詢的內(nèi)容加上引號(hào),例如:"orderid: 11"
  • 指定字段查詢:message:http 或 message:"http"
  • 多字段查詢:message:(base-service base-web)
  • 多條件查詢:message:http AND level_name:ERROR OR source:192.168.0.4
責(zé)任編輯:武曉燕 來(lái)源: JAVA日知錄
相關(guān)推薦

2023-12-18 10:24:59

2015-06-17 14:10:34

Redis分布式系統(tǒng)協(xié)調(diào)

2024-06-11 13:50:43

2021-04-14 13:32:50

Redis輕量級(jí)分布式

2017-10-11 16:12:19

內(nèi)存

2024-12-16 13:00:00

JavaELK開(kāi)發(fā)

2017-12-05 09:43:42

分布式系統(tǒng)核心

2018-07-19 11:18:45

餓了么時(shí)序數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng)

2021-09-09 15:45:17

機(jī)器學(xué)習(xí)人工智能Ray

2023-06-26 00:14:28

Openjob分布式任務(wù)

2023-06-27 16:42:18

Tinygrad深度學(xué)習(xí)工具

2020-11-11 12:13:59

JS

2022-08-10 12:21:07

PythonWebBottle

2017-10-16 10:24:47

LogDevice存儲(chǔ)系統(tǒng)

2021-03-02 09:35:33

Python循環(huán)開(kāi)發(fā)

2019-07-04 15:13:16

分布式緩存Redis

2021-12-13 11:07:10

鴻蒙HarmonyOS應(yīng)用

2021-06-02 22:16:56

框架CAPBASE

2010-06-03 19:46:44

Hadoop

2024-01-05 07:28:50

分布式事務(wù)框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)