1 環境准備
- centos7
- docker (安裝教程)
- jdk1.8
2 安裝
下載docker鏡像
docker pull mongo
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker pull graylog/graylog:3.1
分開啟動3個組件(推薦)
mongodb
docker run \
--name mongo \
-p 27017:27017 \
-v /data/mongodb/configdb:/data/configdb/ \
-v /data/mongodb/db/:/data/db/ \
-d mongo:latest
elasticsearch
docker run \
--name es \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
# 設置跨域
-e http.cors.allow-origin="*" \
-e http.cors.enabled=true \
-d docker.elastic.co/elasticsearch/elasticsearch:6.3.2
graylog
docker run \
--link mongo:mongo \
--link es:docker.elastic.co/elasticsearch/elasticsearch \
--name graylog \
-p 9000:9000 \
-p 12201:12201/udp \
# 訪問URL
-e GRAYLOG_HTTP_EXTERNAL_URI=http://10.211.55.6:9000/ \
# 設置時區,不然會時間不對
-e GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai \
-e GRAYLOG_WEB_ENDPOINT_URI="http://10.211.55.6:9000/:9000/api" \
-e GRAYLOG_PASSWORD_SECRET=somepasswordpepper \
# 密碼:admin
-e GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 \
-d graylog/graylog:3.1
3 參數配置
3.1 docker 查看容器
輸出內容:
3.2 瀏覽器中打開http://localhost:9000/,賬戶密碼:admin/admin
3.3 使用http測試是否成功 (可選)
3.3.1 新建input http input
3.3.2 打開一個終端,輸入下面的命令
curl -XPOST http://localhost:12201/gelf -p0 -d '{"message":"hello這是一條消息", "host":"127.0.0.1", "facility":"test", "topic": "meme"}'
打開瀏覽器觀察信息,看到如下消息,證明安裝成功
4 SpringBoot集成graylog
4.1 創建 gref udp input
4.2 SpringBoot項目修改
4.2.1 在pom.xml的dependency加入的如下依賴:
<dependency>
<groupId>biz.paluch.logging</groupId>
<artifactId>logstash-gelf</artifactId>
<version>1.13.0</version>
</dependency>
4.2.2 配置日志輸出
在配置文件logback.xml中,添加如下appender,並啟用:
<appender name="GELF" class="biz.paluch.logging.gelf.logback.GelfLogbackAppender">
<!-- 改為自己的IP-->
<host>udp:192.168.1.101</host>
<port>12201</port>
<version>1.1</version>
<!-- 這里可以定義為服務名等-->
<facility>blockchain-module</facility>
<!-- 手動添加字段 -->
<additionalFields>version=4.1.0,module=blockchain</additionalFields>
<extractStackTrace>true</extractStackTrace>
<filterStackTrace>true</filterStackTrace>
<mdcProfiling>true</mdcProfiling>
<timestampPattern>yyyy-MM-dd HH:mm:ss,SSS</timestampPattern>
<maximumMessageSize>8192</maximumMessageSize>
<!-- This are fields using MDC -->
<mdcFields>mdcField1,mdcField2</mdcFields>
<dynamicMdcFields>mdc.*,(mdc|MDC)fields</dynamicMdcFields>
<includeFullMdc>true</includeFullMdc>
</appender>
<root level="INFO">
<appender-ref ref="GELF" />
<appender-ref ref="STDOUT"/>
</root>
除來上面的配置外,還可以手動添加靜態字段,詳細可以看插件的github官網
4.2.3 啟動SpringBoot項目,觀察瀏覽器graylog
到此graylog的基礎配置就算完成了,已經可以收到日志數據,但是在實際工作中,服務日志會非常多,這么多的日志,如果不進行存儲限制,那么不久就會占滿磁盤,查詢變慢等等,而且過久的歷史日志對於實際工作中的有效性也會很低,graylog則自身集成了日志數據限制的配置,可以通過如下進行設置:
這里提供了三種方式進行限制,可根據自己的實際情況進行設置。
- 限定日志數據量,數據量達到是便會自動刪除最舊的歷史數據,以維持數據量恆定。
- 限定大小,指定數據文件總容量大小。
- 限定時間,刪除超時的日志數據。
5 Graylog進階使用
上面介紹的都是graylog的基礎使用和配置,在配置了之后,已經可以實現對日志的采集,日志的監控報警。下面就簡單演示一下如何創建儀表盤,在過程中熟悉一下graylog中的搜索,流,索引,管道,裝飾器等等。
5.1 搜索
在有了日志數據后,在web界面的search中,就可以搜索到日志數據了,如下圖:
上圖中就是搜索界面,最上面可以選擇時間端,默認是最近5分鍾,第二行是搜索的語法,這個語法很簡單,最常用的如,搜索level為3的日志,就是 level:3,就這么簡單,多條匹配規則可以通過AND,OR(連接詞必須大寫)進行連接。要搜索包含abc的日志,就直接輸入 abc 就行了。整體來說相對於elk要簡單很多。具體的完整用法,參考官方文檔:
http://docs.graylog.org/en/3.0/pages/extended_search.html
5.2 儀表盤
首先創建一個儀表盤,只需要輸入標題和說明
創建完儀表盤后你會發現,沒發直接在儀表盤中添加部件,也就是添加數據圖形等。儀表盤中的部件只能通過在search頁面中通過生產圖形后,然后點擊 add to dashboard 來添加到儀表盤中,添加后可以進行修改刪除。詳細的可以參考官網文檔:儀表盤
這里演示一下:在search頁面中,選擇字段,字段下面會有4個選項,可以生產4個不同的圖形分析,如圖:
其中,最后一個是地圖map分析,這個需要額外添加地圖信息插件等。這里暫時不說。其他三個都是可以直接出來分析徒刑的。比如我想要知道環境-微服務的總數,因為上面整合springboot的時候,配置中將facility地段自定義為 環境-微服務,如test-device 。所以我直接點擊facility下的Statistics,就會生產如下表格:
如圖,Cardinality就是環境-微服務不同的數量,也就是接收到日志的環境-微服務總數。點擊add to dashboard就能添加到儀表盤,添加之前需要特別注意一點: 時間段,搜索的時間段會影響圖形的數據量,添加到儀表盤后會作為默認的時間段來展示數據。當然也可以在添加后,再修改部件屬性中修改時間等。
最后,看一下儀表盤的效果:
5.3 未完待續......
參考文檔:
https://blog.csdn.net/weixin_41004350/article/details/87253316
http://docs.graylog.org/en/3.0