Contents
Kubernetes環境におけるTraefikとPrometheusのメトリクス連携概要
Kubernetes環境において、トラフィック管理やサービスディスカバリーを担うTraefikと監視ツールのPrometheusを組み合わせることで、リアルタイムなパフォーマンス可視化が可能になります。特にセキュリティ強化やAPI仕様変更に対応した設定が必要となるケースが増えています。
本記事では、TraefikとPrometheus・Grafanaのメトリクス連携方法について具体的な手順を解説します。DevOpsエンジニアやKubernetes管理者が導入直後に実施すべき体制構築方法として、具体的な設定コードと注意点を紹介します。
監視体制構築の意義
Traefikは動的なルーティングを行うことで、アプリケーションの可用性向上に寄与しますが、そのパフォーマンスやエラー状況を把握するためには監視体制が不可欠です。Prometheusとの連携により、リクエスト成功率やバックエンド応答時間などのメトリクスを収集・可視化できます。
本記事で扱う技術スタック
| ツール | 役割 | バージョン例 |
|---|---|---|
| Traefik | サービスプロキシとルーティング制御 | v3.x(現行主要バージョン) |
| Prometheus | メトリクス収集と時系列データベース | v2.46以上 |
| Grafana | 可視化とアラーム設定 | v10.x以降 |
| cAdvisor | コンテナメトリクス収集 | v0.43.0 |
注意: 現在のTraefik v3系では、メトリクスAPI仕様が変更されているため、古い設定ファイルは互換性がない場合があります。
Traefikメトリクスエンドポイントの有効化手順
Traefikはデフォルトでメトリクス出力機能を提供していますが、明示的な設定が必要です。これにより、PrometheusやGrafanaからデータを取得できるようになります。
Traefikのコンフィグファイル編集
Traefikのコンフィギュレーションファイル(traefik.ymlなど)に以下のパラメータを追加します。
|
1 2 3 4 |
metrics: prometheus: endpoint: ":9091/metrics" |
:9091は、メトリクスエンドポイントのポート番号です(既存サービスと重ならないように選択)。endpointパラメータで公開URLを指定。KubernetesではServiceオブジェクト経由で外部に公開します。
メトリクス認証設定(必要に応じて)
セキュリティ強化のためにBasic AuthやBearer Tokenによる認証を導入可能です。
Basic Authの例
|
1 2 3 4 5 6 7 8 9 |
metrics: prometheus: endpoint: ":9091/metrics" auth: basic: users: - username: "monitoring_user" password: "secure_password" |
注意: パスワードはKubernetes Secretから取得するなど、明文保存を避けましょう。
PrometheusによるTraefikメトリクス収集構成
PrometheusはTraefikのメトリクスエンドポイントを定期的にスクレイプします。scrape_configの設定とKubernetes ServiceMonitorの活用が重要です。
scrape_configの基本構文
prometheus.ymlに以下のように記述します。
|
1 2 3 4 5 6 7 |
scrape_configs: - job_name: 'traefik' static_configs: - targets: ['traefik-metrics:9091'] labels: instance: 'traefik-ingress' |
targetsはTraefikのメトリクスエンドポイント(Kubernetes Service名)を指定。- ラベルで識別しやすくするのも良い実践です。
サービスディスカバリーとの連携方法
Kubernetes環境ではServiceMonitorリソースを使って自動スクレイプが可能です。HelmチャートやOperator経由での導入も推奨されます。
|
1 2 3 4 5 6 7 8 9 10 11 |
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: traefik-monitor spec: selector: matchLabels: app: traefik endpoints: - port: metrics |
Tip:
ServiceMonitorを有効化するには、Prometheus Operatorがデプロイされている必要があります。
Grafanaでの可視化ダッシュボード構築
メトリクスの収集後は、Grafanaで可視化を実施します。Traefik特化型のダッシュボードテンプレートやカスタムメトリクスの作成が可能です。
事前準備:Prometheusデータソース登録
- Grafanaにアクセスし、「Add data source」から「Prometheus」を選択。
- URL欄にはPrometheusサーバーのエンドポイント(例:
http://prometheus-server:9090)を入力。 - 「Save & Test」をクリックして接続確認。
注意: セキュリティ対策として、TLS証明書の有効化や認証情報を暗号化保存する必要があります。
Traefik特化型テンプレートのインポート
Grafana公式またはコミュニティからTraefikダッシュボードテンプレート(.jsonファイル)を取得し、以下の手順で導入します。
- 「Import」画面にテンプレートID(例: 12345)を入力。
- データソースとして「Prometheus」を選択。
- 「Import」ボタンをクリックしてダッシュボードを作成。
セキュリティ対策: cAdvisor連携時の注意点
cAdvisorはコンテナメトリクスを収集しますが、ラベル情報の誤出力やネットワークリークによるセキュリティリスクがあります。過去には不適切な設定により機密データが流出する事例がありました。
ネットワークポリシーの設計
Kubernetesにおけるネットワーク分離を強化し、不要な通信を阻止します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: cAdvisor-isolation spec: podSelector: matchLabels: app: cadvisor policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: name: monitoring |
注意: セキュリティポリシーは、cAdvisorが監視対象のPodにアクセス可能な範囲を制限します。
メトリクスエンドポイントのアクセス制限
TraefikやcAdvisorのメトリクスAPIにはRBAC(Role-Based Access Control)やIPフィルタリングを導入し、不正アクセスを防ぎましょう。
- Kubernetes RBAC設定例
|
1 2 3 4 5 6 7 8 9 |
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: metrics-reader rules: - apiGroups: [""] resources: ["services"] verbs: ["get", "list"] |
最新版での設定変更点と対応策
Traefik v3系以降ではメトリクスAPI仕様が大きく変わっています。過去バージョンとの互換性に注意が必要です。
Traefik v3系のメトリクスAPI変更
| 変更点 | 備考 |
|---|---|
| エンドポイントURL | /metricsから/metrics/prometheusへ変更(2024年以降) |
| 認証方式 | デフォルトでBasic Authが有効化されるようになった。明示的な無効化が必要 |
| メトリクス構造 | 一部のカウンターやラベル名が変更されたため、テンプレート更新が必要 |
対応策: Prometheusの
scrape_configを最新仕様に合わせて修正し、Grafanaのダッシュボードも再インポートしてください。
Prometheusのscrape_interval最適化
Traefikのような高頻度で変化するメトリクスでは、短い収集間隔(例: 15秒)を設定する必要があります。以下はprometheus.ymlの記述例です。
|
1 2 3 4 5 6 |
scrape_configs: - job_name: 'traefik' scrape_interval: 15s static_configs: - targets: ['traefik-metrics:9091'] |
注意: 過剰な収集頻度はPrometheusサーバーに負荷をかけます。アプリケーションの特性に応じて調整しましょう。
まとめ
本記事では、Kubernetes環境におけるTraefikとPrometheus・Grafanaのメトリクス連携方法について具体的な手順を解説しました。特に以下の点が重要です:
- Traefikのメトリクスエンドポイント設定と認証強化
- Prometheusでのスクレイプ構成とServiceMonitor利用
- Grafanaによる可視化とダッシュボードテンプレート導入
- cAdvisorとの連携時のセキュリティ対策(RBAC・NetworkPolicy)
- Traefik v3系におけるAPI変更への対応
これらの手順を導入直後から実施することで、Kubernetesクラスタの可用性と監視体制を強化できます。
導入直後のパフォーマンス監視体制の構築を開始しましょう。