走進Java接口測試之整合 Graylog 實現日志收集
前言
部署圖
選型優勢
使用 Docker Compose 搭建
需要下載的 Docker 鏡像
搭建前準備
下載 Docker Compose
修改該文件的權限為可執行
查看是否已經安裝成功
前言
部署圖
選型優勢
使用 Docker Compose 搭建
需要下載的 Docker 鏡像
搭建前準備
下載 Docker Compose
修改該文件的權限為可執行
查看是否已經安裝成功
開始搭建
使用 docker-compose.yml 腳本啟動服務
關閉防火墻
配置 graylog 控制臺,接收日志來源
框架集成
添加 logback-gelf 依賴
添加配置文件 logback-spring.xml 讓 logback 的日志輸出到 graylog
配置 application.yml
進行測試
Graylog 頁面查看日志信息
總結
前言
Graylog 是一個強大的平臺,基于 Scala 語言開發。使用它能很容易對結構化和非結構化日志進行管理以及調試應用程序。它依賴 Elasticsearch 和 MongoDB。Graylog 的主服務從客戶端節點獲取數據,同時還提供 Web 接口,方便用戶可視化聚合來的日志。
部署圖
最小化安裝:
生產環境安裝:
主要邏輯: Graylog Collector -> Graylog Server(封裝Elasticsearch) -> Graylog Web
Graylog Collector:用于收集日志,整合 Collector 把日志發給 Server;
Graylog Server:封裝 Elasticsearch 用于存儲收集到的日志信息;
Graylog Web:通過 Web 端來查看日志。
選型優勢
Graylog 一開始定位為強大的日志解決方案,而 ELK 則是大數據解決方案;
Graylog 可以通過網絡協議直接從應用程序接收結構化日志和標準 syslog。相反,ELK 是使用 Logstash 分析已收集的純文本日志的解決方案,然后解析并將它們傳遞給 ElasticSearch;
相比 ELK 更優秀的報警功能;
更好的交互,通過跟蹤 Graylog 收到的錯誤堆棧,支持多行日志,工程師可以快速源代碼中的上下文;
強大的搜索功能,搜索語法比 ELK 簡單,搜索結果支持高亮顯示,支持 TB 級別的查詢;
有歸檔功能,超過 30 天的所有內容都可以存儲在廉價存儲中,在出現查詢需求時,可以重新導入到 Graylog;
Python 庫支持。
使用 Docker Compose 搭建
需要下載的 Docker 鏡像
docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.10 docker pull mongo:3 docker pull graylog/graylog:3.3
搭建前準備
Docker Compose是一個用于定義和運行多個docker容器應用的工具。使用Compose你可以用YAML文件來配置你的應用服務,然后使用一個命令,你就可以部署你配置的所有服務了。
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
開始搭建
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.8.10 environment: - http.host=0.0.0.0 - transport.host=localhost - network.host=0.0.0.0 - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 mem_limit: 1g # Graylog: https://hub.docker.com/r/graylog/graylog/ graylog: image: graylog/graylog:3.3 environment: # 加密鹽值,不設置,graylog會啟動失敗 # 該字段最少需要16個字符 - GRAYLOG_PASSWORD_SECRET=somepasswordpepper # 設置用戶名 - GRAYLOG_ROOT_USERNAME=admin # 設置密碼,此為密碼進過SHA256加密后的字符串 # 加密方式,執行 echo -n "Enter Password: " && head -1
上傳到 linux 服務器并使用 docker-compose 命令運行:
docker-compose up -d
注意:Elasticsearch 啟動可能需要好幾分鐘,要耐心等待。
[root@graylog]# docker-compose ps Name Command State Ports ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- graylog_elasticsearch_1 /usr/local/bin/docker-entr ... Up 9200/tcp, 9300/tcp graylog_graylog_1 tini -- /docker-entrypoint ... Up (healthy) 0.0.0.0:12201->12201/tcp, 0.0.0.0:12201->12201/udp, 0.0.0.0:1514->1514/tcp, 0.0.0.0:1514->1514/udp, 0.0.0.0:9000->9000/tcp graylog_mongodb_1 docker-entrypoint.sh mongod Up 27017/tcp [root@centos-7-template graylog]#
systemctl stop firewalld
配置 graylog 控制臺,接收日志來源
登錄 graylog,打開瀏覽器訪問:http://172.16.106.233:9000/
輸入 docker-compose.yml 里配置的 用戶名/密碼 信息
設置來源信息:
框架集成
添加 logback-gelf 依賴
pom.xml 中添加:
添加配置文件 logback-spring.xml 讓 logback 的日志輸出到 graylog
注意 appender 節點下的 graylogHost 需要改成你自己的 服務地址,比如我的是:172.16.106.233 。
配置 application.yml
spring: application: name: graylog server: port: 8888
進行測試
添加一個測試類:
SpringBootTest @Slf4j public class TestCase extends AbstractTestNGSpringContextTests { @Test public void testDemo() { log.info("輸出info"); log.debug("輸出debug"); log.error("輸出error"); } } }
運行測試:
Graylog 頁面查看日志信息
總結
ELK 和 Graylog 兩種解決方案在功能上非常相似,但仍有一些差異需要考慮。在 ELK 中,Kibana 扮演儀表盤的角色并顯示從Logstash 收到的數據。Graylog 在這點上更方便,因為它提供了單一應用程序解決方案(不包括 ElasticSearch 作為靈活的數據存儲),具有幾乎相同的功能。因此,部署所需的時間更短。
此外,與 ELK 相比,Graylog 開箱即用,且具有出色的權限系統,而 Kibana 則不具備此功能。作為 Elasticsearch 的粉絲,我更喜歡 Graylog 而不是ELK,因為它完全符合我在測試框架日志管理方面的需求。
示例代碼:
https://github.com/zuozewei/blog-example/tree/master/Java-api-test/03-log-framework/springboot-logback-graylog-demo
參考資料:
[1]:https://docs.graylog.org/en/3.3/pages/architecture.html
Java 云日志服務 LTS 自動化測試
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。