healthchecks için, grep
yılında güvenmek gerekmez. SDK'nın included filters vardır, bu yüzden çıkışı filtreleyebilirsiniz. Ancak, onları yalnızca terminalde saklıyorsunuz, ancak SDK onları hala API'den alıyor (grep
kullanıyor gibi). Daha özel bir yol, yalnızca özel bir filtreyle eşleşen günlükleri isteğiniz için gcloud logging read 'resource.type="gae_app" AND logName:"logs/appengine.googleapis.com%2Frequest_log" AND protoPayload.resource!="/health"' --order desc
kullanıyor olabilir. Bu oldukça ayrıntılı bir günlük verir, böylece format the output directly on the SDK'u gcloud app logs tail
'a benzer şekilde yapabilirsiniz. Sen çıkış ihtiyaçlarınıza göre yapmak --format
bayrak eklemek gerekir
watch 'gcloud logging read "resource.type=\"gae_app\" AND logName:\"logs/appengine.googleapis.com%2Frequest_log\" AND protoPayload.resource!=\"/health\"" --order desc --limit 1'
ve --limit
bayrak için: gcloud logging
bir "kuyruk" modunu olmadığından
, sadece böyle watch
sarın olabilir Size anlamlı gelen bir şey (daha büyük sınır, daha yavaş cevap).
Günlüklerin başladığı zaman ile ilgili olarak, gcloud app logs tail -s default --log-http
çalıştırırsanız ve SDK tarafından yapılan isteği API'da bulunan filtrelerle karşılaştırırsanız, neden bir haftalık günlükleri görüntülemeye başladığını görürsünüz.
sizin durumunuzda iyi seçenek watch
sarılı API doğrudan çağrı, yapım olacağını düşünüyoruz.
Doğrudan bir API çağrısı, özel bir filtre eklemenize ve field mask numaralı telefonu kullanmanıza, yalnızca ilgili günlük girişlerini ve alanlarına dönmenize ve ağda daha az zorlamayı ve daha hızlı yanıt almanızı sağlar.
Önce sadece günlükleri (hiçbir Healthcheck'i veya izleme istenmeyen) istemek dönecektir bir log filter oluşturmak zorunda. Bunu yapmanın en iyi yolu, görüntülenen günlüklerden memnun olana kadar console itself'da test etmektir.
Ardından, ilgilendiğiniz alanları kontrol edersiniz. GAE günlükleri için, büyük olasılıkla sadece protoPayload'u (ve buradaki yükün yalnızca bazı alanlarını, ancak daha sonra filtrelenebileceklerini) isteyeceksiniz.
yüzden şu şekilde bizim API çağrısı döngü oluşturmak (uyarı: alıntı kaçan cehennem): Hızlı bir sınama olarak
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) }"'
ben Çıktı biçimlendirmek için jq
yoluyla tepkisini boru ve sınırlayıcı ediyorum ekran boyutuna yanıt boyutu, ancak bunu okumayı kolaylaştıran alanlara ve çıkışlara uyarlamalısınız.
Aynı sorunu yaşıyor. Bir şey buldun mu? Şu anda sadece günlükleri temizlemeye çalışıyor 'gcloud beta günlük kaydı günlükleri ' ' gcloud beta günlükleri günlükleri LOG_NAME' sil –