
上节我分享Mysql监控的部署,小群里好奇宝宝们要求尽快分享Oracle的监控。故本节提前分享出Oracle的监控。
本文目录:
1. Exporter部署
2. Prometheus配置
3. Grafana配置
4. 效果展示
5. 增加监控项
1. Exporter部署
在需要被监控的Oracle服务器上,下载并上传oracle exporter。
下载地址:
https://github.com/iamseth/oracledb_exporter/releases
[root@exn1 ~]# su - oracleLast login: Mon Jul 20 13:46:26 CST 2020exn1:/home/oracle(kevin1)$cd app/soft/exn1:/app/soft(kevin1)$ rz oracledb_exporter.0.2.9-ora18.5.linux-amd64.tar.gzexn1:/app/soft(kevin1)$ tar -xvf oracledb_exporter.0.2.9-ora18.5.linux-amd64.tar.gzexn1:/app/soft(kevin1)$ mv oracledb_exporter.0.2.9-ora18.5.linux-amd64 ../exporter/oracleexn1:/app/soft(kevin1)$ cd ../exporter/oracleexn1:/app/exporter/oracle(kevin1)$ cp default-metrics.toml custom.metrics
配置oracle exporter,创建监控用户并修改环境变量。
SQL> alter user DBSNMP identified by dbsnmp;SQL> alter user DBSNMP account unlock;
echo >> home/oracle/.bash_profile <<EOFLD_LIBRARY_PATH=$ORACLE_HOME/lib;export LD_LIBRARY_PATHexport DATA_SOURCE_NAME='dbsnmp/dbsnmp@kevin'EOF
启动Oracle exporter
exn1:/app/exporter/oracle(kevin1)$nohup app/exporter/oracle/oracledb_exporter -default.metrics app/exporter/oracle/custom.metrics 1>/dev/null 2>&1 &
注:如上内容可以写入rc.local文件开机自启,可以配置服务开机自启。
测试已经集成的监控指标:
[prometheus@Prometheus ~]$ curl http://192.168.19.11:9161/metrics
项目Readme文件中作者有说他不是专业的go开发和数据库管理员,所以这里给广大dba提供了一个配置文件的接口。通过dba自己添加select语句,简单配置custom.metrics文件,即可自由的添加监控项。文章结尾会简单叙述如何增加监控项。
2. Prometheus配置
Prometheus服务器端配置文件中增加如下内容,增加完成后热重启。
[prometheus@Prometheus ~]$ cat app/prometheus/prometheus.yml#oralce- job_name: oraclescrape_interval: 30sstatic_configs:- targets: ['192.168.19.11:9161'][prometheus@Prometheus ~]$ curl -XPOST http://localhost:9090/-/reload
3. Grafana配置
同上篇文章mysql监控中,我们从官网下载展示模版,地址如下:
https://grafana.com/grafana/dashboards
在网页左侧输入关键字”oracle“即可,下载自己喜欢的模版的json文件。导入grafana.


4. 效果展示
导入完成后,我们可以看到导入的oracle展示界面,点击即可查看各种监控图标。如下图:

5. 增加监控项
如上文中提到,由于该开源项目的开发人员,不是从事数据库管理工作,未集成很多dba关注的指标。这就需要dba自己编写sql采集。 开发人员提供了非常简单的方式,只需要按照简单固定的格式,将select语句写入custom.metrics配置文件,重启exporter即可。下文,简单演示增加新指标过程。
假设我们想要增加asm磁盘组使用情况的监控。首先编写SQL。
SQL> select name,total_mb, free_mb from v$asm_diskgroup;
查看custom.metrics文件的默认格式:
exn1:/app/exporter/oracle(kevin1)$head default-metrics.toml[[metric]]context = "sessions"labels = [ "status", "type" ]metricsdesc = { value= "Gauge metric with count of sessions by status and type." }request = "SELECT status, type, COUNT(*) as value FROM v$session GROUP BY status, type"
模仿编写我们自己的监控项:
[[metric]]context = "asm_diskgroup"labels = [ "name", "total_mb" ]metricsdesc = { free_mb = "Asm diskgroup free space." }request = "select name,total_mb, free_mb from v$asm_diskgroup"
将如上内容追加到custom.metrics配置文件中,然后重启oracle exporter.
exn1:/app/exporter/oracle(kevin1)$ps -ef | grep exportprometh+ 8899 1 5 13:46 ? 00:05:32 app/exporter/node_exporter/node_exporteroracle 9996 1 0 13:46 ? 00:00:29 app/exporter/oracle/oracledb_exporter -default.metrics app/exporter/oracle/custom.metricsoracle 49282 39463 0 15:34 pts/0 00:00:00 grep --color=auto exportexn1:/app/exporter/oracle(kevin1)$kill -9 9996exn1:/app/exporter/oracle(kevin1)$exn1:/app/exporter/oracle(kevin1)$exn1:/app/exporter/oracle(kevin1)$nohup /app/exporter/oracle/oracledb_exporter -default.metrics /app/exporter/oracle/custom.metrics 1>/dev/null 2>&1 &
获取指标:
[prometheus@Prometheus ~]$ curl http://192.168.19.11:9161/metrics | grep free_mb# TYPE oracledb_asm_diskgroup_free_mb gaugeoracledb_asm_diskgroup_free_mb{name="CRS",total_mb="6144"} 5708oracledb_asm_diskgroup_free_mb{name="DATA",total_mb="50208"} 44236[prometheus@Prometheus ~]$
指标获取到后,在grafana oracle面板中增加该图。


此时会发现列表中多了些没用的列,如下增加详细信息控制配置。


编辑完成后,点击右上角”Apply“,完成配置。
效果展示:

如上,我们完成了自定义监控项,及Grafana展示配置。感谢开源项目的开发人员,为dba提供了如此简便的配置。
前文链接:
更多技术细节,欢迎关注公众号联系作者交流。

关注更多精彩




