Oracle监控
对于监控系统,基础功能的强弱确实非常关键,但是如何在不同的场景落地实践,则更为关键。在《监控实践》章节,搜罗各类监控实践经验,会以不同的组件分门别类,您如果对某个组件有好的实践经验,欢迎提 PR,把您的文章链接附到对应的组件目录下。
Oracle 监控数据的采集有多种方式,可以使用 Categraf、Cprobe 等各类工具,其原理都是类似的,无非就是连到 Oracle 实例上,执行相关命令获取监控数据。本文以 Categraf v0.4.15 以上版本为例,介绍 Oracle 监控数据的采集配置方法。
Oracle 插件配置概述
Categraf 的所有插件配置,默认都在 conf 目录下,Oracle 的配置目录是 conf/input.oracle,该目录下有两个配置文件:
oracle.toml:Oracle 插件的主配置文件,配置不同 Oracle 实例的连接、认证信息;Categraf 可以同时连接多个 Oracle 实例,配置文件中可以配置多个实例的连接信息,即不同的[[instances]]配置段。metric.toml:Oracle 插件通过执行各类 SQL 采集 Oracle 监控数据,有些 SQL 是通用的,希望所有的 Oracle 实例都去执行采集,有些 SQL 是特定实例的,只有特定实例才去执行采集,通用的 SQL 都在metric.toml中配置,特定实例的 SQL 在oracle.toml中配置。
oracle.toml
oracle.toml 配置样例如下:
# 默认的采集频率,下面配置的所有的 oracle 的实例默认都会使用这个采集频率 |
Oracle 监控数据采集原理:周期性执行 SQL,把返回的结果转换为 Prometheus 时序数据格式,发送到服务端。SQL 执行的结果是多行多列的二维表格,那我们就需要通过配置告诉 Categraf,哪些列作为时序数据的标签(label),哪些列作为时序数据的值(metric value)。
- mesurement: 自定义的一个指标前缀
- request: 查询监控数据的 SQL 语句
- label_fields: SQL 查到的内容,会有多列,哪些列作为时序数据的 label
- metric_fields: SQL 查到的内容,会有多列,哪些列作为时序数据的值
- field_to_append: 是否要把某列的内容附到监控指标名称里,作为指标的后缀
- timeout: SQL 执行的超时时间
- ignore_zero_result: 是否忽略查询结果中值为 0 的行,如果不忽略(设置为 false)且没有查到数据的话会打印一行错误日志,如果忽略了(设置为 true),则查不到数据的时候不会打印错误日志
metric.toml
这里配置了一些常用的 Oracle 监控数据采集 SQL,Categraf 会定期执行这些 SQL,获取所有 Oracle 实例的监控数据。这里的 SQL 具体含义、作用,可能 Oracle DBA 才比较熟悉,欢迎各位 Oracle DBA 写文章分享这些 SQL 的含义和作用,完事可以把您的文章链接提个 PR 放到本页文档里,让更多人受益。