HAProxy
セキュリティモニタリングが使用可能です セキュリティモニタリングが使用可能です

HAProxy

Agent Check Agentチェック

Supported OS: Linux Mac OS Windows

HAProxy 付属のダッシュボード

概要

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

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

セットアップ

インストール

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

HAProxy の準備

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 を再起動します

ログの収集

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

デフォルトで、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 を再起動します

コンテナ化

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

メトリクスの収集
パラメーター
<インテグレーション名>haproxy
<初期コンフィギュレーション>空白または {}
<インスタンスコンフィギュレーション>{"url": "https://%%host%%/admin?stats"}
ログの収集

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

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

パラメーター
<LOG_CONFIG>{"source": "haproxy", "service": "<SERVICE_NAME>"}

検証

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

収集データ

メトリクス

haproxy.backend_hosts
(gauge)
Number of backend hosts.
Shown as host
haproxy.backend.bytes.in_rate
(gauge)
Rate of bytes in on backend hosts.
Shown as byte
haproxy.backend.bytes.out_rate
(gauge)
Rate of bytes out on backend hosts.
Shown as byte
haproxy.backend.connect.time
(gauge)
Average connect time over the last 1024 backend requests.
Shown as millisecond
haproxy.backend.denied.req_rate
(gauge)
Number of backend requests denied due to security concerns.
Shown as request
haproxy.backend.denied.resp_rate
(gauge)
Number of backend responses denied due to security concerns.
Shown as response
haproxy.backend.errors.con_rate
(gauge)
Rate of backend requests that encountered an error trying to connect to a backend server.
Shown as error
haproxy.backend.errors.resp_rate
(gauge)
Rate of backend responses aborted due to error.
Shown as error
haproxy.backend.queue.current
(gauge)
Number of backend requests without an assigned backend.
Shown as request
haproxy.backend.queue.time
(gauge)
Average queue time over the last 1024 backend requests.
Shown as millisecond
haproxy.backend.response.1xx
(gauge)
Backend HTTP responses with 1xx code.
Shown as response
haproxy.backend.response.2xx
(gauge)
Backend HTTP responses with 2xx code.
Shown as response
haproxy.backend.response.3xx
(gauge)
Backend HTTP responses with 3xx code.
Shown as response
haproxy.backend.response.4xx
(gauge)
Backend HTTP responses with 4xx code.
Shown as response
haproxy.backend.response.5xx
(gauge)
Backend HTTP responses with 5xx code.
Shown as response
haproxy.backend.response.other
(gauge)
Backend HTTP responses with other code (protocol error).
Shown as response
haproxy.backend.response.time
(gauge)
Average response time over the last 1024 backend requests (0 for TCP).
Shown as millisecond
haproxy.backend.requests.tot_rate
(gauge)
Rate of total number of backend HTTP requests.
Shown as request
haproxy.backend.session.current
(gauge)
Number of active backend sessions.
Shown as connection
haproxy.backend.session.limit
(gauge)
Configured backend session limit.
Shown as connection
haproxy.backend.session.pct
(gauge)
Percentage of sessions in use (backend.session.current/backend.session.limit * 100).
Shown as percent
haproxy.backend.session.rate
(gauge)
Number of backend sessions created per second.
Shown as connection
haproxy.backend.session.time
(gauge)
Average total session time over the last 1024 requests.
Shown as millisecond
haproxy.backend.uptime
(gauge)
Number of seconds since the last UP<->DOWN transition
Shown as second
haproxy.backend.warnings.redis_rate
(gauge)
Number of times a request was redispatched to another server.
Shown as error
haproxy.backend.warnings.retr_rate
(gauge)
Number of times a connection to a server was retried.
Shown as error
haproxy.count_per_status
(gauge)
Number of hosts by status (UP/DOWN/NOLB/MAINT).
Shown as host
haproxy.frontend.bytes.in_rate
(gauge)
Rate of bytes in on frontend hosts.
Shown as byte
haproxy.frontend.bytes.out_rate
(gauge)
Rate of bytes out on frontend hosts.
Shown as byte
haproxy.frontend.connections.rate
(gauge)
Number of connections per second.
Shown as connection
haproxy.frontend.connections.tot_rate
(gauge)
Rate of total number of frontend connections.
Shown as connection
haproxy.frontend.denied.req_rate
(gauge)
Number of frontend requests denied due to security concerns.
Shown as request
haproxy.frontend.denied.resp_rate
(gauge)
Number of frontend responses denied due to security concerns.
Shown as response
haproxy.frontend.errors.req_rate
(gauge)
Rate of frontend request errors.
Shown as error
haproxy.frontend.requests.intercepted
(gauge)
Number of intercepted frontend requests per second.
Shown as request
haproxy.frontend.requests.rate
(gauge)
Number of frontend HTTP requests per second.
Shown as request
haproxy.frontend.requests.tot_rate
(gauge)
Rate of total number of frontend HTTP requests.
Shown as request
haproxy.frontend.response.1xx
(gauge)
Frontend HTTP responses with 1xx code.
Shown as response
haproxy.frontend.response.2xx
(gauge)
Frontend HTTP responses with 2xx code.
Shown as response
haproxy.frontend.response.3xx
(gauge)
Frontend HTTP responses with 3xx code.
Shown as response
haproxy.frontend.response.4xx
(gauge)
Frontend HTTP responses with 4xx code.
Shown as response
haproxy.frontend.response.5xx
(gauge)
Frontend HTTP responses with 5xx code.
Shown as response
haproxy.frontend.response.other
(gauge)
Frontend HTTP responses with other code (protocol error).
Shown as response
haproxy.frontend.session.current
(gauge)
Number of active frontend sessions.
Shown as connection
haproxy.frontend.session.limit
(gauge)
Configured frontend session limit.
Shown as connection
haproxy.frontend.session.pct
(gauge)
Percentage of sessions in use (frontend.session.current/frontend.session.limit * 100).
Shown as percent
haproxy.frontend.session.rate
(gauge)
Number of frontend sessions created per second.
Shown as connection
haproxy.sticktable.used
(gauge)
Number of elements in the table.
Shown as item
haproxy.sticktable.size
(gauge)
Maximum number of elements the table can hold.
Shown as item

イベント

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

サービスのチェック

haproxy.backend_up:
HAProxy のステータスページをサービスチェックに変換します。 特定のサービスについて、HAProxy が down と報告している場合は、CRITICAL を返します。 maintok などの他の状態の場合は、OK を返します。

トラブルシューティング

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

その他の参考資料