加载中

从 Beats 模块导入集成

导入过程大量使用了 import-beats 脚本。如果您对其内部工作原理感兴趣,请随意查看该脚本的 README

  1. integrations 仓库中创建一个 issue,以跟踪集成的进展(特别是手动更改)。

    专注于您想要集成的特定产品(例如 MySQL、ActiveMQ)。使用此 issue 记录所应用的每一项手动更改。这将有助于调整 import-beats 脚本并审查集成。

  2. 准备开发环境

    1. 克隆/刷新以下仓库

    2. 克隆/刷新 Elastic Integrations 以始终使用最新版本的脚本

    3. 确保您已安装 mage 工具

      $ go get -u -d github.com/magefile/mage
      		
  3. 使用 elastic-package stack up -v -d 命令启动所需的依赖项

    1. Elasticsearch 实例

      • Kibana 的依赖项
    2. Kibana 实例

      • 用于迁移仪表板,如果不可用,您可以跳过生成(SKIP_KIBANA=true

        提示。这里有可用的 elastic-package 速查表 此处

  4. integrations 仓库中为集成创建一个新分支(从 main 分叉)。

  5. 运行命令:mage ImportBeats 以启动导入过程(请注意,导入脚本假设在第 2 步中检出的项目位于 +../{{project-name}}+)。

    运行 import-beats 脚本的结果是一个包含刷新和更新后的集成的目录。

    完成需要一段时间,但控制台输出应会频繁更新以跟踪进度。该命令应以退出代码 0 终止。如果不是,请提交一个 issue。

    生成的包默认存储在 packages 目录中。通常,导入过程会更新所有集成,因此如果您发现多个集成有更新(包括您当前正在处理的集成,例如 packages/foobarbaz),请不要感到惊讶。您可以提交这些更改,也可以留待以后处理。

    如果您想选择一部分包,请设置环境变量 PACKAGES(以逗号分隔的列表)

    $ PACKAGES=aws,cisco mage ImportBeats
    		

大部分迁移工作已由 import-beats 脚本完成,但仍有一些任务需要开发人员进行干预。

如果您的集成缺少截图或图标,现在是将缺失的资源添加到 Beats/Kibana 仓库并重新导入集成(幂等操作)的好时机。

建议按照清单中的操作项顺序进行,以防止贡献者重复某些操作(修复已修复的内容,因为脚本已覆盖了部分内容)。

  1. 如果缺少图标,请添加。

    集成图标显示在 Kibana 的不同位置,因此最好定义自定义图标以使 UI 更易于导航。

    由于 import-beats 脚本会在 Kibana 和 EUI 仓库中查找图标,请按照教程资源的方式将图标添加到第一个仓库中(Kibana 目录:src/legacy/core_plugins/kibana/public/home/tutorial_resources/logos/)。

  2. 如果缺少截图,请添加。

    Kibana 集成管理器会显示与集成相关的截图。截图展示了可视化指标/日志数据的 Kibana 仪表板。

    import-beats 脚本会查找 _meta/docs.asciidoc 中提到的截图引用,并从 Beats 目录复制图像文件

    • metricbeat/docs/images
    • filebeat/docs/images
  3. 改进/纠正产品名称的拼写。

    正确的产品名称拼写会给人留下更好的印象。import-beats 脚本使用 fields.yml 文件作为正确拼写的来源(title 属性),例如 Mysql - MySQL, Nginx - NGINX, Aws - AWS。

    请记住,此步骤需要重新导入包内容。

  4. 为集成编写 README 模板文件。

    README 模板用于渲染包含导出字段的最终 README 文件。该模板应放置在 package/<integration-name>/_dev/build/docs/README.md 中。如果该目录不存在,请创建它。

    查看 MySQL 文档模板以了解如何使用模板函数(例如 {{fields "data-stream-name"}})。如果指标和日志中使用了相同的数据流名称,请在模板中添加 -metrics-logs。例如,elb 既是日志的数据流,也是指标的数据流。在 README.md 模板中,使用 {{fields "elb_logs"}}{{fields "elb_metrics"}} 来区分它们。

  5. 检查字段文件和文档中的导出字段。

    此操作项的目标是验证生成的文件(artifacts)是否正确。

    包中的字段文件(package-fields.yml、fields.yml 和 ecs.yml)是从原始的 fields.yml 文件(可能包含 ECS 模式字段)和 fields.epr.yml(定义了摄取管道中使用的其他字段)创建的。原始来源可能会有拼写错误、描述不当或缺少字段定义。所有现有文件中的字段总和应仅包含实际使用的字段,例如,并非所有现有的 ECS 字段。

    摄取管道可能会使用从 ECS 抽象出来但未在 fields.yml 中提及的字段。集成应包含这些字段并将其记录在案。

    集成包的字段分为以下三个文件

    • ecs.yml:此特定数据流使用的 ECS 合规字段。
    • package-fields.yml:此特定数据流使用的包级字段,这些字段不存在于 <integration-package-name>.<data-stream-name> 下。
    • fields.yml:特定于该数据流且不符合 ECS 标准的数据集级字段。

    请参阅 PR https://github.com/elastic/beats/pull/17895,了解如何使用 fields.epr.yml 文件将它们添加到 Beats(例如 event.codeevent.provider)。

  6. Metricbeat:添加缺失的配置选项。

    import-beats 脚本会从 Metricbeat 模块的 _meta 目录中提取配置选项。它会分析配置文件并根据启用的指标集(未注释的)选择选项。如果您发现包的清单文件中缺少某些配置选项,只需创建一个包含所有必需选项的 config.epr.yml 文件即可。

    示例 PR:https://github.com/elastic/beats/pull/17323

  7. 检查清单文件中的标题和描述。

    标题和描述是 Kibana UI 中显示的字段。大多数用户将使用它们来了解如何配置与产品安装相关的集成,或如何使用高级配置选项。

  8. 压缩配置选项 (vars)。

    目前,所有配置选项均由 import-beats 脚本在数据流级别进行设置(路径:data stream/<data-stream-name>/manifest.yml)。

    不同数据流中的某些选项可能是重复的,或者涉及相同的设置,这些设置通常是相同的(例如 MySQL 用户名、密码)。请记住,两个数据流可能具有相同的配置选项,但值不同(例如 periodpaths),因此无法压缩。

    总而言之,压缩可以减少用户多次设置相同配置选项(每个数据流一次)的必要。

  9. 定义所有变量属性。

    变量属性用于自定义 Kibana UI 中配置选项的可视化效果。请确保它们在所有清单文件中都有定义。

    vars:
      - name: paths
        required: true
        show_user: true
        title: Access log paths
        description: Paths to the nginx access log file.
        type: text
        multi: true
        default:
          - /var/log/nginx/access.log*
    		
    • required - 选项是必需的
    • show_user - 不要隐藏配置选项(折叠菜单)
    • title - 人类可读的变量名称
    • description - 变量描述(可能包含一些细节)
    • type - 字段类型(参考:text, password, bool, integer)
    • multi - 该字段具有多个值。
  10. 检查数据流配置。

    由于模板引擎从标准的 Golang 模板引擎更改为 handlebars,因此自动转换 Filebeat 输入配置(嵌套变量、多种表示形式、条件、循环)可能会很困难。请检查输出数据流配置并识别潜在的错误。

  11. 使用示例事件更新文档模板。

    Agent 收集的事件与原始的 Metricbeat 和 Filebeat 事件略有不同。根据已迁移的集成(例如 MySQL 集成)手动调整事件内容,或者在成功使用真实 Agent 运行整个设置后复制它们。

  12. Kibana:使用 stream.data stream 字段而不是 event.data stream

    使用 stream.data stream 代替 event.data stream 还可以使查询效率更高,因为这是一个 constant_keyword。请确保包中的仪表板不使用 event.data stream 字段。如果是,只需将它们替换为更高效的字段即可。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.