這篇文章給大家介紹基于Graylog的容器化應(yīng)用日志管理是怎么樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新互聯(lián)主營(yíng)無(wú)為網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,手機(jī)APP定制開(kāi)發(fā),無(wú)為h5小程序設(shè)計(jì)搭建,無(wú)為網(wǎng)站營(yíng)銷(xiāo)推廣歡迎無(wú)為等地區(qū)企業(yè)咨詢(xún)
當(dāng)一個(gè)容器啟動(dòng)的時(shí)候,它其實(shí)是docker deamon的一個(gè)子進(jìn)程,docker daemon可以拿到容器里面進(jìn)程的標(biāo)準(zhǔn)輸出,然后通過(guò)自身的LogDriver模塊來(lái)處理,LogDriver支持的方式很多,默認(rèn)寫(xiě)到本地文件,也可以發(fā)送到syslog等。

Docker會(huì)默認(rèn)收集應(yīng)用程序的標(biāo)準(zhǔn)輸出到一個(gè)json.log文件中,以一行一條JSON存儲(chǔ)數(shù)據(jù),文件的格式如下:
{"log":"root@74205cdc7b53dd:/#ls\r\n","stream":"stdout","time":"xxx.155834526Z"}
{"log":"root@74205cdc7b53dd:/#ls\r\n","stream":"stdout","time":"xxx.255834528Z"}Docker的這種日志存儲(chǔ)方式可以在容器啟動(dòng)時(shí)通過(guò)指定log-driver進(jìn)行配置,支持的log driver如下:

Graylog是一個(gè)開(kāi)源的完整的日志管理工具,功能和ELK類(lèi)似。Docker原生支持graylog協(xié)議,Graylog官方也提供了對(duì)Docker的支持,二者可以無(wú)縫銜接。Graylog官方提供了Dockerfile可以在Docker上部署日志系統(tǒng),同時(shí)也提供了docker-compose.yml文件來(lái)快速部署整個(gè)graylog棧。
詳細(xì)內(nèi)容可以通過(guò) http://docs.graylog.org/en/3.1/pages/installation/docker.html 來(lái)查看。

1.在當(dāng)前用戶(hù)目錄下創(chuàng)建graylog目錄作為部署的工作目錄:
$ mkdir graylog $ cd graylog
2.初始化目錄和配置文件
$ mkdir -p ./graylog/config $ cd ./graylog/config $ wget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.1/config/graylog.conf $ wget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.1/config/log4j2.xml #另外由于Graylog以ID 1100 定義了用戶(hù)和用戶(hù)組, #導(dǎo)致Graylog在啟動(dòng)的時(shí)候可能會(huì)報(bào)config目錄權(quán)限不足的錯(cuò)誤,可以通過(guò)以下命令來(lái)解決 chown -R 1100:1100 ./graylog/config
3.修改配置文件, 上一步獲得的graylog.conf文件是官方提供的默認(rèn)配置,用戶(hù)可以根據(jù)需要進(jìn)行配置,比如配置中時(shí)區(qū)默認(rèn)為UTC時(shí)區(qū),可以將其改為中國(guó)時(shí)區(qū)
root_timezone = Asia/Shanghai
4.準(zhǔn)備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/udp networks: 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.運(yùn)行 “docker-compose up”啟動(dòng)服務(wù), 服務(wù)正常啟動(dòng)后就可以通過(guò)http://ip:9000 進(jìn)行訪(fǎng)問(wèn)graylog的Web界面,默認(rèn)用戶(hù)admin/admin。
Graylog的日志收集通過(guò)定義input來(lái)完成,在Graylog的Web管理頁(yè)面的System tab下可以選擇定義input來(lái)對(duì)日志進(jìn)行收集

進(jìn)入input頁(yè)面后選擇input的類(lèi)型,比如定義GELF UDP的input:

選擇完成后點(diǎn)擊 “Lanch new input”,就會(huì)進(jìn)入詳細(xì)的input配置,配置完成后保存就可以了

保存后一切正常的話(huà),input就會(huì)進(jìn)入RUNNING狀態(tài),這時(shí)就可以往這個(gè)input里面發(fā)送數(shù)據(jù)了,點(diǎn)擊“Stop input”,input就會(huì)停止,數(shù)據(jù)的接收也會(huì)停止,“Stop input”會(huì)變成“Start input”,需要接受數(shù)據(jù)的時(shí)點(diǎn)擊啟動(dòng)就可以了。

配置Docker容器發(fā)送數(shù)據(jù)到Graylog時(shí)可以在運(yùn)行docker run命令啟動(dòng)容器的時(shí)候加上如下參數(shù):
docker run --log-driver=gelf \ --log-opt gelf-address=udp://graylog服務(wù)器地址:12201 \ --log-opt tag=<當(dāng)前容器服務(wù)標(biāo)簽,用來(lái)供graylog查詢(xún)的時(shí)候進(jìn)行分類(lèi)> \ <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;'如果容器通過(guò)docker-compose命令啟動(dòng)可以在docker-compose.yml文件中加入以下配置:
logging: driver:"gelf" options: gelf-address:"udp://graylog服務(wù)器地址:12201" tag:"容器服務(wù)標(biāo)簽"
具體示例:
version: '2' services: nginx: image: nginx:latest ports: - "80:80" logging: driver: "gelf" options: gelf-address: "udp://localhost:12201" tag: nginx-service
日志發(fā)送配置好之后就可以在的Search tab下搜索產(chǎn)看日志信息

關(guān)于基于Graylog的容器化應(yīng)用日志管理是怎么樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)站題目:基于Graylog的容器化應(yīng)用日志管理是怎么樣的
文章URL:http://www.chinadenli.net/article34/gshjse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、、App開(kāi)發(fā)、網(wǎng)站改版、網(wǎng)站內(nèi)鏈、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)