Políticas de amostra

Nesta página, apresentamos uma coleção de políticas de alertas específicas que podem ser usadas como inspiração e para você criar políticas próprias.

Como representar políticas em formato JSON ou YAML

Represente políticas de alertas em dois formatos de dados: JSON e YAML. O SDK do Cloud pode ler e gravar ambos os formatos. A API REST pode ler JSON.

Para gerar as representações YAML (padrão) das políticas de alertas e canais de notificação atuais, use os comandos gcloud alpha monitoring policies list e describe ou gcloud alpha monitoring channels list e describe, respectivamente.

Por exemplo, este comando recupera uma única política e captura a saída no arquivo test-policy.yaml:

gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307 > test-policy.yaml

Para gerar representações JSON das suas políticas de alerta e canais de notificação existentes:

Como copiar políticas

Como ilustramos no exemplo de backup/restauração, é possível usar políticas salvas para criar novas cópias delas. Você também pode usá-las como ponto de partida para criar políticas semelhantes.

É possível usar uma política salva em um projeto para criar uma nova ou semelhante em outro projeto. No entanto, você precisa primeiro fazer as seguintes alterações em uma cópia da política salva:

  • Remova os seguintes campos de qualquer canal de notificação:
    • name
    • verificationStatus
  • Crie canais de notificação antes de consultar os canais nas políticas de alertas. São necessários os novos identificadores de canal.
  • Remova os seguintes campos de qualquer política de alertas que estiver recriando:
    • name
    • condition.name
    • creationRecord
    • mutationRecord

Amostras de política

Estas políticas são organizadas com a mesma terminologia usada pelo console do Stackdriver Monitoring, como “política de taxa de alteração”. Contudo, na verdade, existem apenas dois tipos de condições subjacentes a todas essas classificações:

  • Uma condição limite: quase todos os tipos de política mencionados na IU são variantes de uma condição limite.
  • Uma condição de ausência.

Nas amostras, são indicadas por condições conditionThreshold e conditionAbsent. Consulte a página de referência de Condition para ver mais informações.

Política de limite de métrica

Uma política de limite de métrica detecta quando algum valor cruza um limite predeterminado. As políticas de limite permitem que você saiba que algo está se aproximando de um ponto importante, portanto, você pode realizar alguma ação. Por exemplo, quando o espaço disponível em disco fica abaixo de 10% do espaço total e seu sistema pode ficar sem espaço em breve.

A política a seguir utiliza o uso médio da CPU como um indicador da integridade de um grupo de VMs. Isso gera um alerta quando o uso médio da CPU de um grupo de VMs em uma instância e zona, medida em intervalos de 60 segundos, excede um limite de 90% de utilização por 15 minutos (900 segundos):

{
    "displayName": "Very high CPU usage",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "CPU usage is extremely high",
            "conditionThreshold": {
                "aggregations": [
                    {
                        "alignmentPeriod": "60s",
                        "crossSeriesReducer": "REDUCE_MEAN",
                        "groupByFields": [
                            "project",
                            "resource.label.instance_id",
                            "resource.label.zone"
                        ],
                        "perSeriesAligner": "ALIGN_MAX"
                    }
                ],
                "comparison": "COMPARISON_GT",
                "duration": "900s",
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
                           AND resource.type=\"gce_instance\"",
                "thresholdValue": 0.9,
                "trigger": {
                    "count": 1
                }
            }
        }
    ],
}

Política de ausência de métrica

A política de ausência de métrica é acionada quando nenhum dado é gravado em uma métrica pelo período especificado.

Uma maneira de demonstrar isso é criar uma métrica personalizada, na qual nada será gravado. Você não precisa de uma métrica personalizada para esse tipo de política, mas, para fins de demonstração, é fácil garantir que não seja usada em qualquer situação.

Veja um descritor de amostra para uma métrica personalizada. É possível criar a métrica usando o APIs Explorer.

{
  "description": "Number of times the pipeline has run",
  "displayName": "Pipeline runs",
  "metricKind": "GAUGE",
  "type": "custom.googleapis.com/pipeline_runs",
  "labels": [
    {
      "description": "The name of the pipeline",
      "key": "pipeline_name",
      "valueType": "STRING"
    },
  ],
  "unit": "1",
  "valueType": "INT64"
}

Consulte Como usar métricas personalizadas para mais informações.

A seguinte política de alerta será acionada se nenhum dado for gravado nessa métrica por um período de aproximadamente uma hora: em outras palavras, seu pipeline por hora não é executado. Observe que a condição usada aqui é conditionAbsent.

{
    "displayName": "Data ingestion functioning",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Hourly pipeline is up",
            "conditionAbsent": {
                "duration": "3900s",
                "filter": "resource.type=\"global\"
                           AND metric.type=\"custom.googleapis.com/pipeline_runs\"
                           AND metric.label.pipeline_name=\"hourly\"",
            }
        }
    ],
}

Política de taxa de alteração

Essa política avisa quando a taxa de uso da CPU está aumentando rapidamente:

{
  "displayName": "High CPU rate of change",
  "combiner": "OR",
  "conditions": [
    {
      "displayName": "CPU usage is increasing at a high rate",
      "conditionThreshold": {
         "aggregations": [
           {
             "alignmentPeriod": "900s",
             "perSeriesAligner": "ALIGN_PERCENT_CHANGE",
           }],
        "comparison": "COMPARISON_GT",
        "duration": "180s",
        "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
        "thresholdValue": 0.5,
        "trigger": {
          "count": 1
         }
      }
    }
  ],
}

Política de agregação de grupo

Esta política alerta quando a utilização média da CPU em um cluster do Google Kubernetes Engine excede um limite:

{
    "displayName": "CPU utilization across GKE cluster exceeds 10 percent",
    "combiner": "OR",
    "conditions": [
         {
            "displayName": "Group Aggregate Threshold across All Instances in Group GKE cluster",
            "conditionThreshold": {
                "filter": "group.id=\"3691870619975147604\" AND metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
                "comparison": "COMPARISON_GT",
                "thresholdValue": 0.1,
                "duration": "300s",
                "trigger": {
                    "count": 1
                },
                "aggregations": [
                    {
                        "alignmentPeriod": "60s",
                        "perSeriesAligner": "ALIGN_MEAN",
                        "crossSeriesReducer": "REDUCE_MEAN",
                        "groupByFields": [
                              "project",
                              "resource.label.instance_id",
                              "resource.label.zone"
                        ]
                    },
                    {
                        "alignmentPeriod": "60s",
                        "perSeriesAligner": "ALIGN_SUM",
                        "crossSeriesReducer": "REDUCE_MEAN"
                    }
                ]
            },
        }
    ],
}

Essa política pressupõe a existência do grupo a seguir:

{
    "name": "projects/a-gcp-project/groups/3691870619975147604",
    "displayName": "GKE cluster",
    "filter": "resource.metadata.name=starts_with(\"gke-kuber-cluster-default-pool-6fe301a0-\")"
}

Para identificar os campos equivalentes para os grupos, liste os detalhes do grupo usando o API Explorer na página de referência project.groups.list.

Política de verificação de tempo de atividade

O status das verificações de tempo de atividade é exibido no console do Stackdriver Monitoring. No entanto, é possível usar uma política de alertas para notificar você diretamente se essa verificação falhar.

Por exemplo, o JSON a seguir descreve uma verificação de tempo de atividade no site do Google Cloud Platform. Ele verifica a disponibilidade a cada cinco minutos.

A verificação de tempo de atividade foi criada com o console do Stackdriver Monitoring. A representação JSON aqui foi criada listando-se as verificações de tempo de atividade no projeto usando a API Monitoring. Consulte uptimeCheckConfigs.list. Também é possível criar verificações de tempo de atividade com a API Monitoring.

{
    "name": "projects/a-gcp-project/uptimeCheckConfigs/uptime-check-for-google-cloud-site",
    "displayName": "Uptime check for Google Cloud site",
    "monitoredResource": {
        "type": "uptime_url",
        "labels": {
            "host": "cloud.google.com"
      }
    },
    "httpCheck": {
        "path": "/index.html",
        "port": 80,
        "authInfo": {}
    },
    "period": "300s",
    "timeout": "10s",
    "contentMatchers": [
        {}
    ]
}

Para criar uma política de alerta para uma verificação de tempo de atividade, consulte a verificação de tempo de atividade por UPTIME_CHECK_ID. Esse código é definido quando a verificação é criada. Ele é exibido como o último componente do campo de name e não está visível na IU. Se você estiver usando a API Monitoring, o método uptimeCheckConfigs.create retornará o código.

O código deriva de displayName, que, nesse caso, foi definido na IU. Ele pode ser verificado listando as verificações de tempo de atividade e observando o valor name.

O código da verificação de tempo de atividade descrito anteriormente é uptime-check-for-google-cloud-site.

A política de alerta abaixo será acionada se a verificação de tempo de atividade falhar e enviará uma notificação para o canal de notificação especificado:

{
    "displayName": "Google Cloud site uptime failure",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Failure of uptime check_id uptime-check-for-google-cloud-site",
            "conditionThreshold": {
                "aggregations": [
                    {
                        "alignmentPeriod": "1200s",
                        "perSeriesAligner": "ALIGN_NEXT_OLDER",
                        "crossSeriesReducer": "REDUCE_COUNT_FALSE",
                        "groupByFields": [ "resource.label.*" ]
                    }
                ],
                "comparison": "COMPARISON_GT",
                "duration": "600s",
                "filter": "metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"
                           AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
                           AND resource.type=\"uptime_url\"",
                "thresholdValue": 1,
                "trigger": {
                    "count": 1
                }
            }
        }
    ],
}

O filtro na política de alerta especifica a métrica monitorada por tipo e rótulo. O tipo de métrica é monitoring.googleapis.com/uptime_check/check_passed. O rótulo de métrica identifica a verificação de tempo de atividade específica que está sendo monitorada. Neste exemplo, o campo de rótulo check_id contém o código de verificação do tempo de atividade.

AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"

Consulte Como monitorar filtros para mais informações.

Política de integridade do processo

Uma política de integridade do processo poderá notificar você se o número de processos correspondentes a um padrão cruzar um limite. Isso pode ser usado para informar, por exemplo, que um processo parou de ser executado.

Essa política envia uma notificação para o canal de notificação especificado quando nenhum processo correspondente à string nginx, sendo executado como usuário www, estiver disponível por mais de cinco minutos:

{
    "displayName": "Server health",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Process 'nginx' is not running",
            "conditionThreshold": {
                "filter": "select_process_count(\"has_substring(\\\"nginx\\\")\", \"www\") AND resource.type=\"gce_instance\"",
                "comparison": "COMPARISON_LT",
                "thresholdValue": 1,
                "duration": "300s"
            }
        }
    ],
}

Para ver outro exemplo, consulte Integridade do processo.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Stackdriver Monitoring
Precisa de ajuda? Acesse nossa página de suporte.