En configurant un Appender Log4j dans le fichier YAML de votre charge de travail, vous pouvez envoyer directement les journaux des applications Java de votre cluster vers un projet Simple Log Service (SLS). Cette méthode permet une collecte de journaux sans agent.
Log4j est un framework de journalisation open source maintenu par Apache et conçu pour les applications Java. Ses composants principaux incluent les Appenders (cibles de sortie), les Layouts (formats de sortie) et les Filters.
Prérequis
-
Une paire AccessKey est disponible pour intégrer l'Appender Log4j à votre application.
Par mesure de sécurité, utilisez un utilisateur RAM plutôt que votre compte Alibaba Cloud et créez une paire AccessKey pour cet utilisateur RAM.
Étape 1 : Configurer l'Appender Log4j
Cette étape explique comment créer un projet SLS et un Logstore. Après avoir configuré l'Appender Log4j comme source de données pour le Logstore, votre application Java peut envoyer les journaux directement vers SLS.
Créez le projet SLS dans la même région que votre cluster. Lorsqu'ils se trouvent dans la même région, les données de journal sont transmises via le réseau interne, ce qui évite les coûts de bande passante publique et réduit la latence réseau.
Pour plus d'informations sur la facturation des projets SLS, consultez la section Présentation de la facturation .
-
Créez un projet SLS.
Cette section décrit uniquement les paramètres clés. Vous pouvez conserver les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez la page Gérer un projet.
Region : sélectionnez la même région que votre cluster ACK. Dans cet exemple, Chine (Hangzhou) est sélectionné.
Project Name : saisissez un nom de projet. Cet exemple utilise k8s-log4j.
-
Créez un Logstore dans le projet.
Dans cet exemple, le Logstore Name est k8s-logstore. Vous pouvez conserver les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez la page Créer un Logstore.
Une fois le k8s-logstore créé, suivez les instructions à l'écran pour ingérer les données.
-
Recherchez la carte d'ingestion Log4j, puis suivez les instructions à l'écran pour terminer l'ingestion.
Cet exemple utilise la configuration par défaut. Vous pouvez ajuster les paramètres en fonction de votre cas d'utilisation spécifique. Dans l'assistant de source de données Log4j, effectuez les étapes suivantes : Select a Logstore, Configure Data Source et Configure Search & Analysis. Dans la zone d'instructions, cliquez sur le lien View Help pour obtenir des conseils détaillés, puis cliquez sur Next pour terminer la configuration.
Étape 2 : Intégrer Log4j
Cette étape déploie une application Spring Boot d'exemple pour vous montrer comment intégrer le plug-in Appender Log4j dans une application Java. Après l'intégration, le conteneur transmet la configuration SLS via la variable d'environnement JAVA_OPTS au démarrage. Log4j lit automatiquement ces paramètres et envoie les journaux vers SLS en temps réel.
-
Téléchargez le fichier demo-deployment.yaml et configurez la variable d'environnement
JAVA_OPTS.Le fichier source est disponible à l'adresse demo-deployment.
Paramètres
JAVA_OPTS:-Dproject: le nom de votre projet SLS. Dans cet exemple, k8s-log4j.-Dlogstore: le nom de votre Logstore SLS. Dans cet exemple, k8s-logstore.-Dendpoint: le point de terminaison de service de la région où se trouve votre projet. Pour plus d'informations, consultez la page Points de terminaison de service. Cet exemple utilise cn-hangzhou.log.aliyuncs.com.-Daccess_key_id: remplacez par votre ID AccessKey.-Daccess_key: remplacez par votre secret AccessKey.
-
Créez le Deployment.
kubectl create -f demo-deployment.yaml -
Téléchargez le fichier demo-service.yaml. Vous pouvez conserver la configuration par défaut.
Le fichier source est disponible à l'adresse demo-Service.
-
Déployez le fichier demo-service.yaml pour créer le Service.
kubectl create -f demo-service.yaml
Étape 3 : Tester la collecte des journaux
Après le déploiement du Deployment et du Service, vous pouvez vérifier que les journaux sont écrits dans SLS en accédant au service via son adresse IP externe (EXTERNAL-IP), ce qui génère des entrées de journal.
-
Consultez l'
EXTERNAL-IPdu Service.kubectl get svcRésultat attendu :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE log4j-appender-demo-spring-boot-svc LoadBalancer 172.21.XX.XX 120.55.XXX.XXX 8080:30398/TCP 1h -
Accédez au point de terminaison
/loginpour générer une entrée de journal de test.Remplacez
K8s_SERVICE_IPparEXTERNAL-IP.curl http://${K8S_SERVICE_IP}:8080/login?name=brucePour l'ensemble complet des API, consultez la page GitHub log4j-appender-demo .
Étape 4 : Consulter les journaux
Vous pouvez vous connecter à la console SLS pour interroger et analyser les journaux collectés.
Connectez-vous à la console Simple Log Service.
Dans la section Projects, cliquez sur le projet cible pour ouvrir sa page de détails.
-
Cliquez sur l'icône
située à droite du nom du Logstore et sélectionnez Query and Analysis pour afficher les journaux collectés depuis votre cluster.Les résultats de la requête affichent l'entrée de journal, où le champ
messagecontientUser login successfully, requestID=hIAgSGKGyA name=bruce. Cela confirme que les journaux de l'application ont été collectés avec succès vers SLS.