背景

本文简单介绍下,Prometheus如何通过exporters监控Oracle数据库,以及应该注意哪些指标。

oracledb_exporter

oracledb_exporter是一个连接到Oracle数据库并生成Prometheus metrics的应用程序,

设置

展示下如何安装和设置oracledb_exporter,以使用Prometheus来监控Oracle数据库。oracledb_exporter部署在k8s集群中

在k8s使用Deployment部署oracledb_exporter,并添加注解,以实现Prometheus自动发现oracledb_exporter断点并收集指标

spec:

template:

metadata:

annotations:

prometheus.io/scrape: "true"

prometheus.io/port: "9161"

prometheus.io/path: "/metrics"

oracledb_exporter需要Oracle的连接信息才能访问和生成指标,此参数作为环境变量传递到exporter。由于连接信息包含用于访问数据库的用户和密码,因此我们将使用Kubernetes Secret来存储它。

要创建到Oracle数据库的连接字符串的密码,可以使用以下命令:

kubectl create secret generic oracledb-exporter-secret \

--from-literal=datasource='YOUR_CONNECTION_STRING'

在deployment中,这样配置环境变量

env:

- name: DATA_SOURCE_NAME

valueFrom:

secretKeyRef:

name: oracledb-exporter-secret

key: datasource

要确保连接信息是否正确:

system/password@//database_url:1521/database_name.your.domain.com

可以使用 sqlplus docker镜像进行检测

docker run --net='host' --rm --interactive guywithnose/sqlplus sqlplus system/password@//database_url:1521/database_name.my.domain.com

下面添加一些自定义指标,包括慢查询(slow queries),错误查询(bug queries)

为了使用自定义指标:

在deployment中,我们将添加另一个环境变量,该变量具有到新指标的文件的路由。

从ConfigMap将此新文件挂载为volume

完整配置如下:

apiVersion: apps/v1

kind: Deployment

metadata:

name: oracledb-exporter

namespace: database-namespace

spec:

selector:

matchLabels:

app: oracledb-exporter

replicas: 1

template:

metadata:

labels:

app: oracledb-exporter

annotations:

prometheus.io/scrape: "true"

prometheus.io/port: "9161"

prometheus.io/path: "/metrics"

spec:

containers:

- name: oracledb-exporter

ports:

- containerPort: 9161

image: iamseth/oracledb_exporter

env:

- name: DATA_SOURCE_NAME

valueFrom:

secretKeyRef:

name: oracledb-exporter-secret

key: datasource

- name: CUSTOM_METRICS

value: /tmp/custom-metrics.toml

volumeMounts:

- name: custom-metrics

mountPath: /tmp/custom-metrics.toml

subPath: custom-metrics.toml

volumes:

- name: custom-metrics

configMap:

defaultMode: 420

name: custom-metrics

ConfigMap:

apiVersion: v1

kind: ConfigMap

metadata:

name: custom-metrics

namespace: database-namespace

data:

custom-metrics.toml: |

[[metric]]

context = "slow_queries"

metricsdesc = { p95_time_usecs= "Gauge metric with percentile 95 of elapsed time.", p99_time_usecs= "Gauge metric with percentile 99 of elapsed time." }

request = "select percentile_disc(0.95) within group (order by elapsed_time) as p95_time_usecs, percentile_disc(0.99) within group (order by elapsed_time) as p99_time_usecs from v$sql where last_active_time >= sysdate - 5/(24*60)"

[[metric]]

context = "big_queries"

metricsdesc = { p95_rows= "Gauge metric with percentile 95 of returned rows.", p99_rows= "Gauge metric with percentile 99 of returned rows." }

request = "select percentile_disc(0.95) within group (order by rownum) as p95_rows, percentile_disc(0.99) within group (order by rownum) as p99_rows from v$sql where last_active_time >= sysdate - 5/(24*60)"

[[metric]]

context = "size_user_segments_top100"

metricsdesc = {table_bytes="Gauge metric with the size of the tables in user segments."}

labels = ["segment_name"]

request = "select * from (select segment_name,sum(bytes) as table_bytes from user_segments where segment_type='TABLE' group by segment_name) order by table_bytes DESC FETCH NEXT 100 ROWS ONLY"

[[metric]]

context = "size_user_segments_top100"

metricsdesc = {table_partition_bytes="Gauge metric with the size of the table partition in user segments."}

labels = ["segment_name"]

request = "select * from (select segment_name,sum(bytes) as table_partition_bytes from user_segments where segment_type='TABLE PARTITION' group by segment_name) order by table_partition_bytes DESC FETCH NEXT 100 ROWS ONLY"

[[metric]]

context = "size_user_segments_top100"

metricsdesc = {cluster_bytes="Gauge metric with the size of the cluster in user segments."}

labels = ["segment_name"]

request = "select * from (select segment_name,sum(bytes) as cluster_bytes from user_segments where segment_type='CLUSTER' group by segment_name) order by cluster_bytes DESC FETCH NEXT 100 ROWS ONLY"

[[metric]]

context = "size_dba_segments_top100"

metricsdesc = {table_bytes="Gauge metric with the size of the tables in user segments."}

labels = ["segment_name"]

request = "select * from (select segment_name,sum(bytes) as table_bytes from dba_segments where segment_type='TABLE' group by segment_name) order by table_bytes DESC FETCH NEXT 100 ROWS ONLY"

[[metric]]

context = "size_dba_segments_top100"

metricsdesc = {table_partition_bytes="Gauge metric with the size of the table partition in user segments."}

labels = ["segment_name"]

request = "select * from (select segment_name,sum(bytes) as table_partition_bytes from dba_segments where segment_type='TABLE PARTITION' group by segment_name) order by table_partition_bytes DESC FETCH NEXT 100 ROWS ONLY"

[[metric]]

context = "size_dba_segments_top100"

metricsdesc = {cluster_bytes="Gauge metric with the size of the cluster in user segments."}

labels = ["segment_name"]

request = "select * from (select segment_name,sum(bytes) as cluster_bytes from dba_segments where segment_type='CLUSTER' group by segment_name) order by cluster_bytes DESC FETCH NEXT 100 ROWS ONLY"

创建Secret和ConfigMap之后,就可以应用Deployment并检查它是否正在从Oracle数据库的端口9161中获取指标。

如果一切正常,Prometheus将自动发现exporter带注释的pod,并在几分钟内开始抓取指标。可以在Prometheus Web界面的target部分中对其进行检查,以查找以oracledb_开头的任何指标。

监控什么

性能指标

等待时间: exporter在Oracle数据库的不同活动中提供一系列等待时间的指标。它们都以oracledb_wait_time_前缀开头,它们有助于评估数据库在哪里花费了更多时间。它可以存在于I/O,网络,提交,并发等中。通过这种方式,我们可以确定系统中可能影响Oracle数据库整体性能的瓶颈。

慢查询:某些查询返回结果所花的时间可能比其他查询长。如果此时间高于应用程序中配置的接收响应的超时时间,它将认为这是来自数据库的超时错误,然后重试查询。这种行为可能会使系统超负荷工作,并影响整体性能。

在上面显示的配置中,有两个自定义指标可提供最近5分钟内执行查询的响应时间的百分比95和99的信息。这些指标是:

oracledb_slow_queries_p95_time_usecs

oracledb_slow_queries_p99_time_usecs

活动会话:监视Oracle数据库中活动会话很重要。如果超过配置的限制,则数据库将拒绝新连接,从而导致应用程序错误。提供此信息的指标是oracledb_sessions_value,标签status可以提供更多信息。

活动:监视数据库执行的操作也很重要。为此,我们可以依靠以下指标:

oracledb_activity_execute_count

oracledb_activity_parse_count_total

oracledb_activity_user_commits

oracledb_activity_user_rollbacks

监控oracle数据io,Prometheus监控Oracle数据库相关推荐

  1. oracle数据泵还原命令,Oracle Linux环境中使用数据泵的形式还原Oracle数据库

    今天需要将一个数据泵方式导出的oracle备份文件还原到Linux环境下的Oracle数据库中,花了我不少时间查资料才搞定,得记录下来. 第一步.使用SecureFXPortable工具,将备份文件( ...

  2. Oracle数据泵自动删除,Oracle数据库之Oracle数据泵

    本文主要向大家介绍了Oracle数据库之Oracle数据泵,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 一.数据泵技术的优点 原有的导出和导入技术基于客户机,而数据泵技术基于 ...

  3. Oracle数据库面试题 精选 Oracle 面试题

    Oracle数据库面试题 1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法.适用于所有模式的数据库. 优点 1. 是非常快速 ...

  4. y70.第四章 Prometheus大厂监控体系及实战 -- Prometheus监控介绍(一)

    1.监控简介 亚马逊副总裁.CTO 沃纳 · 沃格斯(Werner Voegls)说过:"You build it,you run it,you monitor it." (你构建 ...

  5. ubuntu下oracle数据的导入,导入oracle数据库命令行

    Windows DOS窗体下Oracle 数据库的导入导出命令 oracle 用户创建 数据库的导入导出imp/exp 可以在SQLPLUS.EXE或者DOS(命令行)中执行 执行环境:可以在SQLP ...

  6. oracle数据提交不上去,oracle数据库命令窗口执行了语句但是没有提交会有什么影响吗...

    Oracle数据库里面有DCL语句(Data Control Language),一共有四个关键字,commit.rollback.grant和revoke.它们执行的时候,你都不会有什么感觉.com ...

  7. oracle数据泵的原理,oracle 数据泵 详解

    导出数据 1)按用户导 expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dir logfile=expdp.log ...

  8. oracle数据泵导出 不全,Oracle RAC数据泵导出问题处理

    1. 设置导出文件路径 sqlplus / as sysdba SQL> alter session set container=spdb1pdb; SQL> create directo ...

  9. oracle 数据块 修复,案例:Oracle坏块 使用RMAN工具的命令clear标记数据块为corrupt 修复坏块...

    天萃荷净 运维DBA巡检发现数据文件中存在坏块,使用RMAN工具的命令clear标记数据坏块,使用bbed修复坏块 在rman中有隐藏的命令clear,可以标记数据块为corrupt,从而实现数据库坏 ...

最新文章

  1. 各种Web漏洞测试平台
  2. The Art of Unix Programming
  3. powwr shell_Powershell Do While 循环
  4. 一个简单的桌面应用程序框架示例(Java SE9)
  5. Linux 下禅道和 SVN、GIT 集成插件发布
  6. 关于aop:pointcut的expression配制说明及JoinPoint
  7. [css] 使用css将图片转换成黑白的效果
  8. 专栏订阅须知《必读》
  9. linux-权限更改-符号更改法-rwx
  10. Java日期型集合排序
  11. 【Python】eval+random库+字符串转列表+列表转字符串
  12. WP7有约(六):AppBarUtils使用指南
  13. 题解 牛客【「水」悠悠碧波】
  14. 设置mysql允许外网访问
  15. 【GoLang】golang中可以直接返回slice吗?YES
  16. 不想买Xbox?没关系,微软正打算让你在电视上也能玩游戏
  17. [实时更新]草木瓜BLOG发表的全部文章
  18. 论文篇-----基于拉依达准则的交通数据粗大误差处理优化方法
  19. SolidWorks 2010 SP0.0 最新下载+序列号 注册机及方法
  20. 山西民生云 执行认证校验出错_山西民生云app最新版下载,山西民生云大同app认证官网最新版本下载 v2.2 - 浏览器家园...

热门文章

  1. 电话光端机作用,电话光端机功能特点介绍
  2. 光端机的技术指标及构成有哪些?
  3. 非管理型工业交换机和管理型工业交换机的区别和选择
  4. 工业以太网交换机有多少个快速以太网接口?
  5. 【渝粤教育】国家开放大学2018年秋季 0688-22T老年精神障碍护理 参考试题
  6. 【渝粤教育】电大中专学前儿童语言教育 (6)作业 题库
  7. [渝粤教育] 西南科技大学 经济数学2 在线考试复习资料
  8. [渝粤教育] 中国地质大学 面向对象程序设计 复习题 (2)
  9. 【渝粤题库】陕西师范大学200401 初等代数研究 作业(专升本)
  10. 【渝粤题库】广东开放大学 文化活动策划与组织 形成性考核