Nesta página, descrevemos como gerar novas métricas com base nas atuais
ao implantar um recurso personalizado MonitoringRule
no
dispositivo isolado do Google Distributed Cloud (GDC).
Com as regras de gravação, é possível pré-calcular expressões usadas com frequência ou computacionalmente caras, melhorando o desempenho de painéis e alertas. Definidas em recursos personalizados MonitoringRule
, essas regras geram novas métricas de série temporal com base nas métricas atuais, melhorando a capacidade de observação dos dados.
Ao armazenar resultados pré-calculados, as regras de gravação eliminam cálculos redundantes
sempre que uma expressão é necessária. Esse método acelera significativamente os tempos de consulta, principalmente para painéis e alertas complexos que exigem avaliações repetidas da mesma expressão. Basicamente, os recursos MonitoringRule
permitem derivar novas métricas das atuais especificando os cálculos necessários nas regras de gravação.
Antes de começar
Para receber as permissões necessárias para gerenciar recursos personalizados do MonitoringRule
, peça ao administrador do IAM da organização ou do projeto para conceder a você uma das funções associadas do MonitoringRule
.
Dependendo do nível de acesso e das permissões necessárias, você pode receber papéis de criador, editor ou leitor para esse recurso em uma organização ou um projeto. Para mais informações, consulte Preparar permissões do IAM.
Criar regras de gravação
Para criar uma regra de gravação, defina um nome para a métrica gravada e uma expressão válida que produza um valor numérico. Essa expressão, quando avaliada, gera a nova métrica. Implante o recurso personalizado no namespace do projeto no servidor da API Management para criar as regras de gravação.
Para mais informações sobre regras de gravação, consulte https://grafana.com/docs/loki/latest/rules/.
Siga estas etapas para criar regras de gravação no namespace do projeto:
- Determine o projeto do GDC em que você quer criar regras de gravação.
Crie um arquivo YAML definindo o recurso personalizado
MonitoringRule
.A especificação completa do
MonitoringRule
mostra um exemplo de regras de gravação com base em métricas. Para mais informações, consulte a documentação de referência da API.Substitua os seguintes valores no arquivo YAML de acordo com suas necessidades:
Nome do campo Descrição namespace
O namespace do projeto. name
O nome da configuração de regra. interval
A duração do intervalo de avaliação da regra em segundos. limit
Opcional. O número máximo de alertas. Defina como 0
para alertas ilimitados.recordRules
As definições para calcular novas métricas. recordRules.record
O nome do registro da nova métrica. O valor precisa ser um nome de métrica válido que defina a série temporal em que os resultados são armazenados. recordRules.expr
Uma expressão PromQL para a regra de métrica, que precisa ser avaliada como um valor numérico. recordRules.labels
Opcional. Os pares de chave-valor de rótulos a serem adicionados ou substituídos na nova métrica. Salve o arquivo YAML.
Aplique a configuração
MonitoringRule
ao servidor da API Management no mesmo namespace das regras de gravação:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_RULE_NAME.yaml
Substitua:
KUBECONFIG_PATH
: o caminho para o arquivo kubeconfig do servidor da API Management.MONITORING_RULE_NAME
: o nome do arquivo de definição deMonitoringRule
.
Especificação completa de MonitoringRule
Um recurso personalizado MonitoringRule
contém regras de gravação que descrevem as condições para criar novas métricas com base nas métricas atuais de observabilidade.
O arquivo YAML a seguir mostra um modelo para o recurso
personalizado MonitoringRule
. Para mais informações, consulte a
documentação de referência da API.
# Configures either an alert or a target record for precomputation.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringRule
metadata:
# Choose a namespace that matches the project namespace.
# The alert or record is produced in the same namespace.
namespace: PROJECT_NAMESPACE
name: MONITORING_RULE_NAME
spec:
# Rule evaluation interval.
interval: 60s
# Configure the limit for the number of alerts.
# A value of '0' means no limit.
# Optional.
# Default value: '0'
limit: 0
# Configure recording rules to generate new metrics based on existing metrics.
# Recording rules precompute expressions that are frequently needed or computationally expensive.
# Results are saved as a new set of time series.
recordRules:
# Define the time series where you want to write the recording rule.
# The value must be a valid metric name.
- record: MyMetricsName
# Define the PromQL expression to evaluate for this rule.
expr: rate({service_name="bob-service"} [1m])
# Define labels to add or overwrite.
# Map of key-value pairs.
# Optional.
labels:
verb: read
Substitua:
PROJECT_NAMESPACE
: o namespace do projeto.MONITORING_RULE_NAME
: o nome do arquivo de definição deMonitoringRule
.
As regras de registro LoggingRule
Um CR LoggingRule
contém regras de registro que descrevem as condições para calcular novas métricas com base em registros preexistentes.
O arquivo YAML a seguir mostra um modelo para o campo recordRules
da CR LoggingRule
.
# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1alpha1
kind: LoggingRule
metadata:
# Choose namespace that matches the project's namespace
# Note: The alert or record will be produced in the same namespace
namespace: g-fleetns-a
name: alerting-config
spec:
# Choose which log source to base alerts on (Operational/Audit/Security Logs)
# Optional, Default: Operational
source: <string>
# Rule evaluation interval
interval: <duration>
# Configure limit for number of alerts (0: no limit)
# Optional, Default: 0 (no limit)
limit: <int>
# Configure record rules to generate new metrics based on pre-existing logs.
# Record rules generate metrics based on logs.
# Use record rules for complex alerts, which query the same expression repeatedly every time they are evaluated.
recordRules:
# Define which timeseries to write to (must be a valid metric name)
- record: <string>
# Define LogQL expression to evaluate for this rule
# https://grafana.com/docs/loki/latest/rules/
expr: <string>
# Define labels to add or overwrite
# Optional, Map of {key, value} pairs
labels:
<labelname>: <labelvalue>
...