国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
利用Prometheus進行應(yīng)用程式監(jiān)控
利用ElasticSearch和Logstash進行日誌管理
首頁 運維 linux運維 如何使用Docker進行應(yīng)用程式的監(jiān)控與日誌管理

如何使用Docker進行應(yīng)用程式的監(jiān)控與日誌管理

Nov 07, 2023 pm 04:58 PM
docker 監(jiān)控 日誌管理

如何使用Docker進行應(yīng)用程式的監(jiān)控與日誌管理

Docker已經(jīng)成為了現(xiàn)代化應(yīng)用中的必備技術(shù),但使用Docker進行應(yīng)用程式監(jiān)控和日誌管理卻是一項挑戰(zhàn)。隨著Docker網(wǎng)路功能,如Service Discovery和Load Balancing的不斷增強,我們越來越需要一個完整、穩(wěn)定,以及高效的應(yīng)用監(jiān)控系統(tǒng)。

在本文中,我們將簡單地介紹使用Docker進行應(yīng)用監(jiān)控和日誌管理的同時給出具體的程式碼範(fàn)例。

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

Prometheus是一款開源,基於Pull模型的服務(wù)監(jiān)測和警告工具,由SoundCloud開發(fā)。它使用Go語言編寫,並廣泛應(yīng)用於微服務(wù)方案和雲(yún)端環(huán)境。作為一款監(jiān)控工具,它可以對Docker的CPU、記憶體、網(wǎng)路和磁碟等進行監(jiān)控,並且還支援多維資料切換、靈活的查詢、警報以及視覺化等功能,讓你可以快速做出反應(yīng),並快速做出決策。

還有一點要注意的是,Prometheus需要透過Pull方式的取樣,也就是存取被監(jiān)控應(yīng)用中的/metrics介面取得監(jiān)控資料。所以,在啟動被監(jiān)控應(yīng)用程式鏡像時,需要先將可以存取到Prometheus的IP和連接埠配置到/metrics介面中。下面是一個簡單的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!')
})

在該程式碼中,我們透過/metrics接口,返回了一個api_calls_total的監(jiān)控指標。

接著,在官網(wǎng)上下載Prometheus的Docker映像,並建立一個docker-compose.yml文件,並且在該文件中,我們?nèi)〉迷揘ode.js應(yīng)用的資料。

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

該docker-compose.yml檔案中,我們定義了兩個服務(wù),一個是運行Node.js應(yīng)用程式的Node服務(wù),另一個是用於監(jiān)控的Prometheus服務(wù)。其中,Node服務(wù)發(fā)布的端口為3000端口,透過端口映射,可以透過docker-compose.yml中的IP和3000端口存取到該Node應(yīng)用的/metrics接口。而Prometheus則可以透過9090埠存取對應(yīng)的監(jiān)控指標資料。

最後,在prometheus.yml檔案中,我們需要定義要取得的資料來源。

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']

在該檔案中,我們定義了要擷取的所有的Node.js應(yīng)用的指標,其中targets參數(shù)是Node.js應(yīng)用的IP位址及其對應(yīng)埠號。在這裡,我們使用的是node和3000連接埠。

最後,執(zhí)行docker-compose up指令,即可啟動整個應(yīng)用程式及其監(jiān)控服務(wù),並在Prometheus中查看該會員指標。

利用ElasticSearch和Logstash進行日誌管理

在Docker中,所應(yīng)用的日誌資料分散在不同的Docker容器中。如果你要在集中的地方對這些日誌進行管理,那麼可以透過使用ELK中的ElasticSearch和Logstash,將日誌中心化管理,以便更輕鬆地實現(xiàn)電腦資源的監(jiān)控和分析。

在開始之前,需要先下載Logstash和ElasticSearch的Docker映像,並建立一個docker-compose.yml檔案。

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

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

在設(shè)定檔中,我們對應(yīng)了容器內(nèi)的路徑到宿主機的日誌檔案系統(tǒng)中。同時透過logging的option,則定義了日誌的磁碟區(qū)大小和數(shù)量,以限制日誌的佔用儲存。

在設(shè)定檔的logstash中,我們定義了一個新的pipeline,其名稱為nginx_pipeline.conf,該檔案用於處理nginx日誌的收集、過濾和傳輸。與ELK的工作原理相同,logstash將根據(jù)不同的條件,對接收到的日誌進行處理,並將其發(fā)送到已經(jīng)建立的 Elasticsearch 叢集中。在這個設(shè)定檔中,我們定義瞭如下處理邏輯:

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

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

output {
  elasticsearch {
    hosts => [ "${ES_HOST}:9200" ]
    index => "nginx_log_index"
  }
}

在該設(shè)定檔中,我們定義了一個name為file的輸入,表示要從本機Log檔案中讀取資料。接著,我們引進了使用grok函式庫來解析符合特定範(fàn)本的日誌的filter。最後,我們定義了輸出,將資料傳輸?shù)?Elasticsearch 叢集的位址,同時將檢索和報告透過環(huán)境變數(shù)ES_HOST傳遞到容器中。

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

以上是如何使用Docker進行應(yīng)用程式的監(jiān)控與日誌管理的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
怎樣開發(fā)一個完整的PythonWeb應(yīng)用程序? 怎樣開發(fā)一個完整的PythonWeb應(yīng)用程序? May 23, 2025 pm 10:39 PM

要開發(fā)一個完整的PythonWeb應(yīng)用程序,應(yīng)遵循以下步驟:1.選擇合適的框架,如Django或Flask。 2.集成數(shù)據(jù)庫,使用ORM如SQLAlchemy。 3.設(shè)計前端,使用Vue或React。 4.進行測試,使用pytest或unittest。 5.部署應(yīng)用,使用Docker和平臺如Heroku或AWS。通過這些步驟,可以構(gòu)建出功能強大且高效的Web應(yīng)用。

查看Docker容器內(nèi)部進程信息的方法 查看Docker容器內(nèi)部進程信息的方法 May 19, 2025 pm 09:06 PM

查看Docker容器內(nèi)部進程信息有三種方法:1.使用dockertop命令,可以列出容器內(nèi)所有進程,顯示PID、用戶、命令等信息;2.使用dockerexec進入容器內(nèi)部,再用ps或top命令查看詳細進程信息;3.使用dockerstats命令,實時顯示容器資源使用情況,結(jié)合dockertop可全面了解容器性能。

如何在Ubuntu上部署PyTorch應(yīng)用 如何在Ubuntu上部署PyTorch應(yīng)用 May 29, 2025 pm 11:18 PM

在Ubuntu上部署PyTorch應(yīng)用可以通過以下步驟完成:1.安裝Python和pip首先,確保你的系統(tǒng)上已經(jīng)安裝了Python和pip。你可以使用以下命令來安裝它們:sudoaptupdatesudoaptinstallpython3python3-pip2.創(chuàng)建虛擬環(huán)境(可選)為了隔離你的項目環(huán)境,建議創(chuàng)建一個虛擬環(huán)境:python3-mvenvmyenvsourcemyenv/bin/activat

Debian上Jenkins部署性能調(diào)優(yōu) Debian上Jenkins部署性能調(diào)優(yōu) May 28, 2025 pm 04:51 PM

在Debian上部署和調(diào)優(yōu)Jenkins是一個涉及多個步驟的過程,包括安裝、配置、插件管理和性能優(yōu)化。以下是一個詳細的指南,幫助你實現(xiàn)高效的Jenkins部署。安裝Jenkins首先,確保你的系統(tǒng)已經(jīng)安裝了Java環(huán)境。 Jenkins需要Java運行時環(huán)境(JRE)才能正常運行。 sudoaptupdatesudoaptinstallopenjdk-11-jdk驗證Java安裝成功:java-version接下來,添加J

批量停止Docker容器的高效操作方法 批量停止Docker容器的高效操作方法 May 19, 2025 pm 09:03 PM

批量停止Docker容器的高效方法包括使用基本命令和工具。 1.使用dockerstop$(dockerps-q)命令,並可調(diào)整超時時間,如dockerstop-t30$(dockerps-q)。 2.利用dockerps的過濾選項,如dockerstop$(dockerps-q--filter"label=app=web")。 3.使用DockerCompose命令docker-composedown。 4.編寫腳本按順序停止容器,如停止db、app和web容器。

比較不同Docker鏡像版本差異的方法 比較不同Docker鏡像版本差異的方法 May 19, 2025 pm 09:00 PM

比較不同Docker鏡像版本差異的方法有兩種:1.使用dockerdiff命令查看容器文件系統(tǒng)變化;2.使用dockerhistory命令查看鏡像構(gòu)建層級差異。這些方法有助於理解和優(yōu)化鏡像版本管理。

如何在Debian上實現(xiàn)Docker的自動化部署 如何在Debian上實現(xiàn)Docker的自動化部署 May 28, 2025 pm 04:33 PM

在Debian系統(tǒng)上實現(xiàn)Docker的自動化部署可以通過多樣的方法來完成,以下是詳細的步驟指南:1.安裝Docker首先,確保你的Debian系統(tǒng)保持最新狀態(tài):sudoaptupdatesudoaptupgrade-y接著,安裝必要的軟件包以支持APT通過HTTPS訪問倉庫:sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-common-y導(dǎo)入Docker的官方GPG密鑰:curl-

配置PhpStorm與Docker容器化開發(fā)環(huán)境 配置PhpStorm與Docker容器化開發(fā)環(huán)境 May 20, 2025 pm 07:54 PM

通過Docker容器化技術(shù),PHP開發(fā)者可以利用PhpStorm提高開發(fā)效率和環(huán)境一致性。具體步驟包括:1.創(chuàng)建Dockerfile定義PHP環(huán)境;2.在PhpStorm中配置Docker連接;3.創(chuàng)建DockerCompose文件定義服務(wù);4.配置遠程PHP解釋器。優(yōu)點是環(huán)境一致性強,缺點包括啟動時間長和調(diào)試複雜。

See all articles