前言

ELK 是三个开源项目的首字母缩写:Elasticsearch、Logstash 和 Kibana。但后来出现的 FileBeat 可以完全替代 Logstash的数据收集功能,也比较轻量级。本文将介绍 EFK: Elasticsearch、Filebeat 和 Kibana

Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;

Kibana:数据分析和可视化平台。与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;

Filebeat:Filebeat 是一个轻量级的传送器,用于转发和集中日志数据。Filebeat 作为代理安装在您的服务器上,监控您指定的日志文件或位置,收集日志事件,并将它们转发到 Elasticsearch 或 Logstash 以进行索引。

通过本文了解如何将运行在 Rainbond 上的应用,通过开启 FileBeat 插件的方式收集应用日志并发送到 Elasticsearch 中。

整合架构

在收集日志时,需要在应用中启用 FileBeat 插件进行收集,FileBeat收集日志有三种方式:

  1. 指定日志路径
  2. 收集所有容器日志
  3. 指定 Label 自动发现

本文使用 指定日志路径进行收集,这种方式我们可以自定义收集日志的规则等。

我们将 FileBeat 制作成 Rainbond 的 一般类型插件 ,在应用启动之后,插件也随之启动并自动收集日志发送至 Elasticsearch,整个过程对应用容器无侵入,且拓展性强。对接其他日志收集也可以用类似方式,用户通过替换插件实现对接不同的日志收集工具。

下图展示了在Rainbond使用FileBeat插件收集应用日志并发送到 Elasticsearch 的结构。

插件实现原理解析

Rainbond插件体系是相对于Rainbond应用模型的一部分,插件主要用来实现应用容器扩展运维能力。由于运维工具的实现有较大的共性,因此插件本身可以被复用。插件必须绑定到应用容器时才具有运行时状态,用以实现一种运维能力,比如性能分析插件、网络治理插件、初始化类型插件。

具有运行时的插件的运行环境与所绑定的组件从以下几个方面保持一致:

  • 网络空间 这个一个至关重要的特性,网络空间一致使插件可以对组件网络流量进行旁路监听和拦截,设置组件本地域名解析等。
  • 存储持久化空间 这个特性使得插件与组件之间可以通过持久化目录进行文件交换。
  • 环境变量 这个特性使得插件可以读取组件的环境变量。

在制作 FileBeat 插件的过程中,使用到了 一般类型插件,可以理解为一个POD启动两个 Container,Kubernetes原生支持一个POD中启动多个 Container,但配置起来相对复杂,在Rainbond中通过插件实现使用户操作简单。

通过Rainbond 应用商店一键安装 EK

我们已将 elasticsearch + Kibana 制作为应用并发布至应用市场,用户可基于开源应用商店一键安装。

  1. 安装 Rainbond
  2. 在开源应用商店搜索 elasticsearch,点击安装即可一键安装;

  1. elasticsearch 默认启用了 xpack 安全模块来保护我们的集群,所以我们需要一个初始化的密码。我们进入 elasticsearch Web终端执行如下所示的命令,Web终端内运行 bin/elasticsearch-setup-passwords 命令来生成默认的用户名和密码:
bin/elasticsearch-setup-passwords 参数
auto 自动生成
interactive 手动填写
  1. 进入 Kibana 组件的环境变量中,修改默认连接 elasticsearch的环境变量 ELASTICSEARCH_PASSWORD

收集应用日志

使用 Nginx 作为本文的演示应用,在Rainbond上使用镜像创建组件,

  • 镜像地址:nginx:latest
  • 挂载存储:/var/log/nginx,将Nginx日志持久化,Filebeat插件可读取到该日志文件。

制作 FileBeat 插件

在Rainbond团队界面点击插件后进入插件界面,点击新建插件,创建一般类型插件。

  • 镜像地址:docker.elastic.co/beats/filebeat:7.15.2
  • 其他自定义即可。

创建插件并构建,构建成功后我们在 Nginx组件的插件中开通 FileBeat 插件。

在Nginx组件的环境配置中,添加 FileBeat 配置文件 如下,更多配置可参考 官方文档

  • 配置文件挂载路径:/usr/share/filebeat/filebeat.yml
  • 配置文件权限:644
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/*.log
output.elasticsearch:
hosts: '127.0.0.1:9200'
username: "elastic"
password: "elastic"

建立依赖关系

将 Nginx 与 elasticsearch 建立依赖关系,使其能通过 127.0.0.1地址与 elasticsearch 通信,更新Nginx组件使依赖生效。

访问Kibana

Kibana默认已汉化

  1. 点击 Stack Management > 索引管理,可看到我们的 filebeat 索引已存在。

  2. Stack Management > 索引模式,创建 filebeat 索引模式。

  3. Discover 页面即可看到日志信息。

总结

基于Rainbond的插件机制与 EFK 结合,使用户可以快速的通过EFK收集应用日志进行分析,并且可灵活的将插件 FileBeat 替换为 Logstash

除此之外,Rainbond的插件机制具有开放性,通过插件机制对应用治理功能进行扩展,例如网络治理类、数据备份类插件,在对原应用逻辑无侵入的情况下,能够通过网络治理类插件对服务的性能进行分析,对接ELK等日志收集系统;对于数据库等组件而言,使用备份插件对数据进行备份。

关于Rainbond

Rainbond 是一个开源的云原生应用管理平台,使用简单,不需要懂容器和Kubernetes,支持管理多个Kubernetes集群,提供企业级应用的全生命周期管理,功能包括应用开发环境、应用市场、微服务架构、应用持续交付、应用运维、应用级多云管理等。

Github:https://github.com/goodrain/rainbond

官网:https://www.rainbond.com

Rainbond通过插件整合ELK/EFK,实现日志收集的更多相关文章

  1. ELK+kafka构建日志收集系统

    ELK+kafka构建日志收集系统   原文  http://lx.wxqrcode.com/index.php/post/101.html   背景: 最近线上上了ELK,但是只用了一台Redis在 ...

  2. ELK+Kafka 企业日志收集平台(一)

    背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis ...

  3. Rainbond通过插件整合SkyWalking,实现APM即插即用

    作者:张震 一. 简介 SkyWalking 是一个开源可观察性平台,用于收集.分析.聚合和可视化来自服务和云原生基础设施的数据.支持分布式追踪.性能指标分析.应用和服务依赖分析等:它是一种现代 AP ...

  4. ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)

    本文章将会继承上一篇文章,主要讲通过工具来进行日志的收集与发送,<ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd> Nxlog是一个日志收集工具, ...

  5. 转: 基于elk 实现nginx日志收集与数据分析

    原文链接:https://www.cnblogs.com/wenchengxiaopenyou/p/9034213.html 一.背景 前端web服务器为nginx,采用filebeat + logs ...

  6. ELK Stack 企业级日志收集平台

    ELK Stack介绍 大型项目,多产品线的日志收集 ,分析平台 为什么用ELK? 1.开发人员排查问题,服务器上查看权限 2.项目多,服务器多,日志类型多 ELK 架构介绍 数据源--->lo ...

  7. 05 . ELK Stack+Redis日志收集平台

    环境清单 IP hostname 软件 配置要求 网络 备注 192.168.43.176 ES/数据存储 elasticsearch-7.2 内存2GB/硬盘40GB Nat,内网 192.168. ...

  8. ELK之生产日志收集构架(filebeat-logstash-redis-logstash-elasticsearch-kibana)

    本次构架图如下 说明: 1,前端服务器只启动轻量级日志收集工具filebeat(不需要JDK环境) 2,收集的日志不进过处理直接发送到redis消息队列 3,redis消息队列只是暂时存储日志数据,不 ...

  9. Logback+ELK+SpringMVC搭建日志收集服务器

    (转) 1.ELK是什么? ELK是由Elasticsearch.Logstash.Kibana这3个软件的缩写. Elasticsearch是一个分布式搜索分析引擎,稳定.可水平扩展.易于管理是它的 ...

随机推荐

  1. spring整合mybatis — 更新完毕

    1.准备工作 -- 导入依赖 <dependency> <groupId>org.springframework</groupId> <artifactId& ...

  2. wsdl实例

    1 <?xml version='1.0' encoding='UTF-8'?> 2 <wsdl:definitions name="HelloWorldService&q ...

  3. Java对象的创建过程:类的初始化与实例化

    一.Java对象创建时机 我们知道,一个对象在可以被使用之前必须要被正确地实例化.在Java代码中,有很多行为可以引起对象的创建,最为直观的一种就是使用new关键字来调用一个类的构造函数显式地创建对象 ...

  4. 【Services】【Web】【Nginx】静态下载页面的安装与配置

    1. 拓扑 F5有自动探活机制,如果一台机器宕机,请求会转发到另外一台,省去了IPVS漂移的麻烦 F5使用轮询算法,向两台服务器转发请求,实现了负载均衡 2. 版本: 2.1 服务器版本:RHEL7. ...

  5. Hibernate的基本功能:对数据库的增删改查(创建对象实例)

    一.通过实例化的对象向数据库添加新记录 package com.yh.test; import org.hibernate.Session; import org.hibernate.SessionF ...

  6. 【力扣】123. 买卖股票的最佳时机 III

    给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的 ...

  7. 【C/C++】学生排队吃饭问题

    问题: 有n个学生,学生们都在排队取餐,第个学生在L国时刻来到队尾,同一时刻来的学生编号小的在前,每个时刻当队列不为空时,排在队头的同学就可以拿到今天的中餐并离开队伍,若第个学生R团时刻不能拿到中餐, ...

  8. 【阿菜做实践】利用ganache-cli本地fork以太坊主链分叉

    前言 Fork主网意思是模拟具有与主网相同的状态的网络,但它将作为本地开发网络工作. 这样你就可以与部署的协议进行交互,并在本地测试复杂的交互.不用担心分叉主网作为测试链会占很多内存.这些方法都不会将 ...

  9. Python——连接数据库操作

    一.数据库基础用法 要先配置环境变量,然后cmd安装:pip install pymysql 1.连接MySQL,并创建wzg库 #引入decimal模块 import pymysql #连接数据库 ...

  10. 如何使用cURL获得请求/响应具体耗时?

    如何使用cURL一次测量请求和响应时间? cURL支持格式化输出请求的详细信息(请参阅cURL手册页的-w.–write out<format>获取更多信息). 如题,我们将只关注如何知晓 ...