Vous pouvez consulter les journaux de job sur la page Job Insight de la console Flink, ou les exporter vers un service de stockage externe tel qu'OSS, SLS ou Kafka, et configurer le niveau de journalisation pour la sortie. Cette rubrique vous explique la marche à suivre.
Notes
Après avoir configuré l'exportation des journaux vers OSS, SLS ou Kafka, redémarrez le job.
-
Si vous configurez l'exportation des journaux vers un autre service de stockage sans désactiver la fonctionnalité d'archivage des journaux, ceux-ci continueront d'être enregistrés dans le stockage OSS ou entièrement géré configuré pour votre espace de travail. Si vous désactivez l'archivage des journaux, vous ne pourrez plus consulter les journaux de job dans la console Flink.
Sur la page deployment details, dans la section log configuration, utilisez le commutateur de la ligne log archiving pour activer ou désactiver cette fonctionnalité.
Utilisez
${secret_values.xxxx}dans la configuration des journaux pour faire référence aux variables stockées dans la gestion des variables. Pour plus d'informations, consultez la section variables de projet.
Configurer l'exportation des journaux pour un seul job
Console
-
Accédez à la page de configuration des journaux d'un déploiement.
Connectez-vous à la console Realtime Compute for Apache Flink.
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console.
Dans le volet de navigation de gauche, cliquez sur . Cliquez ensuite sur le nom du déploiement cible.
Sous l'onglet Configuration , dans la section Logging , cliquez sur Edit à droite.
Pour Logging Profile , sélectionnez Custom Template .
Cliquez sur .
Cliquez sur Add Appender et sélectionnez une destination.
-
Configurez les paramètres de l'appender sélectionné.
Pour acheminer les journaux de différents niveaux vers différentes destinations, configurez des règles de filtrage pour l'appender. Pour plus d'informations, consultez la section Configurer le filtrage des journaux en fonction des niveaux.
SLS
Paramètre
Description
name
Nom personnalisé pour l'appender.
type
Type d'appender. Cette valeur est fixée à
SLS. Ne modifiez pas cette valeur.pattern
Format de sortie des journaux.
La valeur par défaut est
%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n, qui génère des entrées de journal telles que2023-10-01 14:23:45,678{GMT+8} INFO com.example.MyClass - This is a test log message.flushIntervalSeconds
Intervalle, en secondes, auquel les données de journal sont vidées vers la destination.
flushIntervalEventCount
Nombre d'entrées de journal à regrouper avant l'écriture dans la destination de stockage.
RemarqueSi
flushIntervalSecondsetflushIntervalEventCountsont tous deux configurés, l'opération d'écriture est déclenchée lorsque l'un ou l'autre seuil est atteint, selon celui qui survient en premier.authenticationMode
-
AccessKey
-
Jeton SLS
RemarqueSi vous sélectionnez Jeton SLS, vous ne pouvez exporter les journaux que vers un Logstore dans un Project situé dans la même région que votre espace de travail Flink. Cette fonctionnalité est prise en charge uniquement à partir de VVR 11.5.
project
Nom du Project SLS.
logStore
Nom du Logstore.
endpoint
Endpoint privé pour la région du service SLS. Pour plus d'informations, consultez la section Endpoints.
accessKeyId
ID de clé d'accès (AccessKey ID) et secret de clé d'accès (AccessKey Secret) du compte utilisé pour le service SLS. Pour savoir comment obtenir une paire de clés d'accès, consultez la section Obtenir une paire de clés d'accès.
Afin d'éviter les risques de sécurité liés à l'utilisation de clés en texte clair, nous vous recommandons de stocker les valeurs AccessKey dans des variables de namespace. Pour plus d'informations, consultez la section Variables de namespace.
RemarqueSi vos services SLS et Realtime Compute for Apache Flink se trouvent dans des comptes Alibaba Cloud différents, vous devez accorder au compte Flink l'autorisation d'écrire dans SLS. Pour plus de détails, consultez la section Créer une politique RAM personnalisée. Les exemples de politiques suivants sont fournis :
accessKeySecret
OSS
Les valeurs par défaut des paramètres numériques sont les suivantes : flushIntervalSeconds est
10, flushIntervalEventCount est100et rollingBytes est1048576.Paramètre
Description
name
Nom personnalisé pour l'appender.
type
Type d'appender. Cette valeur est fixée à
OSS. Ne modifiez pas cette valeur.pattern
Format de sortie des journaux.
La valeur par défaut est
%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n.baseUri
Nom du bucket OSS.
endpoint
Endpoint de la région de votre service OSS. Pour plus d'informations, consultez la section Régions et endpoints.
Utilisez l'endpoint de la colonne Endpoint (region) correspondant à la ligne Access from ECS over the VPC (internal network).
accessKeyId
ID de clé d'accès (AccessKey ID) et secret de clé d'accès (AccessKey Secret) du compte utilisé pour le service OSS. Pour savoir comment obtenir une paire de clés d'accès, consultez la section Obtenir une paire de clés d'accès.
Afin d'éviter les risques de sécurité liés à l'utilisation de clés en texte clair, nous vous recommandons de stocker les valeurs AccessKey dans des variables de namespace. Pour plus d'informations, consultez la section Variables de namespace.
RemarqueCes paramètres sont requis uniquement si le bucket OSS de destination se trouve dans un compte Alibaba Cloud différent de celui de votre service Flink. S'ils se trouvent dans le même compte, supprimez ces paramètres de la configuration.
accessKeySecret
flushIntervalSeconds
Intervalle, en secondes, auquel les données de journal sont vidées vers la destination.
flushIntervalEventCount
Nombre d'entrées de journal à regrouper avant l'écriture dans la destination de stockage.
RemarqueSi
flushIntervalSecondsetflushIntervalEventCountsont tous deux configurés, l'opération d'écriture est déclenchée lorsque l'un ou l'autre seuil est atteint, selon celui qui survient en premier.rollingBytes
Taille maximale d'un fichier journal unique dans OSS. Lorsque cette taille est atteinte, les données suivantes sont écrites dans un nouveau fichier journal.
Kafka
RemarqueLes clusters Kafka avec authentification Kerberos activée ne sont pas pris en charge.
-
Prérequis
Étant donné que le plug-in KafkaAppender est chargé par le chargeur de classes de plug-in Flink, déclarez explicitement son chemin de package dans la configuration Flink. Cela permet à l'application de charger le plug-in pour le déploiement actuel.
Sur la page Deployments , cliquez sur le nom de votre déploiement. Sous l'onglet Configuration , dans la section Parameters , ajoutez le paramètre suivant au champ Other Configuration .
plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender -
Configuration
Paramètre
Description
name
Nom personnalisé pour l'appender.
type
Type d'appender. Cette valeur est fixée à
KafkaVVP. Ne modifiez pas cette valeur.pattern
Format de sortie des journaux.
La valeur par défaut est
%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n.bootstrap.servers
Adresses des brokers Kafka.
acks
Nombre de réplicas de partition devant recevoir un message avant que le producteur ne considère l'écriture comme réussie. Pour plus d'informations, consultez la section acks.
buffer.memory
Mémoire totale, en octets, que le producteur peut utiliser pour mettre en mémoire tampon les enregistrements.
retries
Nombre de tentatives de renvoi d'un message par le producteur après un échec transitoire.
compression.type
Type de compression pour les données générées par le producteur. Valeurs valides :
none,gzip,snappy,lz4etzstd.
-
Cliquez sur Save .
En haut de la page, cliquez sur Start .
Méthode XML
-
Pour configurer la journalisation d'un déploiement, accédez à sa page de configuration des journaux.
Connectez-vous à la console Realtime Compute for Apache Flink.
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console .
Dans le volet de navigation de gauche, cliquez sur , puis cliquez sur le nom du déploiement cible.
Sous l'onglet Configuration , dans la section Logging , cliquez sur Edit .
Définissez Logging Profile sur Custom Template .
-
Configurez la sortie des journaux.
Selon votre destination de stockage, copiez la configuration correspondante, collez-la dans la zone de saisie et mettez à jour les paramètres avec vos informations de stockage. Pour acheminer les journaux de différents niveaux vers différentes destinations, configurez des règles de filtrage pour chaque Appender. Pour plus d'informations, consultez la section Configurer les sorties de journaux pour différents niveaux .
OSS
<?xml version="1.0" encoding="UTF-8"?> <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" strict="true" packages="com.ververica.platform.logging.appender" status="WARN"> <Appenders> <Appender name="StdOut" type="Console"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> </Appender> <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> <Policies> <SizeBasedTriggeringPolicy size="20 MB"/> </Policies> <DefaultRolloverStrategy max="4"/> </Appender> <Appender name="OSS" type="OSS"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ --> <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line --> <Property name="baseUri">oss://YOUR-BUCKET-NAME/</Property> <Property name="endpoint">https://YOUR-ENDPOINT</Property> <Property name="accessKeyId">${secret_values.accessKeyId}</Property> <Property name="secretAccessKey">${secret_values.accessKeySecret}</Property> <Property name="flushIntervalSeconds">10</Property> <Property name="flushIntervalEventCount">100</Property> <Property name="rollingBytes">10485760</Property> </Appender> <Appender name="StdOutErrConsoleAppender" type="Console"> <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/> </Appender> <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i"> <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/> <Policies> <SizeBasedTriggeringPolicy size="1 GB"/> </Policies> <DefaultRolloverStrategy max="2"/> </Appender> <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i"> <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/> <Policies> <SizeBasedTriggeringPolicy size="1 GB"/> </Policies> <DefaultRolloverStrategy max="2"/> </Appender> </Appenders> <Loggers> <Logger level="INFO" name="org.apache.hadoop"/> <Logger level="INFO" name="org.apache.kafka"/> <Logger level="INFO" name="org.apache.zookeeper"/> <Logger level="INFO" name="akka"/> <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/> <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/> <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false"> <AppenderRef ref="StdOutFileAppender"/> <AppenderRef ref="StdOutErrConsoleAppender"/> </Logger> <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false"> <AppenderRef ref="StdErrFileAppender"/> <AppenderRef ref="StdOutErrConsoleAppender"/> </Logger> {%- for name, level in userConfiguredLoggers -%} <Logger level="{{ level }}" name="{{ name }}"/> {%- endfor -%} <Root level="{{ rootLoggerLogLevel }}"> <AppenderRef ref="StdOut"/> <AppenderRef ref="RollingFile"/> <AppenderRef ref="OSS"/> </Root> </Loggers> </Configuration>Paramètre
Description
YOUR-BUCKET-NAME
Remplacez cette valeur par le nom de votre bucket OSS.
YOUR-ENDPOINT
Remplacez cette valeur par votre endpoint OSS. Pour plus d'informations, consultez la section Régions et endpoints.
Il s'agit de la valeur de la colonne Endpoint dans la ligne Access from ECS over the VPC (internal network).
YOUR-OSS-ACCESSKEYID
Utilisez l'ID de clé d'accès (AccessKey ID) et le secret de clé d'accès (AccessKey Secret) de votre compte OSS. Pour savoir comment les obtenir, consultez la section Obtenir une paire de clés d'accès.
Pour éviter d'exposer les identifiants en texte clair, cet exemple utilise des variables de namespace pour spécifier les valeurs AccessKey. Pour plus d'informations, consultez la section Variables de namespace.
RemarqueCes paramètres sont requis uniquement si le bucket OSS et votre service Realtime Compute for Apache Flink se trouvent dans des comptes différents. Si le bucket se trouve dans le même compte, vous pouvez omettre ces paramètres.
YOUR-OSS-ACCESSKEYSECRET
flushIntervalSeconds
Intervalle, en secondes, auquel les données de journal sont écrites dans la destination de stockage.
flushIntervalEventCount
Nombre d'entrées de journal à mettre en mémoire tampon avant l'écriture des données dans la destination.
RemarqueSi
flushIntervalSecondsetflushIntervalEventCountsont tous deux configurés, l'opération d'écriture est déclenchée lorsque l'un ou l'autre seuil est atteint.rollingBytes
Taille maximale d'un fichier journal unique dans OSS. Lorsqu'un fichier atteint cette taille, un nouveau fichier journal est créé pour les journaux suivants.
RemarqueDans un job JAR, le code métier est chargé par un chargeur de classes distinct, différent de celui du système de journalisation Flink. Par défaut, le plug-in de journalisation valide strictement les chargeurs de classes (
isInitStrictlyest défini par défaut surtrue), de sorte que ces journaux sont ignorés et ne sont pas exportés vers OSS. Pour collecter les journaux imprimés par le code métier dans un job JAR, ajoutez la configuration suivante à l'Appender OSS :<Property name="isInitStrictly">false</Property>SLS
<?xml version="1.0" encoding="UTF-8"?> <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" strict="true" packages="com.ververica.platform.logging.appender" status="WARN"> <Appenders> <Appender name="StdOut" type="Console"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> </Appender> <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> <Policies> <SizeBasedTriggeringPolicy size="5 MB"/> </Policies> <DefaultRolloverStrategy max="1"/> </Appender> <Appender name="SLS" type="SLS"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ --> <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line --> <Property name="project">YOUR-SLS-PROJECT</Property> <Property name="logStore">YOUR-SLS-LOGSTORE</Property> <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> <Property name="accessKeyId">${secret_values.accessKeyId}</Property> <Property name="accessKeySecret">${secret_values.accessKeySecret}</Property> <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property> <Property name="deploymentName">{{ deploymentName }}</Property> <Property name="flushIntervalSeconds">10</Property> <Property name="flushIntervalEventCount">100</Property> </Appender> <Appender name="StdOutErrConsoleAppender" type="Console"> <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/> </Appender> <Appender name="StdOutFileAppender" type="RollingFile" fileName="${sys:stdout.file}" filePattern="${sys:stdout.file}.%i"> <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/> <Policies> <SizeBasedTriggeringPolicy size="1 GB"/> </Policies> <DefaultRolloverStrategy max="2"/> </Appender> <Appender name="StdErrFileAppender" type="RollingFile" fileName="${sys:stderr.file}" filePattern="${sys:stderr.file}.%i"> <Layout pattern="%m" type="PatternLayout" charset="UTF-8"/> <Policies> <SizeBasedTriggeringPolicy size="1 GB"/> </Policies> <DefaultRolloverStrategy max="2"/> </Appender> </Appenders> <Loggers> <Logger level="INFO" name="org.apache.hadoop"/> <Logger level="INFO" name="org.apache.kafka"/> <Logger level="INFO" name="org.apache.zookeeper"/> <Logger level="INFO" name="akka"/> <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/> <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> <Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/> <Logger level="INFO" name="StdOutErrRedirector.StdOut" additivity="false"> <AppenderRef ref="StdOutFileAppender"/> <AppenderRef ref="StdOutErrConsoleAppender"/> </Logger> <Logger level="INFO" name="StdOutErrRedirector.StdErr" additivity="false"> <AppenderRef ref="StdErrFileAppender"/> <AppenderRef ref="StdOutErrConsoleAppender"/> </Logger> {%- for name, level in userConfiguredLoggers -%} <Logger level="{{ level }}" name="{{ name }}"/> {%- endfor -%} <Root level="{{ rootLoggerLogLevel }}"> <AppenderRef ref="StdOut"/> <AppenderRef ref="RollingFile"/> <AppenderRef ref="SLS"/> </Root> </Loggers> </Configuration>RemarqueLes propriétés
namespace,deploymentId,jobIdetdeploymentNamedans le code sont des variables Twig. Ne les modifiez pas. Sinon, le démarrage du job échouera.Paramètre
Description
YOUR-SLS-PROJECT
Remplacez cette valeur par le nom de votre Project SLS.
YOUR-SLS-LOGSTORE
Remplacez cette valeur par le nom de votre Logstore SLS.
YOUR-SLS-ENDPOINT
Remplacez cette valeur par l'endpoint privé de la région de votre service SLS. Pour plus d'informations, consultez la section Endpoints de service.
YOUR-SLS-ACCESSKEYID
Utilisez l'ID de clé d'accès (AccessKey ID) et le secret de clé d'accès (AccessKey Secret) de votre compte SLS. Pour savoir comment les obtenir, consultez la section Obtenir une paire de clés d'accès.
Pour éviter d'exposer les identifiants en texte clair, cet exemple utilise des variables de namespace pour spécifier les valeurs AccessKey. Pour plus d'informations, consultez la section Variables de namespace.
RemarqueSi vos services SLS et Realtime Compute for Apache Flink se trouvent dans des comptes différents, vous devez accorder au compte Flink des autorisations d'écriture dans SLS. Pour plus d'informations, consultez la section Créer une politique RAM personnalisée. Utilisez l'une des politiques suivantes :
-
Portée SLS illimitée
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:Get*", "log:PostLogStoreLogs" ], "Resource": "*" } ] } -
Limité à une ressource SLS spécifique. Exemple :
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:PostLogStoreLogs", "log:GetLogStore" ], "Resource": "acs:log:cn-beijing:152940222687****:project/test-vvp-sls/logstore/test-ltest" } ] }
YOUR-SLS-ACCESSKEYSECRET
flushIntervalSeconds
Intervalle, en secondes, auquel les données de journal sont écrites dans la destination de stockage.
flushIntervalEventCount
Nombre d'entrées de journal à mettre en mémoire tampon avant l'écriture des données dans la destination.
RemarqueSi
flushIntervalSecondsetflushIntervalEventCountsont tous deux configurés, l'opération d'écriture est déclenchée lorsque l'un ou l'autre seuil est atteint.RemarqueDans un job JAR, le code métier est chargé par un chargeur de classes distinct, différent de celui du système de journalisation Flink. Par défaut, le plug-in de journalisation valide strictement les chargeurs de classes (
isInitStrictlyest défini par défaut surtrue), de sorte que ces journaux sont ignorés et ne sont pas exportés vers SLS. Pour collecter les journaux imprimés par le code métier dans un job JAR, ajoutez la configuration suivante à l'Appender SLS :<Property name="isInitStrictly">false</Property>Kafka
RemarqueL'authentification Kerberos pour les clusters Kafka n'est actuellement pas prise en charge.
-
Prérequis
Realtime Compute for Apache Flink fournit un plug-in de journalisation KafkaAppender. Étant donné que Flink charge ce plug-in à l'aide d'un chargeur de classes de plug-in, spécifiez explicitement son chemin de package afin que votre application puisse le charger correctement. Vous pouvez procéder de l'une des manières suivantes :
-
Configurer un modèle de job (affecte tous les déploiements de cet espace de travail)
Sur la page Configurations de la console, ajoutez le code suivant au champ other configuration .
plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender -
Configurer un seul déploiement (affecte uniquement le déploiement actuel)
Sur la page Deployments , cliquez sur le nom du déploiement cible. Sous l'onglet Configuration , dans la section Parameters , ajoutez le code suivant au champ other configuration .
plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
-
-
Configuration de la journalisation
<?xml version="1.0" encoding="UTF-8"?> <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" strict="true" packages="com.ververica.platform.logging.appender" status="WARN"> <Appenders> <Appender name="StdOut" type="Console"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/> </Appender> <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/> <Policies> <SizeBasedTriggeringPolicy size="20 MB"/> </Policies> <DefaultRolloverStrategy max="4"/> </Appender> <Appender type="KafkaVVP" name="KafkaVVPAppender" topic="YOUR-TOPIC-NAME"> <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n"/> <Property name="bootstrap.servers">YOUR-KAFKA-BOOTSTRAP-SERVERS</Property> <Property name="acks">YOUR-ACKS-VALUE</Property> <Property name="buffer.memory">YOUR-BUFFER-MEMORY-SIZE</Property> <Property name="retries">YOUR-RETRIES-NUMBER</Property> <Property name="compression.type">YOUR-COMPRESSION-TYPE</Property> </Appender> <Appender type="Async" name="AsyncAppender"> <AppenderRef ref="KafkaVVPAppender"/> </Appender> </Appenders> <Loggers> <Logger level="INFO" name="org.apache.hadoop"/> <Logger level="INFO" name="org.apache.kafka"/> <Logger level="INFO" name="org.apache.zookeeper"/> <Logger level="INFO" name="akka"/> <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/> <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> {%- for name, level in userConfiguredLoggers -%} <Logger level="{{ level }}" name="{{ name }}"/> {%- endfor -%} <Root level="{{ rootLoggerLogLevel }}"> <AppenderRef ref="StdOut"/> <AppenderRef ref="RollingFile"/> <AppenderRef ref="AsyncAppender"/> </Root> </Loggers> </Configuration>Paramètre
Description
YOUR-TOPIC-NAME
Nom du topic Kafka de destination.
YOUR-KAFKA-BOOTSTRAP-SERVERS
Adresses des brokers Kafka de destination.
YOUR-ACKS-VALUE
Nombre de réplicas de partition devant acquitter un message avant que le producteur ne considère l'écriture comme réussie. Pour plus d'informations, consultez la section acks .
YOUR-BUFFER-MEMORY-SIZE
Taille du tampon du producteur, en octets.
YOUR-RETRIES-NUMBER
Nombre de tentatives après un échec d'envoi.
YOUR-COMPRESSION-TYPE
Type de compression utilisé par le producteur pour les messages. Les valeurs valides incluent none, gzip, snappy, lz4 et zstd.
-
Cliquez sur Save .
Cliquez sur Start en haut de la page.
Configurer l'exportation des journaux pour un namespace
Utilisez un modèle pour configurer la destination d'exportation des journaux par défaut vers OSS, SLS ou Kafka pour tous les jobs d'un namespace.
Une fois ce modèle configuré, les journaux de tous les nouveaux jobs de ce namespace sont exportés vers OSS, SLS ou Kafka.
-
Le chargeur de classes de plug-in Flink charge le plug-in de journalisation KafkaAppender fourni par Realtime Compute for Apache Flink. Avant de pouvoir utiliser ce plug-in, spécifiez son chemin de classe pour permettre à votre application Flink de le charger. Pour ce faire, dans la console de développement Realtime Compute for Apache Flink, accédez à la page Configurations et ajoutez le code suivant à la section Other Configuration .
plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
-
Accédez à la page de configuration du modèle de journal de job.
Connectez-vous à la console Realtime Compute for Apache Flink .
Dans la colonne Actions de l'espace de travail cible, cliquez sur Console . Dans la console de développement Realtime Compute for Apache Flink , sélectionnez le namespace cible en haut de la page.
Dans le volet de navigation de gauche, cliquez sur .
Sous l'onglet Deployment Defaults , sélectionnez un type de job.
Dans la section Logging , définissez Logging Profile sur Custom Template .
-
Configurez la destination d'exportation des journaux pour tous les jobs du namespace.
Pour le code requis, consultez la section Configurer l'exportation des journaux pour un seul job (XML) .
Cliquez sur save changes .
Configurer les sorties de journaux par niveau
Utilisez le ThresholdFilter de Log4j2 pour configurer différentes règles de filtrage pour chaque appender en fonction du niveau de journalisation. Cette configuration offre plusieurs avantages :
Flexibilité : vous pouvez définir différents niveaux de journalisation pour différentes destinations de stockage externes.
Efficacité : réduit le traitement et le transfert inutiles des journaux, améliorant ainsi les performances du système.
Clarté : des configurations séparées clarifient le flux des journaux et simplifient la gestion des niveaux.
Procédez comme suit :
Dans la section logging , définissez Logging Profile sur Custom Template .
-
Configurez la sortie des journaux.
L'exemple suivant montre comment configurer le système pour envoyer les journaux de niveau INFO et supérieurs à la console de développement Realtime Compute for Apache Flink, tout en envoyant uniquement les journaux de niveau ERROR et supérieurs à Simple Log Service (SLS).
<?xml version="1.0" encoding="UTF-8"?> <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" strict="true" status="WARN"> <Appenders> <!-- Console Appender configured to output logs of INFO level and higher --> <Appender name="StdOut" type="Console"> <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" charset="UTF-8"/> </Appender> <!-- RollingFile Appender logs messages at the root logger's level (INFO) and higher --> <Appender name="RollingFile" type="RollingFile"> <!-- Configuration remains unchanged --> <!-- ... --> </Appender> <!-- SLS Appender configured to output only ERROR level and above logs --> <Appender name="SLS" type="SLS"> <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" charset="UTF-8"/> <!-- SLS specific properties --> <Property name="namespace">YOUR_NAMESPACE</Property> <Property name="project">YOUR_SLS_PROJECT</Property> <Property name="logStore">YOUR_SLS_LOGSTORE</Property> <Property name="endpoint">YOUR_SLS_ENDPOINT</Property> <!-- Access credentials and other properties --> <!-- ... --> </Appender> <!-- Other Appenders definitions remain unchanged --> <!-- ... --> </Appenders> <Loggers> <!-- Define specific loggers that use the StdOut and SLS appenders --> <Logger name="StdOutLogger" level="INFO" additivity="false"> <AppenderRef ref="StdOut"/> </Logger> <Logger name="SLSLogger" level="ERROR" additivity="false"> <AppenderRef ref="SLS"/> </Logger> <!-- Other Loggers definitions with their specific configurations --> <!-- ... --> <!-- The Root logger sends output to StdOut and RollingFile, but not SLS, to avoid duplicate logs. --> <Root level="INFO"> <AppenderRef ref="StdOut"/> <AppenderRef ref="RollingFile"/> <!-- Exclude SLS from Root to prevent duplicate logging in case of other loggers --> </Root> </Loggers> </Configuration>Dans cette configuration :
Console Appender : utilise un ThresholdFilter pour garantir que les journaux de niveau INFO ou supérieur sont exportés vers la console de développement.
-
L'Appender SLS utilise un
ThresholdFilterpour envoyer uniquement les journaux de niveau ERROR et supérieur à SLS. Pour plus de détails sur les propriétés de l'Appender SLS, consultez la section Configurer la sortie vers SLS . Remplacez les espaces réservés tels queYOUR_NAMESPACEetYOUR_SLS_PROJECTpar vos informations de projet SLS réelles.RemarqueSi le type d'Appender SLS n'est pas SLS mais un appender personnalisé, assurez-vous d'utiliser le type correct et que la classe de l'appender dispose de la logique requise pour se connecter à SLS.
StdOutLogger et SLSLogger : ils envoient des journaux uniquement vers l'Appender StdOut et l'Appender SLS respectivement, et chacun possède ses propres restrictions de niveau de journalisation.
Root Logger : ce logger est configuré avec un Appender StdOut et un Appender RollingFile, mais n'inclut pas d'Appender SLS. Cela permet d'éviter d'envoyer des journaux en double à SLS si un logger spécifique est déjà configuré pour le faire.
Pour plus d'informations sur les paramètres de configuration Log4j, consultez la documentation Apache Log4j .
Rubriques connexes
Un job ne démarre pas après la configuration de la journalisation vers SLS
Pour afficher les journaux de job, consultez la section Afficher les journaux de démarrage et d'exécution .
Si un job ne démarre pas ou s'exécute de manière anormale, consultez la section Afficher les journaux d'exception .
Si les journaux de niveau
INFOsont insuffisants pour le dépannage, consultez la section Modifier dynamiquement le niveau de journalisation d'un job en cours d'exécution .Pour afficher les événements d'audit Flink avec ActionTrail, consultez la section Afficher les événements d'audit Flink .