Prometheus 监控服务 Oracle DB Exporter 接入

OracleDB Exporter 用于从 Oracle 数据库中抓取指标,并将其通过 Prometheus 指标的方式向外暴露的开源组件,通过该 Exporter 上报的性能、负载及健康状况等指标数据,用于监控大盘展示和异常报警。腾讯云可观测平台 Prometheus 提供了与 OracleDB Exporter 集成及开箱即用的 Grafana 监控大盘。

相关产品
Prometheus 监控服务 产品页,含版本规格、价格与购买入口。

一、操作步骤

1. 登录 Prometheus 监控服务控制台。

2. 在实例列表中,选择对应的 Prometheus 实例。

3. 进入实例详情页,选择数据采集 > 集成中心。

4. 在集成中心找到并单击 OracleDB,即会弹出一个安装窗口,在安装页面填写指标采集名称和地址等信息,并单击保存即可。

二、配置说明

参数 说明
名称 集成名称,命名规范如下:名称具有唯一性。名称需要符合下面的正则:'^a-z0-9?(\\.a-z0-9?)*$'。
用户名 OracleDB 的用户名称,账号创建及授权请参见 账号创建及授权。
密码 OracleDB 的密码。
域名 OracleDB 的服务域名。
端口 OracleDB 的服务端口。
数据库 OracleDB 的数据库名称。
标签 给指标添加自定义 Label。

三、方式二:自定义安装

注意:说明:

注意:为了方便安装管理 Exporter,推荐使用腾讯云 容器服务 来统一管理。

四、前提条件

·在 Prometheus 实例对应地域及私有网络(VPC)下,创建腾讯云容器服务 Kubernetes 集群,并为集群创建 命名空间。

·在 Prometheus 监控控制台 选择对应的 Prometheus 实例,然后在数据采集 > 集成容器服务中找到对应容器集群完成关联集群操作。可参见指引 关联集群。

五、操作步骤

步骤1:Exporter 部署

1. 登录 容器服务控制台。

2. 在左侧菜单栏中单击集群。

3. 单击需要获取集群访问凭证的集群 ID/名称,进入该集群的管理页面。

4. 执行以下 使用 Secret 管理 OracleDB 连接串 > 部署 OracleDB Exporter > 验证 步骤完成 Exporter 部署。

步骤2:使用 Secret 管理 OracleDB 连接串

1. 在左侧菜单中选择工作负载 > Deployment,进入 Deployment 页面。

2. 在页面右上角单击 YAML 创建资源,创建 YAML 配置,配置说明如下:
使用 Kubernetes 的 Secret 来管理连接串,并对连接串进行加密处理,在启动 OracleDB Exporter 的时候直接使用 Secret Key,需要调整对应的连接串,YAML 配置示例如下:

apiVersion: v1kind: Secretmetadata: name: oracledb-secret-test # 根据业务需要调整成对应的名称 namespace: oracledb-demo # 根据业务需要调整成对应的命名空间type: OpaquestringData: datasource: "oracle://test:123456@127.0.0.1:1521/ORCLPDB1" # 对应 OracleDB 连接串信息 # test为用户名,123456为用户密码,127.0.0.1为数据库IP或者域名,1521为数据库端口,ORCLPDB1为数据库名称

步骤3:部署 OracleDB Exporter

1. 在左侧菜单中选择工作负载 > Deployment,进入 Deployment 管理页面。

2. 在页面右上角单击 YAML 创建资源,创建 YAML 配置,选择对应的命名空间来进行部署服务,可以通过控制台的方式创建。如下以 YAML 的方式部署 Exporter, 配置示例如下:

apiVersion: apps/v1kind: Deploymentmetadata: labels: k8s-app: oracledb-exporter # 根据业务需要调整成对应的名称,建议加上 OracleDB 实例的信息 name: oracledb-exporter # 根据业务需要调整成对应的名称,建议加上 OracleDB 实例的信息 namespace: oracledb-demo # 根据业务需要调整成对应的命名空间spec: replicas: 1 selector: matchLabels: k8s-app: oracledb-exporter # 根据业务需要调整成对应的名称,建议加上 OracleDB 实例的信息 template: metadata: labels: k8s-app: oracledb-exporter # 根据业务需要调整成对应的名称,建议加上 OracleDB 实例的信息 spec: containers: – args: – –web.listen-address=:8080 envFrom: – secretRef: name: oracledb-secret-test # 上一步创建出来的Secret名称 image: ccr.ccs.tencentyun.com/rig-agent/common-image:oracledb-exporter-v0.6.0-alpine imagePullPolicy: IfNotPresent name: oracledb-exporter ports: – containerPort: 8080 name: metrics protocol: TCP terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst imagePullSecrets: – name: qcloudregistrykey restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30

步骤4:验证

1. 在 Deployment 页面单击上述步骤创建的 Deployment,进入 Deployment 管理页面。

2. 单击日志页签,无报错信息输出即可:

3. 单击 Pod 管理页签进入 Pod 页面。

4. 在右侧的操作项下单击远程登录,即可登录 Pod,在命令行窗口中执行以下 wget 命令对应 Exporter 暴露的地址,可以正常得到对应的 OracleDB 指标。如发现未能得到对应的数据,请检查连接串是否正确,具体如下:

wget -qO- http://localhost:8080/metrics

执行结果如下:

步骤5:添加采集任务

1. 登录 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。

2. 单击数据采集 > 集成容器服务,选择已经关联的集群,通过数据采集配置 > 新建自定义监控 > YAML 编辑来添加采集配置。

3. 通过服务发现添加 PodMonitors 来定义 Prometheus 抓取任务,YAML 配置示例如下:

apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: oracledb-exporter # 填写一个唯一名称 namespace: cm-prometheus # 按量实例: 集群的 namespace; 包年包月实例(已停止售卖): namespace 固定,不要修改 spec: podMetricsEndpoints: – interval: 30s port: metrics # 填写pod yaml中Prometheus Exporter对应的Port的Name path: /metrics # 填写Prometheus Exporter对应的Path的值,不填默认/metrics relabelings: – action: replace sourceLabels: – instance regex: (.*) targetLabel: instance replacement: 'crs-xxxxxx' # 调整成对应的 OracleDB 实例 ID namespaceSelector: # 选择要监控 oracledb exporter pod所在的namespace matchNames: – oracledb-demo selector: # 填写要监控pod的Label值,以定位目标pod matchLabels: k8s-app: oracledb-exporter

六、账号创建及授权

OracleDB 监控账号需要确保对以下表和视图具有 SELECT 权限。

dba_tablespace_usage_metricsdba_tablespacesv$system_wait_classv$asm_diskgroup_statv$datafilev$sysstatv$processv$waitclassmetricv$sessionv$resource_limit

创建监控账号后,需授予相应表和视图的查询权限来满足监控需求,创建监控账号及授权的操作步骤如下。

1. 在确保客户端机器与 Oracle 数据库服务器连通的前提下,使用命令行工具 sqlplus,使用超级权限账号 sys 连接到 Oracle 数据库。

sqlplus sys/<password>@<host>:<port>/<service_name> as sysdba

其中,service_name 是 Oracle 数据库对外发布的服务名,用于标识和选择连接的具体数据库或容器。可以联系数据库管理员获取该名称,或在数据库终端执行 SELECT name FROM v$services; 查询。

命令执行结果如下:

2. 在创建 OracleDB 监控账号前,请先确认上面连接的是容器数据库(CDB)还是某个可插拔数据库(PDB)。

容器数据库(CDB)可插拔数据库(PDB)在 Oracle CDB 环境中,创建一个以 C## 或 c## 开头的公共账号,并授予其连接 Oracle 数据库服务器的权限。以下示例展示了如何创建一个账号名为 c##prometheus 的监控账号,并赋予其连接权限。说明:在 CDB 环境下,所有公共用户账号名称必须以 C## 或 c## 开头。CREATE USER c##prometheus IDENTIFIED BY password;GRANT CREATE SESSION TO c##prometheus; 命令执行结果如下:在 Oracle PDB 环境中,创建账号,并授予其连接 Oracle 数据库服务器的权限。以下示例展示了如何创建一个账号名为 prometheus 的监控账号,并赋予其连接权限。CREATE USER prometheus IDENTIFIED BY password;GRANT CREATE SESSION TO prometheus; 命令执行结果如下:

3. 给上一步创建的监控用户授予所需表和视图的 SELECT 权限。

GRANT SELECT ON dba_tablespace_usage_metrics TO <username>;GRANT SELECT ON dba_tablespaces TO <username>;GRANT SELECT ON v_$system_wait_class TO <username>;GRANT SELECT ON v_$asm_diskgroup_stat TO <username>;GRANT SELECT ON v_$datafile TO <username>;GRANT SELECT ON v_$sysstat TO <username>;GRANT SELECT ON v_$process TO <username>;GRANT SELECT ON v_$waitclassmetric TO <username>;GRANT SELECT ON v_$session TO <username>;GRANT SELECT ON v_$resource_limit TO <username>;

以监控账号用户名 c##prometheus 为例,其授权命令的执行结果如下:

七、前提条件

Prometheus 实例已绑定 Grafana 实例。

八、操作步骤

1. 登录 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。

2. 在实例基本信息页面,找到绑定的 Grafana 地址,打开并登录,然后在 database 文件夹中找到 Oracle DB 实例监控面板,查看实例相关监控数据:

九、配置告警

腾讯云 Prometheus 托管服务支持告警配置,可根据业务实际的情况来添加告警策略。详情请参见 新建告警策略。

十、附录:OracleDB Exporter 环境变量配置

名称 描述
web.telemetry-path 指标暴露路径,默认 /metrics。
web.systemd-socket 使用 systemd 套接字监听器代替端口监听器(仅限 Linux)。
web.listen-address 监听地址,默认:9161。
web.config.file 配置文件的路径,可以启用 TLS 或身份验证。
log.level 日志级别,可选值列表[debug, info, warn, error, fatal]。
log.format 日志消息的输出格式,示例 logger:syslog?appname=bob&local=7 或 logger:stdout?json=true,默认 stderr。
custom.metrics 自定义指标配置路径。
default.metrics 默认指标配置路径。
database.maxIdleConns 最大空闲连接数,默认0。
database.maxOpenConns 最大打开连接数,默认0。
database.dsn 数据库 dsn 串。
database.dsnFile 读取 dsn 串的文件。
query.timeout 采集查询超时,默认5s。
scrape.interval 抓取间隔设置。
赞 (0)
上一篇 4天前
下一篇 4天前