HCP (Hashicorp Cloud Platform) Consul は、コントロール プレーンが HashiCorp Cloud Platform によって管理される Consul のバージョンです。HCP Consul は、Hashicorp が提供するサービス メッシュおよびサービス ディスカバリ ソリューションです。これにより、プラットフォーム オペレーターは、完全に管理された、デフォルトで安全なサービス メッシュを迅速に展開できるようになり、開発者は、Kubernetes、Nomad、Amazon ECS など、任意のランタイムで任意のアプリケーションを検出して安全に接続できるようになります。
Consul クラスターを正常に保つことは、SQL クエリ時間の最適化、遅い HTTP 応答時間のトラブルシューティング、および Hashicorp クラスターのダウンタイムに関するリアルタイムのアラートに役立ちます。Hashicorp クラスター メトリックを監視することは、Hashicorp メッシュ サービスをフル キャパシティで運用し続けるために極めて重要です。
ヒント
また、HCP 上にない Consul インスタンス用の HashiCorp Consul 統合も あります。
New Relic を使用して HCP Consul メトリクスを監視する
HCP Consul をインストールする方法と環境は多数あります。以下の例では、Terraform を介してインストールされた HCP のクイック スタートを使用します。
New Relic は、StatsD プラグインの統合を通じて、HCP Consul および Envoy メトリックの監視をサポートします。StatsD プラグインは、HCP Consul によって公開されたすべてのメトリックを集約し、データの視覚化とアラートのためにそれらを New Relic にプッシュします。
Terraform デプロイ ファイルを生成する
HCP ポータル アカウントのOverviewページから Terraform デプロイメント ファイルを生成します。
Consul クラスターをデプロイする
エンドツーエンドの概要にある適切な環境の手順に従って、Consul クラスターをデプロイします。 Important: Deployページの下部にあるConsul CLI configurationに従ってください。
ゴスタット
deploy-gostatsd.yaml
とrbac-gostatsd.yaml
をローカルの Kubernetes クライアントにコピーします。
deploy-gstatsd.yaml を編集
YOUR_NEW_RELIC_ACCOUNT_ID
を New Relic アカウント ID に置き換えます。YOUR_NEW_RELIC_LICENSE_KEY
を New Relic に置き換えます。- 必要に応じて、EU または FedRAMP アカウントの URL を調整します (ファイル内のコメントを参照してください)。
gostatsd をデプロイする
ローカル Kubernetes クライアントで次のコマンドを実行します。
$kubectl apply -f deploy-gostatsd.yaml$kubectl apply -f rbac-gostatsd.yaml
メトリックをレポートするように Consul クライアントを構成する
consul-client-config マップを編集する
Consul クライアントの ConfigMap を編集してConsul テレメトリー設定を追加します。
$kubectl edit cm consul-client-config
data
の下に以下を追加します:
telemetry-config.json: |- { "telemetry": { "disable_hostname": false, "disable_compat_1.9": true, "dogstatsd_addr": "gostatsd.default.svc.cluster.local:8125", "dogstatsd_tags": ["consul.source.datacenter:YOUR_CONSUL_DATACENTER_NAME_HERE"] } }
結果は次のようになります。
apiVersion: v1data: central-config.json: |- { "enable_central_service_config": true } config.json: |- { "check_update_interval": "0s" } extra-from-values.json: '{}' telemetry-config.json: |- { "telemetry": { "disable_hostname": false, "disable_compat_1.9": true, "dogstatsd_addr": "gostatsd.default.svc.cluster.local:8125", "dogstatsd_tags": ["consul.source.datacenter:YOUR_CONSUL_DATACENTER_NAME_HERE"] } }
メモ:
- ここで
dogstatsd_addr
を使用すると、各メトリックにconsul.source.datacenter
タグを追加できます。 これにより、ダッシュボードを Consul データセンター別にフィルタリングできます。 - 必ず
YOUR_CONSUL_DATACENTER_NAME_HERE
を Consul データセンター名に置き換えてください。 - Consul テレメトリ構成オプションを参照してください。
consul-connect-injector デプロイメントの編集
デプロイメントを編集して、デプロイメント内で Consul メトリックスを有効にします。
$kubectl edit deploy consul-connect-injector
default-enable-metrics
を検索し、 true
に設定します:
$-default-enable-metrics=true \
Restart Consul client pods
Consul クライアントは、構成の変更後に再起動する場合としない場合があります。そうでない場合は、各 Consul クライアント ポッドを再起動します。
$kubectl delete pod consul-client-<POD_ID> -n <NAMESPACE>
New Relic で Consul メトリクスを閲覧する
New Relic で HCP Consul データを表示するには、 クエリ ビルダーに移動します。
次に、以下のクエリを使用して、HCP Consul メトリックを表示します。
SELECT * FROM Metric WHERE metricName LIKE 'consul.%' SINCE 1 minute ago
ダッシュボードをインストールする
クライアント、ネットワーク、ランタイム、serf、および Envoy に関する HCP Consul からの主要なメトリックを表示するために、事前に構築されたダッシュボードを使用して数分で開始します。
Instant の HCP Consul クイックスタート に移動して、 New Relic+ Install nowをクリックします。
トラブルシューティング
初期化時にクラッシュする Pod の場合:
$kubectl logs PODNAME -c consul-connect-inject-init
実行中のポッドの場合:
$kubectl logs PODNAME -c DEPLOYMENTNAME
便利な kubectl スニペット
すべてのポッドを削除します。
$kubectl get pods | grep PODNAMEPREFIX | cut -f 1 -d ' ' | xargs kubectl delete pods
デプロイとそれが生成するポッドを削除します。
$kubectl delete deployment DEPLOYMENTNAME -n default