Oracle 监控客户端的连接数量趋势
背景
前期简单总结了table方式将表信息展示出来的方法
但是感觉这样非常不直观.
想着能够做出一个趋势来.
时序数据库的最佳的使用方式.
之前的确是太靠自己的自学领悟了.
发现系统的培训和学习很重要. 靠自己很难, 还是需要靠知识的传递
想法
希望能够将连接数据库的客户端信息 通过时序表表示出来
目标主要有两个:
1. 如果有一个客户端突然暴涨, 说明可能存在异常,连接池泄露后者是提交事务慢了
2. 如果有办公机器的连接, 并且数据出现了异常, 可以记录下来连接的时间等信息.
3. 能够对最近几天的趋势进行查看, 可以与数据库事务提交数进行交叉对比.
工具和方法
与表大小的方法一样.
还是采用 oracledb_exporter 的工具进行暴露自定义的监控指标.
然后使用prometheus进行采集,最终使用grafana自定义的时序图进行简单展示
及其简单的监控指标获取
[[metric]]
context = "machine"
labels = [ "machine" ]
metricsdesc = { machinenum = "machine number" }
request = '''
select machine as machine,count(machine) as machinenum from v$session where machine <> 'oracle12c' group by machine
'''
# 注意 prometheus 只能够获取数字类型的指标
# 如果查询结果里面有英文字符, 汉字等情况下需要使用labels 进行提取
# 其他的查询结果必须使用 metricsdesc 的进行描述, 有几个数字类型就需要几个描述
# 在metrics的监控结果中. 几个metricsdesc 就会有几个监控指标. 多个监控指标进行展示的话需要使用merge的方式进行.
oracledb_exporter采集指标
export DATA_SOURCE_NAME=oracle://grafana:[email protected]:1521/ora12c
export QUERY_TIMEOUT=30000
nohup oracledb_exporter --default.metrics "/oracle_exporter/custom-metrics.toml" --scrape.interval 60s &
然后可以在 ip:9161 端口处的metrics 里面查看监控信息.
Grafana的处理
1. 新增加一个panel,使用默认的时序模式
2. edit这个panel,选择数据源时prometheus, 然后在metics browser 里面选用Code
3. 输入本次使用的监控指标
oracledb_machine_machinenum
需要注意 oracledb 是 作者的原始标志,后面两个是 监控的context以及metricsdesc的信息.
还是那句话 有几个metricsdesc 就会有几个 metrics. 多个的话 需要merge的方式进行展示.
4. 选择这个Query,打开options. 输入: {{machine}} 后来规范化 连接机器的信息.
5. 右侧选择time series, 然后可以修改一下panel的名字就可以了.