日志收集器(FluentBit)部署指引

本文介绍日志收集器(FluentBit)的部署与配置。


日志收集器部署场景

  日志收集器(FluentBit)是基于FluentBit工具实现了自定义的Output插件,可以将日志数据输出到阿里云日志服务或天眼自研日志服务。
  收集器目前支持文本日志(业务日志)和链路追踪日志两类日志数据的上报,对于文本日志(业务日志),还支持两种不同日志格式的日志文件,针对以上不同的业务场景,收集器提供以下几种部署模式:

  • 链路追踪日志
    • 适用于天眼服务端探针采集的链路日志上报场景。
  • 文本日志[单行-Json]
    • 适用于落盘到本地日志文件的自定义业务日志上报,且日志文件里的日志为单行-Json格式。
  • 文本日志[多行-正则匹配]
    • 适用于落盘到本地日志文件的自定义业务日志上报,且日志文件里的日志为不包含字段名称的多行日志记录,上报时需要解析生成指定格式的日志记录。

日志收集器的配置项

日志收集器主要配置项如下表所示,其中部分配置项与部署模式相关,需要在部署为该模式时进行配置,具体见下面的说明:

环境变量 是否必填 描述 默认值
FAST_SERVER 天眼平台-开放服务地址,https://fast-open.mypaas.com.cn
FAST_ACCESS_KEY_ID 天眼平台-AK ID -
FAST_ACCESS_KEY_SECRET 天眼平台-AK Secret -
FAST_PRODUCT_CODE 天眼平台-产品编码 -
FAST_APP_CODE 天眼平台-应用编码 -
FAST_LOG_NAME 天眼平台-日志名称 -
FAST_ENABLE_METRICS 是否启动Metrics服务 off
FAST_SERVICE_LOG_LEVEL FluentBit日志输出级别(error,info,debug),默认info off
FAST_INPUT_MODE 采集输入模式,tail、forward、syslog,默认:tail tail
FAST_LOG_PARSER 日志转换器,默认json;none为日志行上传 json
FAST_TAIL_PATH tail模式必填 采集日志文件路径,路径支持匹配,如:/var/logs/nginx/\.log -
FAST_TAIL_DB_PATH 文件消费位置记录,默认根据FAST_TAIL_PATH进行截取(完整路径,不包含*部分的目录) -
FAST_MEM_BUF_LIMIT tail组件内存缓冲最大限制,默认限制100MB 100MB
FAST_ENABLE_LOGROTATE 是否启动日志文件轮转,默认启动 on
FAST_FORWARD_PORT forward模式必填 转发监听端口 24224
FAST_SYSLOG_MODE syslog模式必填 协议模式:tcp or udp udp
FAST_SYSLOG_LISTEN syslog模式必填 绑定网络 0.0.0.0
FAST_SYSLOG_PORT syslog模式必填 监听端口 5140
  • 公共配置项:
      - FAST_SERVER:{天眼服务地址}
      - FAST_ACCESS_KEY_ID:{天眼平台-AK ID}
      - FAST_ACCESS_KEY_SECRET:{天眼平台-AK Secret}
      - FAST_PRODUCT_CODE:{产品编码(ProductCode)}
      - FAST_APP_CODE:{应用编码(AppCode)} 
      - FAST_LOG_NAME:{天眼平台-日志名称}
      - FAST_INPUT_MODE:上报模式:syslog - 链路追踪日志;tail - 文本日志(业务日志)
    
  • 链路追踪日志:
      - FAST_INPUT_MODE:syslog 
      - FAST_SYSLOG_MODE:链路追踪日志的上报模式,取值为:udp
      - FAST_SYSLOG_LISTEN:绑定网络,默认为:0.0.0.0
      - FAST_SYSLOG_PORT:监听端口,默认为:5140
    
  • 文本日志[单行-Json]
      - FAST_INPUT_MODE:tail 
      - FAST_LOG_PARSER:日志转换器,取值为:json
      - FAST_TAIL_PATH:日志文件存放路径,如:/logstest/*.log
    
  • 文本日志[多行-正则匹配]
      - FAST_INPUT_MODE:tail
      - FAST_LOG_PARSER:指定多行模式,值为:multiline
      - FAST_TAIL_PATH:日志文件存放路径,如:/logstest/*.log 
      - FAST_LOG_MULTILINE_REGEX:解析日志记录内容的正则表达式
    

开始部署日志收集器

 首先,根据您的应用接入天眼的日志类型和内容确定日志收集器的部署模式:

  • 安装天眼服务端探针,接入链路追踪日志,则部署模式为:链路追踪日志
  • 接入应用输出的自定义业务日志,且日志文件为单行、Json格式,则部署模式为:文本日志[单行-Json]
  • 接入应用输出的自定义业务日志,且日志文件为多行记录,则部署模式为:文本日志[多行-正则匹配]

 其次,准备和收集以下这些日志收集器的公共配置项参数:

    - FAST_SERVER:固定为“https://fast-open.mypaas.com.cn”,如不正确请与天眼团队沟通
    - FAST_ACCESS_KEY_ID:由天眼团队提供
    - FAST_ACCESS_KEY_SECRET:由天眼团队提供
    - FAST_PRODUCT_CODE:登录天眼平台创建产品&获取
    - FAST_APP_CODE:登录天眼平台创建应用&获取 
    - FAST_LOG_NAME:自定义并提供给天眼团队,或由天眼团队提供

 然后,根据您应用的运行环境,如Windows、容器化、星舟和云擎,采用相应的部署方式,并结合部署模式的特征进行部署。


部署与配置实现

在不同的系统环境里部署配置收集器的差异比较大,接下来分别进行介绍:


在windows上部署

在Windows上部署收集器的步骤如下:

  1. 下载并解压erp-td-agent-bit.rar
  2. 在解压得到的配置文件(conf/fluent-bit.conf)里修改更新对应的配置项,具体见[按部署模式修改主要配置项](#modify_config)。
  3. 以管理员身份运行“注册服务.bat”(开发模式可运行“start.bat”),启动日志收集器。

按部署模式修改主要配置项

 公共配置:

    [SERVICE]
        # Flush
        # =====
        # set an interval of seconds before to flush records to a destination
        flush        1

        # Daemon
        # ======
        # instruct Fluent Bit to run in foreground or background mode.
        daemon       Off

        # Log_Level
        # =========
        # Set the verbosity level of the service, values can be:
        #
        # - error
        # - warning
        # - info
        # - debug
        # - trace
        #
        # by default 'info' is set, that means it includes 'error' and 'warning'.
        log_level    info

        # Parsers File
        # ============
        # specify an optional 'Parsers' configuration file
        parsers_file parsers.conf

        # Plugins File
        # ============
        # specify an optional 'Plugins' configuration file to load external plugins.
        plugins_file plugins.conf

        # HTTP Server
        # ===========
        # Enable/Disable the built-in HTTP Server for metrics
        http_server  Off
        http_listen  0.0.0.0
        http_port    2020

 除以上公共配置外,按部署模式设置以下配置项:

  • 链路追踪日志:

      [INPUT]
          name              syslog
          mode              udp
          listien           0.0.0.0
          Port              5140 
    
      [OUTPUT]
          name  fastout
          match *
          server             {天眼服务地址},固定为:https://fast-open.mypaas.com.cn
          access_key_id      {天眼服务AK id}
          access_key_secret  {天眼服务AK secret}
          product_code       {天眼产品编码}
          app_code           {天眼应用编码}
          log_name           {天眼日志名称}
    
  • 文本日志[单行-Json]:
    [INPUT]
        name        tail
        parser      json
        path        {配置日志文件路径,如:/logs/*.log}
        exit_on_eof   off
        db          {offset保存路径,如:./tail.db}

    [OUTPUT]
        name  fastout
        match *
        server             {天眼服务地址},固定为:https://fast-open.mypaas.com.cn
        access_key_id      {天眼服务AK id}
        access_key_secret  {天眼服务AK secret}
        product_code       {天眼产品编码}
        app_code           {天眼应用编码}
        log_name           {天眼日志名称}
  • 文本日志[多行-正则匹配]:
    [INPUT]
        Name  tail
        Multiline    On
        Parser_Firstline  multiline
        Buffer_Chunk_Size  2MB
        Buffer_Max_Size  3MB
        Mem_Buf_Limit    100MB
        Skip_Long_Lines  on
        path              {配置tail文件路径,如:/logs/*.log}
        exit_on_eof       off
        db                {offset保存路径,如:./tail.db}

    [OUTPUT]
        name  fastout
        match *
        server             {天眼服务地址},固定为:https://fast-open.mypaas.com.cn
        access_key_id      {天眼服务AK id}
        access_key_secret  {天眼服务AK secret}
        product_code       {天眼产品编码}
        app_code           {天眼应用编码}
        log_name           {天眼日志名称}

  除以上配置外,还需要修改文件(conf/parsers.conf),增加以下内容:

    [PARSER]
        Name    multiline
        Format  regex
        Regex   日志内容解析正则表达式,如:/\[(?<date>[^\[\]]*)\]\s\[(?<mysoft>[^\[\]]*)\]\s\[(?<AppCode>[^\[\]]*)\]\s\[(?<BusinessCode>[^\[\]]*)\]\s\[(?<thread>[^\[\]]*)\]\s\[(?<level>[^\[\]]*)\]\s\[(?<logger>[^\[\]]*)\]\s\[(?<file>[^\[\]:]*):(?<line>[^\[\]:]*)\]\s\-\s(?<msg>.*)/

容器化部署

按部署模式配置部署日志收集器:

  • 链路追踪日志:

      docker run  -v /logs:/logs  --name=fast-fluent-bit \
      -e FAST_SERVER=https://fast-open.mypaas.com.cn \
      -e FAST_ACCESS_KEY_ID={天眼服务AK id} \
      -e FAST_ACCESS_KEY_SECRET={天眼服务AK secret} \
      -e FAST_PRODUCT_CODE={天眼产品编码} \
      -e FAST_APP_CODE={天眼应用编码} \
      -e FAST_LOG_NAME=server_tracing_log \
      -e FAST_INPUT_MODE=syslog \
      -e FAST_SYSLOG_MODE=udp \
      -e FAST_SYSLOG_LISTEN=0.0.0.0 \
      -e FAST_SYSLOG_PORT=5140 \
      -p 5140:5140 \
      -ti \
      docker-prod-registry.cn-hangzhou.cr.aliyuncs.com/fast/fluentbit:0.3.1
      (版本号可能有更新,部署前建议与天眼管理员确认)
    
  • 文本日志[单行-Json]:

      docker run  -v /logs:/logs  --name=fast-fluent-bit \
      -e FAST_SERVER=https://fast-open.mypaas.com.cn \
      -e FAST_ACCESS_KEY_ID={天眼服务AK id} \
      -e FAST_ACCESS_KEY_SECRET={天眼服务AK secret} \
      -e FAST_PRODUCT_CODE={天眼产品编码} \
      -e FAST_APP_CODE={天眼应用编码} \
      -e FAST_LOG_NAME={天眼日志名称} \
      -e FAST_INPUT_MODE=tail \
      -e FAST_TAIL_PATH=/logstest/*.log \
      -ti \
      docker-prod-registry.cn-hangzhou.cr.aliyuncs.com/fast/fluentbit:0.3.1
      (版本号可能有更新,部署前建议与天眼管理员确认)
    
  • 文本日志[多行-正则匹配]:
      docker run  -v /logs:/logs  --name=fast-fluent-bit \
      -e FAST_SERVER=https://fast-open.mypaas.com.cn 
      -e FAST_ACCESS_KEY_ID={天眼服务AK id} 
      -e FAST_ACCESS_KEY_SECRET={天眼服务AK secret} 
      -e FAST_PRODUCT_CODE={天眼产品编码} 
      -e FAST_APP_CODE={天眼应用编码} 
      -e FAST_LOG_NAME={天眼日志名称} 
      -e FAST_INPUT_MODE=tail     
      -e FAST_LOG_PARSER= multiline 
      -e FAST_TAIL_PATH=/logstest/*.log 
      -e FAST_LOG_MULTILINE_REGEX = /\[(?<date>[^\[\]]*)\]\s\[(?<mysoft>[^\[\]]*)\]\s\[(?<AppCode>[^\[\]]*)\]\s\[(?<BusinessCode>[^\[\]]*)\]\s\[(?<thread>[^\[\]]*)\]\s\[(?<level>[^\[\]]*)\]\s\[(?<logger>[^\[\]]*)\]\s\[(?<file>[^\[\]:]*):(?<line>[^\[\]:]*)\]\s\-\s(?<msg>.*)/
      -ti \
      docker-prod-registry.cn-hangzhou.cr.aliyuncs.com/fast/fluentbit:0.3.1
      (版本号可能有更新,部署前建议与天眼管理员确认)
    

在星舟(云擎)上部署

  在星舟和云擎上部署日志收集器操作基本相同,只是进入环境管理功能的入口略有不同,同时三种部署模式的主要差异点在CR组件的配置(详见不同部署模式CR组件配置的差异)。具体的部署流程如下所示:

workflow

安装部署与配置日志收集品的具体操作步骤为: env

  • 1、在如上图所示的运维中心->环境管理模块的租户列表中点击租户记录上的【管理环境】按钮进入如下图所示的租户->环境管理页面。

  • 2、在如上图所示的租户->环境管理页面的环境列表中点击环境记录上的【组件】按钮进入如下图所示的环境->组件管理页面。

  • 3、安装kruise组件(如kruise组件已安装,则跳过此步):

    • 在如上图所示的环境->组件管理页面的未安装的组件区域找到kurise组件,点击【安装】打开如下图所示的安装组件页面。
    • 在下图所示的安装组件页面选择部署模式为“默认部署”,其他配置项内容不需修改,点击【确定】按钮完成kurise组件的安装。
  • 4、在上图所示的环境->组件管理页面点击kruise组件的【管理CR】按钮进入如下图所示的组件CR管理页面。

  • 5、新建&配置组件CR:在上图所示的组件CR管理页面点击【新建CR】,打开如下图所示的新建组件CR页面。

    不同部署模式CR组件的配置的差异:

    • 根据部署模式选择类型,并页面提示填写CR组件的配置信息:

      • 链路追踪日志:
        • 类型:
          • 按产品配置收集器,选:天眼日志采集-UDP-产品
          • 按应用配置收集器,选:天眼日志采集-UDP-应用
      • 文本日志[单行-Json]:
        • 类型:
          • 按产品配置收集器,选:天眼日志采集-Local-产品
          • 按应用配置收集器,选:天眼日志采集-Local-应用
        • FAST_TAIL_PATH:(与业务系统约定好的日志文件路径)
      • 文本日志[多行-正则匹配]:
        • 类型:
          • 按产品配置收集器,选:天眼日志采集-Local-multiline-产品
          • 按应用配置收集器,选:天眼日志采集-Local-multiline-应用
        • 多行正则:(解析日志记录的正则表达式)
        • FAST_TAIL_PATH:(与业务系统约定好的日志文件路径)
    • 除以上信息外,按从天眼获得的Fluentbit配置信息填写CR各字段值,其中以下两个字段值需要特别注意:

      • FAST_TAIL_PATH:必须与业务系统里配置的日志文件路径一致。
      • matchLablels.release:release标签values。
      • matchLablels.app:app标签values。(注:按应用配置才有该配置项)
    • 填写完以上配置信息后点击页面右下角的【确定】按钮保存CR,完成Fluentbit的部署&配置。

results matching ""

    No results matching ""