OpenTelemetryでNGINXのパフォーマンスを簡単に監視する方法

OpenTelemetryでNGINXのパフォーマンスを簡単に監視する方法

Table of Contents

Great systems are not just built. They are monitored.

MetricFire runs Graphite and Grafana as a fully managed service for growing engineering teams, taking care of storage, scaling, and version updates so your team doesn't have to. Plans start at $19/month, billed per metric namespace rather than per host, and include engineer-staffed support. Integrations work natively with Heroku, AWS, Azure, and GCP, and data is stored with 3× redundancy in SOC2- and ISO:27001-certified data centres.

はじめに

NGINXのメトリクスをOpenTelemetry経由で収集し、Graphiteベースの監視環境へ送信するシンプルな方法をお探しの場合、この記事が役立ちます。最小限の設定だけで、数分以内にNGINX接続に関する主要なメトリクスを収集できるようになります。

本記事では、OpenTelemetry Collectorのインストール方法と、NGINXメトリクスを受信してHosted Carbonエンドポイントへエクスポートするための簡単な設定方法について解説します。

NGINXの導入

NGINXは、高トラフィックを効率的に処理しながらリソース消費を抑える、高速かつ軽量なWebサーバーおよびリバースプロキシです。その高速性、組み込みのロードバランシング機能、そしてモダンなアプリケーションへ容易に組み込める柔軟性から広く利用されています。近年、多くの開発者がクラウドベースやコンテナ化された環境へ移行していることもあり、NGINXはスケーラビリティとセキュリティを維持するための定番ソリューションとなっています。

NGINXのインストールと設定(Linux)

この記事では、すでにサーバー上でNGINXが稼働していることを前提としています。ただし、テスト目的で手順を試したい場合は、以下の方法でLinuxサーバー上に素早くセットアップできます。

sudo apt install -y nginx

デフォルトではNGINXは80番ポートで待ち受けるため、まず他のプロセスがそのポートを使用していないか確認します。

sudo netstat -tulnp | grep :80

NGINXの stub_status モジュールは、アクティブ接続数、処理済みリクエスト数、接続状態(Reading、Writing、Waiting)などのリアルタイムなサーバーヘルスメトリクスを提供します。これを有効化するには、通常 /etc/nginx/sites-available/default にあるNGINX設定ファイルへ以下のlocationブロックを追加します。

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    location /nginx_status {
        stub_status;
        allow 127.0.0.1;
        deny all;
    }
}

変更を保存したら、NGINXを再起動します。

sudo systemctl restart nginx
sudo systemctl status nginx

エンドポイントが正常に動作していることを確認するため、以下のコマンドを実行します。

curl http://localhost:80/nginx_status

期待される出力は以下のようになります。

Active connections: 2 
server accepts handled requests
 110 110 292 
Reading: 0 Writing: 1 Waiting: 1 

OpenTelemetryのインストールと設定

OpenTelemetry Collectorには、NGINX、PostgreSQL、Redis、Kafkaなどに対する組み込みサポートがあります。これらのReceiverは、サービスから主要なパフォーマンスメトリクスを直接取得するため、手動での解析やカスタムスクリプトは必要ありません。この記事では、すでにOpenTelemetryを利用していることを前提としていますが、以下ではシステムメトリクスを迅速に収集し、Carbonエンドポイントへエクスポートするための otelcol-contrib のインストールおよび設定例を紹介します。

OpenTelemetry Collector Contribのインストール(Linux)

otelcol-contribをダウンロードして展開します(最新バージョンや各OS向けのインストールコマンドについては、公式のインストールドキュメントをご確認ください)。

パッケージおよびファイルは通常、/etc/otelcol-contrib/にインストールされます。

Ubuntu/Debian (AMD)

wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.119.0/otelcol-contrib_0.119.0_linux_amd64.deb

sudo dpkg -i otelcol-contrib_0.119.0_linux_amd64.deb

RedHat/CentOS (AMD)

wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.119.0/otelcol-contrib_0.119.0_linux_amd64.rpm

sudo rpm -ivh otelcol-contrib_0.119.0_linux_amd64.rpm

インストール確認

otelcol-contrib --version

NGINX ReceiverとCarbon Exporterの設定

OpenTelemetryのNGINX Receiverは、localhost:80/nginx_status からメトリクスを収集し、それらを処理した後、指定したExporterへ転送します。

Carbon Exporterは、それらのメトリクスをGraphite互換バックエンドへ直接送信するため、最小限の設定で既存の監視基盤へOpenTelemetryを統合できます。

現在Graphiteデータソースを自前でホスティングしていない場合は、この例を続けるためにMetricFireのHosted Graphiteによる14日間無料トライアルを開始してください。

MetricFireアカウントを利用することで、Graphiteデータソースに加え、Hosted Grafana、アラート機能、各種インテグレーション、チーム機能も利用できます。

  1. まず、通常 /etc/otelcol-contrib/config.yaml にある設定ファイルを見つけて、お好みのテキストエディタで開きます。
  2. その後、設定ファイル全体を置き換えるか、現在の設定へ以下のセクションを追加します。
  3. HG-API-KEY と HOSTNAME は必ずご自身の値に置き換えてください。
receivers:
  nginx:
    endpoint: "http://localhost:80/nginx_status"

processors:
  batch: {}
  metricstransform:
    transforms:
      - include: ".*"
        match_type: regexp
        action: update
      new_name: "<HG-API-KEY>.opentel.$$0"
        operations:
          - action: add_label
            new_label: host
          new_value: <HOSTNAME>

exporters:
  carbon:
    endpoint: "carbon.hostedgraphite.com:2003"
    timeout: 10s

service:
  pipelines:
    metrics:
      receivers:
      - nginx
      processors:
        - batch
        - metricstransform
      exporters:
        - carbon

設定を保存したら、otelcol-contrib サービスを再起動します。

sudo systemctl restart otelcol-contrib
sudo systemctl status otelcol-contrib

または、潜在的な設定エラーを確認するために、設定ファイルを指定して手動実行することもできます。

otelcol-contrib --config /etc/otelcol-contrib/config.yaml

Prometheus形式のNGINXメトリクスを収集・転送するためのOpenTelemetry設定については、関連する記事をご参照ください。

タグ付きGraphiteメトリクスの送信

otelcol-contrib サービスを再起動してから約2分以内に、いくつかのタグ付きGraphiteメトリクスが opentel プレフィックス付きでHosted Graphiteアカウントへ送信されます。

OpenTelemetryはなぜタグ付きメトリクスをCarbonへエクスポートするのか?

  • それは、OpenTelemetryの基本モデルがGraphiteの「ドット記法」よりも、Prometheusスタイルの「ラベル」に近い設計だからです。データを長いメトリクス名へ変換して平坦化する代わりに、Graphiteタグを使用してラベル情報を保持することで、Graphiteバックエンド内でより柔軟なフィルタリングを実現できます。

これらのタグ付きメトリクスは、Hosted GraphiteのTag Search UIで、host タグを基準に検索できます。

OpenTelemetryでNGINXのパフォーマンスを簡単に監視する方法 - 1

また、必要に応じて別のExporterを設定し、他のデータソースへメトリクスを転送することも可能です。

MetricFireのHosted Graphiteでカスタムダッシュボードとアラートを作成

MetricFireは、サーバー、データベース、ネットワーク、プロセス、デバイス、アプリケーションからメトリクスやデータを収集・可視化・分析できる監視プラットフォームです。MetricFireを利用することで、インフラ内の問題を容易に特定し、リソースを最適化できます。MetricFireのHosted Graphiteを利用すれば、監視ソリューションを自前でホスティングする負担がなくなり、より重要な作業に時間を割くことができます。

パブリックCarbonエンドポイントへ送信されたメトリクスは、タイムスタンプが付与され、Hosted Graphiteバックエンドへ集約されます。

  1. OpenTelemetryのメトリクスは、次のGraphiteタグ形式で送信・保存されます:my.series;tag1=value1;tag2=value2 metric_value (timestamp)

  2. タグはフィルタリング機能を提供するため、メトリクスを効率的に検索できます。

  3. メトリクスはHosted Graphiteアカウント内に2年間保存され、それらを利用してカスタムダッシュボードやアラートを作成できます。

MetricFireのHosted Grafanaでカスタムダッシュボードを作成

Hosted Graphite UIで、Dashboardsへ移動し、「+ New Dashboard」を選択して新しい可視化を作成します。

その後、Editモードへ入り、Query UIを使用してGraphiteメトリクスパスを選択します(Hosted Graphiteアカウント経由でGrafanaへアクセスしている場合、デフォルトのデータソースはHostedGraphiteになります)。

注:タグ付きメトリクスをクエリするには、Graphiteの seriesByTag 関数を使用する必要があります。aliasByTags 関数の利用は任意です。

OpenTelemetryでNGINXのパフォーマンスを簡単に監視する方法 - 2

Grafanaには、さまざまな可視化設定、表示のカスタマイズ、単位設定に加え、ダッシュボード変数やイベントアノテーション設定などの高度な機能も多数用意されています。

カスタムGrafana可視化の作成に関する詳細については、Hosted Graphiteのダッシュボードドキュメントをご確認ください。

Graphiteアラートの作成

Hosted Graphite UIで、Alerts => Graphite Alertsへ移動し、新しいアラートを作成します。アラート名を設定し、タグ付きNGINXメトリクスをalerting metricフィールドへ追加し、このアラートが何を監視するものか説明文を入力します。

OpenTelemetryでNGINXのパフォーマンスを簡単に監視する方法 - 3

次に、Alert Criteriaタブを選択してしきい値を設定し、通知チャネルを選択します。デフォルトの通知チャネルは、Hosted Graphiteアカウント登録時に使用したメールアドレスです。ただし、Slack、PagerDuty、Microsoft Teams、OpsGenie、カスタムWebhookなどの通知チャネルも簡単に設定できます。通知チャネルの詳細については、こちらのドキュメントをご確認ください。

OpenTelemetryでNGINXのパフォーマンスを簡単に監視する方法 - 4

まとめ

NGINXの監視は、単に問題を発見するためだけではありません。アプリケーションを高速かつ効率的に、そして安定して稼働させ続けるために重要です。OpenTelemetryを利用することで、NGINXだけでなく、インフラ全体をリアルタイムで可視化できます。トラフィックスパイク、パフォーマンス低下、バックエンドの動作状況を関連付けて把握できるため、即座にインサイトを得られ、トラブルシューティングも容易になります。NGINXのメトリクスをOpenTelemetryへ取り込むことで、監視能力を強化し、不要なノイズを排除しながら、インフラを効率的かつ安定的に運用できるようになります。

また、OpenTelemetryによる監視でNGINXのパフォーマンスを最適化するためには、一般的なサーバー問題を理解し解決することも重要です。PHP-FPMが原因で発生するNGINX 502 Bad Gatewayエラーのトラブルシューティングについては、「Understanding NGINX 502 Bad Gateway: PHP-FPM」をご参照ください。

無料トライアルに登録して、今すぐインフラ監視を始めましょう。また、デモを予約し、監視ニーズについてMetricFireチームへ直接ご相談いただくことも可能です。

You might also like other posts...
metricfire Jun 01, 2026 · 4 min read

TelegrafでNagiosプラグインを監視する方法【設定ガイド】

Telegrafを使用してNagiosプラグインを監視する方法を解説。Nagios Pluginsの設定、Telegraf execプラグインによるメトリクス収集、Hosted GraphiteとGrafanaを活用したダッシュボード・アラート構築までをステップごとに紹介します。 Continue Reading

metricfire May 28, 2026 · 2 min read

TelegrafとMetricFireでRedisを監視する方法【設定手順を解説】

本記事では、TelegrafとMetricFireを使用してRedisを監視する方法を解説。Telegraf Agentの設定、Redis入力プラグインの構成、Grafanaダッシュボードやアラート作成まで、Redis監視の手順をステップごとにご紹介します。 Continue Reading

metricfire May 25, 2026 · 3 min read

TelegrafとMetricFireで始めるPostgreSQL監視ガイド

本記事では、TelegrafとMetricFireを使ってPostgreSQLを監視する方法を解説。メトリクス収集、Grafanaダッシュボード作成、Graphiteアラート設定まで、DBパフォーマンス監視の手順を詳しくご紹介します。 Continue Reading

header image

We strive for 99.95% uptime

Because our system is your system.

14-day trial 14-day trial
No Credit Card Required No Credit Card Required