Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como enviar métricas do Prometheus do cluster do Kubernetes monitorado pelo Container insights para um espaço de trabalho do Log Analytics. Antes de executar essa configuração, você deve primeiro garantir que está raspando as métricas do Prometheus do seu cluster usando o serviço gerenciado do Azure Monitor para Prometheus, que é o método recomendado para monitorar seus clusters. Use a configuração descrita neste artigo somente se também quiser enviar esses mesmos dados para um espaço de trabalho do Log Analytics, onde você pode analisá-los usando consultas de log e alertas de pesquisa de log.
Essa configuração requer a configuração do complemento de monitoramento para o agente do Azure Monitor, que é o mesmo usado pelo Container insights para enviar dados para um espaço de trabalho do Log Analytics. Ele requer a exposição do ponto de extremidade de métricas Prometheus por meio de seus exportadores ou pods e, em seguida, a configuração do complemento de monitoramento para o agente do Azure Monitor usado pelo Container insights, conforme mostrado no diagrama a seguir.
Configurações de raspagem do Prometheus (para métricas armazenadas como logs)
A raspagem ativa de métricas do Prometheus é realizada de uma das duas perspectivas abaixo e as métricas são enviadas para o espaço de trabalho de análise de registos pré-configurado.
- Cluster-wide: definido na secção ConfigMap [Prometheus data_collection_settings.cluster].
- Node-wide: Definido na secção [Prometheus_data_collection_settings.node] do ConfigMap.
Ponto final | Âmbito | Exemplo |
---|---|---|
Anotação de Pod | Em todo o cluster | prometheus.io/scrape: "true" prometheus.io/path: "/mymetrics" prometheus.io/port: "8000" prometheus.io/scheme: "http" |
Serviço Kubernetes | Em todo o cluster | http://my-service-dns.my-namespace:9100/metrics http://metrics-server.kube-system.svc.cluster.local/metrics |
URL/ponto final | Individualmente por nó e/ou para todo o cluster | http://myurl:9101/metrics |
Quando uma URL é especificada, o Container insights apenas coleta os dados do endpoint. Quando o serviço Kubernetes é especificado, o nome do serviço é resolvido com o servidor DNS do cluster para obter o endereço IP. Em seguida, o serviço resolvido é raspado.
Âmbito | Chave | Tipo de dados | valor | Descrição |
---|---|---|---|---|
Em todo o cluster | Especifique qualquer um dos três métodos a seguir para extrair dados dos pontos de extremidade para obtenção de métricas. | |||
urls |
Cadeia | Matriz separada por vírgulas | Ponto de extremidade HTTP (endereço IP especificado ou rota de URL válida). Por exemplo: urls=[$NODE_IP/metrics] . ($NODE_IP é um parâmetro específico de insights do contêiner e pode ser usado em vez de um endereço IP de nó. Deve ser escrito todo em maiúsculas.) |
|
kubernetes_services |
Cadeia | Matriz separada por vírgulas | Um conjunto de serviços Kubernetes para extrair métricas do kube-state-metrics. Nomes de domínio totalmente qualificados devem ser usados aqui. Por exemplokubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics] |
|
monitor_kubernetes_pods |
Booleano | verdadeiro ou falso | Quando definido como true nas configurações de todo o cluster, o agente Container Insights recolhe dados de pods do Kubernetes em todo o cluster para as seguintes anotações do Prometheus:prometheus.io/scrape: prometheus.io/scheme: prometheus.io/path: prometheus.io/port: |
|
prometheus.io/scrape |
Booleano | verdadeiro ou falso | Permite a raspagem do pod, e monitor_kubernetes_pods deve ser definido como true . |
|
prometheus.io/scheme |
Cadeia | http | Por padrão, o processo de extração de dados é feito via HTTP. | |
prometheus.io/path |
Cadeia | Matriz separada por vírgulas | O caminho do recurso HTTP a partir do qual buscar métricas. Se o caminho das métricas não for /metrics , defina-o com esta anotação. |
|
prometheus.io/port |
Cadeia | 9102 | Especifique uma porta para extrair dados. Se a porta não estiver definida, o padrão será 9102. | |
monitor_kubernetes_pods_namespaces |
Cadeia | Matriz separada por vírgulas | Lista permitida de namespaces para recolher métricas dos pods do Kubernetes. Por exemplo, monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"] |
|
Em todo o nó | urls |
Cadeia | Matriz separada por vírgulas | Ponto de extremidade HTTP (endereço IP especificado ou rota de URL válida). Por exemplo: urls=[$NODE_IP/metrics] . ($NODE_IP é um parâmetro específico de insights do contêiner e pode ser usado em vez de um endereço IP de nó. Deve ser escrito todo em maiúsculas.) |
Ao nível de nó ou ao nível de cluster | interval |
Cadeia | anos 60 | O intervalo de coleta padrão é de um minuto (60 segundos). Você pode modificar a coleção para [ prometheus_data_collection_settings.node] e/ou [prometheus_data_collection_settings.cluster] para unidades de tempo como s, m e h. |
Ao nível de nó ou ao nível de cluster | fieldpass fielddrop |
Cadeia | Matriz separada por vírgulas | Você pode especificar determinadas métricas a serem coletadas ou não do ponto de extremidade definindo a listagem permitir (fieldpass ) e não permitir (fielddrop ). Você deve definir a lista de permissões primeiro. |
Configurar o ConfigMaps para especificar a configuração de raspagem do Prometheus (para métricas armazenadas como logs)
Execute as etapas a seguir para configurar o arquivo de configuração do ConfigMap para o cluster. ConfigMaps é uma lista global e pode haver apenas um ConfigMap aplicado ao agente. Você não pode ter outro ConfigMap substituindo as coleções.
Baixe o arquivo YAML do modelo ConfigMap e salve-o como container-azm-ms-agentconfig.yaml. Se você já implantou um ConfigMap em seu cluster e deseja atualizá-lo com uma configuração mais recente, você pode editar o arquivo ConfigMap que você usou anteriormente.
Edite o ficheiro YAML do ConfigMap com as suas personalizações para extrair as métricas do Prometheus.
Para coletar serviços do Kubernetes em todo o cluster, configure o arquivo ConfigMap usando o seguinte exemplo:
prometheus-data-collection-settings: |- # Custom Prometheus metrics data collection settings [prometheus_data_collection_settings.cluster] interval = "1m" ## Valid time units are s, m, h. fieldpass = ["metric_to_pass1", "metric_to_pass12"] ## specify metrics to pass through fielddrop = ["metric_to_drop"] ## specify metrics to drop from collecting kubernetes_services = ["http://my-service-dns.my-namespace:9102/metrics"]
Execute o seguinte comando kubectl:
kubectl apply -f <configmap_yaml_file.yaml>
.Exemplo:
kubectl apply -f container-azm-ms-agentconfig.yaml
.
A alteração de configuração pode levar alguns minutos para ser concluída antes de entrar em vigor. Todos os pods ama-logs no cluster serão reiniciados. Quando as reinicializações estiverem concluídas, aparecerá uma mensagem semelhante à seguinte e incluirá o resultado configmap "container-azm-ms-agentconfig" created
.
Verificar a configuração
Para verificar se a configuração foi aplicada com êxito a um cluster, use o seguinte comando para revisar os logs de um pod de agente: kubectl logs ama-logs-fdf58 -n=kube-system
.
Se houver erros de configuração dos pods do Azure Monitor Agent, a saída mostrará erros semelhantes ao exemplo a seguir:
***************Start Config Processing********************
config::unsupported/missing config schema version - 'v21' , using defaults
Erros relacionados à aplicação de alterações de configuração também estão disponíveis para revisão. As seguintes opções estão disponíveis para resolver problemas adicionais com alterações de configuração e obter métricas do Prometheus:
A partir dos registos de um pod de agente com o mesmo comando
kubectl logs
.A partir de dados em tempo real. Os logs de dados em tempo real mostram erros semelhantes ao exemplo a seguir:
2019-07-08T18:55:00Z E! [inputs.prometheus]: Error in plugin: error making HTTP request to http://invalidurl:1010/metrics: Get http://invalidurl:1010/metrics: dial tcp: lookup invalidurl on 10.0.0.10:53: no such host
Do espaço de trabalho do Log Analytics, na tabela KubeMonAgentEvents. Os dados são enviados a cada hora com nível de aviso para erros de extração de dados e nível de erro para erros de configuração. Se não houver erros, a entrada na tabela apresenta dados com gravidade Informativo, que não relatam erros. A propriedade Tags contém mais informações sobre o pod e o ID do contentor no qual o erro ocorreu e também a primeira ocorrência, a última ocorrência e o número de ocorrências na última hora.
Para o Azure Red Hat OpenShift v3.x e v4.x, verifique os logs do Azure Monitor Agent pesquisando a tabela ContainerLog para verificar se a coleta de logs do openshift-azure-logging está habilitada.
Os erros impedem que o Azure Monitor Agent analise o arquivo, fazendo com que ele reinicie e use a configuração padrão. Depois de corrigir os erros no ConfigMap em clusters diferentes do Azure Red Hat OpenShift v3.x, salve o arquivo YAML e aplique o ConfigMaps atualizado executando o comando kubectl apply -f <configmap_yaml_file.yaml
.
Para o Azure Red Hat OpenShift v3.x, edite e salve o ConfigMaps atualizado executando o comando oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging
.
Consultar dados de métricas do Prometheus
Para visualizar as métricas do Prometheus coletadas pelo Azure Monitor e quaisquer erros de configuração ou de coleta relatados pelo agente, reveja os dados das métricas do Prometheus.
Ver as métricas do Prometheus no Grafana
O Container insights oferece suporte à visualização de métricas armazenadas em seu espaço de trabalho do Log Analytics nos painéis do Grafana. Nós fornecemos um modelo que você pode baixar do repositório de dashboards do Grafana. Use o modelo para começar e faça referência a ele para ajudá-lo a aprender a consultar outros dados de seus clusters monitorados para visualizar em painéis personalizados do Grafana.