
概要
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_openmetrics
と use_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 の準備
- 公式ガイドを使用して
haproxy.conf
を構成します。 - HAProxy を再起動して、Prometheus エンドポイントを有効にします。
Agent の構成
ホスト
メトリクスの収集
ホストで実行中の Agent に対してこのチェックを構成するには
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 ファイルをご覧ください。
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 は、メトリクスを統計エンドポイントを使って収集します。
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
HAProxy を再起動して、統計エンドポイントを有効にします。
ホスト
ホストで実行中の Agent に対してこのチェックを構成するには
Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーの haproxy.d/conf.yaml
ファイルを編集し、HAProxy のメトリクスとログの収集を開始します。使用可能なすべてのコンフィギュレーションオプションについては、haproxy.d/conf.yaml のサンプルを参照してください。
メトリクスの収集
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
Agent を再起動します。
ログ収集
デフォルトで、Haproxy はログを UDP 経由で 514 ポートに送信します。Agent はこのポートでログをリッスンできますが、1024 よりも下のポート番号にバインディングするため、管理者特権が必要になります。以下ではこの設定方法について説明します。別のポートを使用することも可能で、その場合は手順 3 をスキップしてください。
Datadog Agent で、ログの収集はデフォルトで無効になっています。以下のように、datadog.yaml
ファイルでこれを有効にします。
Haproxy のログの収集を開始するには、次の構成ブロックを haproxy.d/conf.yaml
ファイルに追加します。
logs:
- type: udp
port: 514
service: <SERVICE_NAME>
source: haproxy
環境に合わせて、service
パラメーターの値を変更して構成してください。使用可能なすべてのコンフィギュレーションオプションの詳細については、サンプル haproxy.d/conf.yaml を参照してください。
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 をアップグレードするたびに実行してください。
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 のサポートチームまでお問合せください。
その他の参考資料