安装配置 Oracle
简单起见,我使用 Docker 启动 Oracle,命令如下:
如上命令启动之后,Oracle 的监听端口是 1521,用户名/密码是 system/oracle,数据库 SID 是 xe,要监控 Oracle,首先得有账号连上去执行 SQL,所以这些连接信息得记住喽,待会要用。
如果是对既有的 Oracle 做监控,需要创建账号并分派权限,比如:
安装 Cprobe
Cprobe 是一个探针采集器,支持常见数据库、中间件的采集,比如 MySQL、Redis、MongoDB、Oracle、Kafka、ElasticSearch 等,最新版本是 v0.7.1,我们从 github releases 页面下载:
我是 arm 的 linux,所以下载的是 cprobe-v0.7.1-linux-arm64.tar.gz,如果你是 x86 的,应该下载 amd64 那个包。如果你从 github 下载有困难,我这里提供一个国内的下载地址:
解压缩进入对应目录,执行 install 和 start 命令即可:
安装完成。
配置 Cprobe 采集
首先配置要采集的 Oracle 的地址,进入刚才 cprobe 解压出的目录,编辑 conf.d/oracledb/main.yaml,修改如下:
上面的 IP 是我的 Oracle 的 IP,你要根据你的环境做调整。这个 main.yaml 又引用了 link.toml 和 comm.toml,在 link.toml 中配置认证信息,比如:
comm.toml 的内容不用动。监控 Oracle 的原理就是连上去执行一堆 SQL,comm.toml 中提前帮你准备好了一堆 SQL,其实还有 cust.toml 有更多 SQL,看你需求,如果 cust.toml 中的监控项你也需要,那就把 cust.toml 也配置到 main.yaml 中,如下:
下面我们测试一下,看看是否真的能够采集到数据:
正常来讲,会输出很多指标,类似下面这样:
上面的各个参数的含义:
- -no-writer 表示不写入 TSDB,只是输出到控制台
- -no-httpd 表示 Cprobe 不启动 HTTP 服务
- -plugins oracledb 表示只启动 oracledb 插件,如果你还想启动其他插件,可以用逗号分隔,比如 -plugins oracledb,mysql,redis,如果想启动所有插件,就不加 -plugins 参数即可,默认就是启动所有插件
配置 Cprobe 写入 TSDB
监控数据采集到之后,需要写入 TSDB,Cprobe 在 conf.d 目录下提供 writer.yaml 配置文件,把其中 writers.url 部分改成你自己的时序库的 remote write 地址即可。
- 如果时序库是 Prometheus,url 通常是:http://IP:9090/api/v1/write
- 如果时序库是单机版本的 VictoriaMetrics,url 通常是:http://IP:8428/api/v1/write
- 如果时序库是集群版本的 VictoriaMetrics,url 通常是:http://IP:8480/insert/0/prometheus/api/v1/write
- 如果想把数据直接推给夜莺,url 通常是:http://IP:17000/prometheus/v1/write
配置完成之后,重启 Cprobe 即可:
writer.yaml 的改动需要重启 Cprobe 才能生效。如果是修改各个插件目录下的配置,改完之后发给 HUP 信号给 Cprobe,Cprobe 会自动 reload 配置,不需要重启。比如:
仪表盘
笔者整理了 Oracle 的 Grafana 仪表盘,分享给大家,不过 Oracle 的指标都是通过配置文件自定义 SQL 采集的,指标差别可能比较大,这个仪表盘只能是仅供参考了: