Activez la collecte des journaux CoreDNS pour diagnostiquer les problèmes de latence DNS et détecter les domaines à haut risque dans vos clusters ACK.
Prérequis
-
Le module complémentaire de collecte de journaux est installé.
-
Pour Logtail : la version de
alibaba-log-controllerdoit être0.2.0.0-76648ee-aliyunou ultérieure.Si la version de
alibaba-log-controllerest obsolète, mettez à niveau le module complémentaire Logtail. Pour LoongCollector : toutes les versions sont prises en charge.
-
CoreDNS est mis à niveau vers la dernière version. Consultez Gérer les composants.
Étape 1 (facultative) : Activer le plug-in de journalisation CoreDNS
Dans la dernière version de CoreDNS, le plug-in de journalisation est activé par défaut pour le domaine par défaut. Suivez ces étapes uniquement si vous souhaitez configurer la journalisation pour des domaines personnalisés.
Notes d'utilisation
L'activation des journaux augmente l'utilisation du processeur de CoreDNS d'environ 10 %, selon le volume de requêtes. Si l'utilisation du processeur est déjà élevée, augmentez le nombre de réplicas CoreDNS avant de poursuivre.
Procédure
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Dans l'espace de noms kube-system, recherchez la ConfigMap
corednset cliquez sur Edit.Vérifiez la présence du plug-in log dans le fichier Corefile (généralement dans le bloc
.:53). S'il est absent, ajoutez-le comme indiqué ci-dessous. Consultez Modifier un paramètre.
Configuration coredns avec le format de journal par défaut :
Corefile: |
.:53 {
errors
log # Add the log plugin here to enable DNS resolution logging.
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, add the log plugin to their blocks as well.
demo.com:53 {
...
log # Add the log plugin here.
}
Étape 2 : Activer la collecte des journaux CoreDNS
Méthode 1 : Activer le service depuis la console
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Sous l'onglet , cliquez sur Install (si demandé), puis sur Enable Log Collection.
Méthode 2 : Activer le service à l'aide de kubectl
Déployez une définition de ressource personnalisée (CRD) AliyunLogConfig pour automatiser la création du Logstore et du tableau de bord. Consultez Gérer les ressources personnalisées.
Cette configuration s'applique uniquement au format de journal CoreDNS par défaut. Si vous utilisez un format personnalisé, modifiez le champ
Regexdans la définition de la CRD.Pour les formats de journal personnalisés, consultez le plug-in log de CoreDNS.
Consultez Utiliser des CRD pour collecter les journaux de conteneurs en mode DaemonSet.
-
Créez un fichier nommé
k8s-coredns-log.yamlavec le contenu suivant :apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # Your config name, must be unique in your ACK cluster. name: k8s-coredns-log namespace: kube-system spec: # The logstore name to upload log logstore: coredns-log # Logtail config detail productCode: k8s-coredns logtailConfig: inputType: plugin # Logtail config name, should 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 -
Appliquez la configuration.
kubectl apply -f k8s-coredns-log.yaml
Pour configurer la CRD AliyunLogConfig pour des ressources telles que le stockage, la mise en réseau et la mise à l'échelle automatique, consultez Étape 1 : Créer un fichier de configuration de journal pour un plug-in système.
Étape 3 : Interroger et analyser les journaux dans le Logstore
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Sous l'onglet , cliquez sur Logstores pour interroger et analyser les journaux DNS.
Saisissez une instruction de requête et sélectionnez Last 1 Week pour la plage temporelle.
-
Cliquez sur Search & Analyze pour afficher les résultats.
Simple Log Service (SLS) affiche les résultats sous forme d'histogrammes, de journaux bruts et de graphiques statistiques. Consultez Démarrage rapide pour l'interrogation et l'analyse.
-
Histogramme des journaux
Affiche la distribution des journaux dans le temps.

-
Journaux bruts
Sous l'onglet Raw Logs, cliquez sur Table ou Raw Data pour vérifier les anomalies DNS. Portez une attention particulière à la valeur RCODE. Consultez Résoudre les problèmes de résolution DNS.

Référence des champs de journal CoreDNS
Field
Description
Example
{level}
Le niveau de journalisation.
INFO
{remote}
L'adresse IP du client.
172.16.0.10
{port}
Le port du client.
58008
{id}
L'ID de la requête.
34518
{type}
Le type de requête.
A
{class}
La classe de la requête.
IN
{name}
Le nom de domaine demandé.
kube-dns.kube-system.svc.cluster.local.
{proto}
Le protocole utilisé.
tcp
{size}
La taille de la requête (en octets).
56
{do}
Indique si le bit EDNS0 DO (DNSSEC OK) est défini dans la requête.
false
{bufsize}
La taille du tampon EDNS0 (en octets) dans la requête.
65535
{rcode}
Le code de réponse.
NOERROR
{rflags}
Les indicateurs de réponse. Affiche chaque indicateur défini.
qr,aa,rd
{rsize}
La taille de la réponse non compressée (en octets).
110
{duration}
La latence de résolution (en secondes).
0.00011
-
Graphique
Visualisez les résultats de la requête sous l'onglet Graph.
-
LogReduce
Sous l'onglet LogReduce, cliquez sur Enable LogReduce pour regrouper les journaux similaires. Consultez LogReduce.
-
Étape 4 : Visualiser avec des tableaux de bord
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Sous l'onglet , cliquez sur Dashboards pour afficher le tableau de bord Kubernetes CoreDNS Logs Analysis. Celui-ci fournit :
Total Requests, Success Ratio, and Latency : Surveillez l'état de santé du DNS en un coup d'œil.
Top Requested Domains : Identifiez les services les plus actifs.
Top Error Domains : Trouvez les domaines provoquant des erreurs NXDOMAIN ou SERVFAIL.
Timeout Domains, High-risk Domains, and Slow Logs : Identifiez les goulots d'étranglement de performance.
Étape 5 : Configurer des alertes
Sur le tableau de bord Kubernetes CoreDNS Logs Analysis, configurez des alertes basées sur des graphiques individuels. Cette fonctionnalité est disponible uniquement dans la console SLS.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Cluster Information.
Sous l'onglet Basic Information, cliquez sur le lien situé à côté de Log Service Project pour accéder à la console SLS.
Dans le volet de navigation de gauche de la page Logstores, cliquez sur . Dans la liste des tableaux de bord, recherchez et cliquez sur Kubernetes CoreDNS Logs Analysis.
-
Sur la page Kubernetes CoreDNS Logs Analysis, placez le curseur dans le coin supérieur droit du graphique cible et sélectionnez .
Consultez Créer une règle d'alerte.

Après avoir créé une règle, consultez-la, modifiez-la ou désactivez-la via Gérer les règles de surveillance des alertes.
Opérations connexes
Désactiver la collecte de journaux
Pour arrêter la collecte des journaux CoreDNS, supprimez la configuration :
kubectl -n kube-system delete AliyunLogConfig k8s-coredns-log
Après la suppression, les journaux CoreDNS ne sont plus envoyés à SLS.
\
> Dashboard