در بخش قبل از کانفیگ فورواردر بررسی شد و در این بخش از aggregator مورد بررسی قرار می گیرد.

یک نمونه از کانفیگ aggregator به صورت زیر می باشد:
      # Ignore fluentd own events
      <match fluent.**>
        @type null
      </match>
      @include fluentd-inputs.conf
      @include fluentd-output.conf
      {{- if .Values.metrics.enabled }}
      @include metrics.conf
      {{- end }}
    fluentd-inputs.conf: |
      # TCP input to receive logs from
      <source>
        @type forward
        bind 0.0.0.0
        port 24224
      </source>
      # HTTP input for the liveness and readiness probes
      <source>
        @type http
        bind 0.0.0.0
        port 9880
      </source>
    fluentd-output.conf: |
      # Throw the healthcheck to the standard output
      <match fluentd.healthcheck>
        @type stdout
      </match>
      # Send the logs to the standard output
      <match **>
      @type elasticsearch
      include_tag_key true
      host eck-es-http.logs.svc
      port 9200
      user elastic
      password password
      logstash_format false
      index_name fluentd-${tag}
      logstash_prefix fluentd
      target_index_affinity true
      include_timestamp true
      deflector_alias fluentd-${tag}
      rollover_index true
      application_name example
      template_name fluentd-${tag}
      template_file /voho/template
      customize_template {&quot<<TAG>>&quot:&quotfluentd-${tag}&quot}
      template_overwrite true
      </match>
    metrics.conf: |
      # Prometheus Exporter Plugin
      # input plugin that exports metrics
      <source>
        @type prometheus
        port {{ .Values.metrics.service.port }}
      </source>
      # input plugin that collects metrics from MonitorAgent
      <source>
        @type prometheus_monitor
        <labels>
          host ${hostname}
        </labels>
      </source>
      # input plugin that collects metrics for output plugin
      <source>
        @type prometheus_output_monitor
        <labels>
          host ${hostname}
        </labels>
      </source

حال در زیر به جزئیات کانفیگ فوق می پردازیم:

      <source>
        @type forward
        bind 0.0.0.0
        port 24224
      </source>
      # HTTP input for the liveness and readiness probes
      <source>
        @type http
        bind 0.0.0.0
        port 9880
      </source>

این بخش از منابع ورودی لاگ های را مشخص می کند که اولی از لاگ های فورواردها که به پورت ۲۴۲۲۴ سرویس fluentd aggregator ارسال می کنند و دومی هم لاگ ها آماده بودن و زنده بودن استفاده می کنند.

      <match **>
      @type elasticsearch
      include_tag_key true
      host eck-es-http.logs.svc
      port 9200
      user username
      password password
      logstash_format false
      index_name fluentd-${tag}
      logstash_prefix fluentd
      target_index_affinity true
      include_timestamp true
      deflector_alias fluentd-${tag}
      rollover_index true
      application_name example
      template_name fluentd-${tag}
      template_file /voho/template
      customize_template {&quot<<TAG>>&quot:&quotfluentd-${tag}&quot}
      template_overwrite true
      </match>

افزونه elasticsearch برای ارتباط برقرار کردن بین fluentd و elasticsearch می باشد که در مشخص می کند لاگ به چه index و با چه زمانی و … به سمت elastic ارسال گردد.

include_tag_key

معین می کند که برچسب به عنوان یک فیلد در لاگ های ارسالی وجود داشته باشد یا خیر.

میزبان

آدرس elasticsearch را مشخص می کند. (اگر الستیک داخل کلاستر می باشد می توان آدرس سرویس را داد و گر نه باید آدرس url الستیک داده شود.)

نحوه تعیین سرویس به صورت servicename>-.svc> می باشد.

بندر

شماره پورت الستیک را مشخص می کند.

کاربر

مقدار نام کاربری الستیک را می گیرد.

کلمه عبور

مقدار رمز الستسک را می گیرد.

logstash_format

معین می کند که اسم فهرست در الستیک فرمت logstash (indexname-date) را داشته باشند یا خیر.

index_name

اسم نمایه ساخته شده در الستیک را معین می کند.

logstash_prefix fluentd

مقداری که به اول indexname اضافه می شود (در rollover کردن) را مشخص می کند.

target_index_affinity

معین می کند که در زمانی که شاخص ها با تگ تاریخ ساخته می شوند اگر فهرست روز قبل به مقدار حجمی نرسیده باشد در همان فهرست ذخیره شده باشد.

مزیت این کار این می باشد که تعداد شاخص ها کم می شود سرعت جستوجو افزایش می یابد.

include_timestamp

معین می کند که فیلد timestamp در لاگ ها وجود دارد یا خیر.

rollover_index

با فعال کردن این بخش داده ها با فرمت اسم ایندکس به صورت ذخیره می شوند.

deflector_alias

اگر یک فهرست نیازمند rollover باشد باید یک نام مستعار برای آن تعریف شود که این گزینه آن را برای ایندکس مشخص می کند.

نام نرم افزار

این قسمت در rollover استفاده می شود.

نام الگو

برای این که برای هر لاگ با برچسب مشخص قالب به صورت خودکار ساخته شود می توان فایل یک قالب مشخص کرد که برای فهرست آن لاگ ها قالب را اضافه می کند.

template_file

قالب فایل محل را در pod fluent مشخص می کند.

یک نمونه از قالب فایل در اخر کانفیگ آورده شده است.

customize_template

برای این که در قالب فایل تعریف شده مقداری به صورت ثابت یا تعریف می شود از این استفاده می شود.

به عنوان مثال در قالب فایل مقدار تگ به صورت متغییر تعریف شده است که در این بخش مقدار تگ از لاگ ها گرفته می شود.

template_overwrite

معین می کند اگر در فایل قالب اگر تغییری داشتیم در قالب های ساخته شده اعمال شود یا خیر.

{
  &quotorder&quot: 100,
  &quotindex_patterns&quot: [
    &quot<<TAG>>-*&quot
  ],
  &quotsettings&quot: {
    &quotindex&quot: {
      &quotlifecycle&quot: {
        &quotname&quot: &quotILM&quot,
        &quotrollover_alias&quot: &quot<<TAG>>&quot
      },
      &quotrefresh_interval&quot: &quot15s&quot,
      &quotnumber_of_shards&quot: &quot1&quot,
      &quotnumber_of_replicas&quot: &quot1&quot
    }
  },
  &quotaliases&quot: {
    &quotall-<<TAG>>&quot: {}
  }
}

این فایل باید در image aggregator قرار گیرد که می تواند یک dockerfile ایجاد کرده و آن را بسازد:

FROM docker.io/bitnami/fluentd:1.14.4-debian-10-r11 

USER root

RUN mkdir /example
 
COPY template /example/template
اگر دوست داشتی امتیاز دادن یادت نره!