一、概述

网上找了很多监控开源工具,打算用来监控Oracle、MySQL等数据库,最后选择了PrometheusGrafana,主要是相对于Zabbix来说,简直不要太友好,本文全部是亲手搭建的,绝非很多博客复制粘贴,同样一篇文章搬来搬去,导致找相关文档的时候简直爆炸,不多哔哔,接下来就讲一下如何搭建Prometheus、Grafana环境以及监控MySQL和Oracle。

二、前期环境准备

服务器

IP地址

Prometheus服务器

192.168.3.102

Grafana服务器

192.168.3.103

被监控服务器

192.168.3.77

被监控服务器

192.168.3.93

192.168.3.77已经安装好了oracle11g,192.168.3.93安装好了MySQL


2.1 关闭防火墙以及selinux

#查看防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld
#查看selinux
getenforce
#永久关闭selinux
vi /etc/selinux/config
#将SELINUX=enforcing改为SELINUX=disabled,并重启系统

Grafana监控教程java grafana监控mysql_Grafana监控教程java

2.2 配置主机名

三台主机都互相绑定IP与主机名

192.168.3.102 master
192.168.3.103 gra
192.168.3.77 ora

Grafana监控教程java grafana监控mysql_Grafana监控教程java_02

2.3 时间同步

yum install -y  ntpdate && ntpdate time.windows.com

这里我在做的时候遇到一个问题,就是执行完之后还是不同步,最后发现是时区不一致,导致时间同步完之后还是不一样。

执行完之后输入date检查一下是否已经同步。

Grafana监控教程java grafana监控mysql_linux_03

三、Prometheus搭建

3.1 上传prometheus安装包

  • 上传prometheus-2.5.0.linux-amd64.tar.gz

    如果需要别的版本可以点击prometheus官网去下载你需要的版本。
  • 解压
tar -zxvf prometheus-2.5.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-2.5.0.linux-amd64/  /usr/local/prometheus

Grafana监控教程java grafana监控mysql_linux_04

3.2 启动Prometheus

  • 使用默认配置文件启动
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
  • 查看9090端口是否开启
ss -anlt | grep 9090

Grafana监控教程java grafana监控mysql_oracle_05

3.3 访问Prometheus界面

浏览器输入http://服务器IP:9090即可访问Prometheus的主界面,注意是服务器IP是要替换的,别复制到浏览器问为什么没有界面出来。

Grafana监控教程java grafana监控mysql_oracle_06

默认只监控本机

Grafana监控教程java grafana监控mysql_linux_07

在这里插入图片描述

3.3主机数据展示

  • 通过服务器IP:9090/metrics可以查看到监控的数据
  • Grafana监控教程java grafana监控mysql_mysql_08

  • 可视化查询一些监控项
  • Grafana监控教程java grafana监控mysql_mysql_09

四、Grafana搭建

4.1 什么是Grafana

Grafana监控教程java grafana监控mysql_监控类_10


如上面所说,Grafana是一个开源的监控可视化平台,它可以通过将采集的数据进行分析,查询,然后进行可视化的展示,而且支持告警。

4.2 Grafana安装

  • 上传grafana-5.3.4-1.x86_64.rpm安装包,也可以点击官网选择下载
  • 安装

    由于使用rpm的方式安装会显示缺少组件,就使用yum安装,会自动安装缺少的组件。
  • 启动服务并设置开机自启
systemctl start grafana-server 
systemctl enable grafana-server
#确认端口
ss -anlt | grep 3000

Grafana监控教程java grafana监控mysql_mysql_11

4.2 Grafana界面

  • 通过浏览器访问服务器IP:3000即可进入Grafana主界面

    默认用户名和密码都是admin

4.3 数据源配置

  • 接下来把prometheus服务器收集到的数据作为数据源添加到Grafana,这样Grafana就能把Prometheus的数据进行可视化了。
  • Grafana监控教程java grafana监控mysql_oracle_12


Grafana监控教程java grafana监控mysql_mysql_13

Grafana监控教程java grafana监控mysql_mysql_14

4.4 仪表盘展示

  • 创建图形
  • Grafana监控教程java grafana监控mysql_监控类_15

  • 编辑
  • Grafana监控教程java grafana监控mysql_oracle_16


  • Grafana监控教程java grafana监控mysql_linux_17

  • 而且只要已添加便立刻能看到效果了,针不错
  • Grafana监控教程java grafana监控mysql_mysql_18

  • 保存
  • Grafana监控教程java grafana监控mysql_mysql_19

  • 完成
  • Grafana监控教程java grafana监控mysql_Grafana监控教程java_20

五、监控MySQL

5.1 Prometheus监控MySQL

5.1.1 上传mysqld_exporter组件

Grafana监控教程java grafana监控mysql_mysql_21

5.1.2 安装mysqld_exporter组件

tar xf mysqld_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/mysqld_exporter-0.11.0.linux-amd64/  /usr/local/mysqld_exporter 
ls /usr/local/mysqld_exporter

Grafana监控教程java grafana监控mysql_mysql_22

#授权
grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by '123'; 
#刷新
flush privileges;
#退出
quit

Grafana监控教程java grafana监控mysql_mysql_23

5.1.3 创建mysql配置文件

vi /usr/local/mysqld_exporter/.my.cnf

Grafana监控教程java grafana监控mysql_mysql_24


这里user和password要一一对应

Grafana监控教程java grafana监控mysql_linux_25

5.1.4 启动mysqld_exporter

nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &

Grafana监控教程java grafana监控mysql_监控类_26

  • 确认端口9104
ss -anlt | grep 9104

Grafana监控教程java grafana监控mysql_监控类_27

5.1.5 Prometheus服务器配置

vi /usr/local/prometheus/prometheus.yml

在最后加上这三行

- job_name: 'mysql'
    static_configs:
    - targets: ['192.168.3.93:9104']

Grafana监控教程java grafana监控mysql_mysql_28

这里切记,格式要注意,不然开启prometheus服务会报错。

5.1.5 查看监控效果

  • 改完配置文件后需要重启服务
pkill prometheus
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
  • 进入
  • Grafana监控教程java grafana监控mysql_mysql_29

  • 可以看到MySQL已经监控到了,可以查看到一些监控项。
  • Grafana监控教程java grafana监控mysql_linux_30


5.2 Grafana显示MySQL监控数据

5.2.1 下载安装MySQL监控的dashboard

#进入grafana的lib目录
cd /var/lib/grafana/
  • 上传grafana-dashboards-master.zip
  • Grafana监控教程java grafana监控mysql_oracle_31


#解压
unzip grafana-dashboards-master.zip

Grafana监控教程java grafana监控mysql_oracle_32

cp -R /var/lib/grafana/grafana-dashboards-master/dashboards/ /var/lib/grafana/

Grafana监控教程java grafana监控mysql_linux_33

5.2.2 更改grafana配置文件

vi /etc/grafana/grafana.ini
  • 在文件最后加上
[dashboards.json] 
enabled = true 
path = /var/lib/grafana/dashboards

Grafana监控教程java grafana监控mysql_监控类_34

  • 重启Grafana服务
systemctl restart grafana-server

5.2.3 导入Json文件

Grafana监控教程java grafana监控mysql_Grafana监控教程java_35


Grafana监控教程java grafana监控mysql_oracle_36


Grafana监控教程java grafana监控mysql_oracle_37

  • 点击Import之后,直接可以看到相关界面
  • Grafana监控教程java grafana监控mysql_mysql_38


  • 这里有一点需要注意,json文件默认的数据源名称是Prometheus,如果你在4.3数据源配置时数据源的名称不对应的话,那可能会没有数据,如果你不想更改数据源的配置的话,也可以选择更改json文件的数据源名称,就是比较繁琐,需要更改的比较多,不过你可以通过通配符替换的方式更改,这里不撰述。
  • Grafana监控教程java grafana监控mysql_oracle_39


六、监控Oracle

6.1 配置Go环境

由于Prometheus是用golang开发的,所以先安装一下Go环境。

  • 上传文件go1.16.2.linux-amd64.tar.gz
  • Grafana监控教程java grafana监控mysql_监控类_40


  • 解压
tar -xvf go1.16.2.linux-amd64.tar.gz -C /usr/local/
  • 配置环境变量
vi /etc/profile
#go environment
export PATH=$PATH:/usr/local/go/bin

Grafana监控教程java grafana监控mysql_监控类_41


每次更改配置文件,记得刷新才会生效

source /etc/profile
  • 测试是否安装成功
go version

Grafana监控教程java grafana监控mysql_监控类_42

6.2 配置Oracle客户端

6.2.1 上传Oracle客户端文件

Grafana监控教程java grafana监控mysql_Grafana监控教程java_43

6.2.2 安装Oracle客户端文件

rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

Grafana监控教程java grafana监控mysql_mysql_44

#创建文件夹
mkdir -p /usr/lib/oracle/11.2/client64/network/admin
#创建监听文件
vi /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora
#/usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora
ORCL11G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.105)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
#更改权限
chmod -R 755 /usr/lib/oracle/
chown -R oracle:oinstall  /usr/lib/oracle/

Grafana监控教程java grafana监控mysql_oracle_45

6.2.3 配置Oracle局部环境变量

su - oracle
vi ~/.bash_profile
export ORACLE_HOME2=/usr/lib/oracle/11.2/client64
export ORACLE_SID=orcl11g.us.oracle.com
export NLS_LAN=GAMERICAN_AMERICA.AL32UTF8
export PATH=$PATH:$ORACLE_HOME2
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME2/lib

Grafana监控教程java grafana监控mysql_监控类_46


检查一遍环境变量的设置

Grafana监控教程java grafana监控mysql_监控类_47

6.3 配置exporter

  • 上传exporter文件
  • Grafana监控教程java grafana监控mysql_oracle_48


  • 解压并授权
tar -xvf oracledb_exporter.0.2.2.linux-amd64.tar.gz
chmod u+x oracledb_exporter.0.2.2.linux-amd64/oracledb_exporter
mv oracledb_exporter.0.2.2.linux-amd64 oracledb_exporter
mv oracledb_exporter /usr/local/
chown oracle:oinstall /usr/local/oracledb_exporter/

Grafana监控教程java grafana监控mysql_监控类_49

  • 设置执行的环境变量
vi ~/.bash_profile

export DATA_SOURCE_NAME=用户名/密码@ 数据库服务名

export DATA_SOURCE_NAME=system/11111111

Grafana监控教程java grafana监控mysql_linux_50

  • 启动服务
./oracledb_exporter -log.level error -web.listen-address IP:9161
  • 缺少一些依赖包
  • Grafana监控教程java grafana监控mysql_Grafana监控教程java_51


  • 进入lib库查看,确实是没有
  • Grafana监控教程java grafana监控mysql_mysql_52


  • 导入缺失的依赖包
  • Grafana监控教程java grafana监控mysql_linux_53


  • 所以我换了一种方式启动,这里切记使用oracle用户去执行下面命令,不然会导致Prometheus能监控得到而Grafana显示的状态是DEAD。这里困惑了我很久。
nohup ./oracledb_exporter &

Grafana监控教程java grafana监控mysql_linux_54

  • 测试访问
http://服务器ip:9161/metrics

记得是服务器IP,不要直接复制粘贴到地址栏然后思考没有反应- -

可以看到Oracle的监控指标列表

Grafana监控教程java grafana监控mysql_监控类_55

6.4 Prometheus服务器配置

vi /usr/local/prometheus/prometheus.yml
- job_name: '105_oracle'
    static_configs:
    - targets: ['192.168.3.105:9161']

Grafana监控教程java grafana监控mysql_linux_56

6.5 查看监控效果

  • 改完配置文件后需要重启服务
pkill prometheus
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

Grafana监控教程java grafana监控mysql_监控类_57

  • 可以查看到一些监控项
  • Grafana监控教程java grafana监控mysql_监控类_58


6.6 Grafana显示Oracle监控数据

6.6.1 下载安装Oracle监控的dashboard

可以点击Grafana的官网上选择自己心仪的监控模板

Grafana监控教程java grafana监控mysql_oracle_59

Grafana监控教程java grafana监控mysql_mysql_60

6.6.2 更改grafana配置文件

这一步如果你之前监控MySQL已经设置好了就不需要再设置了,如果没有设置的话,查看5.2.2

6.6.3 导入json文件

参考网址https://grafana.com/api/dashboards/3333/revisions/1/download

Grafana监控教程java grafana监控mysql_oracle_61


至此,Prometheus+Grafana的基本环境搭建,以及如何利用这两者的结合监控MySQL、Oracle就到这结束,花费了一周的时间写这个博客,如果对你有帮助的话,还请多多评论点赞收藏,如果有什么不对的,还请指正!谢谢!!!