操作场景
OracleDB Exporter 用于从 Oracle 数据库中抓取指标,并将其通过 Prometheus 指标的方式向外暴露的开源组件,通过该 Exporter 上报的性能、负载及健康状况等指标数据,用于监控大盘展示和异常报警。腾讯云可观测平台 Prometheus 提供了与 OracleDB Exporter 集成及开箱即用的 Grafana 监控大盘。
接入方式
方式一:一键安装(推荐)
操作步骤
1. 登录 Prometheus 监控服务控制台。
2. 在实例列表中,选择对应的 Prometheus 实例。
3. 进入实例详情页,选择数据采集 > 集成中心。
4. 在集成中心找到并单击 OracleDB,即会弹出一个安装窗口,在安装页面填写指标采集名称和地址等信息,并单击保存即可。
配置说明
参数 | 说明 |
名称 | 集成名称,命名规范如下: 名称具有唯一性。 名称需要符合下面的正则:'^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'。 |
用户名 | OracleDB 的用户名称。 |
密码 | OracleDB 的密码。 |
域名 | OracleDB 的服务域名。 |
端口 | OracleDB 的服务端口。 |
数据库 | OracleDB 的数据库名称。 |
标签 | 给指标添加自定义 Label。 |
方式二:自定义安装
说明
前提条件
在 Prometheus 实例对应地域及私有网络(VPC)下,创建腾讯云容器服务 Kubernetes 集群,并为集群创建 命名空间。
在 Prometheus 监控控制台 > 选择对应的 Prometheus 实例 > 数据采集 > 集成容器服务中找到对应容器集群完成关联集群操作。可参见指引 关联集群。
操作步骤
步骤一:Exporter 部署
1. 登录 容器服务控制台。
2. 在左侧菜单栏中单击集群。
3. 单击需要获取集群访问凭证的集群 ID/名称,进入该集群的管理页面。
4. 执行以下 使用 Secret 管理 OracleDB 连接串 > 部署 OracleDB Exporter > 验证 步骤完成 Exporter 部署。
步骤二:使用 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为数据库名称
步骤三:部署 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: 1selector:matchLabels:k8s-app: oracledb-exporter # 根据业务需要调整成对应的名称,建议加上 OracleDB 实例的信息template:metadata:labels:k8s-app: oracledb-exporter # 根据业务需要调整成对应的名称,建议加上 OracleDB 实例的信息spec:containers:- args:- --web.listen-address=:8080envFrom:- secretRef:name: oracledb-secret-test # 上一步创建出来的Secret名称image: ccr.ccs.tencentyun.com/rig-agent/common-image:oracledb-exporter-v0.6.0-alpineimagePullPolicy: IfNotPresentname: oracledb-exporterports:- containerPort: 8080name: metricsprotocol: TCPterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstimagePullSecrets:- name: qcloudregistrykeyrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30
步骤四:验证
1. 在 Deployment 页面单击上述步骤创建的 Deployment,进入 Deployment 管理页面。
2. 单击日志页签,无报错信息输出即可,如下图所示:
3. 单击 Pod 管理页签进入 Pod 页面。
4. 在右侧的操作项下单击远程登录,即可登录 Pod,在命令行窗口中执行以下 wget 命令对应 Exporter 暴露的地址,可以正常得到对应的 OracleDB 指标。如发现未能得到对应的数据,请检查连接串是否正确,具体如下:
wget -qO- http://localhost:8080/metrics
执行结果如下图所示:
步骤五:添加采集任务
1. 登录 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 单击数据采集 > 集成容器服务,选择已经关联的集群,通过数据采集配置 > 新建自定义监控 > YAML 编辑来添加采集配置。
3. 通过服务发现添加
PodMonitors
来定义 Prometheus 抓取任务,YAML 配置示例如下:apiVersion: monitoring.coreos.com/v1kind: PodMonitormetadata:name: oracledb-exporter # 填写一个唯一名称namespace: cm-prometheus # 按量实例: 集群的 namesapce; 包年包月实例(已停止售卖): namespace 固定,不要修改spec:podMetricsEndpoints:- interval: 30sport: metric-port # 填写pod yaml中Prometheus Exporter对应的Port的Namepath: /metrics # 填写Prometheus Exporter对应的Path的值,不填默认/metricsrelabelings:- action: replacesourceLabels:- instanceregex: (.*)targetLabel: instancereplacement: 'crs-xxxxxx' # 调整成对应的 OracleDB 实例 IDnamespaceSelector: # 选择要监控 oracledb exporter pod所在的namespacematchNames:- oracledb-demoselector: # 填写要监控pod的Label值,以定位目标podmatchLabels:k8s-app: oracledb-exporter
查看监控
前提条件
Prometheus 实例已绑定 Grafana 实例。
操作步骤
1. 登录 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 在实例基本信息页面,找到绑定的 grafana 地址,打开并登录,然后在 database 文件夹中找到 Oracle DB 实例监控面板,查看实例相关监控数据,如下图所示:
配置告警
附录: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 | 抓取间隔设置。 |