All Products
Search
Document Center

Realtime Compute for Apache Flink:Konfigurasikan ekspor log pekerjaan

Last Updated:Aug 05, 2026

Anda dapat melihat log pekerjaan pada halaman insight pekerjaan di Konsol Flink atau mengekspornya ke layanan penyimpanan eksternal seperti OSS, SLS, atau Kafka serta mengonfigurasi tingkat log untuk output tersebut. Topik ini menjelaskan caranya.

Catatan

  • Setelah mengonfigurasi ekspor log ke OSS, SLS, atau Kafka, Anda harus melakukan restart pekerjaan.

  • Jika Anda mengonfigurasi ekspor log ke layanan penyimpanan lain tetapi tidak menonaktifkan fitur pengarsipan log, log akan tetap disimpan ke OSS atau penyimpanan yang dikelola sepenuhnya yang dikonfigurasi untuk ruang kerja Anda. Jika Anda menonaktifkan pengarsipan log, Anda tidak dapat lagi melihat log pekerjaan di Konsol Flink.

    Pada halaman detail penerapan, di bagian konfigurasi log, gunakan toggle pada baris pengarsipan log untuk mengaktifkan atau menonaktifkan fitur ini.

  • Anda dapat menggunakan ${secret_values.xxxx} dalam konfigurasi log untuk mereferensikan variabel yang disimpan di manajemen variabel. Untuk informasi selengkapnya, lihat variabel proyek.

Konfigurasikan ekspor log pekerjaan tunggal

Konsol

  1. Buka halaman konfigurasi log suatu penerapan.

    1. Masuk ke Konsol Realtime Compute for Apache Flink.

    2. Pada kolom Actions ruang kerja target, klik Console.

    3. Di panel navigasi sebelah kiri, klik O&M > Deployments. Lalu, klik nama penerapan target.

    4. Pada tab Configuration, di bagian Logging, klik Edit di sebelah kanan.

    5. Untuk Logging Profile, pilih Custom Template.

  2. Klik Copy from System Template > default.

  3. Klik Add Appender dan pilih destinasi.

  4. Konfigurasikan parameter untuk appender yang dipilih.

    Untuk mengarahkan log dengan tingkat berbeda ke destinasi berbeda, konfigurasikan aturan pemfilteran untuk appender tersebut. Untuk informasi selengkapnya, lihat Konfigurasikan pemfilteran log berdasarkan tingkat log.

    SLS

    Parameter

    Deskripsi

    name

    Nama kustom untuk appender.

    type

    Jenis appender. Nilai ini tetap SLS. Jangan ubah nilai ini.

    pattern

    Format output untuk log.

    Nilai default adalah %d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n, yang menghasilkan entri log seperti 2023-10-01 14:23:45,678{GMT+8} INFO com.example.MyClass - This is a test log message.

    flushIntervalSeconds

    Interval, dalam detik, saat data log di-flush ke destinasi.

    flushIntervalEventCount

    Jumlah entri log yang dibatch sebelum ditulis ke destinasi penyimpanan.

    Catatan

    Jika flushIntervalSeconds dan flushIntervalEventCount keduanya dikonfigurasi, operasi penulisan dipicu ketika salah satu ambang batas tercapai, mana yang lebih dulu.

    authenticationMode

    • AccessKey

    • SLS Token

      Catatan

      Jika Anda memilih SLS Token, Anda hanya dapat mengekspor log ke Logstore dalam Proyek yang berada di wilayah yang sama dengan ruang kerja Flink Anda. Fitur ini didukung hanya di VVR 11.5 dan versi setelahnya.

    project

    Nama Proyek SLS.

    logStore

    Nama Logstore.

    endpoint

    Titik akhir pribadi untuk wilayah layanan SLS. Untuk informasi selengkapnya, lihat Endpoints.

    accessKeyId

    ID AccessKey dan Rahasia AccessKey akun yang digunakan untuk layanan SLS. Untuk informasi tentang cara mendapatkan pasangan Kunci Akses, lihat Dapatkan pasangan Kunci Akses.

    Untuk menghindari risiko keamanan penggunaan kunci dalam teks biasa, kami menyarankan menyimpan nilai AccessKey dalam variabel namespace. Untuk informasi selengkapnya, lihat Variabel namespace.

    Catatan

    Jika layanan SLS dan Realtime Compute for Apache Flink Anda berada di akun Alibaba Cloud yang berbeda, Anda harus memberikan izin kepada akun Flink untuk menulis ke SLS. Untuk detailnya, lihat Buat kebijakan RAM kustom. Berikut contoh kebijakannya:

    Cakupan SLS tanpa batasan

    {
    
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "log:Get*",
                    "log:PostLogStoreLogs"
                ],
                "Resource": "*"
            }
        ]
    }

    Cakupan sumber daya SLS tertentu

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "log:PostLogStoreLogs",
                    "log:GetLogStore"
                ],
                "Resource": "acs:log:cn-beijing:152940222687****:project/test-vvp-sls/logstore/test-ltest"
            }
        ]
    }

    accessKeySecret

    OSS

    Nilai default untuk parameter numerik adalah: flushIntervalSeconds bernilai 10, flushIntervalEventCount bernilai 100, dan rollingBytes bernilai 1048576.

    Parameter

    Deskripsi

    name

    Nama kustom untuk appender.

    type

    Jenis appender. Nilai ini tetap OSS. Jangan ubah nilai ini.

    pattern

    Format output untuk log.

    Nilai default adalah %d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n.

    baseUri

    Nama bucket OSS.

    endpoint

    Titik akhir untuk wilayah layanan OSS Anda. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.

    Gunakan titik akhir dari kolom Endpoint (region) yang sesuai dengan baris Access from ECS over the VPC (internal network).

    accessKeyId

    ID AccessKey dan Rahasia AccessKey akun yang digunakan untuk layanan OSS. Untuk informasi tentang cara mendapatkan pasangan Kunci Akses, lihat Dapatkan pasangan Kunci Akses.

    Untuk menghindari risiko keamanan penggunaan kunci dalam teks biasa, kami menyarankan menyimpan nilai AccessKey dalam variabel namespace. Untuk informasi selengkapnya, lihat Variabel namespace.

    Catatan

    Parameter ini hanya diperlukan jika bucket OSS tujuan berada di akun Alibaba Cloud yang berbeda dengan layanan Flink Anda. Jika berada di akun yang sama, hapus parameter ini dari konfigurasi.

    accessKeySecret

    flushIntervalSeconds

    Interval, dalam detik, saat data log di-flush ke destinasi.

    flushIntervalEventCount

    Jumlah entri log yang dibatch sebelum ditulis ke destinasi penyimpanan.

    Catatan

    Jika flushIntervalSeconds dan flushIntervalEventCount keduanya dikonfigurasi, operasi penulisan dipicu ketika salah satu ambang batas tercapai, mana yang lebih dulu.

    rollingBytes

    Ukuran maksimum file log tunggal di OSS. Saat ukuran ini tercapai, data selanjutnya ditulis ke file log baru.

    Kafka

    Catatan

    Kluster Kafka dengan otentikasi Kerberos yang diaktifkan tidak didukung.

    • Prasyarat

      Karena plug-in KafkaAppender dimuat oleh class loader plug-in Flink, Anda harus secara eksplisit mendeklarasikan path paketnya dalam konfigurasi Flink agar aplikasi dapat memuat plug-in untuk penerapan saat ini.

      Pada halaman Deployments, klik nama penerapan Anda. Pada tab Configuration, di bagian Additional Flink Configuration, tambahkan parameter berikut ke bidang Other Configuration.

      plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
    • Konfigurasi

      Parameter

      Deskripsi

      name

      Nama kustom untuk appender.

      type

      Jenis appender. Nilai ini tetap KafkaVVP. Jangan ubah nilai ini.

      pattern

      Format output untuk log.

      Nilai default adalah %d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n.

      bootstrap.servers

      Alamat broker Kafka.

      acks

      Jumlah replika partisi yang harus menerima pesan sebelum produsen menganggap penulisan berhasil. Untuk informasi selengkapnya, lihat acks.

      buffer.memory

      Total memori, dalam byte, yang dapat digunakan produsen untuk menyangga catatan.

      retries

      Jumlah kali produsen akan mencoba mengirim ulang pesan setelah kegagalan sementara.

      compression.type

      Jenis kompresi untuk data yang dihasilkan oleh produsen. Nilai yang valid: none, gzip, snappy, lz4, dan zstd.

  5. Klik Save.

  6. Di bagian atas halaman, klik Start.

Metode XML

  1. Untuk mengonfigurasi logging untuk suatu penerapan, buka halaman konfigurasi log-nya.

    1. Masuk ke Konsol Realtime Compute for Apache Flink.

    2. Pada kolom Actions ruang kerja target, klik Console.

    3. Di panel navigasi sebelah kiri, klik O&M > Deployments, lalu klik nama penerapan target.

    4. Pada tab Deployment Details, di bagian Logging, klik Edit.

    5. Atur Logging Profile menjadi Custom Template.

  2. Konfigurasikan output log.

    Bergantung pada destinasi penyimpanan Anda, salin konfigurasi yang sesuai, tempelkan ke kotak input, dan perbarui parameter dengan detail penyimpanan Anda. Untuk mengarahkan log dengan tingkat berbeda ke destinasi berbeda, Anda dapat mengonfigurasi aturan pemfilteran untuk setiap Appender. Untuk informasi selengkapnya, lihat Konfigurasikan output log untuk tingkat log berbeda.

    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>

    Parameter

    Deskripsi

    YOUR-BUCKET-NAME

    Ganti ini dengan nama bucket OSS Anda.

    YOUR-ENDPOINT

    Ganti ini dengan titik akhir OSS Anda. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.

    Ini adalah nilai dari kolom Endpoint pada baris Access from ECS over the VPC (internal network).

    YOUR-OSS-ACCESSKEYID

    Gunakan ID AccessKey dan rahasia AccessKey untuk akun OSS Anda. Untuk informasi selengkapnya tentang cara mendapatkannya, lihat Dapatkan pasangan Kunci Akses.

    Untuk menghindari paparan kredensial dalam teks biasa, contoh ini menggunakan variabel namespace untuk menentukan nilai AccessKey. Untuk informasi selengkapnya, lihat Variabel namespace.

    Catatan

    Parameter ini hanya diperlukan jika bucket OSS dan layanan Realtime Compute for Apache Flink Anda berada di akun yang berbeda. Jika bucket berada di akun yang sama, Anda dapat menghilangkan parameter ini.

    YOUR-OSS-ACCESSKEYSECRET

    flushIntervalSeconds

    Interval saat data log ditulis ke destinasi penyimpanan, dalam detik.

    flushIntervalEventCount

    Jumlah entri log yang disangga sebelum data ditulis ke destinasi.

    Catatan

    Jika flushIntervalSeconds dan flushIntervalEventCount keduanya dikonfigurasi, operasi penulisan dipicu ketika salah satu ambang batas tercapai.

    rollingBytes

    Ukuran maksimum untuk file log tunggal di OSS. Saat file mencapai ukuran ini, file log baru dibuat untuk log selanjutnya.

    Catatan

    Dalam pekerjaan JAR, kode bisnis dimuat oleh class loader terpisah yang berbeda dari class loader sistem logging Flink. Secara default, plug-in logging memvalidasi class loader secara ketat (isInitStrictly default-nya true), sehingga log tersebut dilewati dan tidak diekspor ke OSS. Untuk mengumpulkan log yang dicetak oleh kode bisnis dalam pekerjaan JAR, tambahkan konfigurasi berikut ke 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>
    Catatan

    Properti namespace, deploymentId, jobId, dan deploymentName dalam kode adalah variabel Twig. Jangan mengubahnya. Jika tidak, pekerjaan gagal dimulai.

    Parameter

    Deskripsi

    YOUR-SLS-PROJECT

    Ganti ini dengan nama Proyek SLS Anda.

    YOUR-SLS-LOGSTORE

    Ganti ini dengan nama Logstore SLS Anda.

    YOUR-SLS-ENDPOINT

    Ganti ini dengan titik akhir pribadi untuk wilayah layanan SLS Anda. Untuk informasi selengkapnya, lihat Titik akhir layanan.

    YOUR-SLS-ACCESSKEYID

    Gunakan ID AccessKey dan rahasia AccessKey untuk akun SLS Anda. Untuk informasi selengkapnya tentang cara mendapatkannya, lihat Dapatkan pasangan Kunci Akses.

    Untuk menghindari paparan kredensial dalam teks biasa, contoh ini menggunakan variabel namespace untuk menentukan nilai AccessKey. Untuk informasi selengkapnya, lihat Variabel namespace.

    Catatan

    Jika layanan SLS dan Realtime Compute for Apache Flink Anda berada di akun yang berbeda, Anda harus memberikan izin tulis akun Flink ke SLS. Untuk informasi selengkapnya, lihat Buat kebijakan RAM kustom. Gunakan salah satu kebijakan berikut:

    • Cakupan SLS tanpa batasan

      {
      
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "log:Get*",
                      "log:PostLogStoreLogs"
                  ],
                  "Resource": "*"
              }
          ]
      }
    • Dibatasi ke sumber daya SLS tertentu. Contoh:

      {
          "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

    Interval saat data log ditulis ke destinasi penyimpanan, dalam detik.

    flushIntervalEventCount

    Jumlah entri log yang disangga sebelum data ditulis ke destinasi.

    Catatan

    Jika flushIntervalSeconds dan flushIntervalEventCount keduanya dikonfigurasi, operasi penulisan dipicu ketika salah satu ambang batas tercapai.

    Catatan

    Dalam pekerjaan JAR, kode bisnis dimuat oleh class loader terpisah yang berbeda dari class loader sistem logging Flink. Secara default, plug-in logging memvalidasi class loader secara ketat (isInitStrictly default-nya true), sehingga log tersebut dilewati dan tidak diekspor ke SLS. Untuk mengumpulkan log yang dicetak oleh kode bisnis dalam pekerjaan JAR, tambahkan konfigurasi berikut ke Appender SLS:

    <Property name="isInitStrictly">false</Property>

    Kafka

    Catatan

    Otentikasi Kerberos untuk kluster Kafka saat ini tidak didukung.

    • Prasyarat

      Realtime Compute for Apache Flink menyediakan plug-in logging KafkaAppender. Karena Flink memuat plug-in ini menggunakan class loader plug-in, Anda harus secara eksplisit menentukan path paketnya agar aplikasi Anda dapat memuatnya dengan sukses. Anda dapat melakukannya dengan salah satu cara berikut:

      • Konfigurasikan templat pekerjaan (mempengaruhi semua penerapan di ruang kerja ini)

        Pada halaman Configurations konsol, tambahkan kode berikut ke bidang other configuration.

        plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
      • Konfigurasikan penerapan tunggal (hanya mempengaruhi penerapan saat ini)

        Pada halaman Deployments, klik nama penerapan target. Pada tab Deployment Details, di bagian Parameters, tambahkan kode berikut ke bidang other configuration.

        plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
    • Konfigurasi logging

      <?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>

      Parameter

      Deskripsi

      YOUR-TOPIC-NAME

      Nama topik Kafka tujuan.

      YOUR-KAFKA-BOOTSTRAP-SERVERS

      Alamat broker Kafka tujuan.

      YOUR-ACKS-VALUE

      Jumlah replika partisi yang harus mengakui pesan sebelum produsen menganggap penulisan berhasil. Untuk informasi selengkapnya, lihat acks.

      YOUR-BUFFER-MEMORY-SIZE

      Ukuran buffer produsen, dalam byte.

      YOUR-RETRIES-NUMBER

      Jumlah percobaan ulang setelah kegagalan pengiriman.

      YOUR-COMPRESSION-TYPE

      Jenis kompresi yang digunakan produsen untuk pesan. Nilai yang valid termasuk none, gzip, snappy, lz4, dan zstd.

  3. Klik Save.

  4. Klik Start di bagian atas halaman.

Konfigurasikan ekspor log untuk namespace

Anda dapat menggunakan templat untuk mengonfigurasi destinasi ekspor log default ke OSS, SLS, atau Kafka untuk semua pekerjaan dalam suatu namespace.

Penting
  • Setelah Anda mengonfigurasi templat ini, log dari semua pekerjaan baru di namespace ini akan diekspor ke OSS, SLS, atau Kafka.

  • Class loader plug-in Flink memuat plug-in log KafkaAppender yang disediakan oleh Realtime Compute for Apache Flink. Sebelum Anda dapat menggunakan plug-in ini, Anda harus menentukan path class-nya agar aplikasi Flink Anda dapat memuatnya. Untuk melakukannya, di Konsol pengembangan Realtime Compute for Apache Flink, buka halaman Configurations dan tambahkan kode berikut ke bagian Other Configuration.

    plugin.classloader.parent-first-patterns.additional: com.ververica.platform.logging.appender
  1. Buka halaman konfigurasi templat log pekerjaan.

    1. Masuk ke Konsol Realtime Compute for Apache Flink.

    2. Pada kolom Actions ruang kerja target, klik Console. Di Konsol pengembangan Realtime Compute for Apache Flink, pilih namespace target dari bagian atas halaman.

    3. Di panel navigasi sebelah kiri, klik O&M > Configurations.

    4. Pada tab Deployment Defaults, pilih jenis pekerjaan.

    5. Di bagian Logging, atur Logging Profile menjadi Custom Template.

  2. Konfigurasikan destinasi ekspor log untuk semua pekerjaan di namespace.

    Untuk kode yang diperlukan, lihat Konfigurasikan ekspor log untuk pekerjaan tunggal (XML).

  3. Klik save changes.

Konfigurasikan output log berbasis tingkat

Anda dapat menggunakan ThresholdFilter Log4j2 untuk mengonfigurasi aturan pemfilteran berbeda untuk setiap appender berdasarkan tingkat log. Konfigurasi ini menawarkan beberapa keunggulan:

  • Fleksibilitas: Anda dapat mengatur tingkat log berbeda untuk destinasi penyimpanan eksternal berbeda.

  • Efisiensi: Mengurangi pemrosesan dan transfer log yang tidak perlu, meningkatkan kinerja sistem.

  • Kejelasan: Konfigurasi terpisah memperjelas alur log dan menyederhanakan manajemen tingkat.

Ikuti langkah-langkah berikut:

  1. Di bagian logging, atur Logging Profile menjadi Custom Template.

  2. Konfigurasikan output log.

    Contoh berikut menunjukkan cara mengonfigurasi sistem untuk mengirim log tingkat INFO dan lebih tinggi ke Konsol pengembangan Realtime Compute for Apache Flink, sementara hanya mengirim log tingkat ERROR dan lebih tinggi ke 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>

    Dalam konfigurasi ini:

    • Console Appender: Menggunakan ThresholdFilter untuk memastikan bahwa log tingkat INFO atau lebih tinggi diekspor ke konsol pengembangan.

    • Appender SLS menggunakan ThresholdFilter untuk mengirim hanya log tingkat ERROR dan lebih tinggi ke SLS. Untuk detail properti Appender SLS, lihat Konfigurasikan Output ke SLS. Ganti placeholder seperti YOUR_NAMESPACE dan YOUR_SLS_PROJECT dengan informasi proyek SLS aktual Anda.

      Catatan

      Jika jenis Appender SLS bukan SLS tetapi appender kustom, pastikan Anda menggunakan jenis yang benar dan class appender memiliki logika yang diperlukan untuk terhubung ke SLS.

    • StdOutLogger dan SLSLogger: Masing-masing hanya mengirim log ke Appender StdOut dan Appender SLS, serta memiliki pembatasan tingkat log sendiri-sendiri.

    • Root Logger: Logger ini dikonfigurasi dengan Appender StdOut dan Appender RollingFile, tetapi tidak menyertakan Appender SLS. Hal ini untuk menghindari pengiriman log duplikat ke SLS jika logger tertentu sudah dikonfigurasi untuk melakukannya.

    Untuk informasi selengkapnya tentang parameter konfigurasi Log4j, lihat Apache Log4j.

Topik terkait