缘由
写这篇文章的原因是因为在项目开发中需要使用日志收集框架,但是发现现有的日志收集工具并不能完全满足我们的需求。我们需要一些定制化的功能,涉及到读取Oracle日志,但是网上关于这方面的资料比较分散,不好找到全面的介绍。因此花费了很多时间,于是便打算记录下来。
适用人员
有一定fluentd基础的人,会一点ruby的就更好了
Fluentd
Fluentd是一款开源的日志收集工具,可以帮助您从各种不同的数据源(例如 Docker 容器,Apache Web服务器等)收集日志数据。使用Fluentd,您可以将数据发送到多种目标,包括Elasticsearch,Amazon S3和MongoDB等。Fluentd还支持插件来扩展其功能,因此您可以自定义它以满足您的需求。
Fluentd的官方文档可以在此找到:https://docs.fluentd.org/
Fluent Bit
Fluent Bit是Fluentd的轻量级版本,专为嵌入到其他应用程序和服务中而设计。它可以收集来自多个数据源的日志,并将其转发到多个目标。Fluent Bit还支持插件来扩展其功能。
你可以在这里找到Fluent Bit的官方文档:https://docs.fluentbit.io/
项目背景
- 客户的项目有多个,想要把日志统一收集起来保存到mongo中,同时开发一个系统用于对收集起来的日志进行查看审查等操作
- 需要收集的日志有文件,有服务器相关的日志,有数据库日志。前两者都是读取文件的,这种官方文档已经说的很清楚了,这里就不做赘述
- 项目的需求,需要读取Oracle操作日志,并写入mongo中。也是本章所要讲述的内容
方案选择
难点,由于本人非专业DBA,对Oracle并不是非常熟悉,花的时间就比较多了。
主要的方案有三种:
- 读取ORACLE 日志文件,这个方案从网上查了很多,根据网上的方法也找到了日志文件,但是基本上是乱码,或者里面的内容极少。可能是打开方式不对,总之没有成功。本来是首选,但是卡在找不到可以解析的文件,所以没有使用。
- 读取视图v𝑠𝑞𝑙,该视图会记录所有对数据库的增删改查的操作,可以直接𝑆𝑄𝐿查询得到数据,本文使用这种方法,通过𝑓𝑙𝑢𝑒𝑛𝑡𝑑读取𝑣 sql , 该 视 图 会 记 录 所 有 对 数 据 库 的 增 删 改 查 的 操 作 , 可 以 直 接 SQL 查 询 得 到 数 据 , 本 文 使 用 这 种 方 法 , 通 过 fluentd 读 取 v sql视图,并存入mongo中
- 监听数据库操作并记录到文件中,fluentbit读取该文件并发送到fluentd进行保存,由于对fluentd接触的不多,所以如何通过这种插件不知道要如何实现,使用java倒是可以,但是,这样需要多维护一个项目,麻烦,且稳定性肯定没有直接用fluentd好

正文
好了,也该进入正文了,先做一下准备
- fluentd是使用ruby编写的,ruby要连接Oracle,需要安装oracle 客户端,这里使用官方的轻量级的oracle客户端, oracle instant client,官网下载之后,设置环境变量即可
- 这里会用到fluentd的插件fluent-plugin-sql,以及基于ruby的oracle orm框架 activerecord-oracle_enhanced-adapter
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删