Prometheus エージェントが v4.0.0 に更新されました。対応する Helm のバージョンは v1.1.17 です。Prometheus エージェント v4.0.0 では、さまざまな新機能の提供、データ収集の安定性の向上、バグの修正、リソース消費の最適化が行われています。
Prometheus エージェント v3.x.x を使用している場合は、これらのバージョンは機能が最適化されておらず、データ切断のリスクがあるため、できるだけ早くエージェントを更新することをお勧めします。
v4.0.0 の変更点
変更タイプ | 説明 |
新機能 | クラスタイベントのメトリック収集ジョブを作成できます。クラスタイベントは、Kubernetes デプロイメントダッシュボードに表示できます。 |
新機能 | サービスレベルアグリーメント (SLA) に基づいて自己監視メトリックをインストラメント化して、ダッシュボードデータの安定性を高めることができます。SLA の安定性データは、自己監視ダッシュボードに表示できます。 |
新機能 | ServiceMonitor は BasicAuth 認証方式をサポートしています。シークレットは ServiceMonitor と同じ名前空間に存在する必要があります。 |
新機能 | 特定のメトリックの説明を表示するために、メトリックメタデータ機能が提供されています。 |
新機能 | エージェントチャートのバージョンをサーバーに渡すことができます。その後、サーバーはバージョンに基づいてダッシュボードを初期化または更新します。 |
新機能 | リモート書き込み自己監視メトリックがサポートされており、各バッチでデータを送信するのにかかる時間を計算できます。 |
新機能 | 基本メトリック収集のエラーとレイテンシに関するメトリックがサポートされています。 |
新機能 | 基本メトリック収集のエラーとレイテンシに関するメトリックがサポートされています。 |
最適化 | リモート書き込み設定の queue_config パラメーターは、以下のデフォルト値をサポートしています: min_shards=10、max_samples_per_send=5000、capacity=10000。これにより、大規模クラスタの適応性が向上します。 |
最適化 | サービス検出方法、特にコンテナストレージインターフェース (CSI) データ収集の PV 設定が最適化されています。 |
最適化 | senderLoop の配信頻度が最適化され、syncWorkersSeries の頻度が変更されて、不要な障害が軽減されます。 |
最適化 | 一部のログが簡素化されています。トレースキャプチャにかかった時間などの詳細情報は、一部のログに表示できます。 |
最適化 | 基本メトリック収集ジョブの収集期間と収集タイムアウト設定は個別に設定され、グローバル設定は使用されなくなりました。これにより、基本メトリックデータ収集に対する不要な干渉が軽減されます。 |
最適化 | マスタースレーブマルチレプリカモードのインタラクションロジックが最適化されています。マスターとワーカーは互いに影響を与えなくなりました。これは安定性の向上に役立ちます。 |
最適化 | マスターがターゲットを配信する方法を指定するポリシーが最適化されています。これにより、CPU 使用率が約 30%、メモリリソースが 40% 節約され、データ収集のパフォーマンスが向上します。 |
最適化 | metrics_relabel が最適化されています。CPU 使用率が 70% 削減されます。 |
最適化 | Informer のマルチテナンシーリスニングロジックが最適化され、マルチテナンシーシナリオで CPU 使用率が 20% 節約されます。 |
最適化 | CoreDNS がリアルタイムでドメイン名を解決できない場合、キャッシュ IP アドレスを自動的に使用できます。これにより、データ送信の成功率が向上します。 |
最適化 | SendConfig の配信と収集の設定ロジックが最適化され、設定の安定性が向上します。 |
最適化 | マスタープリフェッチポリシーが最適化され、マスターのリソースオーバーヘッドが軽減され、マスターサービス検出とターゲットスケジューリング機能が向上します。 |
最適化 | 単一バッチでサイズが 1 MB を超えるデータパケットに適応制御が実装されています。これにより、バックエンドの制限によって発生するデータ損失が軽減されます。 |
バグ修正 | 一部の ScrapeLoop ターゲットが繰り返し収集される問題が修正されました。 |
バグ修正 | マルチテナンシーシナリオでは、ポッドのラベルキャッシュがタイムリーに更新されません。その結果、重複するタイムラインが生成されます。この問題は修正されました。 |
バグ修正 | メモリ不足 (OOM) エラーまたはレプリカの再起動に関連する一部のターゲットが収集されません。この問題は修正されました。 |
バグ修正 | シークレット解析の問題とリモート書き込みヘッダー送信の問題が修正されました。 |
バグ修正 | Kubernetes ポッドをシャットダウンできない場合がある問題が修正されました。 |
バグ修正 | グローバルデフォルトパラメーターと external_labels パラメーターが有効にならない問題が修正されました。パラメーターを変更できます。 |
リスク
リスク: Helm v1.1.17 または Prometheus エージェント v4.0.0 への更新は損失を伴います。監視データが切断される可能性があります。収集されるターゲットとシリーズが多いほど、データが切断される可能性が高くなります。推定切断時間は 0 ~ 5 分です。時間はクラスタにも依存します。
Helm または Prometheus エージェントを更新する前に、関連するパラメーターを事前に確認して、更新がクラスタの監視データに及ぼす影響を最小限に抑えることをお勧めします。詳細については、「1. 更新前のチェック項目 (必須)」セクションを参照してください。
Helm または Prometheus エージェントを更新した後にデータが異常な場合は、できるだけ早く問題のトラブルシューティングを行う必要があります。チェック項目については、「3. 更新後のチェック項目 (オプション)」セクションを参照してください。トラブルシューティングについては、「FAQ」セクションを参照してください。問題が解決しない場合は、テクニカルサポート (DingTalk ID: aliprometheus) にお問い合わせください。
更新方法
1. 事前チェック項目 (必須)
Helm を 1.1.16 より前のバージョンから 1.1.17 に更新する場合、変更された一部のパラメーターは保持されません。そのため、変更されたパラメーターを記録して手動で設定する必要があります。
Helm を 1.1.16 以降から 1.1.17 に更新する場合は、すべてのパラメーターが保持されます。更新前に次の手順を実行してパラメーターを確認します。
コンテナサービス Kubernetes 版 (ACK) コンソールにログインします。
クラスタの名前をクリックします。左側のナビゲーションペインで、ワークロード > デプロイメント を選択します。名前空間パラメーターを
arms-prom
に設定します。arms-prometheus-ack-arms-prometheus
を見つけ、アクション 列で 詳細 > YAML で表示 を選択して、完全な YAML ファイルを表示します。次のパラメーターを確認します。
spec.replicas: レプリカの数。Helm v1.1.17 および Prometheus エージェント v4.0.0 では、デフォルト値として 1 が指定されています。現在の値も 1 の場合は、パラメーターを無視します。
spec.containers の args: 起動パラメーター。このパラメーターは、マルチテナンシーモードでのみ使用できます。カスタム値を指定する場合は、更新後に再度渡します。
tenant_userid
tenant_clusterid
tenant_token
spec.containers.resources.limits および spec.containers.resources.requests: デフォルトの CPU 制限は 3、メモリ制限は 4 です。デフォルトの CPU 要求とメモリ要求はどちらも 1 です。
デフォルト値を変更してから、更新後に変更されたパラメーターを記録して手動で設定できます。
上記の パラメーターを変更して保持する必要がある場合は、値を記録します。Helm または Prometheus エージェントを更新した後、手順 2 を実行して完全な YAML ファイルを取得し、値を変更してから、更新 をクリックします。
2. 手順
ACK コンソールで Helm のバージョンを更新することをお勧めします。
ACK コンソールにログインします。
クラスタの名前をクリックします。左側のナビゲーションペインで、操作 > アドオン を選択します。ログと監視 タブをクリックします。ack-arms-prometheus を見つけて、アップグレード をクリックします。
更新が完了したら、左側のナビゲーションペインで 操作 > Prometheus 監視 を選択します。右上隅にある ARMS Prometheus に移動 をクリックします。Managed Service for Prometheus コンソールの対応する Prometheus インスタンスのダッシュボードにリダイレクトされます。
左側のナビゲーションペインで、設定 をクリックします。設定 タブで、Helm が 1.1.17 に更新されているかどうかを確認します。
3. 更新後のチェック項目 (オプション)
Managed Service for Prometheus コンソールにログインします。
左側のナビゲーションペインで、インスタンス をクリックします。
Prometheus インスタンスの名前をクリックします。左側のナビゲーションペインで、サービス検出 をクリックします。ターゲット タブをクリックして、収集ジョブが想定どおりに完了していることを確認します。
左側のナビゲーションペインで、設定 をクリックします。自己監視 タブで、Grafana ダッシュボードを表示 をクリックします。データ送信速度が想定どおりか、データ送信時に例外が発生したか、リソースが想定どおりに消費されているか、レプリカの数が想定どおりかを確認することで、Prometheus エージェントの状態に注意を払うことができます。
設定 タブの 自己監視 タブにある エージェント自己監視 タブで、Managed Service for Prometheus エージェントの自己監視ダッシュボードを表示できます。
次の基本メトリックを確認することで、収集ジョブの状態に注意を払うことができます: _arms/kubelet/cadvisor、_arms/kubelet/metric、_kube-state-metrics、node-exporter。ページの右上隅で、時間範囲を選択して、更新の前後に例外が発生したかどうかを確認できます。
FAQ
更新後の実行中のレプリカの実際の数が、想定されるレプリカの数と異なるのはなぜですか?
すべてのレプリカが実行されているかどうかを確認します。1 つ以上のレプリカが保留中の場合、Prometheus エージェントは想定どおりに動作しません。レプリカの状態を表示するには、ACK コンソールで次の手順を実行します。クラスタ詳細ページの左側のナビゲーションペインで、ワークロード > デプロイメント を選択します。名前空間パラメーターを arms-prom
に設定します。レプリカの状態を表示できます。
更新後に ARMS エージェントが大量のメモリと CPU リソースを消費するのはなぜですか?
データ送信時に例外が発生したかどうかを確認します。データ送信時に例外が発生した場合、ARMS エージェントはデータをメモリに保存するため、リソース消費が増加します。ACK コンソールにログインします。クラスタ詳細ページの左側のナビゲーションペインで、操作 > Prometheus 監視 を選択します。Prometheus 監視ページで、その他 タブをクリックし、Prometheus エージェント タブをクリックして、メモリ使用量と CPU 使用率を表示します。
更新後に基本メトリックが切断または不連続になるのはなぜですか?
node_*** (アイコン 1)、container_*** (アイコン 2)、kubelet_*** (アイコン 3)、kube_*** (アイコン 4) が切断または不連続になっていると仮定します (次の図を参照)。データ収集ジョブの実行時にエラーメッセージが報告されているかどうかを確認する必要があります。Managed Service for Prometheus コンソールの サービス検出 ページの ターゲット タブで、これらのメトリックの状態を表示できます。エラーメッセージが報告されている場合は、テクニカルサポート (DingTalk ID: aliprometheus) にお問い合わせください。
リモートトラフィックが減少し、リモート書き込みデータが失われるのはなぜですか?
Prometheus エージェント v4.0.0 のリモート書き込み設定の write_relabel_configs フィールドは自動的に有効になります。ただし、このフィールドは以前のバージョンでは使用できません。drop や keep などのアクションを設定すると、トラフィックがある程度低下します。ビジネス要件に基づいてこのフィールドを変更できます。Managed Service for Prometheus コンソールの 設定 ページの 設定 タブにある Prometheus.yaml の編集 をクリックします。表示されるダイアログボックスで、フィールドを変更します。