通过oracledb_exporter远程监控oracle数据库
在部署了prometheus主机上通过拉取oracledb_exporter的docker镜像,实现远程端口监控oracle数据库。
·
记录:在部署了prometheus主机上通过拉取oracledb_exporter的docker镜像,实现远程端口监控oracle数据库。
前提:部署prometheus的主机要和oracle数据库能够互通,且prometheus主机能够访问外网。有防火墙就添加相应策略,该放行放行,该关闭关闭。
官方文档中已给出对应教程:
1. 安装docker
1.1 更新yum源
yum update
1.2 安装必要软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
1.3 添加Docker存储库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.4 安装Docker引擎
yum install docker-ce docker-ce-cli containerd.io
1.5 启动Docker服务并设置为开机自启动
1.5.1 启动docker服务
sudo systemctl start docker
1.5.2 设置开机自启
sudo systemctl enable docker
2. 拉取oracledb_exporter的docker镜像
docker pull ghcr.io/iamseth/oracledb_exporter:0.5.0
3. 为系统后台启动一个名为 oracledb_exporter
的 Docker 容器
格式:
docker run -d -it --rm -p 9161:9161 -e DATA_SOURCE_NAME="oracle://数据库的用户名:数据库的密码@数据库的IP:数据库的端口/数据库实例名" --name oracledb_exporter ghcr.io/iamseth/oracledb_exporter:0.5.0
例子:
docker run -d -it --rm -p 9161:9161 -e DATA_SOURCE_NAME="oracle://test:test@1234@192.168.1.1:1521/orcl" --name oracledb_exporter ghcr.io/iamseth/oracledb_exporter:0.5.0
解析:
参数/选项 | 说明 |
---|---|
docker run | 运行 Docker 容器的命令。 |
-d | 后台运行容器并立即退出,容器在后台作为守护进程运行。 |
-it | -i 保持容器的标准输入打开,-t 分配一个伪终端。这使得你可以与容器进行交互。 |
--rm | 容器退出时自动清理容器文件系统,即删除容器。 |
-p 9161:9161 | 将容器的 9161 端口映射到宿主机的 9161 端口。 |
-e DATA_SOURCE_NAME | 设置环境变量 DATA_SOURCE_NAME 。 |
"oracle://test:test1234@192.168.1.1:1521/orcl" | 指定 Oracle 数据库的连接信息,格式为 oracle://username:password@host:port/instance_name 。 |
--name oracledb_exporter | 为容器指定名称 oracledb_exporter 。 |
ghcr.io/iamseth/oracledb_exporter:0.5.0 | 指定要使用的 Docker 镜像及其版本标签。 |
详细说明
- docker run:这是 Docker CLI 的基本命令,用于创建并启动一个新的容器。
- -d:告诉 Docker 在后台运行容器。这意味着容器会在后台运行,不会阻塞当前的命令行。
- -it:使得你可以与容器进行交互。
-i
保持容器的标准输入打开,-t
分配一个伪终端。 - --rm:容器在退出时会被自动删除,这有助于清理不再需要的容器。
- -p 9161:9161:将容器内部的 9161 端口映射到宿主机的 9161 端口。这样,你可以通过访问宿主机的 9161 端口来访问容器内部的服务。
- -e DATA_SOURCE_NAME:设置环境变量
DATA_SOURCE_NAME
,用于传递数据库连接信息。格式为oracle://username:password@host:port/instance_name
。username
:数据库用户名。password
:数据库密码。host
:数据库服务器的 IP 地址或主机名。port
:数据库服务器的端口号。instance_name
:实例名。
- --name oracledb_exporter:为容器指定一个名称,这里名称为
oracledb_exporter
。这使得你可以通过名称而不是容器 ID 来引用容器。 - ghcr.io/iamseth/oracledb_exporter:0.5.0:指定要使用的 Docker 镜像及其版本。这里使用的是 GitHub Container Registry 上的
iamseth/oracledb_exporter
镜像,版本为0.5.0
。
顺便给个启动脚本,可以写进crontab计划任务中,用于检测进程在线情况
这里面的 oracle://test:test1234@192.168.1.1:1521/orcl
要改成自己对应的数据库账号、密码、IP、端口。
应该没有人傻到直接抄我的(小声哔哔)
#!/bin/bash
# 定义容器名称
CONTAINER_NAME="oracledb_exporter"
# 检查容器是否在运行
if [ $(docker ps -q -f name=^/${CONTAINER_NAME}$) ]; then
echo "容器 ${CONTAINER_NAME} 正在运行。"
else
echo "容器 ${CONTAINER_NAME} 没有运行。"
docker run -d -it --rm -p 9161:9161 -e DATA_SOURCE_NAME="oracle://test:test1234@192.168.1.1:1521/orcl" --name oracledb_exporter ghcr.io/iamseth/oracledb_exporter:0.5.0
if [ $? -eq 0 ]; then
echo "容器 ${CONTAINER_NAME} 启动成功。"
else
echo "容器 ${CONTAINER_NAME} 启动失败。"
exit 1
fi
fi
怎么写进crontab,自行查找教程。
本实验仅用于实验,所有问题概不负责。
本实验仅用于实验,所有问题概不负责。
本实验仅用于实验,所有问题概不负责。
更多推荐
已为社区贡献1条内容
所有评论(0)