目次
アプリケーション監視に Prometheus を使用する
ログ管理に ElasticSearch と Logstash を使用する
ホームページ 運用・保守 Linuxの運用と保守 アプリケーションの監視とログ管理に Docker を使用する方法

アプリケーションの監視とログ管理に Docker を使用する方法

Nov 07, 2023 pm 04:58 PM
docker モニター ログ管理

アプリケーションの監視とログ管理に Docker を使用する方法

Docker は現代のアプリケーションにおいて不可欠なテクノロジーとなっていますが、アプリケーションの監視とログ管理に Docker を使用することは課題です。 Service Discovery や Load Balancing などの Docker ネットワーク機能が継続的に強化されているため、完全で安定した効率的なアプリケーション監視システムの必要性がますます高まっています。

この記事では、アプリケーションの監視とログ管理のための Docker の使用方法を簡単に紹介し、具体的なコード例を示します。

アプリケーション監視に Prometheus を使用する

Prometheus は、SoundCloud によって開発されたオープンソースのプル モデルベースのサービス監視および警告ツールです。 Go 言語で書かれており、マイクロサービス ソリューションやクラウド環境で広く使用されています。監視ツールとして、DockerのCPU、メモリ、ネットワーク、ディスクなどを監視できるほか、多次元のデータスイッチング、柔軟なクエリ、アラーム、可視化機能もサポートしているため、迅速な対応と迅速な意思決定を可能にします。

もう 1 つ注意すべき点は、Prometheus はプル モードでサンプリングする必要があることです。つまり、監視対象のアプリケーションの /metrics インターフェイスにアクセスして監視データを取得する必要があります。したがって、監視対象アプリケーション イメージを開始するときは、最初に Prometheus にアクセスできる IP とポートを /metrics インターフェイスに設定する必要があります。以下は単純な Node.js アプリケーションです。

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 監視インジケーターを返します。

次に、公式 Web サイトから Prometheus の Docker イメージをダウンロードし、docker-compose.yml ファイルを作成します。このファイル内に Node.js アプリケーションのデータを取得します。

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 ファイルでは、2 つのサービスを定義します。1 つは Node.js アプリケーションを実行する Node サービス、もう 1 つは監視用の Prometheus サービスです。このうち、Node サービスによって公開されるポートはポート 3000 です。ポート マッピングを通じて、docker-compose.yml の IP およびポート 3000 を介して Node アプリケーションの /metrics インターフェイスにアクセスできます。 Prometheus は、ポート 9090 を介して、対応する監視インジケーター データにアクセスできます。

最後に、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 アプリケーションのインジケーターを定義します。ここで、targets パラメーターは、Node.js アプリケーションの IP アドレスとそれに対応するポート番号です。ここでは、ノードとポート 3000 を使用しています。

最後に、 docker-compose up コマンドを実行してアプリケーション全体とその監視サービスを開始し、Prometheus のメンバー インジケーターを表示します。

ログ管理に ElasticSearch と Logstash を使用する

Docker では、アプリケーション ログ データはさまざまな Docker コンテナーに分散されます。これらのログを一元管理したい場合は、ELK の ElasticSearch と Logstash を使用してログを一元管理し、コンピューター リソースの監視と分析を容易にすることができます。

始める前に、Logstash と ElasticSearch の Docker イメージをダウンロードし、docker-compose.yml ファイルを作成する必要があります。

このファイルでは 3 つのサービスを定義しており、そのうちの bls はビジネス ログをシミュレートするために使用される API サービスであり、各応答後にログが stdout とログ ファイルに記録されます。 logstash サービスは、Logstash によって公式に提供されている Docker イメージから構築されており、ログの収集、フィルタリング、送信に使用されます。 ElasticSearch サービスは、ログの保存と取得に使用されます。

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
ログイン後にコピー

構成ファイルでは、コンテナ内のパスをホストのログ ファイル システムにマップします。同時に、ログ オプションを通じて、ログのボリューム サイズと量が定義され、ログが占有するストレージが制限されます。

設定ファイルの logstash で、nginx_pipeline.conf という名前の新しいパイプラインを定義します。このファイルは、nginx ログの収集、フィルタリング、送信を処理するために使用されます。 ELK の仕組みと同様に、logstash は受信したログをさまざまな条件に基づいて処理し、作成済みの Elasticsearch クラスターに送信します。この構成ファイルでは、次の処理ロジックを定義します。

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

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

output {
  elasticsearch {
    hosts => [ "${ES_HOST}:9200" ]
    index => "nginx_log_index"
  }
}
ログイン後にコピー

この構成ファイルでは、file という名前の入力を定義します。これは、ローカル ログ ファイルからデータを読み取ることを意味します。次に、grok ライブラリを使用して特定のテンプレートに一致するログを解析するフィルターを導入しました。最後に、環境変数 ES_HOST を介してコンテナに取得とレポートを渡しながら、Elasticsearch クラスターのアドレスにデータを転送する出力を定義します。

最終的に、上記のように ELK 全体の構成が完了すると、効率的なログ管理システムが完成します。各ログは一元管理された場所に送信され、統合され、簡単に検索できるようになります。フィルタリングと可視化の操作。

以上がアプリケーションの監視とログ管理に Docker を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPマイクロサービスコンテナ化のアジャイル開発と運用 PHPマイクロサービスコンテナ化のアジャイル開発と運用 May 08, 2024 pm 02:21 PM

回答: PHP マイクロサービスは、アジャイル開発のために HelmCharts でデプロイされ、分離とスケーラビリティのために DockerContainer でコンテナ化されます。詳細説明: HelmCharts を使用して PHP マイクロサービスを自動的にデプロイし、アジャイル開発を実現します。 Docker イメージを使用すると、マイクロサービスの迅速な反復とバージョン管理が可能になります。 DockerContainer 標準はマイクロサービスを分離し、Kubernetes がコンテナの可用性とスケーラビリティを管理します。 Prometheus と Grafana を使用して、マイクロサービスのパフォーマンスと健全性を監視し、アラームと自動修復メカニズムを作成します。

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

PHP CI/CD を使用して迅速に反復するにはどうすればよいですか? PHP CI/CD を使用して迅速に反復するにはどうすればよいですか? May 08, 2024 pm 10:15 PM

回答: PHPCI/CD を使用して、CI/CD パイプラインの設定、自動化されたテストおよび展開プロセスなどの迅速な反復を実現します。 CI/CD パイプラインのセットアップ: CI/CD ツールを選択し、コード リポジトリを構成し、ビルド パイプラインを定義します。自動テスト: 単体テストと統合テストを作成し、テスト フレームワークを使用してテストを簡素化します。実際のケース: TravisCI の使用: TravisCI をインストールし、パイプラインを定義し、パイプラインを有効にして、結果を表示します。継続的デリバリーを実装します。展開ツールを選択し、展開パイプラインを定義し、展開を自動化します。利点: 開発効率が向上し、エラーが減少し、納期が短縮されます。

Dockerコンテナを使用したJavaEEアプリケーションのデプロイ Dockerコンテナを使用したJavaEEアプリケーションのデプロイ Jun 05, 2024 pm 08:29 PM

Docker コンテナを使用した Java EE アプリケーションのデプロイ: Dockerfile を作成してイメージを定義し、イメージを構築し、コンテナを実行してポートをマップし、ブラウザでアプリケーションにアクセスします。サンプル JavaEE アプリケーション: REST API はデータベースと対話し、Docker 経由でデプロイ後にローカルホストでアクセスできます。

vscode に Docker 拡張機能をインストールする方法 vscode に Docker 拡張機能をインストールする手順 vscode に Docker 拡張機能をインストールする方法 vscode に Docker 拡張機能をインストールする手順 May 09, 2024 pm 03:25 PM

1. まず、インターフェイスを開いた後、左側の拡張機能アイコン ボタンをクリックします。 2. 次に、開いた拡張機能ページで検索バーの場所を見つけます。 3. 次に、マウスで「Docker」という単語を入力して拡張機能プラグインを見つけます。 4最後に、対象のプラグインを選択して右をクリックし、下隅にあるインストールボタンをクリックします。

PHP エンタープライズ アプリケーション マイクロサービス アーキテクチャ設計に関する Q&A PHP エンタープライズ アプリケーション マイクロサービス アーキテクチャ設計に関する Q&A May 07, 2024 am 09:36 AM

マイクロサービス アーキテクチャは、PHP フレームワーク (Symfony や Laravel など) を使用してマイクロサービスを実装し、RESTful 原則と標準データ形式に従って API を設計します。マイクロサービスはメッセージ キュー、HTTP リクエスト、または gRPC を介して通信し、監視とトラブルシューティングに Prometheus や ELKStack などのツールを使用します。

PHP マイクロサービスのコンテナ化された監視とログ管理の実践 PHP マイクロサービスのコンテナ化された監視とログ管理の実践 May 08, 2024 pm 12:06 PM

PHP マイクロサービスのコンテナー化された監視とログ管理の監視: Prometheus と Grafana を使用して、リソースの使用状況、リクエストの数、待機時間を監視します。ログ管理: ELKStack (ElasticSearch、Logstash、Kibana) を使用してログを収集、解析、視覚化します。 Filebeat エージェントをデプロイして、ログを ElasticSearch に送信します。

See all articles