Activez la collecte des journaux CoreDNS pour diagnostiquer la 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 la rubrique 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 pour configurer la journalisation des domaines personnalisés.
Remarques 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 le namespace kube-system, localisez le 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 la rubrique 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 vous y êtes invité), puis sur Enable Log Collection.
Méthode 2 : Activer le service avec 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 la rubrique 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 CRD.Pour les formats de journal personnalisés, consultez le plug-in log de CoreDNS.
Consultez la rubrique 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, le réseau et la mise à l'échelle automatique, consultez la rubrique Étape 1 : Créer des configurations de collecte de journaux.
É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 la rubrique Guide rapide d'interrogation et d'analyse.
-
Histogramme des journaux
Affiche la répartition des journaux dans le temps.

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

Référence des champs de journal CoreDNS
|
**Field**
|
**Description**
|
**Example**
| | --- | --- | --- | |
{level}
|
Le niveau de journal.
|
INFO
| |
{remote}
|
L'adresse IP du client.
|
172.16.0.10
| |
{port}
|
Le port client.
|
58008
| |
{id}
|
L'ID de la requête.
|
34518
| |
{type}
|
Le type de requête.
|
A
| |
{class}
|
La classe de 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 (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 (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 réponse non compressée (octets).
|
110
| |
{duration}
|
La latence de résolution (secondes).
|
0.00011
| -
Graphique
Visualisez les résultats des requêtes sous l'onglet Graph.
-
LogReduce
Sous l'onglet LogReduce, cliquez sur Enable LogReduce pour regrouper les journaux similaires. Consultez la rubrique 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 offre :
Total Requests, Success Ratio, and Latency : Surveillez l'état 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 goulets d'étranglement de performance.
Étape 5 : Configurer des alertes
Depuis 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 la rubrique Créer une règle d'alerte.

Après avoir créé une règle, consultez-la, modifiez-la ou désactivez-la via la rubrique 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 vers SLS.
\
> Dashboard