Monitorando o Kubernetes

Instana pode ajudá-lo a acessar informações detalhadas sobre Kubernetes, analisar chamadas Kubernetes, vincular serviços Kubernetes e serviços lógicos, usar regras de integridade integradas ou personalizadas para alertas de entidades Kubernetes e rastrear cargas de trabalho implantadas nas malhas de serviço.

Versões suportadas

Instana Atualmente, oferece suporte às versões estáveis mais recentes do Kubernetes. Seguindo a política de compatibilidade de versões do Kubernetes, o Instana oferece suporte à versão mais recente do Kubernetes e às quatro versões anteriores. No entanto, as duas versões mais antigas são consideradas como uma deprecação gradual.

Por exemplo, se a versão mais recente atual for 1.31, então Instana é compatível com as versões 1.31, 1.30, 1.29, 1.28 e 1.27, sendo que as versões 1.28 e 1.27 são consideradas obsoleto (soft deprecation).

Kubernetes gerenciados suportados

  • IBM Cloud Kubernetes Service Gerenciamento de monitoramento e desempenho
  • Amazon Elastic Container Service for Kubernetes (EKS)
  • Azure Kubernetes Service (AKS)
  • Google Kubernetes Engine ( GKE ) - Apenas na versão padrão GKE. GKE O Enterprise (anteriormente Anthos), o Anthos on-premises e o Anthos Bare Metal não são compatíveis.
  • IBM Cloud Kubernetes Service
  • A VMware Tanzu Kubernetes Grid (TKG) e a VMware Tanzu Kubernetes Grid Integration (TKGI), anteriormente conhecidas como Pivotal Container Service (PKS)
Nota:
Só são compatíveis os trabalhadores do tipo “ Linux ”. Não há suporte para trabalhadores que rodam em Windows.

Malhas de serviço suportadas

Instana é compatível com as três últimas versões estáveis do Istio.

Kubernetes sensores

Instana oferece os seguintes sensores Kubernetes :

  • Sensor legado Kubernetes
  • Próxima geração K8sensor

O sensor Legacy Kubernetes é um produto em fim de vida útil (EOL). Todas as novas funcionalidades e correções são disponibilizadas em K8sensor; portanto, atualize seus ambientes para utilizá-las.

O K8sensor tem as seguintes vantagens:

  • Alta disponibilidade
  • Melhor controle sobre os limites de recursos em uma implantação
  • Novos recursos, funcionalidades e correções que não foram portados para o sensor antigo

Para habilitar o Autoescalonamento Horizontal de Pods (HPA) para o ` K8sensor `, consulte Habilitando o autoescalonamento (HPA) para o ` k8sensor ` (solução alternativa).

O sensor Legacy Kubernetes está desativado por padrão. Para verificar, consulte o arquivo configuration.yaml do agente:

    com.instana.plugin.kubernetes:
      enabled: false
 

Para garantir que essa configuração esteja em vigor, conclua as etapas em Verificação do status e da versão do sensor legado. Se o sensor estiver desativado corretamente, você não verá nenhuma correspondência para o sensor “ Kubernetes ” (Legacy) na interface do usuário do “ Instana ”.

O Next Generation K8sensor é instalado automaticamente por padrão depois que o agente é instalado. Para determinar se o K8sensor está em execução em um cluster, execute o comando na seção Verificando o status e a versão do K8sensor.

Sensor legado Kubernetes

O sensor Legacy Kubernetes chegou ao fim da vida útil (EOL). A versão anterior ainda está disponível para instalação.

Instalação

Caso ainda seja necessário reinstalar o sensor Legacy Kubernetes em um sistema que não tenha sido migrado para o Next Generation K8sensor, você pode usar a versão final do agente 1.X obsoleto Helm chart 1.2.74 com a configuração --set k8s_sensor.deployment.enabled=false durante a instalação.

Nota:
O sensor antigo “ Kubernetes ” chegou ao fim da vida útil (EOL).

Verificar o status e a versão do sensor antigo

Para verificar o status e a versão em execução do sensor Legacy Kubernetes, conclua as etapas a seguir:

  1. No menu de navegação, selecione Infraestrutura.
  2. Na guia Mapas, clique em seu nó Kubernetes.
  3. No painel de detalhes do nó, expanda “ Instana Agent (1) ” e clique no seu agente.
  4. No painel do agente, clique em Open Dashboard.
  5. Na página do agente, clique em Informações sobre sensores na área Informações.
  6. Na janela Sensors Info, pesquise Instana - Kubernetes - Sensor no campo de pesquisa.

Se o sensor estiver ativado corretamente, você verá uma correspondência na tabela. A coluna State exibe o valor Active, e a coluna Version mostra o número da versão, por exemplo, 1.2.143.

Resolução de problemas

Se a pesquisa por Instana - Kubernetes - Sensor e a filtragem dos registros do agente para não com.instana.sensor-kubernetes produzirem resultados, verifique o mapa de configuração do agente do Instana executando o seguinte comando:

kubectl -n instana-agent get cm instana-agent -o yaml
 

Certifique-se de que a configuração a seguir não esteja presente:

    com.instana.plugin.kubernetes:
      enabled: false
 

Se a coluna State do Instana - Kubernetes - Sensor exibir Waiting por vários minutos, isso significa que o sensor não foi ativado.

Pesquise os registros do agente, filtre por com.instana.sensor-kubernetes e procure por Activating Kubernetes Sensor. Especificamente, verifique se há a seguinte mensagem:

ERROR : bundle com.instana.sensor-kubernetes:1.2.143 (246)[com.instana.agent.kubernetes.sensor.Kubernetes(479)] : The activate method has thrown an exception
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://10.43.0.1/apis/apps/v1/deployments?labelSelector=app%3Dk8sensor. Message: Forbidden!Configured serv
ice account doesn't have access. Service account may have been revoked. deployments.apps is forbidden: User "system:serviceaccount:instana-agent:instana-agent" cannot list resource "deployme
nts" in API group "apps" at the cluster scope.
 

Esta mensagem de erro indica que uma conta de serviço não pode ser utilizada para acessar o servidor Kubernetes API.

Próxima geração K8sensor

Instalação

Ao instalar o agente, o Next Generation K8sensor é instalado automaticamente por padrão por meio da icr.io/instana/k8sensor:latest tag. Se você especificar o k8s_sensor.deployment.enabled valor, certifique-se de que ele esteja definido como true (o valor padrão).

Otimize a ingestão de dados por meio da configuração do intervalo de sondagem

Você pode configurar a frequência de sondagem do K8sensor definindo-a k8s_sensor.pollrate em um dos seguintes locais:

  • Helm gráfico (por exemplo, --set k8s_sensor.pollrate=15s)
  • InstanaAgent recurso personalizado (por exemplo, k8s_sensor.pollrate: "15s")
O valor padrão é 10 segundos. Os valores válidos devem ser especificados em segundos, variando de 1s a 30s. Os valores fora desse intervalo são automaticamente ajustados ao limite mais próximo.
Nota:
Em ambientes do Kubernetes, o Instana otimiza a ingestão de dados por padrão para limitar o volume de dados e reduzir a sobrecarga operacional. O sensor “ Kubernetes ” coleta metadados de entidades, relações, status de integridade e eventos, ao mesmo tempo em que limita a coleta de métricas. Você deve ativar mais métricas apenas quando necessário e configurá-las com cuidado para evitar duplicação e consumo desnecessário de recursos. Para obter mais informações sobre como ajustar a coleta de dados e gerenciar o volume de ingestão em ambientes do Kubernetes, consulte “Otimizar a ingestão de dados” em Instana.
Siga as orientações a seguir para selecionar a configuração ideal de acordo com suas necessidades de capacidade de resposta, clareza do sinal e custo:
Tabela 1. Configurações recomendadas
Configuração Ideal para Considerações
1s Análise aprofundada de problemas, detecção rápida de transientes Gera mais ruído e aumenta os custos de infraestrutura; pode revelar anomalias transitórias
10s A maioria dos cenários dos clientes Oferece um bom equilíbrio entre capacidade de resposta e qualidade do sinal; capta mudanças importantes sem dar ênfase excessiva a picos breves
30s ambientes de grande escala, com restrições orçamentárias e estáveis Detecção mais lenta de problemas; problemas transitórios podem não ser detectados

Verificando o status e a versão do K8sensor

Para determinar se o K8sensor está sendo executado em um cluster, execute o seguinte comando para listar as implantações com o rótulo app: k8sensor.

kubectl get deployments --all-namespaces -l app=k8sensor
 

Se K8sensor estiver na lista, então K8sensor estará ativado. Quando K8sensor é ativado, o sensor legado Kubernetes é automaticamente desativado. No arquivo configuration.yaml, você pode ver que o valor enabled foi alterado para false da seguinte forma:

    com.instana.plugin.kubernetes:
      enabled: false
 

A versão K8sensor é melhor identificada pelo hash sha256 de sua imagem. Para verificar o hash da imagem do contêiner K8sensor em execução, execute o seguinte comando:

kubectl get po -n instana-agent -l app=k8sensor  -o jsonpath='{ .items[0].status.containerStatuses[0].imageID }'
 

Habilitando o dimensionamento automático (HPA) para K8sensor (solução alternativa)

Instana Atualmente, não oferece um recurso integrado de autoescala (modelo HPA) para o serviço de armazenamento em nuvem de última geração ( K8sensor ). No entanto, você pode ativar o autoescalonamento aplicando um HPA ( Kubernetes ) padrão HorizontalPodAutoscaler à implantação do k8sensor. Esta solução alternativa requer um cluster com o metrics-server instalado.

O operador do agente do Instana gerencia a contagem inicial de réplicas da implantação do k8sensor a partir do recurso InstanaAgent personalizado (CR). Para evitar conflitos com o HPA, defina a contagem de réplicas do CR uma vez e mantenha-a igual à do HPA minReplicas.

Pré-requisitos

Certifique-se de que o metrics-server esteja instalado e funcionando no seu cluster.

Procedimento

Para ativar o autoescalonamento, siga estas etapas:

  1. Defina as solicitações de recursos e o número de réplicas estáveis no InstanaAgent CR: defina o número de réplicas da implantação no CR de acordo com o mínimo necessário e mantenha esse valor inalterado. Para o HPA baseado em utilização, defina as solicitações de CPU e memória para o contêiner ` k8sensor `, conforme mostrado no exemplo a seguir:
    kubectl patch agents.instana.io instana-agent -n instana-agent \
      --type='merge' -p '{
        "spec": {
          "k8s_sensor": {
            "deployment": {
              "replicas": 2,
              "pod": {
                "requests": { "memory": "512Mi", "cpu": "200m" }
              }
            }
          }
        }
      }'
     

    Ajuste o número de réplicas, a memória e a CPU de acordo com o seu ambiente. Certifique-se de que o namespace e o nome do CR (instana-agent) correspondam à sua instalação.

  2. Aplique o manifesto HPA:

    1. Crie um arquivo k8sensor-hpa.yaml conforme mostrado no exemplo a seguir. Atualize o namespace, caso seja diferente.

      apiVersion: autoscaling/v2
      kind: HorizontalPodAutoscaler
      metadata:
        name: instana-agent-k8sensor
        namespace: instana-agent
      spec:
        scaleTargetRef:
          apiVersion: apps/v1
          kind: Deployment
          name: instana-agent-k8sensor
        minReplicas: 2
        maxReplicas: 8
        behavior:
          scaleUp:
            stabilizationWindowSeconds: 60
            policies:
              - type: Percent
                value: 100
                periodSeconds: 60
          scaleDown:
            stabilizationWindowSeconds: 300
            policies:
              - type: Percent
                value: 50
                periodSeconds: 60
        metrics:
          - type: Resource
            resource:
              name: memory
              target:
                type: Utilization
                averageUtilization: 80
          - type: Resource
            resource:
              name: cpu
              target:
                type: Utilization
                averageUtilization: 75
       
    2. Aplique o manifesto executando o seguinte comando:

      kubectl apply -f k8sensor-hpa.yaml
       
      Nota:
      Observações: Definir solicitações para metas de utilização. Se você não conseguir definir solicitações, use “ AverageValue ” em vez de “Utilization” com uma meta em bytes (por exemplo, averageValue: 800Mi ). A memória é normalmente o principal fator determinante; a CPU pode ser adicionada como uma medida de segurança.
  3. Verifique se o HPA está ativado executando os seguintes comandos:

    kubectl get hpa instana-agent-k8sensor -n instana-agent
     
    kubectl get deploy instana-agent-k8sensor -n instana-agent -o jsonpath='{.spec.replicas}'; echo
     
    kubectl top pods -n instana-agent | grep k8sensor
     

    Se você editar o InstanaAgent CR posteriormente, o operador do agente Instana poderá reiniciar o sistema por um .spec.replicas breve período. No entanto, o HPA sincroniza e restaura a contagem de réplicas necessária. As configurações de comportamento no HPA evitam o flapping.

Resolução de problemas

Se a listagem das implantações com o rótulo app: k8sensor não retornar nenhum resultado, o cluster não está executando K8sensor. Esse problema significa que o K8sensor foi desativado quando o agente foi implantado. Para resolver esse problema, reimplante o agente com o K8sensor ativado.

Acessando informações do Kubernetes

Após o agente ser implementado em seu cluster, o sensor Kubernetes relata dados detalhados sobre o cluster e os recursos que são implementados nele.

Instana detecta e monitora automaticamente todos os recursos em execução no cluster do Kubernetes :

  • Clusters
  • CronJobs
  • Nós
  • Namespaces
  • Implementações
  • DaemonSets
  • StatefulSets
  • Serviços
  • Pods

As informações do Kubernetes são facilmente acessíveis e profundamente integradas em todos os aspectos de seu aplicativo.

Kubernetes página

Clique em “Plataformas” > “ Kubernetes ” no menu de navegação da interface do usuário do Instana para visualizar as informações dos seus clusters e namespaces do Kubernetes.

Painéis do Kubernetes

Na página Kubernetes , clique em um cluster ou um namespace. É possível ver painéis do Kubernetes que apresentam todas as informações para uma determinada entidade Kubernetes . O contexto está sempre acessível por meio do caminho de contexto. Na captura de tela a seguir, é possível ver um namespace chamado "robot-shop" em um cluster chamado "k8s-demo-cluster".

Visão Geral do Painel

Os painéis do Kubernetes são estruturados conforme a seguir:

  • Resumo mostra as informações mais relevantes para uma determinada entidade Esse painel é iniciado com uma linha de status que mostra o status e as informações relacionadas, como idade, por exemplo. Na próxima seção, é possível ver as informações de CPU, memória e pod, que fornecem os recursos consumidos, incluindo os pods. Seções como Principais Deployments e Top Pods no seguinte screenshot mostram hotspots potenciais, que você pode querer ter um olhar para. A seção Logs mostra o gráfico de distribuição de logs relevantes para aquela entidade, que complementa as métricas da entidade. O gráfico é interativo e permite seleção e destaque sobre todos os valores medidos. Você pode se concentrar no período de tempo selecionado ou pular para a seção Analyze para continuar uma jornada de resolução de problemas.

  • Os Detalhes mostram informações detalhadas, como "rótulos", "anotação" e "especificação".

  • Os Eventos mostram todos os eventos relevantes do Kubernetes e os vincula aos respectivos painéis.

  • Entidades Relacionadas como "Implementações", "K8s Serviços" e "Pods" são mostrados como guias de painéis do Kubernetes . O que é mostrado depende da entidade selecionada.

Uso de CPU e Memória

Para pods, implementações, serviços, namespaces e nós do Kubernetes , é possível visualizar o uso atual da CPU e da Memória conforme ele é comparado com os limites e as solicitações da CPU e da Memória configurados para esses recursos.

Se disponível, as informações de uso são calculadas a partir de dados reunidos do tempo de execução do contêiner que está executando os contêineres que compõem os recursos

Página Aplicativos

Clique em “Aplicativos” no menu de navegação da interface do usuário do Instana e, em seguida, clique na guia “Aplicativos” ou “Serviços ”. Se o serviço ou aplicativo estiver em execução em um cluster do Kubernetes, você poderá ver as respectivas informações de contexto na guia Infraestrutura :

Guia Infra AP

Para contêineres, o pod e o namespace são exibidos e vinculados diretamente; para hosts, o cluster e o nó também são mostrados e vinculados.

Página de infraestrutura

Clique em “Infraestrutura” no menu de navegação da interface do usuário do Instana. No mapa de infraestrutura, você pode ver as informações d Kubernetes e na barra lateral, tanto para o host quanto para o contêiner que você selecionar.

Guia Infra AP

Você pode usar o Dynamic Focus para filtrar os dados. Por exemplo, procure uma implementação específica em um cluster.. Além disso, as palavras-chave entity.kubernetes.cluster.distribution e entity.kubernetes.cluster.managedBy permitem a procura de um cluster Kubernetes por camada de distribuição e gerenciamento. Valores suportados para entity.kubernetes.cluster.distribution são gke, eks, openshifte kubernetes. Os valores suportados para entity.kubernetes.cluster.managedBy são rancher e none.

Kubernetes assistente de IA

Você pode usar o assistente de IA do Kubernetes para solucionar problemas no cluster do Kubernetes. Faça perguntas em linguagem natural sobre o estado do cluster, problemas com pods, recursos do namespace e o status da implantação. Inclui uma biblioteca de prompts pré-definidos e pode gerar scripts de automação ou ações manuais que podem ser salvos no Catálogo de Ações para a correção de eventos.

Antes de usar o assistente de IA d Kubernetes, certifique-se de que os seguintes pré-requisitos estejam atendidos:

  • SaaS ambientes: Para ambientes do tipo “ SaaS ”, o site Instana fornece conexões padrão para a IA. Não é necessária nenhuma configuração adicional para usar esse recurso. Se necessário, você pode configurar gateways separados para o seu próprio ambiente de execução. Para obter mais informações, consulte “Configurando conexões de IA ”.

    Esse recurso utiliza o sinalizador de recurso feature.kubernetes.ai.agent.enabled, que está ativado (definido como true) por padrão.

  • Ambientes auto-hospedados: Para o Standard Edition e a Custom Edition, é necessário configurar as conexões de IA para utilizar esse recurso. Para obter mais informações, consulte “Configurando conexões de IA ”.

    Para configurar o sinalizador de recurso do assistente de IA “ Kubernetes ” no site Standard Edition, consulte o artigo “ Kubernetes AI assistant ”.

    Para configurar o sinalizador de recurso do assistente de IA d Kubernetes e na Edição Personalizada, consulte o assistente de IA d Kubernetes.

    A Edição Clássica não é compatível com o assistente de IA “ Kubernetes ”.

    .

Para usar o assistente de IA, siga estas etapas:

  1. Na visualização de clusters do Kubernetes, clique em um cluster.
  2. Clique no ícone da IA para abrir a interface de chat. A janela de bate-papo é aberta. Você pode digitar suas consultas em linguagem natural ou usar a biblioteca de prompts disponível.

Analisando chamadas do ` Kubernetes `

O Unbounded Analytics oferece ferramentas poderosas para analisar detalhadamente cada chamada no seu cluster do Kubernetes. Se você clicar em Analisar chamadas em um painel do Kubernetes , o filtro e o agrupamento apropriados já estão configurados. Nesse caso, é possível ver todas as chamadas no namespace robot-shop que são agrupadas por pods:

Visão Geral do Painel

Analisando os registros do ` Kubernetes `

Nota:
Para importar os registros d Kubernetes, sua conta deve incluir o complemento de registro na sua licença. Para verificar sua licença, consulte os requisitos de licença e direitos antes de prosseguir.

O Unbounded Analytics oferece ferramentas poderosas para analisar detalhadamente cada registro de log em seu cluster do Kubernetes. Se você clicar em Analisar logs em um painel do Kubernetes , a filtragem apropriada já estará configurada. Neste caso, é possível ver todos os logs no espaço de nomes robot-shop da seguinte forma:

Visão Geral do Painel

Para fornecer informações relevantes sem alterar o contexto, o Instana enriquece as mensagens de log com metadados de infraestrutura e Kubernetes, que são exibidos na tabela de tags após a expansão da mensagem de log. Veja a tabela de tags a seguir:

Visão geral da tabela de

Vinculando serviços do Kubernetes e serviços lógicos

Único serviço do Kubernetes para diversos serviços lógicos

Diversos serviços lógicos podem ser relacionados a um único serviço Kubernetes quando as regras de mapeamento de serviço correspondem e chamadas são geradas nesse serviço Kubernetes . Por exemplo, um serviço Kubernetes com o seletor de "service=my-service" rótulos pode conter pods que tenham os rótulos "env=dev" adicionais e, "env=staging" combinados com uma configuração personalizada de mapeamento de serviços em Instana com as seguintes tags kubernetes.container.name: kubernetes.pod.label,, e key: env. Isso resulta em vários serviços lógicos vinculados a esse único serviço Kubernetes e exibidos no painel Kubernetes Service.

Único serviço lógico para diversos serviços do Kubernetes

Diversos serviços do Kubernetes podem ser relacionados a um único serviço lógico quando esses serviços do Kubernetes são destruídos e recriados ao longo de um tempo Por exemplo, se o serviço Kubernetes shop-service-a com chamadas geradas for substituído ao longo do tempo por shop-service-b com chamadas geradas, ambos os serviços serão exibidos no painel de serviço lógico quando o período de tempo selecionado sobrepor as chamadas geradas.

Visualizando as métricas

Instana reúne informações sobre o cluster Kubernetes, CronJob, DaemonSet,, implantação, tarefa, Kubernetes serviço, namespace, nó, StatefulSet, Horizontal Pod Autoscaler, volume persistente e reivindicação de volume persistente.

Agrupamento

Métrica Descrição
Alocação de pods Proporção de pods alocados para capacidade de pods
Alocação de solicitações da CPU Proporção de solicitações de CPU para capacidade de CPU
Alocação de limites da CPU Proporção de limites de CPU para capacidade de CPU
Alocação de solicitações de memória Proporção de solicitações de memória para capacidade de memória
Alocação de limites de memória Proporção de limites de memória para capacidade de memória
Solicitações de CPU Solicitações de CPU agregadas de todos os contêineres em execução
Limites de CPU Limites de CPU agregados de todos os contêineres em execução
Capacidade da CPU Capacidade de CPU agregada de todos os nós
Solicitações de memória Solicitações de memória agregada de todos os contêineres em execução
Limites de memória Limites de memória agregada de todos os contêineres em execução
Capacidade da Memória Capacidade de memória agregada de todos os nós
Pods em execução Contagem de todos os pods em execução neste cluster
Pods pendentes Contagem de todos os pods pendentes neste cluster
Pods alocados Contagem de todos os pods alocados neste cluster
Capacidade de pods Capacidade agregada de pods de todos os nós
Nós fora do disco Contagem de nós fora do disco neste cluster
Nós de pressão de memória Contagem de nós de pressão de memória neste cluster
Nós de pressão de disco Contagem de nós de pressão de disco neste cluster
Nós com Kubelet Ready=False Contagem de nós kubelet com status Ready=False neste cluster
Nós de Kubelet não prontos Contagem de nós kubelet com status Ready=Unknown ou Ready=False neste cluster
Réplicas disponíveis Réplicas disponíveis de todas as implementações
Réplicas desejadas Réplicas desejadas de todas as implementações
Contagem de nós Número de nós neste cluster

CronJob

Métrica Descrição
Duração da última tarefa Duração da última execução da tarefa
Tarefas ativas Número de tarefas ativas
Tempo até a última tarefa planejada Há quanto tempo uma tarefa para este cronjob foi planejada

DaemonSet

Métrica Descrição
Réplicas disponíveis Contagem de réplicas disponíveis
Réplicas desejadas Contagem de réplicas desejadas
Réplicas indisponíveis Contagem de réplicas indisponíveis
Réplicas planejadas incorretamente Contagem de réplicas planejadas incorretamente
Proporção de réplica disponível para réplica desejada Proporção de réplicas disponíveis para réplicas desejadas

Implementação

Métrica Descrição
Réplicas disponíveis Contagem de réplicas disponíveis
Réplicas desejadas Contagem de réplicas desejadas
Proporção de réplica disponível para réplica desejada Proporção de réplicas disponíveis para réplicas desejadas
Pods pendentes Contagem de pods pendentes
Pods não planejados Contagem de pods não planejados
Pods não prontos Contagem de pods não prontos
Duração da fase pendente Duração da fase pendente
Contagem de pods Número de pods para esta implementação
Solicitações de memória Solicitações de memória agregada de todos os contêineres em execução para esta implementação
Limites de memória Limites de memória agregada de todos os contêineres em execução para esta implementação
Solicitações de CPU Solicitações de CPU agregadas de todos os contêineres em execução para esta implementação
Limites de CPU Limites de CPU agregados de todos os contêineres em execução para esta implementação

Tarefa

Métrica Descrição
Pods ativos Número de pods ativos nesta tarefa
Pods com falha Número de pods com falha nesta tarefa
Pods sucedidos Número de pods sucedidos nesta tarefa
Duração da Tarefa Duração da execução da tarefa

Serviço do Kubernetes

Métrica Descrição
Solicitações de CPU Solicitações de CPU agregadas para este serviço
Limites de CPU Limites de CPU agregadas para este serviço
Solicitações de memória Solicitações de memória agregada para este serviço
Limites de memória Limites de memória agregada para este serviço

Namespace

Métrica Descrição
Capacidade de solicitações de memória Memória máxima suportada para solicitações de memória neste namespace
Solicitações de memória usada Quantidade de memória alocada para solicitações de memória usada
Capacidade de limites de memória Memória máxima suportada para limites de memória neste namespace
Limites de memória usados Quantidade de memória alocada para limites de memória usados
Capacidade de solicitações de CPU CPU máxima suportada para solicitações de CPU neste namespace
Solicitações de CPU usadas Quantidade de CPU alocada para solicitações de CPU usadas
Capacidade de limites de CPU CPU máxima suportada para limites de CPU neste namespace
Limites de CPU utilizados Quantidade de CPU alocada para limites de CPU utilizados
Pods usados Número de pods usados para este namespace
Capacidade de pods Número de pods que o namespace pode obter
Used Pods Allocation Proporção de pods usados para capacidade de pods
Alocação de solicitações da CPU Proporção de solicitações de CPU para capacidade de CPU
Alocação de limites da CPU Proporção de limites de CPU para capacidade de CPU
Alocação de solicitações de memória Proporção de solicitações de memória para capacidade de solicitações de memória
Alocação de limites de memória Proporção de limites de memória para capacidade de limites de memória
Alocação de pods Proporção de pods alocados para capacidade de pod

Métrica Descrição
Pods alocados Contagem de pods alocados neste nó
Capacidade de pods Número de podas que o nó pode ter
Solicitações de memória Solicitações de memória agregada de todos os contêineres em execução neste nó
Limites de memória Limites de memória agregada de todos os contêineres em execução neste nó
Capacidade da Memória Memória máxima suportada neste nó
Solicitações de CPU Solicitações de CPU agregadas de todos os contêineres em execução neste nó
Limites de CPU Limites de CPU agregados de todos os contêineres em execução neste nó
Capacidade da CPU CPU máxima suportada neste nó
Alocação de pods Proporção de pods alocados para capacidade de pod
Alocação de solicitações da CPU Proporção de solicitações de CPU para capacidade de CPU
Alocação de limites da CPU Proporção de limites de CPU para capacidade de CPU
Alocação de solicitações de memória Proporção de solicitações de memória para capacidade de memória
Alocação de limites de memória Proporção de limites de memória para capacidade de memória

Pod

Métrica Descrição
Contagem de contêineres Número de contêineres para este pod
Solicitações de CPU Solicitações de CPU agregadas em todos os contêineres deste pod
Limites de CPU Limites de CPU agregados em todos os contêineres deste pod
Solicitações de memória Solicitações de memória agregada em todos os contêineres deste pod
Limites de memória Limites de memória agregada em todos os contêineres deste pod
Restarts Count Reinicializações agregadas em todos os contêineres deste pod

StatefulSet

Métrica Descrição
Réplicas disponíveis Contagem de réplicas disponíveis
Réplicas desejadas Contagem de réplicas desejadas
Proporção de réplica disponível para réplica desejada Porcentagem de disponível para réplicas desejadas

Autoscalers de Pods Horizontais (HPA)

Para habilitar o HPA especificamente para o serviço de armazenamento em nuvem de última geração ( K8sensor ), consulte Habilitando o autoescalonamento (HPA) para o k8sensor (solução alternativa).

Estão disponíveis as seguintes métricas sobre o HPA:

Métrica Descrição
Réplicas atuais Contagem de réplicas disponíveis
Réplicas desejadas Contagem de réplicas desejadas
Réplicas máximas O número máximo de réplicas para o qual o autoscaler pode aumentar a escala
Réplicas mínimas O número mínimo de réplicas para o qual o autoscaler pode reduzir a escala
Réplicas atuais / Número máximo de réplicas Proporção entre o número atual de réplicas e o número máximo de réplicas
Réplicas atuais / Réplicas mínimas Proporção entre o número atual de réplicas e o número mínimo de réplicas
Geração observada A geração mais recente de réplicas detectada pelo autoscaler

Você pode monitorar os HPAs (Horizontal Pod Autoscalers) usando o recurso Infraestrutura do Analytics. Para obter mais informações, consulte “Analisar a infraestrutura” ). Na página “Analisar infraestrutura”, você pode pesquisar os Horizontal Pod Autoscalers e visualizar o número total. Pesquisa HPA

Para visualizar a lista de HPAs, selecione “ Kubernetes : Horizontal Pod Autoscalers” na lista de tipos de infraestrutura. Lista HPA

Você pode criar alertas inteligentes para métricas relacionadas ao HPA. Para obter mais informações, consulte “Alertas inteligentes ”. É possível criar Alertas Inteligentes com as seguintes métricas do HPA: Réplicas atuais, Réplicas desejadas, Réplicas máximas, Contagem de mensagens e Réplicas mínimas. Alertas inteligentes HPA

Você pode configurar alertas com base na utilização das réplicas nas seguintes métricas:

  • Current Replicas / Maximum Replicas
  • Current Replicas / Minimum Replicas

Por exemplo, se a Current Replicas métrica atingir 80% do valor Maximum Replicas da métrica, o 0.8 valor da Current Replicas / Maximum Replicas métrica pode acionar um alerta. Da mesma forma, se a Current Replicas métrica atingir 100% do valor Minimum Replicas da métrica, o 1.0 valor da Current Replicas / Minimum Replicas métrica poderá acionar um alerta.

Volume persistente (PV)

A tabela a seguir lista as métricas disponíveis relacionadas ao PV:

Métrica Descrição
Nome da classe de armazenamento Nome do objeto StorageClass utilizado para criar este PV
Capacidade total ( GiB ) Capacidade total do parque fotovoltaico em GiB
Capacidade utilizada ( GiB ) Capacidade utilizada do sistema fotovoltaico em GiB
Utilização Relação entre a capacidade utilizada do sistema fotovoltaico e sua capacidade total, expressa em porcentagem
Fase Fase atual do PV, que pode ser Available, Bound, Released, ou Failed
Modo de Acesso Modo de acesso do PV
Nota:
Para coletar essas métricas, é necessário usar um gráfico do Helm v2 ou o agente do Instana v2. Para obter mais informações, consulte as instruções para instalar o agente do Instana no Kubernetes.

Monitoramento fotovoltaico

Para monitorar um PV, siga estas etapas na interface do usuário do Instana :

  1. No menu de navegação, selecione Infraestrutura.

  2. No painel de controle de Infraestrutura, clique em Analisar Infraestrutura.

  3. No painel “Analyze Infrastructure”, procure por um volume persistente do tipo “ Kubernetes ” e visualize a contagem total, conforme mostrado na imagem a seguir:

    Análise da infraestrutura fotovoltaica

  4. Para visualizar a lista de PVs, selecione “ Kubernetes : Persistent Volume” na lista de tipos de infraestrutura, conforme mostrado na imagem a seguir:

    Lista de PV

  5. Para visualizar as métricas de PV, selecione um PV na lista. Você pode visualizar uma lista de métricas de PV com o tipo e o valor atual.

Configurando um Alerta Inteligente para energia fotovoltaica

Para configurar um Alerta Inteligente para métricas de energia fotovoltaica, siga estas etapas na interface do usuário do Instana :

  1. No menu de navegação, selecione Infraestrutura > Alertas inteligentes > Criar alerta inteligente.

  2. Na janela “Criar Alerta Inteligente”, selecione qualquer uma das métricas de PV disponíveis, como “% de Capacidade Utilizada”, e filtre de acordo com a entidade desejada.

    Configuração do PV Smart Alert

Para obter mais informações sobre como configurar alertas inteligentes, consulte Alertas inteligentes.

Suporte de classe de armazenamento

Instana oferece suporte às classes de armazenamento mais comuns fornecidas pela maioria dos provedores de nuvem, tanto para provisionamento estático quanto dinâmico. A matriz de compatibilidade a seguir indica as diferentes classes de armazenamento com compatibilidade comprovada.

Provedor em nuvem Nome Fornecedor Suporte
GCP PersistentDisk pd.csi.storage.gke.io
GCP Hyperdisk pd.csi.storage.gke.io
GCP Depósito gcsfuse.csi.storage.gke.io
GCP fileStore filestore.csi.storage.gke.io
AWS Elastic Block Storage ( EBS ) ebs.csi.aws.com
AWS Elastic File Storage ( EFS ) efs.csi.aws.com
AWS Amazon FSx / Amazon File Cache filecache.csi.aws.com
AWS S3 s3.csi.aws.com
Azure CSI gerenciado disk.csi.azure.com
Azure CSI Premium Gerenciado disk.csi.azure.com
Azure CSI do Azure File file.csi.azure.com
Azure Azurefile CSI Premium file.csi.azure.com
IBM Block Storage vpc.block.csi.ibm.io
IBM File Storage vpc.file.csi.ibm.io
IBM Cloud Object Storage ibm.io/ibmc-s3fs
Openshift Ceph RBD Block Storage openshift-storage.rbd.csi.ceph.com
Openshift CephFS openshift-storage.cephfs.csi.ceph.com
Openshift Ceph RGW openshift-storage.object.csi.ceph.com
Openshift Nooba openshift-storage.noobaa.io/obc

Solicitação de volume persistente (PVC)

A tabela a seguir lista as métricas disponíveis relacionadas ao PVC:

Métrica Descrição
Capacidade total ( GiB ) Capacidade total da fábrica de PVC em GiB
Capacidade utilizada ( GiB ) Capacidade utilizada da fábrica de PVC em GiB
Utilização Relação entre a capacidade utilizada do PVC e sua capacidade total, expressa em porcentagem
Fase Fase atual do PVC, que pode ser Available, Bound, Released, ou Failed
Modo de Acesso Modo de acesso do PVC
Nota:
Para coletar essas métricas, é necessário usar o gráfico 2 d Helm ou o agente operador 2 d Instana. Para obter mais informações, consulte as instruções para instalar o agente do Instana em Kubernetes.

Enquanto o PVC estiver vinculado a um PV, a maioria das métricas exibidas será a mesma que a disponível para o PV associado.

Monitoramento do PVC

Para monitorar um PVC, siga estas etapas na interface do usuário do Instana :

  1. No menu de navegação, selecione Infraestrutura.

  2. No painel de controle de Infraestrutura, clique em Analisar Infraestrutura.

  3. No painel “Analyze Infrastructure”, procure por um volume persistente do tipo “ Kubernetes ” e visualize a contagem total, conforme mostrado na imagem a seguir:

    Análise da infraestrutura de PVC

  4. Para visualizar a lista de PVCs, selecione “ Kubernetes : Persistent Volume Claim” na lista de tipos de infraestrutura, conforme mostrado na imagem a seguir:

    Lista de PVC

  5. Para visualizar as métricas do PVC, selecione um PVC na lista de PVCs. Você pode visualizar uma lista de métricas de PVC com tipo e valor.

Configurando um Alerta Inteligente para PVC

Para configurar um Alerta Inteligente para métricas de PVC, siga estas etapas na interface do usuário do Instana :

  1. No menu de navegação, selecione Infraestrutura > Alertas inteligentes > Criar alerta inteligente

  2. Na janela “Criar Alerta Inteligente”, selecione qualquer uma das métricas de PV disponíveis, como “Capacidade Utilizada em %”, e filtre de acordo com a entidade desejada.

    Configuração do PVC Smart Alert

Para obter mais informações sobre como configurar os Alertas Inteligentes, consulte Alertas Inteligentes.

Para saber mais sobre o monitoramento de PVCs e PV s e sua importância, consulte a publicação do blog “Desmistificando PVCs e PVs” IBM.

Monitoramento do plano de controle

Instana oferece recursos abrangentes de monitoramento para os componentes do plano de controle d Kubernetes, permitindo que você obtenha uma visibilidade detalhada do estado e do desempenho da infraestrutura central do seu cluster. O monitoramento do plano de controle ajuda a identificar gargalos, solucionar problemas e garantir a confiabilidade do seu ambiente do Kubernetes.

O plano de controle do Kubernetes consiste em um conjunto de componentes principais que gerenciam o estado do cluster e orquestram as cargas de trabalho. Instana monitora os seguintes componentes do plano de controle:
  • API Servidor : A interface de usuário do plano de controle do Kubernetes que disponibiliza o Kubernetes API.
  • Agendador : atribui pods aos nós com base nos requisitos e restrições de recursos.
  • Etcd : Banco de dados distribuído do tipo chave-valor que armazena todos os dados do cluster.
  • Gerenciador de controladores : Executa os processos dos controladores que regulam o estado do cluster.
Nota:
Para coletar essas métricas, use o gráfico 2 d Helm ou o operador de agente 2 d Instana. Para obter mais informações, consulte as instruções para instalar o agente do Instana no Kubernetes.

Acessando o monitoramento do plano de controle na interface do usuário

Para acessar as métricas do plano de controle, execute as seguintes etapas na interface do usuário do Instana :
  1. No menu de navegação, selecione Plataformas > Kubernetes.
  2. Selecione seu cluster na lista.
  3. Acesse a guia “Plano de controle” no painel do cluster.

O painel do plano de controle exibe métricas em tempo real e tendências históricas para todos os componentes monitorados.

Figura 1. Plano de controle
Plano de controle

Informações sobre depuração

Ao visualizar um cluster do Kubernetes na interface do usuário do Instana, a guia “Control Plane” exibe informações de depuração que fornecem detalhes sobre o status de monitoramento e a configuração do cluster. Essas informações ajudam você a compreender o estado atual do monitoramento e a solucionar problemas.

A seção de informações de depuração exibe os seguintes campos:
  • Cobertura do host

    A cobertura de hosts indica a porcentagem de nós no seu cluster do Kubernetes que têm o agente Instana instalado e estão enviando dados ativamente. Essa métrica é calculada como a relação entre os nós monitorados e o número total de nós no cluster.

    Por exemplo, se você vir " 3 de 6 - 50.0 % ", isso significa:
    • Três nós têm o agente do Instana instalado e estão sendo monitorados.
    • Existem 6 nós no total no cluster.
    • 50% dos nós do seu cluster estão sob monitoramento.
    Uma baixa porcentagem de cobertura de hospedeiros pode indicar:
    • Os agentes não são instalados nos nós de acordo com a configuração fornecida. Isso é esperado, em particular, para os nós do plano de controle, mas também pode afetar outros nós com marcações. Para obter mais informações, consulte “Implantação e programação de agentes ”.
    • Alguns agentes não estão em execução ou apresentam problemas de conectividade.
    • Os nós que foram adicionados recentemente ao cluster ainda não têm os agentes instalados.

    Para melhorar a cobertura dos hosts, certifique-se de que o agente do Instana esteja instalado corretamente nos nós pretendidos do seu cluster. Para obter mais informações, consulte “Instalando o agente do Instana ” em Kubernetes.

  • UUID do cluster

    O UUID do cluster é um identificador exclusivo atribuído ao seu cluster do Kubernetes. Esse identificador é usado internamente pelo Instana para distinguir entre diferentes clusters e correlacionar dados de monitoramento. O UUID é gerado automaticamente e permanece consistente durante toda a vida útil do cluster.

  • Monitor do agente

    O campo " Monitor do agente" exibe o nome ou o identificador do agente do Instana responsável pelo monitoramento dos componentes do plano de controle do Kubernetes. Essas informações são úteis para solucionar problemas específicos do agente ou para verificar qual instância do agente está coletando métricas do plano de controle.

  • Versão do sensor K8s

    A versão do sensor " K8s " mostra a versão do sensor " Kubernetes " que está atualmente implantada no seu cluster. O sensor Kubernetes é responsável por coletar metadados e métricas do servidor Kubernetes API.

    O número da versão ajuda a verificar se você está executando a versão mais recente compatível. Para obter mais informações sobre os sensores do Kubernetes e sobre como verificar seu status, consulte Kubernetes sensors.

  • Acessando informações de depuração
    Para visualizar as informações de depuração do cluster Kubernetes usando a interface do usuário Instana
    1. No menu de navegação da interface do usuário do Instana, selecione “Plataformas” > “ Kubernetes ”.
    2. Na guia “Clusters” (na visualização em tabela ou em cartões), clique no nome do cluster para abrir o painel desse cluster.
    3. No painel do cluster, clique na guia Plano de Controle.
    4. Os detalhes das informações de depuração são exibidos no final da lista de detalhes do plano de controle.

Regras de funcionamento

Integrado

Existem algumas regras de funcionamento integradas que acionam um problema para entidades Kubernetes .

  • Agrupamento
    • Kubernetes indica que um componente mestre (apiserver, agendador e gerenciador de controladores) está com falha. Instana filtra o estado de integridade do componente mestre, sem gerar um alerta, mas exibindo apenas o estado de integridade na página de detalhes do cluster.
    • A CPU solicitada está se aproximando da capacidade máxima. A proporção de CPU solicitada para a capacidade da CPU é maior que 80%
    • A memória solicitada está se aproximando da capacidade máxima. A proporção de memória solicitada para a capacidade de memória é maior que 80%
    • Os pods alocados estão se aproximando da capacidade máxima A proporção de capacidade de pods para pods alocados é maior do que 80% Para um nó, os pods nas fases 'Running' e 'Unknown ' são contados como alocados.. Para obter mais informações sobre a capacidade do nó, consulte Kubernetes docs.
    • O nó relata uma condição que não está pronta para mais de um minuto e todas as condições para esse nó estão além da condição "Pronto". Para obter mais informações sobre todas as condições dos nós, consulte a documentação em Kubernetes.
  • Namespace
    • A CPU solicitada está se aproximando da capacidade máxima. A proporção de CPU solicitada para a capacidade da CPU é maior que 80%
    • A memória solicitada está se aproximando da capacidade máxima. A proporção de memória solicitada para a capacidade de memória é maior que 80%
    • Os pods alocados estão se aproximando da capacidade máxima A proporção de capacidade de pods para pods alocados é maior do que 80% Para um namespace, os pods nas fases 'Pendente', 'Em execução' e 'Desconhecido ' são contados como alocados Os valores de capacidade do namespace são baseados em ResourceQuotas , que podem ser configurados por namespace Para obter mais informações, consulte Kubernetes docs.
  • Implementação
    • As réplicas disponíveis são inferiores às réplicas desejadas.
  • Pod
    • Um pod deve estar pronto em um minuto após ser implantado, mas se ele não estiver pronto em um minuto, o motivo não é que ele tenha concluído sua tarefa (PodCondition=Ready, Status=False, Reason!= PodCompleted). Para obter mais informações sobre todas as condições dos pods, consulte a documentação em Kubernetes.

Customizado

Além das regras integradas, também é possível criar regras customizadas em métricas de um cluster, namespace, implementação e pod. Por exemplo, se o limite para avisos de capacidade do nó for muito alto, você pode desativá-los e criar uma regra personalizada com um valor de limite mais baixo. Para obter mais informações, consulte a seção “Configuração de eventos e incidentes ”.

É necessário o Controle de Acesso Baseado em Função (RBAC) para a instalação do agente do Instana

O operador do agente do Instana instala e gerencia três componentes principais. Cada componente requer permissões RBAC específicas para monitorar seu cluster do Kubernetes :

Instana operador de agência

O operador precisa de permissões em todo o cluster para realizar as seguintes tarefas:

  • Gerenciar implantações de agentes : criar e atualizar implantações do ` DaemonSets, `, segredos do ` ConfigMaps, ` e o ` ServiceAccounts ` em todos os namespaces.
  • Configurar RBAC : Crie ClusterRoles e ClusterRoleBindings para os componentes do agente e k8sensor.
  • Gerenciar recursos personalizados do Instana : Crie, atualize e exclua recursos personalizados do agente do Instana (agents.instana.io e agentsremote.instana.io) com finalizadores para uma limpeza adequada.
  • Garanta alta disponibilidade : gerencie o ` PodDisruptionBudgets ` para o ` k8sensor ` a fim de evitar interrupções durante a manutenção do cluster.
  • Descubra os recursos do cluster : Leia os recursos de todo o cluster, como nós, namespaces, pods e serviços, para configurar os agentes corretamente.
  • Monitor etcd ( OpenShift ) : Copie os certificados e a configuração do etcd do openshift-etcd namespace para instana-agent o namespace para a coleta de métricas.
  • Acesse as métricas do kubelet : leia URLs que não sejam de recursos (/metrics, /stats/summary, e /healthz) para verificar o estado do cluster.
  • Registrar eventos : Crie eventos para obter visibilidade operacional e facilitar a resolução de problemas.
  • Eleição de líder : gerencie contratos de locação no espaço de nomes do operador para garantir alta disponibilidade ao executar várias réplicas do operador.
  • Monitorar pontos de extremidade de serviço : Leia EndpointSlices para discovery.k8s.io acompanhar as alterações nos pontos de extremidade de serviço e garantir que os agentes possam descobrir os serviços de back-end dinamicamente.

Instana agente ( DaemonSet )

Os pods do agente precisam de permissões para realizar as seguintes tarefas:

  • Coletar métricas dos nós : Acesse os pontos de extremidade de métricas do kubelet em cada nó, como /metrics, /stats/summary, e /metrics/cadvisor.
  • Monitorar pods : Ler informações e métricas dos pods em todos os namespaces.
  • Executar acesso privilegiado : use contextos de segurança privilegiados para habilitar o monitoramento no nível do host.

K8Sensor (implantação)

O serviço de gerenciamento de dispositivos ( k8sensor ) requer permissões de leitura para realizar as seguintes tarefas:

  • Monitore todos os recursos do Kubernetes ( Kubernetes ): Leia todos os tipos de recursos, como pods, deployments, serviços, ConfigMaps, s e outros em todo o cluster, para um monitoramento abrangente.
  • Monitorar recursos personalizados : Identifique e monitore Definições de Recursos Personalizados (CRDs).
  • Monitorar cargas de trabalho : Acompanhe todos os tipos de cargas de trabalho, incluindo DaemonSets,, StatefulSets, Jobs, CronJobs, e HorizontalPodAutoscalers.
  • Monitorar a rede : Ler os recursos de entrada e as políticas de rede.
  • Descubra os pontos de extremidade d etcd : consulte os serviços e pontos de extremidade no kube-system namespace para localizar o etcd para coleta de métricas.
  • Monitore os recursos do OpenShift : Leia DeploymentConfigs e outros recursos do OpenShift-specific (apenas OpenShift ).
  • Execute o acesso privilegiado ( OpenShift ) : utilize Restrições de Contexto de Segurança (SCCs) privilegiadas no OpenShift para um monitoramento abrangente.
  • Acompanhar a topologia do serviço : Consulte EndpointSlices para monitorar a distribuição dos pontos de discovery.k8s.io extremidade do serviço pelo cluster e obter um mapeamento abrangente da topologia de rede.

Para obter mais informações sobre as funções e permissões específicas do ClusterRoles, que a instalação cria, consulte o repositório de gráficos do Instana Helm.

Controle de acesso baseado em funções (RBAC) obrigatório para o webhook do AutoTrace

O webhook Instana AutoTrace é um componente independente da instalação do agente Instana. O webhook funciona com dois componentes, cada um com requisitos de segurança específicos e permissões RBAC:

Pod de webhook em mutação

O pod do webhook é executado como um serviço altamente restrito e sem privilégios que intercepta as solicitações de criação de pods. São necessárias permissões em todo o cluster para realizar as seguintes tarefas:

  • Leia os certificados do TLS : obtenha as credenciais de acesso para ler os certificados do TLS para o endpoint do webhook HTTPS.
  • Gerenciar segredos de download de imagens : crie segredos de download de imagens nos namespaces de destino ao usar registros privados.
  • Leitura da configuração : Segredos de acesso e ConfigMaps referenciados nas variáveis de ambiente do contêiner.
  • Gerenciar a configuração do ` NGINX `: Criar e atualizar o ` ConfigMaps ` para a integração de rastreamento de entrada do ` NGINX `.
  • Determinar o escopo da instrumentação : ler os namespaces e verificar os rótulos dos namespaces para identificar a lógica de inclusão ou exclusão.
  • Cumpra as políticas de segurança do Pod : utilize o comando ` PodSecurityPolicies ` em versões do ` Kubernetes ` anteriores à ` 1.25 ` quando o controlador de admissão PSP estiver ativado.

O pod do webhook é executado com as seguintes restrições de segurança:

  • É executado como usuário não root (UID 1001) sem privilégios elevados
  • Não é possível elevar privilégios
  • Todas as funcionalidades do Linux foram descontinuadas
  • Utiliza um perfil seccomp do RuntimeDefault para restringir o acesso às chamadas de sistema
  • Sistema de arquivos raiz somente leitura para impedir modificações

Contêiner de inicialização da instrumentação

O webhook insere o contêiner de inicialização nos pods da aplicação para copiar os arquivos de instrumentação para um volume compartilhado. Não requer permissões especiais e opera com as seguintes características de segurança:

  • Herdar o contexto de segurança do pod : usa o contexto de segurança do pod da aplicação por padrão.
  • Sem modo privilegiado : é executado sem privilégios elevados.
  • Sem recursos do tipo “ Linux ”: Não requer nenhum recurso especial.
  • Sem acesso ao nível do host : Não requer acesso hostPID a hostNetwork, hostIPC , ou.
  • Grava em volumes do emptyDir : Grava apenas em volumes emptyDir compartilhados, não no sistema de arquivos do host.

Tanto o pod do webhook quanto o contêiner de inicialização de instrumentação estão em total conformidade com o Padrão de Segurança de Pods Restritos da Kubernetes, que é o perfil de segurança mais restritivo.

Para obter mais informações sobre como instalar e configurar o webhook “ AutoTrace ”, consulte Instana AutoTrace webhook.

Monitoramento de Java com Istio ou OpenShift ServiceMesh

Monitorar usando o agent.serviceMesh.enabled sinalizador

Você pode habilitar o monitoramento do agente do Instana Java com a malha de serviços Istio e OpenShift usando o agent.serviceMesh.enabled sinalizador. Essa abordagem nativa do Kubernetes utiliza uma única porta de rede dedicada para todas as cargas de trabalho do Java monitoradas em um único host ou nó. O valor padrão é configurado como true. Para obter mais informações sobre o parâmetro de configuração, consulte Helm Configuração do gráfico.

Se a configuração ` Istio ` estiver definida como REGISTRY_ONLY, serão necessárias etapas adicionais para que o serviço de soquete do agente funcione corretamente.

É necessário implementar a definição de recurso a seguir para cada nó do cluster individual Certifique-se de definir uma propriedade exclusiva do metadata.name para cada host ou nó Além disso, configure o valor para spec.hosts como <node-ip-address>.instana-agent-headless.instana-agent.svc, em que <node-ip-address> é o endereço IP do nó..

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: instana-agent-worker-<node-unique-counter>
spec:
  hosts:
  - <node-ip-address>.instana-agent-headless.instana-agent.svc
  ports:
  - number: 42699
    name: agent
    protocol: TCP
  resolution: DNS
  location: MESH_EXTERNAL
 

Monitorar usando o desvio da malha de serviços (obsoleto)

Nota:
O desvio da malha de serviços será descontinuado a partir de março de 2025. Está previsto que esse recurso seja removido das futuras versões do agente do Instana.

A abordagem legada alternativa é ativar o bypass de malha de serviço A instalação padrão do Istio funciona imediatamente com o Instana. Se você implantar o ` Istio ` com uma política de negação padrão (mode: REGISTRY_ONLY), poderá habilitar o desvio da malha de serviços do ` Instana ` usando a seguinte configuração do agente:

com.instana.container:
  serviceMesh:
    enableServiceMeshBypass: true
 

A configuração ignora a conectividade de rede bloqueada de duas maneiras diferentes:

  • Permita o tráfego de saída do pod do aplicativo para o agente de host (em todos os endereços IPv4 nos quais o agente atende e todas as portas).
  • Permitir o tráfego de entrada para o pod da aplicação proveniente do agente para aplicações do tipo “ JVM ” (de todos os endereços ipv4 nos quais o agente do host está à escuta, em todas as portas).

Depurando o bypass de malha

Para depurar a malha de serviço por passagem, siga as etapas:

  1. Verifique se a malha de serviço está ativada.
  2. Verifique se as regras de iptable são aplicadas ao contêiner

Verificar ativado

Para verificar se o desvio da malha de serviços está ativado, consulte os logs do agente do Instana executando o seguinte comando:

kubectl logs -l app.kubernetes.io/instance=instana-agent -n instana-agent -c instana-agent
 

Se o contorno de malha de serviços estiver ativado, será possível localizar as linhas de log a seguir, que indicam que uma entrada de contorno de entrada ou saída é gravada para o processo denotado:

Entrada por passagem:

2021-04-26T08:13:57.065+0000 | INFO  | -client-thread-2 | DefaultServiceMeshSupport        | 51 - com.instana.agent - 1.1.597 | Applying inbound service mesh bypass for process '764670'
 

Saída by-pass:

2021-04-26T08:13:57.140+0000 | INFO  | -client-thread-2 | DefaultServiceMeshSupport        | 51 - com.instana.agent - 1.1.597 | Applying outbound service mesh bypass for process '764670'
 

Verificar regras de iptable

A maneira mais fácil de verificar as regras do iptables é acessar o agente do ` Instana ` e listar as regras do iptables do contêiner de destino da seguinte forma. Substitua ${PID} pelo PID do processo JVM :

kubectl -n instana-agent exec -it ${INSTANA_AGENT_POD} -c instana-agent  -- /bin/bash
nsenter -n -t ${PID} iptables -t nat -n -L INSTANA_OUTPUT
 

Se as cadeias forem aplicadas, será possível ver uma saída conforme a seguir:

Chain INSTANA_OUTPUT (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            10.128.15.237
ACCEPT     tcp  --  0.0.0.0/0            10.64.0.1
ACCEPT     tcp  --  0.0.0.0/0            169.254.123.1
 

Verifique se a comunicação bidirecional entre o agente do Instana e os processos do JVM é compatível executando o seguinte comando:

nsenter -n -t ${PID} iptables -t nat -n -L INSTANA_INBOUND
 

O resultado é semelhante à saída a seguir:

Chain INSTANA_INBOUND (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  10.128.15.237        10.64.0.14
ACCEPT     tcp  --  10.64.0.1            10.64.0.14
ACCEPT     tcp  --  169.254.123.1        10.64.0.14
 

Dependendo de quando as regras do iptables foram aplicadas, pode levar alguns minutos para que o processo seja configurado e os dados fiquem visíveis nos painéis d Instana.

Notas sobre resolução de problemas

Por que não está aparecendo nenhum cluster ou namespace Kubernetes?

Se nenhum cluster ou namespaces estiver listado na página Kubernetes , nenhum cluster está sendo monitorado ativamente devido a um agente não estar sendo instalado ou nenhum cluster está sendo monitorado durante o prazo selecionado.

Clique em “Live” para verificar se há algum cluster ou namespace em modo ativo; caso nenhum esteja listado, você precisará instalar o agente do Instana no Kubernetes.

Permissões ausentes da função de cluster

Tipo de problema de monitoramento: kubernetes_missing_permissions

O agente Instana requer as permissões apropriadas da função de cluster para que os recursos específicos possam monitorar um cluster Kubernetes com sucesso. Se essas permissões estiverem ausentes, os recursos correspondentes não serão exibidos nos painéis do Instana e Kubernetes. Para resolver esse problema, instale a versão mais recente do Agente do Instana YAML, do Helm Chart ou do Operator. Para obter mais informações sobre a versão mais recente de cada método de instalação, consulte Kubernetes ou OpenShift.

Monitoramento de recursos personalizados

Para monitorar recursos personalizados (CRs) d Kubernetes, é necessário criar um ClusterRole recurso com regras específicas que concedam as permissões necessárias ao agente do Instana. Essa configuração permite que k8sensor o acesse e monitore recursos personalizados no seu cluster.

Criação de um ` ClusterRole ` para monitoramento personalizado de recursos

Crie um ClusterRole que especifique as permissões necessárias para monitorar seus recursos personalizados. O exemplo a seguir mostra uma configuração básica do ` ClusterRole `:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: instana-crmon
rules:
  - apiGroups: ["your.custom.group"]
    resources: ["yourcustomresources"]
    verbs: ["get", "list", "watch"]

Você deve substituir your.custom.group pelo grupo de recursos personalizados API e yourcustomresources pelo nome no plural do seu tipo de recurso personalizado. Você pode adicionar mais regras, conforme necessário, para cada tipo de recurso personalizado que deseja monitorar. Você também pode usar o ["*"] curinga para apiGroups e resources em sistemas de teste para corresponder a todos os recursos personalizados, desde que isso não represente nenhum risco à segurança no seu caso.

Não é recomendável utilizar um acesso tão permissivo em sistemas de produção, onde se aconselha a aplicação do princípio do privilégio mínimo.

Criação de um site ClusterRoleBinding

Depois de criar o ClusterRole, é necessário criar um ClusterRoleBinding para associar o ClusterRole ao ServiceAccount do agente do Instana :
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: instana-crmon
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: instana-crmon
subjects:
- kind: ServiceAccount
  name: instana-agent-k8sensor
  namespace: instana-agent

Certifique-se de que o namespace campo na subjects seção corresponda ao namespace onde o seu agente do Instana está implantado. Se você instalou o agente em um namespace diferente, atualize o valor de acordo com isso.

Depois de aplicar esses recursos, o Instanak8sensor obtém as permissões necessárias para monitorar seus recursos personalizados.

Coletando logs

Para coletar logs do ` k8sensor ` e do ambiente do Kubernetes, você pode coletar informações de diagnóstico com o mustgather script, conforme descrito nas etapas a seguir:

Etapas para a coleta de logs

  1. Clone o repositório de manutenção.

  2. Navegue até o diretório agent/k8s.

  3. Leia as instruções contidas no README.md arquivo nesse diretório, certificando-se de que os pré-requisitos foram atendidos e de que você está conectado ao cluster.

  4. Execute o instana-k8s-mustgather.sh.

  5. Após a conclusão do script, é gerado um .tgz arquivo que contém todas as informações de diagnóstico necessárias para que a equipe de suporte ao cliente possa dar atendimento ao ticket.

    Figura 2. MustGather saída
    MustGather saída

Ativando o registro de depuração para resolução de problemas

O ` k8sensor ` oferece suporte a diferentes níveis de registro para fins de solução de problemas. Por padrão, o ` k8sensor ` registra mensagens no info nível. Ao investigar problemas, você pode ativar temporariamente debug o registro de nível para capturar informações de diagnóstico mais detalhadas.

Importante:
O registro de depuração gera um volume significativamente maior de saídas de log. Ative-o apenas durante o diagnóstico ativo e desative-o após capturar os registros necessários.

Você pode ativar o registro de depuração usando um dos seguintes métodos:

Utilizando o recurso personalizado do agente ` Instana `

  1. Edite o recurso personalizado do agente ` Instana `:
    kubectl edit instanaagent -n instana-agent instana-agent
  2. Adicione ou modifique a agent.env seção:
    spec:
      agent:
        env:
          K8S_SENSOR_LOG_LEVEL: debug
  3. Aguarde até que a implementação seja concluída. Verifique o status da implementação executando o seguinte comando:
    kubectl rollout status deployment/instana-agent-k8sensor -n instana-agent
  4. Verifique se o registro de depuração está ativado consultando os logs do ` k8sensor `:
    kubectl logs -n instana-agent deployment/instana-agent-k8sensor --tail=50 | grep -i "level.*debug"
  5. Se for o caso, reproduza o problema para gerar os registros de log necessários. Caso contrário, aguarde alguns minutos para que o servidor de pesquisa ( k8sensor ) colete os dados durante seus intervalos de pesquisa regulares (padrão: a cada 10 segundos).
  6. Capturar registros. Para obter instruções detalhadas sobre a coleta de registros, consulte Coleta de registros.
  7. Para desativar o registro de depuração, edite novamente o recurso personalizado do agente ` Instana ` e altere o nível de registro de volta para info:
    spec:
      agent:
        env:
          K8S_SENSOR_LOG_LEVEL: info

Utilizando um gráfico d Helm

  1. Atualize sua instalação do ` Helm ` com o nível de log de depuração:
    helm upgrade instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      --set agent.env.K8S_SENSOR_LOG_LEVEL=debug \
      --reuse-values \
      instana-agent
  2. Aguarde até que a implementação seja concluída. Verifique o status da implementação executando o seguinte comando:
    kubectl rollout status deployment/instana-agent-k8sensor -n instana-agent
  3. Verifique se o registro de depuração está ativado consultando os logs do ` k8sensor `:
    kubectl logs -n instana-agent deployment/instana-agent-k8sensor --tail=50 | grep -i "level.*debug"
  4. Se for o caso, reproduza o problema para gerar os registros de log necessários. Caso contrário, aguarde alguns minutos para que o servidor de pesquisa ( k8sensor ) colete os dados durante seus intervalos de pesquisa regulares (padrão: a cada 10 segundos).
  5. Capturar registros. Para obter instruções detalhadas sobre a coleta de registros, consulte Coleta de registros.
  6. Para desativar o registro de depuração, atualize novamente a instalação do ` Helm `:
    helm upgrade instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      --set agent.env.K8S_SENSOR_LOG_LEVEL=info \
      --reuse-values \
      instana-agent