2017-04-18 15 views
6

haftalık verileri gösterir. Fark ettiğim ilk şey Google’ın saniyede yaklaşık 10 sağlık kontrolü göndermesidir, bu yüzden en azından yararlı bilgiler almak için grep -v /health adresine sahibim. Bu standart mı? "gcloud uygulaması günlükleri kuyruk" Ben Google Cloud Platform uygulaması için günlükleri akarsu çalışıyorum

ikinci şey

eski günlükleri akışları olmasıdır. gcloud app logs tail -s default'u çalıştırıyorum ve 11 Nisan'dan (bu noktada bir haftalık) günlükleri alıyorum. Daha yeni günlükler (4, 3 ve 2 gün önce) saatlerce yavaşça yayınlanır. Uygulamamda yenilemeye başladım (günlük mesajını tetikler) ve yeni günlükler göremedim.

yeni bir günlük mesajlarının bir yakın-gerçek zamanlı (dakika veya saat içinde) bir görünüm elde etmek herhangi bir yolu var mı?

+1

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 –

cevap

0

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.

İlgili konular