Политика предупреждений о Stackdriver - необходимо фильтровать данные JSON - PullRequest
1 голос
/ 15 января 2020

У меня есть сценарий Python, настроенный в App Engine, который выполняет все проекты в нашей организации, собирающие данные на:

  • Диски, не связанные с политиками моментальных снимков
  • Политики моментальных снимков, которые не имеют "ежедневных" или "еженедельных" в своем названии (и, следовательно, выходят за рамки нашего соглашения об именах)

Принимая первое в качестве примера, полезную нагрузку JSON внутри журнал Stackdriver выглядит следующим образом:

jsonPayload: {
  DiskWithoutPolicy: "True"   
  diskId: "1234567891234567891"   
  diskName: "server-disk3"   
  project: "projectID"   
}

Когда я go создаю политику предупреждений, обозреватель метрик позволяет мне фильтровать только метки ресурсов журнала (перечислены здесь: https://cloud.google.com/monitoring/api/resources):

resource: {
  labels: {
   module_id: "get_googlecloud_snapshotstatus"    
   project_id: "projectID"    
   version_id: ""    
   zone: "europe-west1-d"    
  }

Может ли Metrics Explorer фильтровать полезную нагрузку JSON, поэтому я могу видеть 'diskId', 'diskName' и 'project'?

Если нет, есть ли другой способ добиться того, что мне нужно?

1 Ответ

1 голос
/ 16 января 2020

Вы можете создать свои собственные пользовательские метрики в журнале Stackdriver. Таким образом, вы можете захватить все журналы, соответствующие определенному фильтру, и выставить поля, которые вы хотите, в качестве метри c меток.

Например, я перехожу к Stackdriver Logging -> Logs-based Metrics -> Create Metric и выберите фильтр для приложения GAE:

resource.type="gae_app" 
logName=("projects/REDACTED/logs/appengine.googleapis.com%2Fstdout" 
OR "projects/REDACTED/logs/appengine.googleapis.com%2Fstderr" 
OR "projects/REDACTED/logs/appengine.googleapis.com%2Fnginx.request" 
OR "projects/REDACTED/logs/appengine.googleapis.com%2Frequest_log") 
resource.labels.module_id="image-demo"
httpRequest.requestMethod="GET"

Запросы содержат шаблон c jsonPayload, например:

jsonPayload: {
  appLatencySeconds: "0.000"   
  latencySeconds: "0.001"   
  trace: "4ff777572199f23f4fc97388e75c0acc"   
 }

В редакторе metri c (справа панель) под Labels есть раскрывающийся селектор Field name, который включает в себя наши поля jsonPayload:

enter image description here

В нашем случае мы выбираем jsonPayload.trace и теперь мы можем отфильтровать нашу пользовательскую метрику c по метке trace в Metrics Explorer:

enter image description here

Обратите внимание, что вы может создать предупреждение мониторинга Stackdriver непосредственно из списка пользовательских метрик (Create alert from metric):

enter image description here

...