O ACK implanta o CoreDNS como servidor DNS no cluster. Visualize os logs do CoreDNS para analisar problemas como resolução lenta de DNS e solicitações para domínios de alto risco. Este tópico descreve como ativar a análise e o monitoramento de logs do CoreDNS.
Pré-requisitos
O add-on de coleta de logs está instalado.
-
Se você utiliza o add-on Logtail, verifique se a versão do
alibaba-log-controlleré 0.2.0.0-76648ee-aliyun ou posterior. No console ACK, acesse a página Stateless, localize o Deploymentalibaba-log-controllere confira sua versão na coluna Image (por exemplo,0.2.8.0-245ff7b-aliyun).Caso a versão do
alibaba-log-controlleresteja desatualizada, atualize o add-on Logtail. Para mais informações sobre como atualizar add-ons, consulte Gerenciar componentes. O componente LoongCollector não exige uma versão específica.
Etapa 1: Ativar o plugin de log do CoreDNS
Observações
Certifique-se de que o componente CoreDNS esteja atualizado para a versão mais recente. Para mais informações sobre como atualizar o componente, consulte Gerenciar componentes.
Na versão mais recente do CoreDNS, o plugin de log vem ativado por padrão para o domínio padrão. Caso precise ativar o plugin de log para outros domínios, siga o procedimento desta seção.
Procedimento
A ativação dos logs do CoreDNS consome recursos adicionais de CPU (aproximadamente 10%, dependendo do volume de solicitações) e tráfego de rede. Se a utilização de CPU das réplicas atuais do CoreDNS estiver alta, escale horizontalmente os pods do CoreDNS. Para mais informações sobre o dimensionamento de pods do CoreDNS, consulte Dimensionamento manual de pods.
No namespace kube-system do cluster ACK, selecione , clique em CoreDNS e verifique o campo Corefile do ConfigMap CoreDNS para confirmar se o plugin log está incluído. Se não estiver, adicione o plugin conforme o exemplo a seguir para ativar o registro de logs da resolução DNS do CoreDNS. Para mais informações sobre como modificar um ConfigMap, consulte Modificar um ConfigMap.
O exemplo a seguir mostra a configuração do CoreDNS com o formato de log padrão.
Corefile: |
.:53 {
errors
log # Add the log plugin here.
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
# If you have other domains for which you need to collect logs, add the log plugin to their blocks in the same format.
demo.com:53 {
...
log # Add the log plugin here.
}
Etapa 2: Ativar a coleta de logs do CoreDNS
Usar o console
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Operations > Log Center.
Na página Log Center, acesse a aba . Clique em Install e, em seguida, em Enable Log Collection.
Usar kubectl
Ao implantar um recurso AliyunLogConfig, o Log Controller cria automaticamente as configurações de coleta de logs e painéis necessários no Simple Log Service (SLS). Para mais informações sobre como criar um recurso personalizado AliyunLogConfig, consulte Gerenciar recursos personalizados.
A configuração a seguir aplica-se apenas ao formato de log padrão do CoreDNS. Se você utilizar um formato de log personalizado, modifique a seção Regex na configuração do CRD.
Para mais informações sobre formatos de log personalizados no CoreDNS, consulte log.
Para mais detalhes sobre o processo e as configurações de coleta de logs, consulte Coletar logs de contêiner usando um DaemonSet e um CRD.
-
Crie um arquivo chamado k8s-coredns-log.yaml com o seguinte conteúdo.
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # Your config name, must be unique in your k8s cluster. name: k8s-coredns-log namespace: kube-system spec: # The name of the Logstore to which logs are uploaded. logstore: coredns-log # Details of the Logtail configuration. productCode: k8s-coredns logtailConfig: inputType: plugin # The name of the Logtail configuration. This must be the same as metadata.name. configName: k8s-coredns-log inputDetail: plugin: inputs: - type: service_docker_stdout detail: IncludeLabel: io.kubernetes.container.name: coredns Stderr: true Stdout: true processors: - type: processor_regex detail: KeepSource: false KeepSourceIfParseError: true Keys: - level - remote - port - id - type - class - name - proto - size - do - bufsize - rcode - rflags - rsize - duration NoKeyError: true NoMatchError: false FullMatch: false Regex: \[([^]]+)]\s([^:]+):(\S+)\s+-\s+(\S+)\s+"(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+([^"]+)"\s+(\S+)\s+(\S+)\s+(\S+)\s+([\d\.]+).* SourceKey: content - type: processor_regex detail: KeepSource: false KeepSourceIfParseError: true Keys: - error - rcode - name - type - errorMsg NoKeyError: false NoMatchError: false FullMatch: false Regex: \[ERROR]\s+(plugin/errors):\s+(\S)+\s+(\S+)\s+([^:]*):\s+(.*) SourceKey: content -
Execute o comando a seguir para ativar a coleta de logs do CoreDNS:
kubectl apply -f k8s-coredns-log.yaml
Para mais informações sobre como configurar um CRD AliyunLogConfig para recursos como armazenamento, rede e dimensionamento automático, consulte Etapa 1: Criar um arquivo de configuração de log para componentes do plano de dados.
Etapa 3: Consultar e analisar logs
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Operations > Log Center.
Na página Log Center, clique em Network Component Logs. Em seguida, na aba CoreDNS, clique em Logstores para consultar e analisar logs de DNS.
Insira uma instrução de consulta e análise na caixa de pesquisa e selecione Last 1 Week para definir o intervalo de tempo da consulta.
-
Clique em Search & Analyze para visualizar os resultados.
O Simple Log Service (SLS) exibe os resultados da consulta e análise como um histograma de logs, logs brutos e gráficos. Para mais informações sobre como consultar e analisar logs, consulte Início rápido para consulta e análise de logs.
-
Histograma de Logs
Este gráfico apresenta a distribuição temporal dos logs consultados.

-
Logs Brutos
Os resultados da consulta aparecem na aba Raw Logs. Clique em Table ou Origin para visualizar os logs e verificar anomalias na resolução de domínios. Preste atenção especial ao valor
RCODE. Para mais informações sobre os significados dos RCODEs, consulte Solucionar problemas de resolução de DNS.A tabela a seguir descreve os campos presentes nos logs.
Parâmetro
Descrição
Exemplo
{level}
Nível do log.
INFO
{remote}
Endereço IP do cliente.
172.16.0.10
{port}
Porta do cliente.
58008
{id}
ID da consulta.
34518
{type}
Tipo de solicitação.
A
{class}
Classe da solicitação.
IN
{name}
Nome de domínio solicitado.
kube-dns.kube-system.svc.cluster.local.
{proto}
Protocolo utilizado.
tcp
{size}
Tamanho da solicitação em bytes.
56
{do}
Indica se o bit EDNS0 DO (DNSSEC OK) está definido na consulta.
false
{bufsize}
Tamanho do buffer EDNS0 em bytes definido na consulta.
65535
{rcode}
Código de resposta.
NOERROR
{rflags}
Flags de resposta. Cada flag definida é exibida.
qr,aa,rd
{rsize}
Tamanho da resposta não compactada em bytes.
110
{duration}
Tempo de resposta em segundos.
0.00011
-
Gráfico
Após executar uma instrução de consulta e análise, visualize os resultados na aba Graph.
-
LogReduce
Na aba LogReduce, clique em Enable LogReduce para agrupar automaticamente os logs coletados com padrões semelhantes. Para mais informações, consulte LogReduce.
-
Etapa 4: Visualizar o painel de logs do CoreDNS
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Operations > Log Center.
-
Na página Log Center, clique em Network Component Logs. Na aba CoreDNS, clique em Dashboards para visualizar o painel Kubernetes CoreDNS Logs Analysis.
A página Kubernetes CoreDNS Logs Analysis exibe métricas agregadas como contagem de solicitações do CoreDNS, taxa de sucesso e latência. O painel também fornece listas dos domínios mais solicitados, domínios com erro, domínios com resolução lenta e uma análise de solicitações para domínios de alto risco.
Etapa 5: Criar um alerta para logs do CoreDNS
No painel Kubernetes CoreDNS Logs Analysis, configure um alerta com base em um único gráfico. Essa operação está disponível apenas no console SLS.
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Cluster Information.
Na página Cluster Information, clique em Basic Information. Clique em Project para acessar o console SLS.
No painel de navegação à esquerda, clique em
. Na lista de painéis, localize e clique em Kubernetes CoreDNS Logs Analysis.-
Na página Kubernetes CoreDNS Logs Analysis, no canto superior direito do gráfico para o qual deseja criar um alerta, escolha
> Save as Alert.Para mais informações sobre como configurar parâmetros de alerta, consulte Criar uma regra de alerta baseada em log.
Após criar uma regra de alerta, visualize, modifique ou desative-a. Para mais informações, consulte Gerenciar regras de alerta.
Operações relacionadas
Desativar a coleta de logs
Para interromper a coleta de logs do CoreDNS, execute o comando a seguir para excluir o recurso personalizado:
kubectl -n kube-system delete AliyunLogConfig k8s-coredns-log
Após a exclusão do recurso, os logs do CoreDNS deixam de ser enviados ao Simple Log Service (SLS).