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)
Malhas de serviço suportadas
Instana é compatível com as três últimas versões estáveis do Istio.
Instalando o agente Instana no Kubernetes
Para monitorar Kubernetes com Instana, é necessário instalar o agente de host Instana no seu cluster Kubernetes.
Para obter mais informações sobre as etapas de instalação do agente do host, consulte “Instalando o agente do host” em Kubernetes.
A instalação de agentes Instana no VMware Tanzu Kubernetes Grid é totalmente automatizada pelo módulo Instana Microservices Application Monitoring para VMware Tanzu.
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.
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:
- No menu de navegação, selecione Infraestrutura.
- Na guia Mapas, clique em seu nó Kubernetes.
- No painel de detalhes do nó, expanda “ Instana Agent (1) ” e clique no seu agente.
- No painel do agente, clique em Open Dashboard.
- Na página do agente, clique em Informações sobre sensores na área Informações.
- Na janela Sensors Info, pesquise
Instana - Kubernetes - Sensorno 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) InstanaAgentrecurso personalizado (por exemplo,k8s_sensor.pollrate: "15s")
1s a 30s. Os valores fora desse intervalo são automaticamente ajustados ao limite mais próximo.| 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:
- Defina as solicitações de recursos e o número de réplicas estáveis no
InstanaAgentCR: 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. Aplique o manifesto HPA:
Crie um arquivo
k8sensor-hpa.yamlconforme 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: 75Aplique o manifesto executando o seguinte comando:
kubectl apply -f k8sensor-hpa.yamlNota: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.
Verifique se o HPA está ativado executando os seguintes comandos:
kubectl get hpa instana-agent-k8sensor -n instana-agentkubectl get deploy instana-agent-k8sensor -n instana-agent -o jsonpath='{.spec.replicas}'; echokubectl top pods -n instana-agent | grep k8sensorSe você editar o
InstanaAgentCR posteriormente, o operador do agente Instana poderá reiniciar o sistema por um.spec.replicasbreve 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".

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 :

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.

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:
- Na visualização de clusters do Kubernetes, clique em um cluster.
- 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:

Analisando os registros do ` Kubernetes `
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:

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:

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 |
Nó
| 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. 
Para visualizar a lista de HPAs, selecione “ Kubernetes : Horizontal Pod Autoscalers” na lista de tipos de infraestrutura. 
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. 
Você pode configurar alertas com base na utilização das réplicas nas seguintes métricas:
Current Replicas / Maximum ReplicasCurrent 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 |
Monitoramento fotovoltaico
Para monitorar um PV, siga estas etapas na interface do usuário do Instana :
No menu de navegação, selecione Infraestrutura.
No painel de controle de Infraestrutura, clique em Analisar Infraestrutura.
No painel “Analyze Infrastructure”, procure por um volume persistente do tipo “ Kubernetes ” e visualize a contagem total, conforme mostrado na imagem a seguir:

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

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 :
No menu de navegação, selecione Infraestrutura > Alertas inteligentes > Criar alerta inteligente.
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.

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 |
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 :
No menu de navegação, selecione Infraestrutura.
No painel de controle de Infraestrutura, clique em Analisar Infraestrutura.
No painel “Analyze Infrastructure”, procure por um volume persistente do tipo “ Kubernetes ” e visualize a contagem total, conforme mostrado na imagem a seguir:

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

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 :
No menu de navegação, selecione Infraestrutura > Alertas inteligentes > Criar alerta inteligente
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.

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.
- 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.
Acessando o monitoramento do plano de controle na interface do usuário
- No menu de navegação, selecione Plataformas > Kubernetes.
- Selecione seu cluster na lista.
- 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.

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.
- 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çãoPara visualizar as informações de depuração do cluster Kubernetes usando a interface do usuário Instana
- No menu de navegação da interface do usuário do Instana, selecione ”.
- Na guia “Clusters” (na visualização em tabela ou em cartões), clique no nome do cluster para abrir o painel desse cluster.
- No painel do cluster, clique na guia Plano de Controle.
- 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.
- Nó
- 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.ioeagentsremote.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-etcdnamespace parainstana-agento 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.ioacompanhar 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-systemnamespace 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.ioextremidade 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
hostPIDahostNetwork,hostIPC, ou. - Grava em volumes do emptyDir : Grava apenas em volumes
emptyDircompartilhados, 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)
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:
- Verifique se a malha de serviço está ativada.
- 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
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
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
Clone o repositório de manutenção.
Navegue até o diretório
agent/k8s.Leia as instruções contidas no
README.mdarquivo nesse diretório, certificando-se de que os pré-requisitos foram atendidos e de que você está conectado ao cluster.Execute o
instana-k8s-mustgather.sh.Após a conclusão do script, é gerado um
.tgzarquivo 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 
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.
Você pode ativar o registro de depuração usando um dos seguintes métodos:
Utilizando o recurso personalizado do agente ` Instana `
- Edite o recurso personalizado do agente ` Instana `:
kubectl edit instanaagent -n instana-agent instana-agent - Adicione ou modifique a
agent.envseção:spec: agent: env: K8S_SENSOR_LOG_LEVEL: debug - 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 - 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" - 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).
- Capturar registros. Para obter instruções detalhadas sobre a coleta de registros, consulte Coleta de registros.
- 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
- 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 - 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 - 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" - 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).
- Capturar registros. Para obter instruções detalhadas sobre a coleta de registros, consulte Coleta de registros.
- 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