
概要
Datadog Agent は、以下のような多くのメトリクスを Consul ノードから収集します。
- Consul ピアの合計数
- サービス健全性 - 特定のサービスに対して、UP、PASSING、WARNING、CRITICAL なノードの数
- ノード健全性 - 特定のノードに対して、UP、PASSING、WARNING、CRITICAL なサービスの数
- ネットワーク座標系 - データセンター間およびデータセンター内のレイテンシー
Consul Agent は DogStatsD を使ってさらに多くのメトリクスを提供できます。これらは、Consul に依存するサービスではなく、Consul 自体の内部健全性に関連するメトリクスです。以下のメトリクスがあります。
- Serf のイベントとメンバーフラップ
- Raft プロトコル
- DNS パフォーマンス
その他にも多数あります。
メトリクスに加えて、Datadog Agent は Consul の健全性チェックごとにサービスチェックを送信し、新しいリーダー選出ごとにイベントを送信します。
セットアップ
インストール
Datadog Agent の Consul チェックは Datadog Agent パッケージに含まれています。Consul ノードに追加でインストールする必要はありません。
構成
ホスト
ホストで実行中の Agent に対してこのチェックを構成するには
メトリクスの収集
Consul のメトリクスの収集を開始するには、Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーの consul.d/conf.yaml
ファイルを編集します。使用可能なすべてのコンフィギュレーションオプションについては、サンプル consul.d/conf.yaml を参照してください。
init_config:
instances:
## @param url - string - required
## Where your Consul HTTP server lives,
## point the URL at the leader to get metrics about your Consul cluster.
## Use HTTPS instead of HTTP if your Consul setup is configured to do so.
#
- url: http://localhost:8500
Agent を再起動します。
OpenMetrics
オプションで、use_prometheus_endpoint
コンフィギュレーションオプションを有効にして、Consul Prometheus エンドポイントから追加のメトリクスセットを取得できます。
注: DogStatsD または Prometheus メソッドを使用し、同じインスタンスに両方を有効化しないようご注意ください。
Consul を構成し、Prometheus のエンドポイントにメトリクスを公開します。prometheus_retention_time
を、メインの Consul コンフィギュレーションファイルの最上位レベルの telemetry
キーにネストするよう設定します。
{
...
"telemetry": {
"prometheus_retention_time": "360h"
},
...
}
Prometheus エンドポイントの使用を開始するには、Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーで consul.d/conf.yaml
ファイルを編集します。
instances:
- url: <EXAMPLE>
use_prometheus_endpoint: true
Agent を再起動します。
DogStatsD
Prometheus エンドポイントを使用する代わりに、DogStatsD を介して同じ追加メトリクスのセットを Agent に送信するように Consul を構成できます。
Consul のメインのコンフィギュレーションファイルで、最上位レベルの telemetry
キーの下にネストした dogstatsd_addr
を追加することで、DogStatsD メトリクスを送信するよう Consul を構成します。
{
...
"telemetry": {
"dogstatsd_addr": "127.0.0.1:8125"
},
...
}
メトリクスが正しくタグ付けされるよう下記のコンフィギュレーションを追加し、Datadog Agent のメインコンフィギュレーションファイルである datadog.yaml
を更新します。
# dogstatsd_mapper_cache_size: 1000 # default to 1000
dogstatsd_mapper_profiles:
- name: consul
prefix: "consul."
mappings:
- match: 'consul\.http\.([a-zA-Z]+)\.(.*)'
match_type: "regex"
name: "consul.http.request"
tags:
method: "$1"
path: "$2"
- match: 'consul\.raft\.replication\.appendEntries\.logs\.([0-9a-f-]+)'
match_type: "regex"
name: "consul.raft.replication.appendEntries.logs"
tags:
peer_id: "$1"
- match: 'consul\.raft\.replication\.appendEntries\.rpc\.([0-9a-f-]+)'
match_type: "regex"
name: "consul.raft.replication.appendEntries.rpc"
tags:
peer_id: "$1"
- match: 'consul\.raft\.replication\.heartbeat\.([0-9a-f-]+)'
match_type: "regex"
name: "consul.raft.replication.heartbeat"
tags:
peer_id: "$1"
Agent を再起動します。
ログ収集
Agent バージョン 6.0 以降で利用可能
Datadog Agent で、ログの収集はデフォルトで無効になっています。以下のように、datadog.yaml
ファイルでこれを有効にします。
consul.yaml
ファイルでこのコンフィギュレーションブロックを編集して、Consul ログを収集します。
logs:
- type: file
path: /var/log/consul_server.log
source: consul
service: myservice
path
パラメーターと service
パラメーターの値を変更し、環境に合わせて構成してください。
使用可能なすべてのコンフィギュレーションオプションについては、サンプル consul.d/conf.yaml を参照してください。
Agent を再起動します。
コンテナ化
コンテナ環境の場合は、オートディスカバリーのインテグレーションテンプレートのガイドを参照して、次のパラメーターを適用してください。
メトリクスの収集
パラメーター | 値 |
---|
<INTEGRATION_NAME> | consul |
<INIT_CONFIG> | 空白または {} |
<INSTANCE_CONFIG> | {"url": "https://%%host%%:8500"} |
ログ収集
Agent バージョン 6.0 以降で利用可能
Datadog Agent で、ログの収集はデフォルトで無効になっています。有効にする方法については、Kubernetes ログ収集を参照してください。
パラメーター | 値 |
---|
<LOG_CONFIG> | {"source": "consul", "service": "<サービス名>"} |
検証
Agent の status サブコマンドを実行し、Checks セクションで consul
を探します。
注: Consul ノードでデバッグログが有効になっている場合は、Datadog Agent の通常のポーリングが Consul ログに以下を表示します。
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/status/leader (59.344us) from=127.0.0.1:53768
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/status/peers (62.678us) from=127.0.0.1:53770
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/health/state/any (106.725us) from=127.0.0.1:53772
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/catalog/services (79.657us) from=127.0.0.1:53774
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/health/service/consul (153.917us) from=127.0.0.1:53776
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/coordinate/datacenters (71.778us) from=127.0.0.1:53778
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/coordinate/nodes (84.95us) from=127.0.0.1:53780
Consul Agent から DogStatsD へ
netstat
を使用して、Consul のメトリクスも送信されていることを確認します。
$ sudo netstat -nup | grep "127.0.0.1:8125.*ESTABLISHED"
udp 0 0 127.0.0.1:53874 127.0.0.1:8125 ESTABLISHED 23176/consul
収集データ
メトリクス
Consul Agent が DogStatsD に送信するメトリクスの詳細については、Consul の Telemetry に関するドキュメントを参照してください。
ネットワークレイテンシーメトリクスの計算方法については、Consul のネットワーク座標系に関するドキュメントを参照してください。
イベント
consul.new_leader:
Datadog Agent は、Consul クラスターが新しいリーダーを選出すると、prev_consul_leader
、curr_consul_leader
、および consul_datacenter
のタグを付けてイベントを送信します。
サービスチェック
トラブルシューティング
ご不明な点は、Datadog のサポートチームまでお問合せください。
その他の参考資料
お役に立つドキュメント、リンクや記事: