Container Compute Service (ACS) s'intègre à Simple Log Service (SLS). Activez SLS lors de la création d'un cluster pour collecter rapidement les journaux des conteneurs d'un cluster ACS, y compris la sortie standard (stdout) et les fichiers texte. Cette rubrique explique comment collecter les journaux d'application dans un cluster ACS à l'aide d'une ressource personnalisée AliyunLogConfig.
Étape 1 : Activer le composant Log Service
Lors de la création d'un cluster ACS, sélectionnez Enable Log Service pour activer automatiquement le composant Log Service. Si vous n'avez pas choisi cette option durant la création du cluster, suivez les étapes ci-dessous pour activer le composant sur un cluster existant.
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, cliquez sur Add-ons.
Dans la section Logs and Monitoring, localisez alibaba-log-controller. Cliquez sur . Dans la boîte de dialogue Install, cliquez sur .
Si vous avez personnalisé la configuration et les variables d'environnement d'alibaba-log-controller, la mise à niveau écrase ces paramètres. Vous devrez alors les reconfigurer.
Étape 2 : Créer une ressource personnalisée AliyunLogConfig
Une ressource personnalisée AliyunLogConfig permet de collecter la sortie standard et les journaux de fichiers d'applications spécifiques. Pour créer une ressource personnalisée, choisissez Custom Resources > CRDs> Create from YAML dans le volet de navigation de gauche. Le tableau suivant décrit les principaux paramètres d'une ressource personnalisée AliyunLogConfig.
|
Paramètre |
Description |
Exemple |
|
|
Nom de la ressource de configuration de collecte des journaux. Ce nom doit être unique au sein du cluster ACS. |
test-stdout |
|
|
Facultatif. Nom du Project. Nous recommandons d'utiliser le format |
k8s-log-c326bc86**** |
|
|
Obligatoire. Nom du Logstore. Si le Logstore n'existe pas, Simple Log Service le crée automatiquement. |
test-stdout |
|
|
Type de source de données. |
plugin |
|
|
Nom de la configuration Logtail. Il doit être identique au nom de ressource spécifié dans |
test-stdout |
|
|
Configuration détaillée de Logtail. Elle inclut les paramètres de collecte des journaux stdout et des journaux de fichiers. |
Cela permet de collecter la sortie standard ( |
|
|
Fonctionnalités étendues de configuration Logtail. Les paramètres
|
Logtail collecte les journaux du conteneur uniquement si toutes les conditions suivantes sont remplies :
|
Pour plus d'informations sur les paramètres de configuration, consultez Configurations Logtail (héritées).
Exemple 1 : Collecter des journaux stdout spécifiques
Pour collecter les journaux stdout (y compris stderr) et les filtrer par pods ou conteneurs spécifiques, ajoutez des règles de correspondance dans la section detail de la configuration input. Appliquez la configuration suivante à votre cluster ACS.
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-stdout
spec:
project: k8s-log-c326bc86**** # Replace this with the actual name of your Project.
logstore: test-stdout
shardCount: 2
lifeCycle: 90
logtailConfig:
inputType: plugin
configName: test-stdout
inputDetail:
plugin:
inputs:
- type: service_docker_stdout
detail:
Stdout: true
Stderr: true
K8sNamespaceRegex: ^(default)$
K8sContainerRegex: ^(busybox)$
K8sPodRegex: ^backend.+$
IncludeK8sLabel:
app: backend
application: prod
Exemple 2 : Collecter des journaux de fichiers spécifiques
Pour collecter les journaux de fichiers de pods ou conteneurs spécifiques, ajoutez des règles de correspondance dans un bloc advanced au sein de la configuration inputDetail. Appliquez la configuration suivante à votre cluster ACS.
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-file
spec:
project: k8s-log-c326bc86**** # Replace this with the actual name of your Project.
logstore: test-file
logtailConfig:
inputType: file
configName: test-file
inputDetail:
logType: common_reg_log
logPath: /log/
filePattern: "*.log"
dockerFile: true
advanced:
k8s:
K8sNamespaceRegex: ^(default)$
K8sContainerRegex: ^(busybox)$
K8sPodRegex: ^backend.+$
IncludeK8sLabel:
app: backend
application: prod
Après avoir créé les ressources personnalisées AliyunLogConfig test-stdout et test-file, suivez les instructions de l'Étape 4 : Consulter les journaux dans la console SLS pour vérifier si les Logstores correspondants ont bien été créés. Dans le cas contraire, revoyez et modifiez vos configurations en vous référant aux Configurations Logtail (héritées).
Étape 3 : Créer une application exemple
Une fois la ressource personnalisée AliyunLogConfig créée, Simple Log Service (SLS) collecte automatiquement les journaux des nouveaux pods correspondant à la configuration. Déployez l'application exemple suivante pour tester la collecte des journaux.
-
L'exemple ci-dessous présente une application déployée sous forme de Deployment. Au démarrage du conteneur, des commandes s'exécutent pour écrire en continu des journaux vers la sortie standard et vers un fichier journal.
apiVersion: apps/v1 kind: Deployment metadata: name: backend-busybox labels: app: backend application: prod spec: replicas: 1 selector: matchLabels: app: backend application: prod template: metadata: name: backend-busybox labels: app: backend application: prod spec: containers: - args: - -c - mkdir -p /log; while true; do echo hello world; date; echo hello sls >> /log/busybox.log; sleep 1; done command: - /bin/sh image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28 imagePullPolicy: Always name: busybox
Étape 4 : Consulter les journaux dans la console SLS
Après application de la configuration, Simple Log Service (SLS) collecte et stocke les journaux de l'application exemple. Consultez les journaux des conteneurs directement depuis la console SLS.
Connectez-vous à la console SLS.
Dans la section Projects, cliquez sur le Project associé à votre cluster ACS (par défaut : k8s-log-{ACS_cluster_ID}) pour ouvrir la liste des Logstores.
-
Dans la liste, cliquez sur le nom du Logstore spécifié dans votre configuration de collecte des journaux pour afficher les journaux dans un nouvel onglet.
Dans cet exemple, la page de requête de journaux permet de consulter les journaux stdout (dans le Logstore test-stdout) ainsi que les journaux de fichiers du conteneur (dans le Logstore test-file).
Sur la page de requête du Logstore test-stdout, vous constatez que SLS a collecté 582 journaux. Les journaux bruts contiennent des champs tels que
_container_name_,_image_name_,_namespace_,_pod_name_,_source_(avec la valeurstdout) etcontent. Cela confirme la bonne collecte des journaux stdout du conteneur busybox.Les résultats de requête pour le Logstore test-file indiquent que les journaux de fichiers du conteneur busybox ont été collectés avec succès. Le chemin source est
/log/busybox.loget le contenu du journal estcontent: hello sls.
Informations complémentaires
Pour obtenir de l'aide sur le dépannage, consultez Dépanner les échecs de collecte des journaux Logtail.