Prometheus: トラブルシューティング
Prometheusで遭遇する可能性のあるエラー
👋 Stackheroのドキュメントへようこそ!
Stackheroは、数多くの利点を提供するPrometheusクラウドソリューションを提供しています。主な利点は以下の通りです:
Alert Managerが含まれており、Slack、Mattermost、PagerDutyなどにアラートを送信できます。- 無制限のメールアラートを送信できる専用メールサーバー。
BlackboxでHTTP、ICMP、TCPなどをプローブ。- オンライン設定ファイルエディタによる簡単な設定。
- ワンクリックでの手間いらずの更新。
- プライベートで専用のVMによる最適なパフォーマンスと強固なセキュリティ。
時間を節約し、生活を簡素化:StackheroのPrometheusクラウドホスティングソリューションを試すのに5分しかかかりません!
エラーの解決 "received unsupported Content-Type "..." and no fallback_scrape_protocol specified for target"
Prometheus v3のリリースにより、ターゲットサーバーはレスポンスにContent-Typeヘッダーを含めて、返信に含まれるメトリクスのプロトコルをPrometheusに通知する必要があります。これはNode Exporterのようなツールに影響し、適切なContent-TypeでPrometheusのHTTPリクエストに応答する必要があります。詳細については、Prometheusのドキュメントを確認してください。
この要件が満たされない場合、次のようなエラーメッセージが表示されることがあります。
received unsupported Content-Type "application/octet-stream" and no fallback_scrape_protocol specified for target
この問題を解決する方法はいくつかあります。
1. ターゲットサーバーを更新する
Node Exporterのようなターゲットサーバーを使用している場合、最新バージョンに更新することを検討してください。最近の更新では通常、Content-Typeヘッダーが正しく定義されており、Prometheusのエラーを解決するはずです。
2. ターゲットサーバーのContent-Typeヘッダーを定義する
カスタムターゲットサーバー、例えばPrometheusメトリクスを返すために開発したAPIルートの場合、レスポンスに直接Content-Typeヘッダーを設定できます。
例えば、HapiJSを使用している場合、メトリクスを次のように返す代わりに:
return metrics
次のようにContent-Typeヘッダーを設定できます。
return h.response(metrics).type('text/plain;version=0.0.4');
返すメトリクスのプロトコルに基づくサポートされているContent-Typeヘッダーは以下の通りです。
- PrometheusProto:
application/vnd.google.protobuf;proto=io.prometheus.client.MetricFamily;encoding=delimited - PrometheusText 0.0.4:
text/plain;version=0.0.4 - PrometheusText 1.0.0:
text/plain;version=1.0.0;escaping=allow-utf-8 - OpenMetricsText 0.0.1:
application/openmetrics-text;version=0.0.1 - OpenMetricsText 1.0.0:
application/openmetrics-text;version=1.0.0
3. フォールバックプロトコルを定義する
ターゲットサーバーがContent-Typeヘッダーを指定しない場合に使用されるフォールバックプロトコルをprometheus.ymlの設定ファイルで定義することもできます。
例は以下の通りです。
- job_name: "my-job"
# [...]
fallback_scrape_protocol: PrometheusText0.0.4
サポートされている値はPrometheusProto、PrometheusText0.0.4、PrometheusText1.0.0、OpenMetricsText0.0.1、およびOpenMetricsText1.0.0です。