Adicione gráficos personalizados aos componentes
Visão Geral
SUSE® Observability já fornece muitos gráficos de métricas por padrão na maioria dos tipos de componentes que representam recursos do Kubernetes. Gráficos de métricas extras podem ser adicionados a qualquer conjunto de componentes sempre que necessário. Ao adicionar métricas aos componentes, existem duas opções:
-
As métricas já são coletadas por SUSE® Observability, mas não são visualizadas em um componente, por padrão.
-
As métricas ainda não são coletadas por SUSE® Observability e, portanto, ainda não estão disponíveis.
Para a opção 1, os passos abaixo irão instruí-lo sobre como criar um vínculo de métrica que configurará SUSE® Observability para adicionar uma métrica específica a um conjunto específico de componentes.
Para a opção 2, certifique-se de que as métricas estão disponíveis em SUSE® Observability enviando-as para SUSE® Observability usando o protocolo de escrita remota do Prometheus. Continue adicionando gráficos para as métricas aos componentes APENAS após garantir que as métricas estão disponíveis.
Criando um vínculo de métrica
Por exemplo, os passos adicionarão um vínculo de métrica para o Replica counts das implantações do Kubernetes. Esse vínculo de métrica já existe em SUSE® Observability, por padrão.
Crie um esboço do vínculo de métrica
Abra o arquivo YAML metricbindings.yaml em seu editor de código favorito para alterá-lo ao longo deste guia. Você pode usar a CLI para Testar seu StackPack.
- _type: MetricBinding
chartType: line
enabled: true
identifier: urn:stackpack:my-stackpack:shared:metric-binding:node-memory-bytes-available-scheduling
layout:
metricPerspective:
section: Resources
tab: Kubernetes Node
name: Memory available for scheduling (Custom)
priority: medium
queries:
- alias: ${cluster_name} - ${node}
expression: max_over_time(kubernetes_state_node_memory_allocatable{cluster_name="${tags.cluster-name}", node="${name}"}[${__interval}])
scope: (label = "stackpack:kubernetes" and type = "node")
unit: bytes(IEC)
As seções de consultas e escopo serão preenchidas nos próximos passos. Observe que a unidade utilizada é short, que simplesmente renderizará um valor numérico. Caso você ainda não tenha certeza sobre a unidade da métrica, pode deixá-la em aberto e decidir a unidade correta ao escrever a consulta PromQL.
Selecione os componentes para vincular
Salve uma visão da Perspectiva de Topologia e use os filtros (Filtros → Topologia → Mudar para STQL) para consultar os componentes que precisam mostrar a nova métrica. Os campos mais comuns para selecionar topologia em vínculos de métrica são type para o tipo de componente e label para selecionar todos os rótulos. Por exemplo, para as implantações:
type = "deployment" and label = "stackpack:kubernetes"
O filtro de tipo seleciona todas as implantações, enquanto o filtro de rótulo seleciona apenas os componentes criados pelo stackpack Kubernetes (o nome do rótulo é stackpack e o valor do rótulo é kubernetes). Este último também pode ser omitido para obter o mesmo resultado. Todos os Filtros de Componentes de Consulta STQL podem ser usados para filtragem.
Mude para o modo avançado para copiar a consulta de topologia resultante e colocá-la no campo scope do vínculo de métrica.
|
Vínculos de métrica suportam apenas os filtros de consulta. Funções de consulta como |
Escreva a consulta PromQL
Vá para o explorador de métricas da sua SUSE® Observability instância, http://your-instance/#/metrics, e use-o para consultar a métrica de interesse. O explorador possui autocompletar para métricas, rótulos, valores de rótulos, mas também funções PromQL e operadores para ajudar você. Comece com um intervalo de tempo curto, por exemplo, uma hora, para obter os melhores resultados.
Para o número total de réplicas, use a métrica kubernetes_state_deployment_replicas. Para mostrar os gráficos de métricas dos dados de séries temporais, amplie a consulta para fazer uma agregação usando o parâmetro ${__interval}:
max_over_time(kubernetes_state_deployment_replicas[${__interval}])
Neste caso específico, use max_over_time para garantir que o gráfico sempre mostre o maior número de réplicas em qualquer momento. Para intervalos de tempo mais longos, uma pequena queda nas réplicas não é mostrada. Para enfatizar o menor número de réplicas, use min_over_time em vez disso.
Copie a consulta na propriedade expression da primeira entrada no campo queries do vínculo de métrica. Use Total replicas como álias para que apareça na legenda do gráfico.
|
No SUSE® Observability, o tamanho do gráfico de métricas determina automaticamente a granularidade da métrica exibida no gráfico. As consultas PromQL podem ser ajustadas para fazer uso ideal desse comportamento e obter um gráfico representativo para a métrica. Escrever PromQL para gráficos explica isso em detalhes. |
Vincule a série temporal correta a cada componente.
A vinculação da métrica com todos os campos preenchidos:
_type: MetricBinding
chartType: line
enabled: true
tags: {}
unit: short
name: Replica counts
priority: MEDIUM
identifier: urn:stackpack:my-stackpack:metric-binding:my-deployment-replica-counts
queries:
- expression: max_over_time(kubernetes_state_deployment_replicas[${__interval}])
alias: Total replicas
scope: type = "deployment" and label = "stackpack:kubernetes"
Criá-lo no SUSE® Observability e visualizar o gráfico de "Contagem de réplicas" em um componente de implantação gera um resultado inesperado. O gráfico mostra as contagens de réplicas para todas as implantações. Logicamente, esperar-se-ia apenas uma série temporal: a contagem de réplicas para esta implantação específica.
Para corrigir isso, torne a consulta PromQL específica para um componente usando informações do componente. Filtre em rótulos de métrica suficientes para selecionar apenas a série temporal específica para o componente. Este é o vínculo da série temporal correta para o componente. Para quem tem experiência em criar painéis no Grafana, isso é semelhante a um painel com parâmetros que são usados em consultas no painel. Vamos mudar a consulta no vínculo de métrica para isto:
max_over_time(kubernetes_state_deployment_replicas{cluster_name="${tags.cluster-name}", namespace="${tags.namespace}", deployment="${name}"}[${__interval}])
A consulta PromQL agora filtra em três rótulos, cluster_name, namespace e deployment. Em vez de especificar um valor real para esses rótulos, uma referência de variável aos campos do componente é usada. Neste caso, os rótulos cluster-name e namespace são usados, referenciados usando ${tags.cluster-name} e ${tags.namespace}. Além disso, o nome do componente é referenciado com ${name}.
As referências de variáveis suportadas são:
-
Qualquer rótulo de componente, usando
${tags.<label-name>} -
O nome do componente, usando
${name}
|
O nome do cluster, namespace e uma combinação do tipo e nome do componente geralmente são suficientes para selecionar as métricas de um componente específico do Kubernetes. Esses rótulos, ou rótulos semelhantes, geralmente estão disponíveis na maioria das métricas e componentes. |
Avançado
Mais de uma série temporal em um gráfico
|
Há apenas uma unidade para uma vinculação de métrica (ela é plotada no Eixo Y do gráfico). Como resultado, você deve combinar apenas consultas que produzem séries temporais com a mesma unidade em uma vinculação de métrica. Às vezes, pode ser possível converter a unidade. Por exemplo, o uso de CPU pode ser relatado em millicores ou em cores; millicores podem ser convertidos em cores multiplicando por 1000, como neste exemplo |
Existem duas maneiras de obter mais de uma série temporal em uma única vinculação de métrica e, portanto, em um único gráfico:
-
Escreva uma consulta PromQL que retorne várias séries temporais para um único componente
-
Adicione mais consultas PromQL à vinculação de métrica
Para a primeira opção, um exemplo é dado na próxima seção. A segunda opção pode ser útil para comparar métricas relacionadas. Alguns casos de uso típicos:
-
Comparando réplicas totais versus desejadas e disponíveis
-
Uso de recursos: limites, solicitações e uso em um único gráfico
Para adicionar mais consultas a uma vinculação de métrica, basta repetir passos 3. e 4. e adicionar a consulta como uma entrada extra na lista de consultas. Para as contagens de réplicas de implantação, existem várias métricas relacionadas que podem ser incluídas no mesmo gráfico:
- _type: MetricBinding
chartType: line
enabled: true
tags: {}
unit: short
name: Replica counts
priority: MEDIUM
identifier: urn:stackpack:my-stackpack:metric-binding:my-deployment-replica-counts
queries:
- expression: max_over_time(kubernetes_state_deployment_replicas{cluster_name="${tags.cluster-name}", namespace="${tags.namespace}", deployment="${name}"}[${__interval}])
alias: Total replicas
- expression: max_over_time(kubernetes_state_deployment_replicas_available{cluster_name="${tags.cluster-name}", namespace="${tags.namespace}", deployment="${name}"}[${__interval}])
alias: Available - ${cluster_name} - ${namespace} - ${deployment}
- expression: max_over_time(kubernetes_state_deployment_replicas_unavailable{cluster_name="${tags.cluster-name}", namespace="${tags.namespace}", deployment="${name}"}[${__interval}])
alias: Unavailable - ${cluster_name} - ${namespace} - ${deployment}
- expression: min_over_time(kubernetes_state_deployment_replicas_desired{cluster_name="${tags.cluster-name}", namespace="${tags.namespace}", deployment="${name}"}[${__interval}])
alias: Desired - ${cluster_name} - ${namespace} - ${deployment}
scope: type = "deployment" and label = "stackpack:kubernetes"
Usando rótulos de métrica em álias
Quando uma única consulta retorna várias séries temporais por componente, isso será exibido como várias linhas no gráfico. Mas na legenda, todas usarão o mesmo álias. Para poder ver a diferença entre as diferentes séries temporais, o álias pode incluir referências aos rótulos de métrica usando a sintaxe ${label}. Por exemplo, aqui está uma vinculação de métrica para a métrica "Reinicializações de contêiner" em um pod, note que um pod pode ter vários contêineres:
type: MetricBinding
chartType: line
enabled: true
id: -1
identifier: urn:stackpack:my-stackpack:metric-binding:my-pod-restart-count
name: Container restarts
priority: MEDIUM
queries:
- alias: Restarts - ${container}
expression: max by (cluster_name, namespace, pod_name, container) (kubernetes_state_container_restarts{cluster_name="${tags.cluster-name}", namespace="${tags.namespace}", pod_name="${name}"})
scope: (label = "stackpack:kubernetes" and type = "pod")
unit: short
Observe que o alias faz referência ao rótulo container da métrica. Certifique-se de que o rótulo esteja presente no resultado da consulta; quando o rótulo estiver ausente, o ${container} será renderizado como texto literal para ajudar na solução de problemas.
Layouts
Cada componente pode estar associado a várias tecnologias ou protocolos, como k8s, redes, ambientes de execução (por exemplo, JVM), protocolos (HTTP, AMQP), etc.
Consequentemente, uma multidão de métricas diferentes pode ser exibida para cada componente. Para facilitar a leitura, SUSE® Observability pode organizar esses gráficos em abas e seções.
Para exibir um gráfico (MetricBinding) dentro de uma aba ou seção específica, você precisa configurar a propriedade de layout.
Qualquer MetricsBinding sem um layout especificado será exibido em uma aba e seção nomeadas Other.
Aqui está um exemplo de configuração: