跳到主要内容

日志对接 ELK 体系

本文档适合同时使用 Rainbond、ELK 体系企业的 应用开发运维人员 阅读。

本文档适合的场景是:将运行于 Rainbond 的服务组件的日志通过fileBeat日志收集插件,对接 ELK 体系进行日志收集与分析。

前提条件

  • 部署好的 Nginx 示例服务组件。
  • 通过应用市场一键安装的 elasticsearch_kibana 应用。
  • 团队中有fileBeat日志收集插件默认插件。

以 Nginx 服务组件日志的收集为例,通过fileBeat日志收集插件,将 Nginx 的访问日志、错误日志上报 ElasticSearch,并通过 Kibana 展示。

连接 ELK

需要将 Nginx 组件依赖 Elasticsearch 和 Kibana,使 Nginx组件可以通过fileBeat日志收集插件默认配置的方式将日志推送到 ElasticSearch 中。

依赖其他组件后,需要更新组件该依赖关系才会生效。

插件的安装与开通

在团队视图中的我的插件页面中,选择fileBeat日志收集插件,点击安装,安装完成后,组件才可以使用该插件。

安装完成之后在组件管理页面的插件页面,在未开通列表中,找到fileBeat日志收集插件,点击右侧的开通按钮,开通该插件。之后该插件会出现在已开通列表中。

参数配置

可以点击该插件右侧的查看配置按钮,查看该插件的配置参数信息。

参数名称默认值说明
NGINX_ACCESS_PATH/var/log/nginx/access.log访问日志路径
NGINX_ERROR_PATH/var/log/nginx/error.log错误日志路径
INPUT_PATH/var/log/nginx/*.logFB日志收集路径
ES_HOST127.0.0.1ES地址
ES_PORT9200ES端口
ES_USERNAMEelasticES用户名
ES_PASSchangemeES密码
KIBANA_HOST127.0.0.1KB地址
KIBANA_PORT5601KB端口

在插件的配置项中,所有的变量都已经有了默认值。如需要,需要我们加以修改。其中 ES_HOST、ES_PORT、ES_USERNAME、ES_PASS 四个变量定义 Elasticsearch 的连接信息。KIBANA_HOST、KIBANA_PORT 指定了 Kibana 的连接地址。这里使用默认也可以生效的原因,是 Nginx 已经依赖了部署于 Rainbond 的 Elasticsearch、Kibana。

共享存储

插件收集日志需要共享组件的日志文件目录,需要将组件的日志文件目录共享给插件。可以通过挂载存储进行实现。

在组件管理页面的存储页面,添加临时存储类型的存储,挂载路径填写组件会产生日志文件的路径。如 /var/log/nginx

挂在存储后需要更新重启组件使其生效。

至此,通过默认插件fileBeat日志收集插件对接 ELK 体系进行日志收集与分析已经完成,如果发现 Kibana 中持续收集不到日志,请检查操作是否有误。

了解原理

FileBeat 通过类似于 tail -f sth.log 的方式,监控日志输出并上传到指定的 Elasticsearch。运行于 Rainbond 的服务组件,可以通过将日志目录持久化的方式,将日志文件和插件共享。通过这样的机制,基于 FileBeat 制作的插件,就可以监视到 Nginx 的日志。插件中的配置,是为了确定日志路径、以及指定 Elasticsearch、Kibana 的连接地址。

常见问题

  • 组件未依赖 Elasticsearch 和 Kibana 导致收集不到日志

    可以在组件管理页面的依赖页面,选择从应用市场安装的 Elasticsearch 和 Kibana 进行依赖,重启更新后使其生效。

  • 插件配置中,ES 密码 不匹配导致收集不到日志

    可以到 Elasticsearch 组件中查看其环境变量,确认 ES 密码,或者在组件的依赖页面查看,确认密码是否匹配。重启更新后使其生效。

  • 依赖关系都存在,插件配置都正确收集不到日志

    可以尝试重启组件,确认所有的配置都生效了,再确认日志是否收集成功。