一、操作步骤
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 | 抓取间隔设置。 |