NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
JA

Linux コマンドとシェル スキル

curl: ウェブ

Curl は、あらゆる操作ツールボックスのポケット HTTP クライアントです。診断が可能で、パイプラインに優しく、返された内容については正直です。そのフラグの表面は巨大に見えますが、ほとんどは機能していません。約 12 個のフラグが日常の運用用途をカバーしており、それらを知っているかどうかが、スクリプトによるヘルス チェックと幸運なチェックの違いとなります。最もページングを節約するルールは簡単です。つまり、curl の忍耐力は無限ですが、あなたの忍耐力は無限ではないため、毎回 --max-time を設定するという簡単なルールです。

要点

  • ダウンロードする前に確認してください。curl -sSI https://host は、本文なしでメソッド、ヘッダー、およびステータスを返します。 TLS ハンドシェイク、プロキシ、またはホスト ヘッダーの動作が異常な場合は、-v を追加します。
  • タイムアウト規定は交渉の余地がありません。 --connect-timeout 5 は無効な接続を強制終了し、 --max-time 15 は遅い接続を強制終了します。両方が含まれていないヘルスチェックは、検出されるはずの停止よりも長引く可能性があります。
  • 終了コードはスクリプト内の規約です。7 は接続拒否、28 はタイムアウト、22 は --fail によって表示される HTTP エラーです。出力だけでなくコードを読み取らないと、モニタリングは何も学習しません。
  • 可視性と強制を組み合わせます。 -w '%{http_code} %{time_total}\n' は何が起こったかを報告し、 --fail-with-body はエラー本文を表示します。これらのいずれかがなければ、失敗は成功とまったく同じように見えます。
  • ユーザーが実際にヒットした内容をテストします。 --resolve example.com:443:10.1.2.3 は、DNS ゲームなしで名前付きバックエンドをチェックし、-H 'Host: vhost.example.com' は、同じリクエストの vhost 側をカバーします。
  • 転送には意図的なフラグが付けられます。 -o は出力に名前を付けます。 -L はレビューしたリダイレクトに従います。 --retry 3 --retry-delay 2 は不安定なアップストリームを緩和し、-F は wget が気にも留めなかったマルチパート アップロードを処理します。
  • ヘッダーとソケットにはブラウザ以外の世界が含まれます。API の場合は -H 'Authorization: Bearer ...'、TCP にはまったく触れないローカル サービスを調査する場合は --unix-socket /run/app/app.sock です。
  • 2 つの古典的な罠を知っておいてください。-v が数秒で公開するリクエストをハイジャックするプロキシ環境変数と、意図しない限り黙って POST を GET に変換するリダイレクトです。

現場ノート

15 分間ハングしたヘルスチェックは、cron ループ内で --max-time を指定しないcurlであり、検出されるはずだった停止よりも長く続きました。原則として、タイムアウトは URL の前に入るようになりました。

よくある質問

サイトが 500 を返したときに、curl が 0 で終了したのはなぜですか?

curl の成功は、トランスポートが機能したことを意味します。 HTTP レベルのエラーは、--fail (終了 22) または -w からの %{http_code} の読み取りなしでは表示されません。監視スクリプトは 2 つのうちのいずれかを要求します。

スクリプトにはcurlかwget?

API、ヘッダー、POST ボディ、および正確な制御用のカール。ミラーリングと再帰のための wget。ワンショット GET の場合はどちらかが機能し、両方が混在するパイプラインは通常、どちらがジョブを所有するかを誰も決めていないことを示します。

TLS 検証をスキップすることは正当化されるでしょうか?

自己署名ラボ証明書に対する対話型診断の場合、場合によっては。スクリプトまたは cron 駆動のものであれば、そうではありません。 -k は、中間者による転送の所有を阻止する唯一のチェックを無効にします。

遅いリクエストが実際に停止している場所を確認するにはどうすればよいですか?

タイミング変数: -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\n' を数回実行すると、DNS の脆弱性とバックエンドのストールによるハンドシェイクの痛みが区別されます。

linux コマンドとシェル スキル に対するKinetikatechの支援

私たちが毎日行っていること:管理者がサーバーを操作するかサーバーと戦うかを決定するコマンドとスクリプトの習慣。すべての基本インストールに存在するツールを使用して、テキストとプロセスを検索、変換、転送、監視します。 私たちのLinuxサーバーセキュリティとサーバー管理サービスは、評価、実装、24時間体制の監視、30分以内の緊急対応をエンドツーエンドでカバーします。

エンジニアに相談する

サーバーの障害?サイトの改ざん?表示が遅い?

重大な障害には30分以内に対応 — 24時間365日体制です。

緊急サポートを依頼する support@kinetikatech.com