Prometheus: トラブルシューティング

Prometheusで遭遇する可能性のあるエラー

👋 Stackheroのドキュメントへようこそ!

Stackheroは、数多くの利点を提供するPrometheusクラウドソリューションを提供しています。主な利点は以下の通りです:

  • Alert Managerが含まれており、SlackMattermostPagerDutyなどにアラートを送信できます。
  • 無制限のメールアラートを送信できる専用メールサーバー。
  • BlackboxHTTPICMPTCPなどをプローブ。
  • オンライン設定ファイルエディタによる簡単な設定
  • ワンクリックでの手間いらずの更新
  • プライベートで専用のVMによる最適なパフォーマンスと強固なセキュリティ

時間を節約し、生活を簡素化:StackheroのPrometheusクラウドホスティングソリューションを試すのに5分しかかかりません!

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

この問題を解決する方法はいくつかあります。

Node Exporterのようなターゲットサーバーを使用している場合、最新バージョンに更新することを検討してください。最近の更新では通常、Content-Typeヘッダーが正しく定義されており、Prometheusのエラーを解決するはずです。

カスタムターゲットサーバー、例えば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

ターゲットサーバーがContent-Typeヘッダーを指定しない場合に使用されるフォールバックプロトコルをprometheus.ymlの設定ファイルで定義することもできます。

例は以下の通りです。

  - job_name: "my-job"
    # [...]
    fallback_scrape_protocol: PrometheusText0.0.4

サポートされている値はPrometheusProtoPrometheusText0.0.4PrometheusText1.0.0OpenMetricsText0.0.1、およびOpenMetricsText1.0.0です。