亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

如何使用Docker進(jìn)行應(yīng)用的監(jiān)控和日志管理

WBOY
發(fā)布: 2023-11-07 16:58:54
原創(chuàng)
1319人瀏覽過

如何使用docker進(jìn)行應(yīng)用的監(jiān)控和日志管理

Docker已經(jīng)成為了現(xiàn)代化應(yīng)用中的一項(xiàng)必備技術(shù),但是使用Docker進(jìn)行應(yīng)用監(jiān)控和日志管理卻是一項(xiàng)挑戰(zhàn)。隨著Docker網(wǎng)絡(luò)功能,如Service Discovery和Load Balancing的不斷增強(qiáng),我們?cè)絹碓叫枰粋€(gè)完整、穩(wěn)定,以及高效的應(yīng)用監(jiān)控系統(tǒng)。

在本文中,我們將簡單地介紹使用Docker進(jìn)行應(yīng)用監(jiān)控和日志管理的同時(shí)給出具體的代碼示例。

利用Prometheus進(jìn)行應(yīng)用監(jiān)控

Prometheus是一款開源,基于Pull模型的服務(wù)監(jiān)測(cè)和警告工具,由SoundCloud開發(fā)。它使用Go語言編寫,被廣泛應(yīng)用于微服務(wù)方案和云環(huán)境中。作為一款監(jiān)控工具,它可以對(duì)Docker的CPU、內(nèi)存、網(wǎng)絡(luò)和磁盤等進(jìn)行監(jiān)控,并且還支持多維數(shù)據(jù)切換、靈活的查詢、報(bào)警以及可視化等功能,讓你可以快速做出反應(yīng),并快速做出決策。

還有一點(diǎn)需要注意的是,Prometheus需要通過Pull方式的采樣,也就是訪問被監(jiān)控應(yīng)用中的/metrics接口獲取監(jiān)控?cái)?shù)據(jù)。所以,在啟動(dòng)被監(jiān)控應(yīng)用鏡像時(shí),需要先將可以訪問到Prometheus的IP和端口配置到/metrics接口中。下面是一個(gè)簡單的Node.js應(yīng)用。

const express = require('express')
const app = express()

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.get('/metrics', (req, res) => {
  res.send(`
    # HELP api_calls_total Total API calls
    # TYPE api_calls_total counter
    api_calls_total 100
  `)
})

app.listen(3000, () => {
  console.log('Example app listening on port 3000!')
})
登錄后復(fù)制

在該代碼中,我們通過/metrics接口,返回了一個(gè)api_calls_total的監(jiān)控指標(biāo)。

接著,在官網(wǎng)上下載Prometheus的Docker鏡像,并創(chuàng)建一個(gè)docker-compose.yml文件,并且在該文件中,我們獲取該Node.js應(yīng)用的數(shù)據(jù)。

version: '3'
services:
  node:
    image: node:lts
    command: node index.js
    ports:
      - 3000:3000

  prometheus:
    image: prom/prometheus:v2.25.2
    volumes:
      - ./prometheus:/etc/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention.time=15d'
    ports:
      - 9090:9090
登錄后復(fù)制

該docker-compose.yml文件中,我們定義了兩個(gè)服務(wù),一個(gè)是運(yùn)行Node.js應(yīng)用的Node服務(wù),另一個(gè)是用于監(jiān)控的Prometheus服務(wù)。其中,Node服務(wù)發(fā)布的端口為3000端口,通過端口映射,可以通過docker-compose.yml中的IP和3000端口訪問到該Node應(yīng)用的/metrics接口。而Prometheus則可以通過9090端口訪問對(duì)應(yīng)的監(jiān)控指標(biāo)數(shù)據(jù)。

最后,在prometheus.yml文件中,我們需要定義要獲取的數(shù)據(jù)來源。

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'node-exporter'
    static_configs:
    - targets: ['node:9100']

  - job_name: 'node-js-app'
    static_configs:
    - targets: ['node:3000']
登錄后復(fù)制

在該文件中,我們定義了要采集的所有的Node.js應(yīng)用的指標(biāo),其中targets參數(shù)是Node.js應(yīng)用的IP地址及其對(duì)應(yīng)端口號(hào)。在這里,我們使用的是node和3000端口。

最后,運(yùn)行docker-compose up命令,即可啟動(dòng)整個(gè)應(yīng)用及其監(jiān)控服務(wù),并在Prometheus中查看該會(huì)員指標(biāo)。

利用ElasticSearch和Logstash進(jìn)行日志管理

在Docker中,應(yīng)用的日志數(shù)據(jù)分布在不同的Docker容器中。如果你要在集中的地方對(duì)這些日志進(jìn)行管理,那么可以通過使用ELK中的ElasticSearch和Logstash,將日志中心化管理,以便更輕松地實(shí)現(xiàn)計(jì)算機(jī)資源的監(jiān)控和分析。

在開始之前,需要先下載Logstash和ElasticSearch的Docker鏡像,并創(chuàng)建一個(gè)docker-compose.yml文件。

在該文件中,我們定義了三個(gè)服務(wù),其中bls是用來模擬業(yè)務(wù)日志的API服務(wù),其每次響應(yīng)后,將記錄一條日志到stdout和日志文件中。logstash服務(wù)是由Logstash官方提供的Docker鏡像構(gòu)建,用于收集、過濾和傳輸日志。ElasticSearch服務(wù)用于存儲(chǔ)和檢索日志。

version: '3'
services:
  bls:
    image: nginx:alpine
    volumes:
      - ./log:/var/log/nginx
      - ./public:/usr/share/nginx/html:ro
    ports:
      - "8000:80"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "10"

  logstash:
    image: logstash:7.10.1
    volumes:
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    environment:
      - "ES_HOST=elasticsearch"
    depends_on:
      - elasticsearch

  elasticsearch:
    image: elasticsearch:7.10.1
    environment:
      - "http.host=0.0.0.0"
      - "discovery.type=single-node"
    volumes:
      - ./elasticsearch:/usr/share/elasticsearch/data
登錄后復(fù)制

在配置文件中,我們映射了容器內(nèi)的路徑到宿主機(jī)的日志文件系統(tǒng)中。同時(shí)通過logging的option,則定義了日志的卷大小和數(shù)量,以限制日志的占用存儲(chǔ)。

在配置文件的logstash中,我們定義了一個(gè)新的pipeline,其名為nginx_pipeline.conf,該文件用于處理nginx日志的收集、過濾和傳輸。與ELK的工作原理相同,logstash將根據(jù)不同的條件,對(duì)接收到的日志進(jìn)行處理,并將其發(fā)送到已經(jīng)創(chuàng)建的 Elasticsearch 集群中。在該配置文件中,我們定義了如下處理邏輯:

input {
  file {
    path => "/var/log/nginx/access.log"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

output {
  elasticsearch {
    hosts => [ "${ES_HOST}:9200" ]
    index => "nginx_log_index"
  }
}
登錄后復(fù)制

在該配置文件中,我們定義了一個(gè)name為file的輸入,表示要從本地Log文件中讀取數(shù)據(jù)。接著,我們引入了使用grok庫來解析符合特定模板的日志的filter。最后,我們定義了輸出,其將數(shù)據(jù)傳輸?shù)?Elasticsearch 集群的地址,同時(shí)將檢索和報(bào)告通過環(huán)境變量ES_HOST傳遞到容器中。

在最后,如上完成整個(gè)ELK的配置后,我們會(huì)得到一個(gè)高效的日志管理系統(tǒng),每條日志都將發(fā)送到集中的地方,并被整合在一起,可以實(shí)現(xiàn)簡便的搜索,過濾和可視化操作。

以上就是如何使用Docker進(jìn)行應(yīng)用的監(jiān)控和日志管理的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問題
開源免費(fèi)商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)