curlとjqでAPIヘルスチェックを作る ― HTTP失敗・JSON不正・値不一致を分けて検知する

Linux・CLI・DevOpsカテゴリを表すパンダのイラスト Linux・CLI・DevOps

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。curl公式マニュアルとjq公式マニュアルを確認し、旧版の監視スクリプトを失敗原因ごとに切り分ける構成へ見直しました。

検証ステータス:📘 curl・jq公式情報確認済み/実APIでの監視運用は未検証

APIヘルスチェックでは「curlが終わった」だけでは不十分です。少なくとも、通信・HTTP・JSON・業務値を別々に判定します。

4層で確認する

失敗例
通信 DNS、接続、TLS、タイムアウト
HTTP 4xx、5xx
JSON 壊れたJSON、想定外の型
業務値 statusがokでない、version不一致

HTTPエラー時も本文を調べたいなら

curlの --fail-with-body はHTTP 400以上でエラーを返しつつ、レスポンス本文を保持できます。単純な --fail より障害解析に使いやすい場面があります。

jqは終了コードも使う

jq -e '.status == "ok" and (.version | type == "string")' response.json

-e を使うとフィルタ結果に応じた終了コードを利用でき、シェル側で成功・失敗を判定しやすくなります。

リトライは慎重に

curlにはリトライ機能がありますが、すべてのエラーを無条件に再試行する設定は、操作によっては重複送信につながります。ヘルスチェックのような読み取り処理でも、対象APIとHTTPメソッドを確認して使います。

まとめ

API監視は、通信、HTTP、JSON、値検証を分けると原因を特定しやすくなります。失敗時に何層で止まったかを終了コードとログへ残すことが重要です。

公式情報・一次情報

この記事の更新履歴

  • 2026-09-13 追加:通信・HTTP・JSON・業務値の4層、–fail-with-body、jq -eを追加。
  • 2026-09-13 変更:単一スクリプト例中心から失敗原因の切り分け中心へ変更。
  • 2026-09-13 削除:内部メタ情報、本文H1、リトライを一律推奨する表現を削除。

文書情報

記事タイトル
curlとjqでAPIヘルスチェックを作る ― HTTP失敗・JSON不正・値不一致を分けて検知する
作成日
更新日
Source URL
https://papanda925.com/?p=5698

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました