前言

汽车之家几年前已实现了应用日志的采集,但是对数据库日志并没有实现集中采集,排查定位数据库故障原因不便。2021年我们研发了数据库日志采集分析平台系统,实现了数据库主机系统日志,数据库错误日志,审计日志的采集和分析。

01

背景介绍

之家数据库日志以前分散在各DB宿主机及容器RDS上,没有实现集中采集,排查定位故障原因不便。2021年DBA研发了数据库日志采集分析平台,实现了主机系统日志,数据库错误日志,审计日志的采集和分析。通过日志的集中采集,提升了故障排查效率,并且深入挖掘日志价值,可为未来之家数据库的智能审计,智能运维(如故障预警,自愈,自动调优)提供基础。

02

日志分析发展历程

日志分析并不是一项新颖的技术了,需要的是实际解决问题的思路或工具,哪怕是一段只有20行的命令脚本都可以。日志分析的发展划可分成4个时代:

1.石器时代:石器时代日志分析通常依靠Excel、终端命令(awk、grep、sort、uniq、wc等)。

2. 铁器时代:铁器时代通常依靠脚本工具(自写工具)、简易交互式工具(logwatch、logparser)等。

3. 工业时代:工作时代大家在做日志分析的时候相比前两个时代已经有了太多 的进步了,各种开源、免费、付费的软件可供选择,比如:Elastic系列、Splunk等等。

4. 未来时代:这个时代大家在做日志分析时候我不知道会用到什么,但是从目前来看,机器学习、人工智能应该是核心之一。

统一日志分析平台的工作在看来可以简单分为2个阶段:

平台实现:日志规范化 –> 日志采集 –> 日志存储 –> 日志分析 –> 日志展示 –> 告警实现;

平台优化:这个阶段是对平台实现中的每一个步骤进行优化。

以下对常见的开源日志采集工具做一简单分析:

03

方案设计

之家数据库日志平台,可以分为应用层,日志采集层,缓存层,解析层,存储层,展示层,系统架构如图1

图 1日志采集架构图

04

方案实施

通过之家二次开发的log-pilot日志采集工具,对数据库机器系统日志、DB错误日志、审计日志进行采集。采集的日志数据存入Kafka,为避免和其它业务日志相互影响, DBA采集申请了独立的KAFKA集群与Topic进行隔离。消费KAFKA数据采用Flink,对数据库日志数据进行处理,优化,精简,最终日志存入Elasticsearch。日志展示使用了开源的Kibana。即数据流为日志源文件→Log-pilot→Kafka→Flink→ELasticsearch→Kibana展示。

采集的数据库日志有错误日志,审计日志等,各种日志数据格式不统一,我们进行了日志规范化处理。其中审计日志支持json格式,DBA开发了Flink Api,Flink任务启动加载引用python包进行json数据处理赋值给ES索引字段。

另外为了高效运维管理数据库日志,做了如下工作:

  • 日志可视化配置管理: 开发了日志配置管理界面,可以对DB实例进行日志路径配置,日志采集启停。

  • 日志监控报警: 对ERROR或敏感数据审计日志,上报公司监控告警平台(AutoCMP),对重要日志信息及时发现并通知到告警接收人。

05

平台展示

图 2数据库物理实例日志采集

图 3采集日志Dashboard展示

图 4数据库日志报警

06

展望

未来计划增加重点数据库的SQL日志采集,通过分析SQL对高危操作。比如:DROP/TRUNCATE,DELETE等SQL语句执行进行审计监控报警。对数据库中warning/error等问题进行分析治理,进一步提升数据库服务质量。