为Linux部署日志记录代理

您可以部署日志记录代理从RHEL8、RHEL9、Debian 和Ubuntu等Linux环境收集基础架构和应用程序日志并将其路由到IBM Cloud Logs实例。 有关受支持的“Linux环境的更多信息,请参阅”日志记录代理用于未启动的环境

这些说明适用于Red Hat Linux系统,但也可用于其他基于 RPM 的Linux服务器。

完成以下步骤,将代理部署到受支持的 Linux 环境中。

定义代理的身份验证方法

为代理选择身份类型和验证方法。 然后,创建受信任的配置文件或 API 密钥。 向 IBM Cloud Logs 发送日志所需的角色是 Sender

您可以使用服务 ID 或受信任配置文件作为代理与IBM® Cloud Logs服务进行身份验证时使用的身份。 有关更多信息,请参阅 为摄取授予 IAM 权限

选择下列其中一个选项:

选项 1:使用受信任的配置文件进行身份验证

创建可信档案。 更多信息,请参阅 生成用于摄取的可信配置文件

选项 2:使用服务 ID API 密钥进行身份验证

生成用于服务 ID 身份验证的 API 密钥。 有关更多信息,请参阅 生成用于摄取的 API 密钥

下载所需的 RPM 或 DEB 软件包

完成以下步骤:

  1. 下载所需的 RPM 或 DEB 软件包。

    有关当前日志记录代理版本的信息,请参阅 代理发布说明

  2. 运行以下命令验证校验和:

    sha256sum -c <sha256_filename>
    

    其中 <sha256_filename> 是下载 *.sha256 文件的文件名。

  3. 如果安装的是最新版本的代理,post-config.sh 文件是 RPM 或 DEB 软件包的一部分,可在 /opt/fluent-bit/bin/post-config.sh 找到。 如果使用的是 1.6.2 之前的版本,则需要使用此步骤下载 post-config.sh 文件。

    只有在使用 日志记录代理 1.6.1 或更早版本时才需要此步骤。 它不适用于 日志记录代理 1.6.2 或后续版本。

    wget https://logs-router-agent-config.s3.us.cloud-object-storage.appdomain.cloud/post-config.sh
    
    chmod +x post-config.sh
    

设置并部署日志记录代理配置

完成以下步骤:

  1. 登录 Linux 环境。

  2. 安装代理程序。

    • 运行 RHEL:

      rpm -ivh <rpm_filename>
      
    • 运行Debian和Ubuntu:

      dpkg -i <deb_filename>
      

    其中 <rpm_filename><deb_filename> 是下载的 *.rpm*.deb 文件的名称。

  3. 运行配置脚本。

    /opt/fluent-bit/bin/post-config.sh -h <target_host> -p <target_port> [-t <target_path>] -a <auth_mode> -k <iam_api_key> [-s <vsi_secure_access_enabled>] [-i <IAM_environment>] [--subsystem-name <name>] [--application-name <name>]
    

    位置

    -t <target_path>

    指定向 IBM Cloud Logs 实例发送数据的路径。 如果未提供,默认值为 /logs/v1/singles

    -a <auth_mode>

    指定 IAMAPIKeyVSITrustedProfile

    -k <iam_api_key>

    指定 Cloud Identity and Access Management API 密钥(IAMAPIKey 模式需要)。 请确保按照 生成 API 密钥 中的说明进行操作。

    有关 Cloud Identity and Access Management API 密钥的更多信息,请参阅 管理 API 密钥

    -d <trusted_profile_id>

    指定受信任配置文件 ID("VSITrustedProfile 模式需要)。 使用受信任配置文件时,设置为“设置输入权限”中配置的 ID。 创建实例时必须启用元数据服务,并通过指定 ID 将受信任配置文件链接到实例。 有关详细信息,请参阅 创建虚拟服务器实例

    有关受信任配置文件的更多信息,请参阅 创建受信任配置文件

    --send-directly-to-icl 已停用

    设置此参数可将日志直接发送到 IBM Cloud Logs.

    -h <target_host>

    IBM Cloud Logs摄取的主机,可在 Endpoints IBM Cloud Logs 实例 Overview 中找到。 使用入口端点。 有关更多信息,请参阅 入口端点

    -i <IAM_environment>

    指定 IAM 身份验证使用的是公共端点还是专用端点。Production 表示使用公共端点。PrivateProduction 表示使用专用端点。Production 为默认值。

    如果系统无法访问公共互联网,则必须使用 "PrivateProduction 来使用专用端点。

    -p <target_port>

    使用 443 将日志直接发送到 IBM Cloud Logs.

    -s <vsi_secure_access_enabled>

    (可选)如果在 VSI 中启用了安全访问,则将其设置为 true。 默认设置为 false。 例如,-s true

    --application-name <name>

    应用程序名称定义了生成日志并将日志发送至 IBM Cloud Logs 的环境。 如果未提供,默认值为 ${HOSTNAME}

    --subsystem-name <name>

    子系统名称是生成日志并将日志发送至 IBM Cloud Logs 的服务或应用程序。 如果未提供,默认值为 not-found

    运行脚本,根据参数更改更新配置。

日志记录代理 默认配置

日志记录代理 默认配置包括一个预定义的输入源和过滤器。 此默认设置被配置为从常用位置收集日志,并用基本元数据丰富日志内容。

默认输入源

日志记录代理 已预先配置为监控 目录及其子目录中的日志文件。/var/log/ 以下是默认 inputs.conf 的示例:

[INPUT]
  Name              tail
  Tag               host.*
  Path              /var/log/**/*.log
  Path_Key          file
  Exclude_Path      /var/log/at/**
  DB                /var/lib/fluent-bit/fluent-bit.DB
  Buffer_Chunk_Size 32KB
  Buffer_Max_Size   256KB
  Mem_Buf_Limit     30MB
  Skip_Long_Lines   On
  Refresh_Interval  10
  storage.type      filesystem
  storage.pause_on_chunks_overlimit on

缺省过滤器

默认配置包括两个过滤器,可增强带有元数据的日志记录,并对其进行整理以便于处理:

  • 修改过滤器:添加子系统名称、应用程序名称、主机名和平台等元数据字段。

  • 巢过滤器:将元数据字段集中在一个 meta 关键字下。

以下是默认 filters.conf 的示例:

[FILTER]
  Name modify
  Match *
  Add subsystemName    ${SUBSYSTEM_NAME}
  Add applicationName  ${APPLICATION_NAME}
  Add meta.hostname    ${HOSTNAME}
  Add meta.environment prod   # Sample values: prod, staging, dev, qa
  Add meta.platform    linux

[FILTER]
  Name nest
  Match *
  Operation nest
  Wildcard meta.*
  Nest_under meta
  Remove_prefix meta.

日志记录代理 配置自定义

这些默认设置为日志收集和丰富提供了基础。 要根据需要配置代理,可以修改 /etc/fluent-bit/ 目录中的 inputs.conffilters.confoutputs.conf 文件。

添加其他元数据字段

您可以在路由日志中添加其他元数据字段。

完成以下步骤:

  1. 编辑 fluent-bit.conf 文件夹中的 /etc/fluent-bit/ 文件。

  2. 使用以下结构添加自定义元数据:"Add <meta.key_name> <your_custom_value>

    [FILTER]
      Name modify
      Match *
      Add subsystemName    ${SUBSYSTEM_NAME}
      Add applicationName  ${APPLICATION_NAME}
      Add meta.hostname    ${HOSTNAME}
      Add meta.env         prod   # Sample values: prod, staging, dev, qa
      Add meta.platform    linux
    

    位置

    • <meta.key_name> 是要添加的元数据字段的名称(例如 "meta.env),"<your_custom_value> 是要分配给该字段的值(例如您的环境名称)。

    例如,如果要将 region 添加为元数据,或将版本添加为新字段,配置将与此类似:

    [FILTER]
      Name modify
      Match *
      Add subsystemName    ${SUBSYSTEM_NAME}
      Add applicationName  ${APPLICATION_NAME}
      Add meta.hostname    ${HOSTNAME}
      Add meta.env         prod
      Add meta.platform    linux
      Add meta.region      us-east
      Add version          my-version
    
  3. 保存配置文件。

  4. 重启代理以应用更改。

    systemctl daemon-reload && systemctl restart fluent-bit
    

包含或排除文件

您必须配置日志记录代理监控的日志文件。

完成以下步骤:

  1. 编辑 fluent-bit.conf 文件夹中的 /etc/fluent-bit/ 文件。

  2. 修改 INPUT 部分。

    用要监控的目录和文件设置路径

    Exclude_Path 中设置要排除监控的目录和文件。

    [INPUT]
      Name              tail
      Tag               *
      Path              /var/log/*.log
      Path_Key          file
      Exclude_Path      /var/log/audit.log
      DB                /var/lib/fluent-bit/fluent-bit.DB
      Buffer_Chunk_Size 32KB
      Buffer_Max_Size   256KB
      Skip_Long_Lines   On
      Refresh_Interval  10
      storage.type      filesystem
      storage.pause_on_chunks_overlimit on
    
  3. 修改服务部分。

    storage.path 为文件系统中的某个位置,用于存储流和数据。

  4. 保存配置文件。

  5. 重启代理以应用更改。

    systemctl daemon-reload && systemctl restart fluent-bit
    

验证日志是否已传送到目标目的地

完成以下步骤:

  1. 访问 IBM Cloud Logs 实例的 Web UI。.

  2. 正确配置代理后,您可以通过默认仪表板视图查看日志。

    例如,如果将applicationName设置为代理中的主机名,就可以将视图中的应用程序名称过滤器设置为主机名。

更新代理程序

您可以下载所需的代理软件包,并根据环境运行相应的命令来更新代理。 有关当前 日志记录代理 版本的信息,请参阅 代理发行说明。

  • 运行 RHEL:

    rpm -Uvh <rpm_filename>
    
  • 运行Debian和Ubuntu:

    dpkg -i <deb_filename>
    

其中 <rpm_filename><deb_filename> 是下载的 *.rpm*.deb 文件的名称。

重新安装或升级代理时,现有配置文件保持不变。

更新后重新启动服务:

systemctl daemon-reload && systemctl restart fluent-bit

卸载代理程序

以 sudo 用户身份在终端运行相应命令,即可删除已安装的代理。

  • 运行 RHEL、CentOS, 和 Fedora Linux:

    sudo yum erase draios-agent
    
  • 运行Debian和Ubuntu:

    sudo apt-get remove draios-agent