Supported OS Linux Windows Mac OS

インテグレーションバージョン7.1.0

HAProxy 付属のダッシュボード

概要

Datadog で HAProxy のアクティビティをキャプチャして、以下のことができます。

  • HAProxy の負荷分散パフォーマンスを視覚化できます。
  • サーバーがダウンしたときに気付くことができます。
  • HAProxy のパフォーマンスを他のアプリケーションと関連付けることができます。

セットアップ

このインテグレーションでは、Prometheus エンドポイント (推奨) または stats エンドポイントを介したソケットベースのインテグレーション (非推奨) からメトリクスを収集できます。Prometheus エンドポイントを使用するには、HAProxy バージョン 2 (エンタープライズバージョン 1.9rc1) 以降が必要です。

Prometheus エンドポイントを使用する場合、バージョン 1.10.0 以降、この OpenMetrics ベースのインテグレーションには、最新モード (use_openmetrics: true) とレガシーモード (use_openmetrics: false および use_prometheus: true) があります。すべての最新機能を利用するために、Datadog は最新モードを有効にすることを推奨します。詳しくは、OpenMetrics ベースのインテグレーションにおける最新バージョニングとレガシーバージョニングを参照してください。

ソケットベースのインテグレーションを使用するには、use_openmetricsuse_prometheus を false に設定し、構成セクションの対応する手順に従ってください。

use_openmetrics オプションは、最新の OpenMetrics モードを使用し、Agent v7.35 以降が必要です。または、メトリクス収集のために Agent v6.35 以降で Python 3 を有効にする必要があります。Python 3 を使用できないホストや、Agent v7.34 以前のホストでは、OpenMetrics のレガシーモードまたはソケットベースのレガシーインテグレーションを使用してください。

[OpenMetrics V1] または [OpenMetrics V2] とマークされたメトリクスは、HAProxy インテグレーションの対応するモードを使用してのみ利用可能です。[OpenMetrics V1 and V2] とマークされたメトリクスは、どちらのモードでも収集されます。

インストール

HAProxy チェックは Datadog Agent パッケージに含まれています。HAProxy サーバーには何もインストールする必要がありません。

構成

Prometheus の使用

このインテグレーションを設定するための推奨される方法は、HAProxy で Prometheus エンドポイントを有効にすることです。このエンドポイントは、バージョン 2 (エンタープライズバージョン 1.9rc1) 以降の HAProxy に組み込まれています。古いバージョンを使用している場合は、HAProxy Prometheus エクスポーターを設定するか、次のセクションで説明するレガシーソケットベースのインテグレーションを設定することを検討してください。

最新の OpenMetrics モードではなく、従来の OpenMetrics モードを使用するには、use_openmetrics オプションを use_prometheus に変更し、openmetrics_endpoint オプションを prometheus_url に変更してください。詳細については、ホストからの Prometheus および OpenMetrics メトリクス収集のドキュメントを参照してください。

HAProxy の準備

  1. 公式ガイドを使用して haproxy.conf を構成します。
  2. HAProxy を再起動して、Prometheus エンドポイントを有効にします

Agent の構成

ホスト

メトリクスの収集

ホストで実行中の Agent に対してこのチェックを構成するには

  1. HAProxy メトリクスの収集を開始するには、Agent のコンフィギュレーションディレクトリのルートにある conf.d/ フォルダーの haproxy.d/conf.yaml ファイルを編集します。使用可能なすべてのコンフィギュレーションオプションの詳細については、サンプル haproxy.d/conf.yaml を参照してください。

    instances:
    
      ## @param use_openmetrics - boolean - optional - default: false
      ## Enable to preview the new version of the check which supports HAProxy version 2 or later
      ## or environments using the HAProxy exporter.
      ##
      ## OpenMetrics-related options take effect only when this is set to `true`. 
      ##
      ## Uses the latest OpenMetrics V2 implementation for more features and better performance.
      ## Note: To see the configuration options for the OpenMetrics V1 implementation (Agent v7.33 or earlier),
      ## https://github.com/DataDog/integrations-core/blob/7.33.x/haproxy/datadog_checks/haproxy/data/conf.yaml.example
      #
    - use_openmetrics: true  # Enables OpenMetrics V2
    
      ## @param openmetrics_endpoint - string - optional
      ## The URL exposing metrics in the OpenMetrics format.
      #
      openmetrics_endpoint: http://localhost:<PORT>/metrics
    

    レガシー実装の構成オプションを表示するには、Agent v7.34 以前のサンプル haproxy.d/conf.yaml ファイルをご覧ください。

  2. Agent を再起動します

コンテナ化

コンテナ環境の場合は、オートディスカバリーのインテグレーションテンプレートのガイドを参照して、次のパラメーターを適用してください。

メトリクスの収集
パラメーター
<INTEGRATION_NAME>haproxy
<INIT_CONFIG>空白または {}
<INSTANCE_CONFIG>{"openmetrics_endpoint": "http://%%host%%:<PORT>/metrics", "use_openmetrics": "true"}
Kubernetes のデプロイメント例

デプロイメントの .spec.template.metadata の下にポッドアノテーションを追加します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: haproxy
spec:
  template:
    metadata:
      labels:
        name: haproxy
      annotations:
        ad.datadoghq.com/haproxy.check_names: '["haproxy"]'
        ad.datadoghq.com/haproxy.init_configs: '[{}]'
        ad.datadoghq.com/haproxy.instances: |
          [
            {
              "openmetrics_endpoint": "http://%%host%%:<PORT>/metrics", "use_openmetrics": "true"
            }
          ]          
    spec:
      containers:
        - name: haproxy

統計エンドポイントの使用

この構成戦略は、レガシーユーザー向けのリファレンスとして提供されています。初めてインテグレーションを設定する場合は、前のセクションで説明した Prometheus ベースの戦略の使用を検討してください。

Agent は、メトリクスを統計エンドポイントを使って収集します。

  1. haproxy.conf で統計エンドポイントを構成します。

      listen stats # Define a listen section called "stats"
      bind :9000 # Listen on localhost:9000
      mode http
      stats enable  # Enable stats page
      stats hide-version  # Hide HAProxy version
      stats realm Haproxy\ Statistics  # Title text for popup window
      stats uri /haproxy_stats  # Stats URI
      stats auth Username:Password  # Authentication credentials
    
  2. HAProxy を再起動して、統計エンドポイントを有効にします

ホスト

ホストで実行中の Agent に対してこのチェックを構成するには

Agent のコンフィギュレーションディレクトリのルートにある conf.d/ フォルダーの haproxy.d/conf.yaml ファイルを編集し、HAProxy のメトリクスログの収集を開始します。使用可能なすべてのコンフィギュレーションオプションについては、haproxy.d/conf.yaml のサンプルを参照してください。

メトリクスの収集
  1. HAProxy のメトリクスの収集を開始するには、haproxy.d/conf.yaml ファイルに次の構成ブロックを追加します。

    init_config:
    
    instances:
      ## @param url - string - required
      ## Haproxy URL to connect to gather metrics.
      ## Set the according <USERNAME> and <PASSWORD> or use directly a unix stats
      ## or admin socket: unix:///var/run/haproxy.sock
      #
      - url: http://localhost/admin?stats
    
  2. Agent を再起動します

ログ収集

デフォルトで、Haproxy はログを UDP 経由で 514 ポートに送信します。Agent はこのポートでログをリッスンできますが、1024 よりも下のポート番号にバインディングするため、管理者特権が必要になります。以下ではこの設定方法について説明します。別のポートを使用することも可能で、その場合は手順 3 をスキップしてください。

  1. Datadog Agent で、ログの収集はデフォルトで無効になっています。以下のように、datadog.yaml ファイルでこれを有効にします。

    logs_enabled: true
    
  2. Haproxy のログの収集を開始するには、次の構成ブロックを haproxy.d/conf.yaml ファイルに追加します。

    logs:
      - type: udp
        port: 514
        service: <SERVICE_NAME>
        source: haproxy
    

    環境に合わせて、service パラメーターの値を変更して構成してください。使用可能なすべてのコンフィギュレーションオプションの詳細については、サンプル haproxy.d/conf.yaml を参照してください。

  3. setcap コマンドを使用して、514 ポートへのアクセスを許可します。

    sudo setcap CAP_NET_BIND_SERVICE=+ep /opt/datadog-agent/bin/agent/agent
    

    セットアップが正しいか確認するために、getcap コマンドを実行します。

    sudo getcap /opt/datadog-agent/bin/agent/agent
    

    正しければ、次のように出力されます。

    /opt/datadog-agent/bin/agent/agent = cap_net_bind_service+ep
    

    注: この setcap コマンドを、Agent をアップグレードするたびに実行してください。

  4. Agent を再起動します

Docker

コンテナで実行中の Agent に対してこのチェックを構成するには:

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートを Docker ラベルとして設定します。

LABEL "com.datadoghq.ad.check_names"='["haproxy"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"url": "https://%%host%%/admin?stats"}]'
ログ収集

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Docker ログ収集を参照してください。

次に、ログインテグレーションを Docker ラベルとして設定します。

LABEL "com.datadoghq.ad.logs"='[{"source":"haproxy","service":"<SERVICE_NAME>"}]'

Kubernetes

このチェックを、Kubernetes で実行している Agent に構成します。

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートをポッドアノテーションとして設定します。他にも、ファイル、ConfigMap、または key-value ストアを使用してテンプレートを構成できます。

Annotations v1 (Datadog Agent v7.36 以前向け)

apiVersion: v1
kind: Pod
metadata:
  name: haproxy
  annotations:
    ad.datadoghq.com/haproxy.check_names: '["haproxy"]'
    ad.datadoghq.com/haproxy.init_configs: '[{}]'
    ad.datadoghq.com/haproxy.instances: |
      [
        {
          "url": "https://%%host%%/admin?stats"
        }
      ]      
spec:
  containers:
    - name: haproxy

Annotations v2 (Datadog Agent v7.36 以降向け)

apiVersion: v1
kind: Pod
metadata:
  name: haproxy
  annotations:
    ad.datadoghq.com/haproxy.checks: |
      {
        "haproxy": {
          "init_config": {},
          "instances": [
            {
              "url": "https://%%host%%/admin?stats"
            }
          ]
        }
      }      
spec:
  containers:
    - name: haproxy
ログ収集

Agent バージョン 6.0 以降で利用可能

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Kubernetes ログ収集を参照してください。

次に、ログのインテグレーションをポッドアノテーションとして設定します。これは、ファイル、ConfigMap、または key-value ストアを使用して構成することも可能です。

Annotations v1/v2

apiVersion: v1
kind: Pod
metadata:
  name: haproxy
  annotations:
    ad.datadoghq.com/haproxy.logs: '[{"source":"haproxy","service":"<SERVICE_NAME>"}]'
spec:
  containers:
    - name: haproxy

ECS

このチェックを、ECS で実行している Agent に構成するには:

メトリクスの収集

アプリケーションのコンテナで、オートディスカバリーのインテグレーションテンプレートを Docker ラベルとして設定します。

{
  "containerDefinitions": [{
    "name": "haproxy",
    "image": "haproxy:latest",
    "dockerLabels": {
      "com.datadoghq.ad.check_names": "[\"haproxy\"]",
      "com.datadoghq.ad.init_configs": "[{}]",
      "com.datadoghq.ad.instances": "[{\"url\": \"https://%%host%%/admin?stats\"}]"
    }
  }]
}
ログ収集

Agent バージョン 6.0 以降で利用可能

Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、ECS ログ収集を参照してください。

次に、ログインテグレーションを Docker ラベルとして設定します。

{
  "containerDefinitions": [{
    "name": "haproxy",
    "image": "haproxy:latest",
    "dockerLabels": {
      "com.datadoghq.ad.logs": "[{\"source\":\"haproxy\",\"service\":\"<SERVICE_NAME>\"}]"
    }
  }]
}

検証

Agent の status サブコマンドを実行し、Checks セクションで haproxy を探します。

収集データ

メトリクス

イベント

HAProxy チェックには、イベントは含まれません。

サービスチェック

トラブルシューティング

エラー: ポート 514 はすでに使用中

syslog があるシステムで、Agent がポート 514 で HAProxy ログをリッスンしている場合、Agent ログに以下のエラーが表示されることがあります: Can't start UDP forwarder on port 514: listen udp :514: bind: address already in use

これは、デフォルトで syslog がポート 514 でリッスンしているために起こっています。このエラーを解決するには、syslog を無効にするか、ポート 514 と Agent がログをリッスンしている別のポートにログを転送するように HAProxy を構成することができます。Agent がリッスンするポートは、こちらで haproxy.d/conf.yaml ファイル定義することができます。

ご不明な点は、Datadog のサポートチームまでお問合せください。

その他の参考資料

PREVIEWING: may/embedded-workflows