健康診断については、grep
に頼る必要はありません。 SDKにはincluded filtersがあるので、出力をフィルタリングするだけで済みます。しかし、あなたは端末上にそれらを隠しているだけですが、SDKは(grep
と同じように)APIから引き続き取得します。カスタムフィルタと一致するログのみを要求するので、より最適な方法はgcloud logging read 'resource.type="gae_app" AND logName:"logs/appengine.googleapis.com%2Frequest_log" AND protoPayload.resource!="/health"' --order desc
です。これは非常に冗長なログを提供するので、format the output directly on the SDKを使用して、gcloud app logs tail
と似たようにすることができます。あなたは出力があなたのニーズに合わせ作るために--format
フラグを追加する必要があり
watch 'gcloud logging read "resource.type=\"gae_app\" AND logName:\"logs/appengine.googleapis.com%2Frequest_log\" AND protoPayload.resource!=\"/health\"" --order desc --limit 1'
、および--limit
フラグへ:gcloud logging
は「尾」モードを持っていないので
、あなただけのようwatch
でそれをラップすることができますあなたに理にかなっているもの(制限が大きくなればなるほど、応答は遅くなります)。
ログが開始される時刻に関して、gcloud app logs tail -s default --log-http
を実行し、SDKで行われたリクエストとAPIで使用可能なフィルタを比較すると、1週間前のログが表示される理由がわかります。
あなたのケースでは、watch
にラップされたAPIに直接呼び出すことをお勧めします。
直接API呼び出しでは、カスタムフィルタを追加してfield maskを使用し、関連するログエントリとフィールドのみを返し、ネットワークへの負荷を軽減し、応答時間を短縮できます。
まず、log filterを作成して、必要なログのみを返す必要があります(ヘルスチェックやスパムの監視はありません)。これを行う最善の方法は、表示されたログに満足するまでconsole itselfでテストすることです。
次に、興味のあるフィールドをチェックします。GAEログの場合、protoPayload(およびペイロードのいくつかのフィールドのみが必要ですが、後でフィルタリングすることができます)が必要になる可能性があります。
だから私たちは次のように私たちのAPI呼び出しのループを構築する(警告:引用符エスケープ地獄):簡単なテストとして
watch -tcn 0.5 'curl -H"Authorization: Bearer $(gcloud auth print-access-token)" \
-H"Content-Type: application/json" \
"https://logging.googleapis.com/v2/entries:list?fields=entries%2FprotoPayload" \
-d"{
\"filter\":\"resource.type=\\\"gae_app\\\"
logName=\\\"projects/$(gcloud config get-value project)/logs/appengine.googleapis.com%2Frequest_log\\\"\",
\"pageSize\":$(tput lines),
\"orderBy\":\"timestamp desc\",
\"resourceNames\": [
\"projects/$(gcloud config get-value project)\"
]
}" 2>\dev\null |jq -cC ".entries[].protoPayload | { timestamp: .startTime, method, status, latency, URL: (.host + .resource) }"'
は、私は、出力をフォーマットするjq
て応答をパイプと制限していますレスポンスのサイズを画面サイズに合わせることができますが、これをフィールドや出力に合わせて読みやすくする必要があります。
同じ問題があります。何かを見つけましたか? 現在ログを消去しようとしています 'gcloud betaログ記録リスト' 'gcloud betaログ記録削除LOG_NAME' –