A criação de métricas definidas pelo usuário (também chamadas de métricas personalizadas) com a API Cloud Monitoring permite capturar medições específicas do aplicativo e criar gráficos ou alertas sobre elas, assim como as métricas integradas do Cloud Monitoring. Como as métricas integradas, cada métrica definida pelo usuário combina pontos de dados, um tipo de métrica que define o que os pontos representam e um recurso monitorado que identifica a origem dos dados.
Para instrumentar seu aplicativo, recomendamos o uso de um framework de instrumentação de código aberto e neutro em relação a fornecedores, como o OpenTelemetry, em vez de APIs ou bibliotecas de cliente específicas de fornecedores e produtos. Para mais informações sobre esses frameworks, consulte Observabilidade para desenvolvedores de aplicativos e Escolher uma abordagem de instrumentação.
Não é possível usar a API Monitoring para criar métricas com base em registros, que derivam dados de métricas de entradas de registro. Em vez disso, o Cloud Logging cria as estruturas de métricas e envia os dados para o Cloud Monitoring. Consulte Criar métricas de contador e Criar métricas de distribuição. As métricas definidas pelo usuário são um recurso cobrável do Cloud Monitoring. Para detalhes sobre preços, consulte as seções do Cloud Monitoring na página de preços do Google Cloud Observability.
Antes de começar
Para saber mais sobre as estruturas que estão por trás de todas as métricas, consulte Métricas, série temporal e recursos.
Para usar o Cloud Monitoring, é preciso ter um projeto do Google Cloud com o faturamento ativado. Quando necessário, faça o seguinte:
-
No console do Google Cloud , na página do seletor de projetos, selecione ou crie um projeto do Google Cloud .
Papéis necessários para selecionar ou criar um projeto
- Selecionar um projeto: para selecionar um projeto, não é necessário ter um papel do IAM específico. É possível selecionar qualquer projeto em que você tenha um papel.
-
Criar um projeto: para criar um projeto, é preciso ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
- Verifique se a API Monitoring está ativada. Para ver detalhes, leia Como ativar a API Monitoring.
- Para aplicativos em execução fora do Google Cloud, o projeto do Google Cloud precisa autenticar o aplicativo usando o Application Default Credentials (ADC) local. Para mais informações, consulte Configurar o ADC para um ambiente local ou outro provedor de nuvem.
Criar um tipo de métrica definido pelo usuário
Para criar uma métrica definida pelo usuário, defina um objeto MetricDescriptor que especifique várias informações sobre a métrica ou grave dados de métricas. Quando você grava dados de métricas,
o Monitoring cria o descritor de métrica para você com base
na estrutura dos dados fornecidos.
Para saber como projetar um descritor de métrica, consulte
Descritores de métricas para métricas definidas pelo usuário.
Criação automática de descritores de métrica
Se você gravar dados de métricas quando um descritor de métrica para essa métrica definida pelo usuário ainda não existir, um descritor de métrica será criado automaticamente. No entanto, talvez ele não seja exatamente o que você quer. A criação automática de descritores de métrica inclui algumas suposições e padrões.
O Cloud Monitoring cria um novo MetricDescriptor quando
o objeto TimeSeries incluído em uma chamada para
timeSeries.create faz referência a um
objeto Metric que especifica um
nome de tipo de métrica inexistente.
O Cloud Monitoring usa as seguintes regras para preencher o
MetricDescriptor:
type: o tipo é copiado do campotypedo objetoMetric.name: o nome é criado com base no ID do projeto na chamada de método e no valor detypeno objetoMetric.labels: os rótulos que aparecem no objetoMetric. Cada descritor de rótulo no novo descritor de métrica tem os campos abaixo:key: a chave do rótulo no objetoMetric.valueType:STRINGdescription: não definido
metricKind: o tipo de métrica é definido comoGAUGE, a menos que você especifique o parâmetrometricKinddo objetoTimeSeries. Quando você especificametricKind, a nova métrica tem esse tipo. Só é possível especificar os tiposGAUGEeCUMULATIVE.valueType: o tipo de valor é extraído do valor digitado doPointque está sendo gravado. O tipo de valor precisa serBOOL,INT64,DOUBLEouDISTRIBUTION. Quando você especifica um tipo de valor no campovalueTypedoTimeSeries, esse tipo precisa corresponder ao tipo doPoint.unit: não definidodescription:"Auto created custom metric.".displayName: não definido
Em uma única chamada timeSeries.create, é possível incluir vários objetos TimeSeries que se referem ao mesmo tipo de métrica inexistente. Nesse caso,
os rótulos no novo descritor de métrica consistem na união de todos os rótulos
nos objetos Metric em todas as série temporal nessa chamada para
create.
Próxima etapa: consulte Gravar métricas definidas pelo usuário.
Criação manual de descritores de métricas
Para criar um descritor de métrica, faça o seguinte:
Determine a estrutura do descritor de métrica. Para ajudar a fazer essas escolhas, navegue pelas métricas integradas e analise os dados de série temporal:
Escolha um nome de métrica para sua métrica definida pelo usuário.
Escolha um nome de exibição e uma descrição para sua métrica. O nome de exibição é usado no console do Google Cloud .
Escolha um ou mais projetos para definir a métrica definida pelo usuário e gravar os dados de série temporal. Quando você precisar da mesma métrica em vários projetos, faça definições idênticas da métrica em cada projeto.
Determine o tipo de métrica e de valor e, se quiser, as unidades. Nem todos os tipos de valor e de métrica são compatíveis com métricas definidas pelo usuário. Para mais informações sobre esses campos, consulte Tipos de valor e tipos de métricas.
Escolha os rótulos da métrica: nomes, tipos de valor e descrições.
Determine os recursos monitorados em que os dados de métricas são gravados. Escolha uma das seguintes opções:
aws_ec2_instance: instância do Amazon EC2.dataflow_job: job do Dataflow.gae_instance: instância do App Engine.gce_instance: instância do Compute Engine.generic_node: nó de computação especificado pelo usuário.generic_task: tarefa definida pelo usuário.gke_container: instância de contêiner do GKE.global: use esse recurso quando nenhum outro tipo de recurso for adequado. Na maioria dos casos de uso,generic_nodeougeneric_tasksão melhores opções do queglobal.k8s_cluster: cluster do Kubernetes.k8s_container: contêiner do Kubernetes.k8s_node: nó do Kubernetes.k8s_pod: pod do Kubernetes.
Crie um objeto
MetricDescriptore transmita-o como um argumento para uma chamada ao métodometricDescriptors.create.
Normalmente, é um erro chamar
metricDescriptors.create usando o mesmo nome de tipo
de um descritor de métrica atual. No entanto, se todos os campos do
novo objeto MetricDescriptor corresponderem exatamente aos campos do
descritor existente, não será um erro, mas não terá efeito.
No exemplo a seguir, você cria uma métrica de medidor.
Protocolo
Para criar um descritor de métrica, use o método metricDescriptors.create.
É possível executá-lo por meio do widget da APIs Explorer na página de referência do método. Consulte APIs Explorer para
mais informações.
Veja a seguir os parâmetros de exemplo para metricDescriptors.create:
- nome (URL):
projects/[PROJECT_ID] Corpo da solicitação: forneça um objeto
MetricDescriptorcomo este:{ "name": "", "description": "Daily sales records from all branch stores.", "displayName": "Sales", "type": "custom.googleapis.com/stores/sales", "metricKind": "GAUGE", "valueType": "DOUBLE", "unit": "{USD}", "labels": [ { "key": "store_id", "valueType": "STRING", "description": "The ID of the store." }, ], }
Insira esses valores nos campos do widget, usando o ID do projeto
no lugar de [PROJECT_ID]:
Clique em Executar para executar o método.
Ao criar uma nova métrica, o campo name no
MetricDescriptor é ignorado e pode ser omitido. O método create retorna o novo descritor de métrica com o campo name preenchido, que neste exemplo seria:
"name": "projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_sales"
Por exemplo, se você quiser receber o descritor de uma métrica, use esse nome.
C#
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Consulte Resolver problemas de chamadas de API se tiver dificuldade.
Próxima etapa: consulte Gravar métricas definidas pelo usuário.
Gravar métricas definidas pelo usuário
Só é possível gravar dados em tipos de métricas definidas pelo usuário. Para gravar seus dados, use o método timeSeries.create.
Quando a série temporal existe, esse
método anexa um novo ponto de dados à série temporal atual. Quando a série temporal não existe, esse método a cria e anexa os dados.
Você escreve pontos de dados passando uma lista de objetos TimeSeries para timeSeries.create.
O tamanho máximo da lista é de 200, e cada objeto nela precisa especificar uma série temporal diferente:
- Os valores dos campos
metriceresourceidentificam um objetoTimeSeriesespecífico. Esses campos representam o tipo de métrica dos dados e o recurso monitorado a partir do qual os dados foram coletados. - Omita os campos
metricKindevalueType. Eles são ignorados ao gravar pontos de dados. Cada objeto
TimeSeriespode conter apenas um único objetoPoint:- O valor do ponto e o intervalo de tempo precisam ser consistentes com a definição do tipo de métrica. Para informações sobre intervalos de tempo de tipos diferentes de métricas, consulte
TimeInterval. - O intervalo de tempo do ponto precisa ser posterior a qualquer ponto atual na série temporal.
- O tempo de término do intervalo não pode ser maior que 25 horas no passado nem que cinco minutos no futuro.
- O valor do ponto e o intervalo de tempo precisam ser consistentes com a definição do tipo de métrica. Para informações sobre intervalos de tempo de tipos diferentes de métricas, consulte
Para gravar mais de um ponto na mesma série temporal, use uma chamada separada para o método
timeSeries.createpara cada ponto. Não grave dados em uma única série temporal mais rapidamente do que um ponto a cada 5 segundos. Quando você adiciona pontos de dados a diferentes série temporal, não há limitação de taxa.
Protocolo
Para gravar dados de métricas, use o método timeSeries.create.
É possível executá-lo por meio do widget da APIs Explorer na página de referência do método. Consulte o APIs Explorer
para mais informações.
Para gravar um ponto na métrica stores/daily_sales criada em
Criação manual de descritores de métricas:
- Acesse a página de referência de
timeSeries.create. - Forneça os parâmetros abaixo ao widget das APIs Explorer.
- Clique no botão Executar.
Use os seguintes parâmetros de amostra:
- nome:
projects/[PROJECT_ID] Corpo da solicitação: inclua uma lista de objetos
TimeSeries. A amostra a seguir tem apenas uma série temporal na lista.{ "timeSeries": [ { "metric": { "type": "custom.googleapis.com/my_metric", "labels": { "my_label": "my_value" } }, "resource": { "type": "gce_instance", "labels": { "project_id": "[PROJECT_ID]", "instance_id": "1234567890123456789", "zone": "us-central1-f" } }, "points": [ { "interval": { "endTime": "2018-06-01T10:00:00-04:00" }, "value": { "doubleValue": 123.45 } } ] } ] }
C#
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Consulte Resolver problemas de chamadas de API se tiver dificuldade.
Excluir métricas definidas pelo usuário
Para excluir uma métrica definida pelo usuário, exclua o descritor de métrica dela. Não é possível excluir os dados de série temporal armazenados no projeto do Google Cloud . No entanto, excluir o descritor de métrica torna os dados inacessíveis. Os dados expiram e são excluídos de acordo com a política de retenção de dados.
Não é possível excluir o descritor de métrica de uma métrica integrada.
Para excluir o descritor de métrica, chame o
método metricDescriptors.delete.
Protocolo
Para excluir um descritor de métrica, use o método metricDescriptors.delete.
É possível executá-lo por meio do widget da APIs Explorer na página de referência do método. Consulte o APIs Explorer
para mais informações.
Para excluir a métrica stores/daily_sales criada em
Criação manual de descritores de métricas:
- Acesse a
página de referência de
metricDescriptors.delete. Forneça o nome do descritor de métrica ao widget da APIs Explorer:
nome:
projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_salesClique no botão Executar.
C#
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para autenticar no Monitoring, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Consulte Resolver problemas de chamadas de API se tiver dificuldade.
Modificar uma métrica definida pelo usuário
Para modificar uma métrica definida pelo usuário, atualize o objeto MetricDescriptor que define a métrica.
A única modificação aceita é adicionar rótulos.
Para adicionar rótulos a uma métrica definida pelo usuário, use o método timeSeries.create e inclua os novos rótulos com os dados de série temporal. Os rótulos são adicionados ao descritor de métricas quando os rótulos que você tenta gravar são válidos e o número total de rótulos é menor que 30.
Os dados de série temporal são gravados como se o rótulo estivesse lá desde o início.
Se você quiser fazer mais do que adicionar novos rótulos, exclua e recrie o descritor de métrica. Nesse caso, você perde todos os dados de série temporal coletados anteriormente para o descritor de métrica antigo. Consulte Excluir métricas definidas pelo usuário para mais informações.
Não é possível renomear uma métrica.