Политика предупреждений о Stackdriver - необходимо фильтровать данные JSON

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

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

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

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

Когда я собираюсь создать Политику оповещения, Metrics Explorer позволяет мне фильтровать только метки ресурсов журнала (перечислены здесь: 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 ответ


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

Например, я Stackdriver Logging к 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"

Запросы содержат общий jsonPayload такой как:

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

В редакторе метрик (правая панель) в разделе « Labels есть раскрывающийся селектор « jsonPayload поля», включающий наши поля jsonPayload :

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь


Есть идеи?

10000