简单起见,我使用 Docker 启动 Oracle,命令如下:
德江网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。成都创新互联2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
docker run -d --name oracle -p 1022:22 -p 18080:8080 -p 1521:1521 wnameless/oracle-xe-11g-r2
如上命令启动之后,Oracle 的监听端口是 1521,用户名/密码是 system/oracle,数据库 SID 是 xe,要监控 Oracle,首先得有账号连上去执行 SQL,所以这些连接信息得记住喽,待会要用。
如果是对既有的 Oracle 做监控,需要创建账号并分派权限,比如:
-- Create the monitoring user "cprobe"
CREATE USER cprobe IDENTIFIED BY ;
-- Grant the "cprobe" user the required permissions
GRANT CONNECT TO cprobe;
GRANT SELECT ON SYS.GV_$RESOURCE_LIMIT to cprobe;
GRANT SELECT ON SYS.V_$SESSION to cprobe;
GRANT SELECT ON SYS.V_$WAITCLASSMETRIC to cprobe;
GRANT SELECT ON SYS.GV_$PROCESS to cprobe;
GRANT SELECT ON SYS.GV_$SYSSTAT to cprobe;
GRANT SELECT ON SYS.V_$DATAFILE to cprobe;
GRANT SELECT ON SYS.V_$ASM_DISKGROUP_STAT to cprobe;
GRANT SELECT ON SYS.V_$SYSTEM_WAIT_CLASS to cprobe;
GRANT SELECT ON SYS.DBA_TABLESPACE_USAGE_METRICS to cprobe;
GRANT SELECT ON SYS.DBA_TABLESPACES to cprobe;
GRANT SELECT ON SYS.GLOBAL_NAME to cprobe;
Cprobe 是一个探针采集器,支持常见数据库、中间件的采集,比如 MySQL、Redis、MongoDB、Oracle、Kafka、ElasticSearch 等,最新版本是 v0.7.1,我们从 github releases 页面下载:
https://github.com/cprobe/cprobe/releases/tag/v0.7.1
我是 arm 的 linux,所以下载的是 cprobe-v0.7.1-linux-arm64.tar.gz,如果你是 x86 的,应该下载 amd64 那个包。如果你从 github 下载有困难,我这里提供一个国内的下载地址:
https://download.flashcat.cloud/cprobe-v0.7.1-linux-arm64.tar.gz
https://download.flashcat.cloud/cprobe-v0.7.1-linux-amd64.tar.gz
解压缩进入对应目录,执行 install 和 start 命令即可:
./cprobe -install
./cprobe -start
./cprobe -status
安装完成。
首先配置要采集的 Oracle 的地址,进入刚才 cprobe 解压出的目录,编辑 conf.d/oracledb/main.yaml,修改如下:
global:
scrape_interval: 15s
external_labels:
cplugin: 'oracle'
scrape_configs:
- job_name: 'oracle'
static_configs:
- targets:
- 10.99.1.107:1521/xe # ip:port/service
scrape_rule_files:
- 'link.toml'
- 'comm.toml'
上面的 IP 是我的 Oracle 的 IP,你要根据你的环境做调整。这个 main.yaml 又引用了 link.toml 和 comm.toml,在 link.toml 中配置认证信息,比如:
[global]
username = "system"
password = "oracle"
options = {}
comm.toml 的内容不用动。监控 Oracle 的原理就是连上去执行一堆 SQL,comm.toml 中提前帮你准备好了一堆 SQL,其实还有 cust.toml 有更多 SQL,看你需求,如果 cust.toml 中的监控项你也需要,那就把 cust.toml 也配置到 main.yaml 中,如下:
global:
scrape_interval: 15s
external_labels:
cplugin: 'oracle'
scrape_configs:
- job_name: 'oracle'
static_configs:
- targets:
- 10.99.1.107:1521/xe # ip:port/service
scrape_rule_files:
- 'link.toml'
- 'comm.toml'
- 'cust.toml'
下面我们测试一下,看看是否真的能够采集到数据:
./cprobe -no-writer -no-httpd -plugins oracledb
正常来讲,会输出很多指标,类似下面这样:
./cprobe -no-writer -no-httpd -plugins oracledb
2023-12-25T10:27:33.868Z info /Users/ulric/works/cprobe/lib/logger/flag.go:12 build version: 0.0.1-2023-12-25-08-39-11
2023-12-25T10:27:33.868Z info /Users/ulric/works/cprobe/lib/logger/flag.go:13 command-line flags
2023-12-25T10:27:33.868Z info /Users/ulric/works/cprobe/lib/logger/flag.go:20 -no-httpd="true"
2023-12-25T10:27:33.868Z info /Users/ulric/works/cprobe/lib/logger/flag.go:20 -no-writer="true"
2023-12-25T10:27:33.868Z info /Users/ulric/works/cprobe/lib/logger/flag.go:20 -plugins="oracledb"
2023-12-25T10:27:33.868Z info /Users/ulric/works/cprobe/lib/runner/runner.go:25 hostname: ulric-flashcat.local
2023-12-25T10:27:33.868Z info /Users/ulric/works/cprobe/lib/runner/runner.go:26 runtime.fd_limits: (soft=61440, hard=unlimited)
2023-12-25T10:27:33.868Z info /Users/ulric/works/cprobe/lib/runner/runner.go:27 runtime.vm_limits: (soft=unlimited, hard=unlimited)
>> __name__=oracledb_sessions_value cplugin=oracle instance=10.99.1.107:1521/xe job=oracle status=ACTIVE type=BACKGROUND 1703500053881 22.000000
>> __name__=oracledb_sessions_value cplugin=oracle instance=10.99.1.107:1521/xe job=oracle status=ACTIVE type=USER 1703500053881 1.000000
>> __name__=oracledb_resource_current_utilization cplugin=oracle instance=10.99.1.107:1521/xe job=oracle resource_name=processes 1703500053881 29.000000
>> __name__=oracledb_resource_limit_value cplugin=oracle instance=10.99.1.107:1521/xe job=oracle resource_name=processes 1703500053881 100.000000
...
上面的各个参数的含义:
监控数据采集到之后,需要写入 TSDB,Cprobe 在 conf.d 目录下提供 writer.yaml 配置文件,把其中 writers.url 部分改成你自己的时序库的 remote write 地址即可。
配置完成之后,重启 Cprobe 即可:
./cprobe -restart
writer.yaml 的改动需要重启 Cprobe 才能生效。如果是修改各个插件目录下的配置,改完之后发给 HUP 信号给 Cprobe,Cprobe 会自动 reload 配置,不需要重启。比如:
kill -HUP `pidof cprobe`
笔者整理了 Oracle 的 Grafana 仪表盘,分享给大家,不过 Oracle 的指标都是通过配置文件自定义 SQL 采集的,指标差别可能比较大,这个仪表盘只能是仅供参考了:
https://github.com/cprobe/cprobe/blob/main/conf.d/oracledb/doc/dash/grafana_oracledb_01.json
本文题目:一文聊聊如何快速监控Oracle数据库
文章URL:http://www.shufengxianlan.com/qtweb/news18/538168.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联