我们以监控Oracle为例,(目前仅有x86版本,可以下载源码针对不同环境使用golang环境自己编译)
监控什么指标下载对应系统的exporter插件,统一下载地址:https://prometheus.io/download/
监控指标对应的grafana展示模板,统一下载地址:https://grafana.com/grafana/dashboards
oracledb_exporter下载地址:https://github.com/iamseth/oracledb_exporter
oracle client下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html
环境准备
- 已完成Prometheus的配置安装
- 已完成Grafana的配置安装
- 下载oracledb_exporter插件
开始配置
第一步
# 下载Oracledb_exporter
wget https://github.com/iamseth/oracledb_exporter/releases/download/0.2.9/oracledb_exporter.0.2.9-ora18.5.linux-amd64.tar.gz
# 解压运行
tar -zxvf oracledb_exporter.0.2.9-ora18.5.linux-amd64.tar.gz
# 下载oracle-instantclient18.5-basic-18.5.0.0.0-3.x86_64.rpm
# 上传至服务器并安装
rpm -ivh oracle-instantclient18.5-basic-18.5.0.0.0-3.x86_64.rpm
开始运行
第一步配置Oracle client
# 创建client目录
mkdir -p /usr/lib/oracle/12.1/client64/network/admin/
# 编辑监听文件
vim /usr/lib/oracle/12.1/client64/network/admin/tnsnames.ora
## 填写以下内容
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = *IP*)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *SID*)
)
)
# 编辑环境变量配置文件
vim ~/.bashrc
## 输入以下内容
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG='simplified chinese_china'.ZHS16GBK
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
# 设置临时环境变量
export DATA_SOURCE_NAME=用户名/密码@//ip:port/实例名
第二步 todo
./oracledb_exporter
# 多个使用逗号分隔
脚本启动后,可以看到脚本为我们提供了一个基于9161的http服务,http://192.168.5.135:9161/metrics,看到监控数据即为成功
可以看到有许多报错,这些报错暂时先不排查,可能是由于数据库的参数设置导致的或者其它原因。
第二步
- 我们需要将上述脚本提供的http地址配置到prometheus的配置文件中
scrape_configs:
- job_name: 'oracle'
static_configs:
- targets: ['192.168.5.135:9161']
- 保存退出并启动prometheus
./prometheus --config.file=prometheus.yml --web.listen-address=:9099
第三步
- 配置grafana
- 登录grafana
新建数据源,并选择prometheus源(如果存在可跳过,这里不做赘述)
创建仪表板 - 使用导入监控服务器grafana模板的方式
- 经过在官网查找监控服务器指标模板id为3333(由于我们服务器都联网了,所以直接输入id,load即可)
[!TIP|style:callout]
此处特殊说明一下,导入模板的目的本身是为了避免我们重复造轮子,自己去针对每个监控面板写查询prometheus的语句,当然模板本身也是由其他开发者提交的,所以3333并不是我们唯一选择
- 选择
prometheus
源, 点击import
,右上角我们修改为5s刷新一次,等一会可以看到redis的监控指标如下:
以上至少证明了整个监控的流程走通了,至于no data还需要我们真对图标的表达式进行一项一项的验证。
运行oracledb_exporter通用报错
##错误: ./oracledb_exporter: error while loading shared libraries: libclntsh.so.18.1: cannot open shared object file: No such file or directory
find / -name libclntsh.so.18.1
# /usr/lib/oracle/18.5/client64/lib/libclntsh.so.18.1
ln -s /usr/lib/oracle/18.5/client64/lib/libclntsh.so.18.1 /usr/lib64/
## 同理,再次运行oracledb_exporter,缺什么就用上面那种方式解决,知道运行不报错