如何利用graylog進行容器化日志管理?

Docker日志

當一個容器啟動的時候,它其實是docker deamon的一個子進程,docker daemon可以拿到容器里面進程的標準輸出,然后通過自身的LogDriver模塊來處理,LogDriver支持的方式很多,默認寫到本地文件,也可以發送到syslog等。

圖片

Docker會默認收集應用程序的標準輸出到一個json.log文件中,以一行一條JSON存儲數據,文件的格式如下:

{"log":"root@74205cdc7b53dd:/#ls\r\n","stream":"stdout","time":"xxx.155834526Z"}{"log":"root@74205cdc7b53dd:/#ls\r\n","stream":"stdout","time":"xxx.255834528Z"}

Docker的這種日志存儲方式可以在容器啟動時通過指定log-driver進行配置,支持的log driver如下:

圖片

Graylog日志管理

Graylog是一個開源的完整的日志管理工具,功能和ELK類似。Docker原生支持graylog協議,Graylog官方也提供了對Docker的支持,二者可以無縫銜接。

Graylog官方提供了Dockerfile可以在Docker上部署日志系統,同時也提供了docker-compose.yml文件來快速部署整個graylog棧。

詳細內容可以通過 http://docs.graylog.org/en/3.1/pages/installation/docker.html 來查看。

圖片

Graylog部署

1.在當前用戶目錄下創建graylog目錄作為部署的工作目錄:

mkdir graylogcd graylog

2.初始化目錄和配置文件???????

mkdir -p ./graylog/configcd ./graylog/configwget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.1/config/graylog.confwget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.1/config/log4j2.xml
#另外由于Graylog以ID 1100 定義了用戶和用戶組,#導致Graylog在啟動的時候可能會報config目錄權限不足的錯誤,可以通過以下命令來解決chown -R 1100:1100 ./graylog/config

3.修改配置文件, 上一步獲得的graylog.conf文件是官方提供的默認配置,用戶可以根據需要進行配置,比如配置中時區默認為UTC時區,可以將其改為中國時區

root_timezone = Asia/Shanghai

4.準備?docker-compose.yml?文件???????

version: '3'services:  # MongoDB: https://hub.docker.com/_/mongo/  mongo:    image: mongo:3    networks:      - graylog    volumes:      - mongo_data:/data/db  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/docker.html  elasticsearch:    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0    volumes:      - es_data:/usr/share/elasticsearch/data    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    deploy:      resources:        limits:          memory: 1g    networks:      - graylog  # Graylog: https://hub.docker.com/r/graylog/graylog/  graylog:    image: graylog/graylog:3.1    volumes:      - graylog_journal:/usr/share/graylog/data/journal      - ./graylog/config:/usr/share/graylog/data/config    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://192.168.0.103:9000/    networks:      - graylog    depends_on:      - mongo      - 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/udpnetworks:  graylog:    driver: bridge# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/volumes:  mongo_data:    driver: local  es_data:    driver: local  graylog_journal:    driver: local

5.運行 “docker-compose up”啟動服務, 服務正常啟動后就可以通過http://ip:9000 進行訪問graylog的Web界面,默認用戶admin/admin。

圖片

Graylog配置日志收集

Graylog的日志收集通過定義input來完成,在Graylog的Web管理頁面的System tab下可以選擇定義input來對日志進行收集

圖片

進入input頁面后選擇input的類型,比如定義GELF UDP的input:

圖片

選擇完成后點擊 “Lanch new input”,就會進入詳細的input配置,配置完成后保存就可以了

圖片

保存后一切正常的話,input就會進入RUNNING狀態,這時就可以往這個input里面發送數據了,點擊“Stop input”,input就會停止,數據的接收也會停止,“Stop input”會變成“Start input”,需要接受數據的時點擊啟動就可以了。

圖片

配置Docker容器發送數據到Graylog

配置Docker容器發送數據到Graylog時可以在運行docker run命令啟動容器的時候加上如下參數:???????

docker run --log-driver=gelf \--log-opt gelf-address=udp://graylog服務器地址:12201 \--log-opt tag=<當前容器服務標簽,用來供graylog查詢的時候進行分類> \<IMAGE> <COMMAND>

具體示例:???????

docker run -d \--log-driver=gelf \--log-opt gelf-address=udp://localhost:12201 \--log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}" \busybox sh -c 'while true; do echo "Graylog test message"; sleep 10; done;'

如果容器通過docker-compose命令啟動可以在docker-compose.yml文件中加入以下配置:???????

logging:  driver:"gelf"  options:    gelf-address:"udp://graylog服務器地址:12201"    tag:"容器服務標簽"

具體示例:???????

version: '2'services:  nginx:    image: nginx:latest    ports:      - "80:80"    logging:      driver: "gelf"      options:        gelf-address: "udp://localhost:12201"        tag: nginx-service

日志發送配置好之后就可以在的Search tab下搜索產看日志信息

圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712312.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712312.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712312.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue自定義實現icon選擇器

<template> <div> <span class"iconStyle" click"selectIcon"> <i :class"value" /> </span> <div class"iconTitle">選擇圖標</div> <el-dialog title"" :visible.sync"…

springboot + nacos + aws secretmanager 做賬號密碼隱私處理

方式一&#xff1a; #nacos配置文件data.yml: spring:cloud:nacos:discovery:ip: ****.comport: 80datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://*********/database?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&fail…

java 商機管理系統Myeclipse開發mysql數據庫web結構jsp編程計算機網頁項目

一、源碼特點 java 商機管理系統是一套完善的java web信息管理系統&#xff0c;對理解JSP java編程開發語言有幫助&#xff0c;系統具有完整的源代碼和數據庫&#xff0c;系統主要采用B/S模式開發。開發環境為 TOMCAT7.0,Myeclipse8.5開發&#xff0c;數據庫為Mysql5.0&…

LeetCode142. 環形鏈表 II刷題詳解

今天力扣刷到了一個特別有意思的題目&#xff0c;于是就寫了下面的題解來加深以下理解。 142. 環形鏈表 II - 力扣&#xff08;LeetCode&#xff09; 這個可以分為兩大步去寫&#xff0c;首先要判斷鏈表是否有環&#xff0c;然后如果有環就去找到環的入口&#xff0c;沒有環返…

python3.x的在線與離線安裝純凈版

由于計劃搭建一套使用python自動分析日志的流程&#xff0c;發現我們的測試環境CentOS 7仍然沒有安裝python3&#xff0c;無法使用這些新的庫。Python 3在設計上著重提升了語言的一致性和易用性&#xff0c;它引入了許多關鍵改進&#xff0c;此外&#xff0c;Python 3環境擁有豐…

基于springboot+html實現的衣物捐贈平臺

一、系統架構 前端&#xff1a;html | layui | jquery | css 后端&#xff1a;springboot | thymeleaf | mybatis 環境&#xff1a;jdk1.8 | mysql | maven 二、代碼及數據庫 三、功能介紹 01. 登錄頁 02. 注冊 03. web頁-首頁 04. web頁-捐贈衣服 05. web頁-論壇交流…

C# 中的 IReadOnlyDictionary 和 IReadOnlyList

C# 中的 IReadOnlyDictionary 和 IReadOnlyList 是接口&#xff0c;用于表示只讀的字典和只讀的列表。這些接口提供了對集合的只讀訪問權限&#xff0c;即不允許對集合進行修改操作&#xff0c;例如添加、刪除或修改元素。這種只讀特性對于需要保護數據完整性或只需要進行讀取操…

MYSQL--鎖機制*

一.對鎖機制的大概介紹: 1.大概的來說,MYSQL當中的鎖實際上就是合理的管理多個服務器對于同一個共享資源的使用,是計算機協調多個進程或者是線程并發訪問某一資源的機制(避免爭搶資源的現象發生) 2.在數據庫當中,數據是一種可以供許多的用戶進行共享使用的資源,如何保證數據并發…

軟考筆記--軟件開發模型

軟件開發模型給出了軟件開發活動各個階段之間的關系&#xff0c;它是軟件開發過程的概括&#xff0c;是軟件工程的重要內容。軟件開發模型為軟件工程管理提供了里程碑和進度表&#xff0c;為軟件開發過程提供了原則和方法。 一.軟件開發模型概述 軟件開發模型可分為三種類型&…

第十一屆藍橋杯省賽第一場C++ A組 / B組《整數拼接》(c++)

1.題目說明 給定一個長度為 n 的數組 A1,A2,???,An。 你可以從中選出兩個數 Ai 和 Aj(i 不等于 j)&#xff0c;然后將 Ai 和 Aj 一前一后拼成一個新的整數。 例如 12 和 345 可以拼成 12345 或 34512。 注意交換 Ai 和 Aj 的順序總是被視為 2 種拼法&#xff0c;即便是 …

考研倒計時半年:如何高效安排學習計劃?

距離考研還有半年的時間&#xff0c;這是一個既緊張又充滿希望的階段。如何利用好這段時間&#xff0c;制定一個高效的學習計劃&#xff0c;成為了每位考生關注的焦點。下面&#xff0c;我將為大家提供一些關于政治、英語和專業課的學習建議&#xff0c;希望能對大家有所幫助。…

曲線的凹凸性與拐點【高數筆記】

1.什么是曲線的凹凸性 2.什么是曲線的拐點 3.拐點的特征 4.拐點與駐點有什么不同 5.拐點的表示方法與駐點有什么不一樣 6.拐點與凹凸區間怎么求

力扣121題: 買賣股票的最佳時機

【題目描述】 給定一個數組 prices &#xff0c;它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。你只能選擇 某一天 買入這只股票&#xff0c;并選擇在 未來的某一個不同的日子賣出該股票。設計一個算法來計算你所能獲取的最大利潤。返回你可以從這筆交易中獲取的最…

Mathtype安裝時word啟動顯示“文件未找到:MathPage.WLL”

背景 由于老板布置的臨時工作&#xff0c;需要安裝Mathtype&#xff0c;但嘗試了3個不同的版本后&#xff08;每次都卸載干凈了&#xff09;&#xff0c;均未能成功安裝&#xff0c;出現的報錯3個版本各不相同&#xff1a; ①解壓安裝過程中失敗&#xff08;這個版本不再嘗試…

GoFrame:如何簡單地搭建一個簡單地微服務

一切資料來源于GoFrame官網, 感興趣的, 可以直接去官網查閱相關資料。 首先下載框架工具, 下載地址:https://github.com/gogf/gf/releases 然后進入你想要放置的項目文件夾, 執行命令行 gf init {project_name} #project_name為你的項目名 執行完后項目結構如圖所示 然…

同等學力申碩專業介紹——教育學碩士

同等學力申碩的專業很多。 目前有十三大門類&#xff0c;分別是醫學、法學、管理學、工學、教育學、經濟學、藝術學、文學、歷史學、理學、哲學、農學、軍事學等&#xff0c;每個大門類中都有很多的細分專業。 今天為大家介紹同等學力申碩專業——教育學。 專業介紹 教育學該…

基于java+springboot動物檢疫信息管理系統設計和實現

基于java SSM springboot動物檢疫信息管理系統設計和實現 博主介紹&#xff1a;多年java開發經驗&#xff0c;專注Java開發、定制、遠程、文檔編寫指導等,csdn特邀作者、專注于Java技術領域 作者主頁 央順技術團隊 Java畢設項目精品實戰案例《1000套》 歡迎點贊 收藏 ?留言 文…

【寸鐵的刷題筆記】樹、dfs、bfs、回溯、遞歸(三)

【寸鐵的刷題筆記】樹、dfs、bfs、回溯、遞歸(三) 大家好 我是寸鐵&#x1f44a; 金三銀四&#xff0c;樹、dfs、bfs、回溯、遞歸是必考的知識點? 快跟著寸鐵刷起來&#xff01;面試順利上岸&#x1f44b; 喜歡的小伙伴可以點點關注 &#x1f49d; 530. 二叉搜索樹的最小絕對差…

考研政治這樣復習更高效

政治復習是考研備考中的重要一環&#xff0c;需要考生制定科學的復習計劃&#xff0c;注重知識點的掌握和解題技巧的提升。以下是一些政治復習的建議&#xff1a; 梳理知識框架&#xff1a;首先&#xff0c;需要梳理政治學科的知識框架&#xff0c;了解各個章節之間的內在聯系…

【Vue3】自定義 Vue3 插件(全局實現頁面加載動畫)

// main.ts import { createApp } from vue import App from ./App.vue import Loading from "./components/Loading/index.ts";const app createApp(App) type Lod {show: () > void,hide: () > void } //編寫ts loading 聲明文件放置報錯 和 智能提示 decl…