通过 Prometheus 监控 OceanBase 数据

本文介绍如何通过部署 OBCloud Exporter 和 Prometheus 进行 OceanBase 云数据库的监控。

背景信息

OBCloud Exporter 是云数据库 OceanBase 提供的一款数据库数据处理工具,可通过该工具完成 OceanBase 数据库的鉴权和数据获取。再结合本地 Prometheus 工具对数据库进行相应的监控。

下文通过系统直接部署和通过 docker 部署两种方式说明相应的工具使用方法。

前提条件

  1. 已部署 Java 8 及以上的运行环境。

  2. 已完成 Docker 部署。

系统运行 Prometheus 监控 OceanBase 云数据

  1. 下载 OBCloud Exporter。

    说明

    目前 OBCloud Exporter 暂未放开直接下载,可联系技术支持人员获取。

  2. 部署 OBCloud Exporter。

    1. 解压 OBCloud Exporter 安装包,安装目录为 /opt/obcloud-exporter

      mkdir /opt/obcloud-exporter
      tar -zxvf Obcloud_Exporter.tar.gz -C /opt/obcloud-exporter --strip-components=1

      解压后目录包含如下文件:

      • Dockerfile:Docker 容器构建文件。

      • muticloud_metric_config.yaml:指标配置文件,此文件默认不需要修改。

      • application.yaml:采集配置文件。

      • obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar:OBCloud Exporter 程序。

      • readme.md:项目说明。

    2. 编辑配置文件 application.yaml。

      # 监控名称
      aliyun_monitor:
        # 身份凭据
        credential:
          access_key_id: xxx
          access_key_secret: xx
          region_id: ap-southeast-1
          # 终端地址
          end_point: xxx
          # 是否定时刷新 metric 指标,默认为 false。
          metric_meta_auto_refresh: false
        instances:
        		# 实例 ID
          - instance_id: xxx
            # 查询集群下指定租户,需配置 tenant_id
            tenant_id: xxx
            # 实例类型:cluster 集群实例,tenant 租户实例/Serverless 实例。
            instance_type: tenant
            metrics: 

      参数说明:

      • access_key_id、access_key_secret:鉴权信息,可在对应平台申请。具体操作,请参见,创建AccessKey

      • region_id、end_point:请参见 公有云服务区域说明

      • metric_meta_auto_refresh:是否定时刷新 metric 指标,默认为 false。

      • instances:监控实例,可包含多个集群、租户实例,通过短划线(-)并列填入。

      • instance_id:集群 ID、serverless 实例 ID、租户实例 ID。

        说明

        不支持使用集群下的租户 ID。

      • instance_type:固定为 cluster(集群)或 tenant(租户)。当 instance_id 为集群实例时,填入 cluster;当 instance_id 为租户实例、Serverless 实例时,填入 tenant。

      • tenant_id:查询集群下指定租户,需配置 tenant_id。

      • metrics:指标信息,不填表示采集全部指标。当需要采集指定指标时,格式如下:

        instances:
          -instance_id: xxx
            tenant_id: xxx
            instance_type: cluster
            metrics: 
              - sql_all_rt
              - sql_delete_rt
        说明

        采集指标过多可能会影响采集速度,适当情况下拆分为多个 exporter。

  3. 通过 Java 直接运行 OBCloud Exporter。

    java -jar /opt/obcloud-exporter/obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar

    通过浏览器验证部署结果,访问对应 IP 地址的 9400 端口,确认是否获取到监控数据。

    说明

    实际使用中,根据实际配置的地址端口进行访问。

  4. 下载 Prometheus 软件,在官网找到所需版本的 Prometheus 安装包,进行下载,如下以 2.50.1 的 Linux 版本为例。

    wget https://github.com/prometheus/prometheus/releases/download/v2.50.1/prometheus-2.50.1.linux-amd64.tar.gz
  5. 部署 Prometheus。

    1. 解压并安装 Prometheus 软件,安装目录为 /opt/prometheus

      mkdir -p /opt/prometheus
      tar -zxvf prometheus-2.50.1.linux-amd64.tar.gz -C /opt/prometheus --strip-components=1
    2. 转移配置文件 prometheus.yml 到工作目录,并根据需要进行编辑。

      mv /opt/prometheus/prometheus.yml /usr/local/bin/
      vi /usr/local/bin/prometheus.yml

      修改如下参数:

      global:
        scrape_interval: 30s
        scrape_timeout: 20s
      
      scrape_configs:
        - job_name: "nodes"
          static_configs:
          - targets: ['localhost:9400']
    3. 新建 Prometheus 服务文件和相关数据存储目录。

      mkdir /var/lib/prometheus/
      sudo vim /etc/systemd/system/Prometheus.service

      填写如下内容并保存。

      说明

      User(用户)和 Group(用户组)参数是可选的,设置方法请参考下一步骤 设置用户名和用户组

      [Unit]
      Description=Prometheus
      Wants=network-online.target
      After=network-online.target
      
      [Service]
      User=prometheus
      Group=prometheus
      Restart=on-failure
      ExecStart=/opt/prometheus/prometheus \
            --config.file /usr/local/bin/prometheus.yml \
            --storage.tsdb.path /var/lib/prometheus/
      
      [Install]
      WantedBy=multi-user.target
    4. (可选)设置用户名和用户组,上一步骤中配置已有的用户/用户组或者没有配置,可忽略此步骤。

      sudo groupadd prometheus
      sudo useradd -r -g prometheus prometheus
      sudo chown -R prometheus:prometheus /opt/prometheus /var/lib/prometheus
      sudo chmod -R 755 /opt/prometheus /var/lib/prometheus
  6. 启动 Prometheus 服务。

    # 加载新的 systemd 配置
    sudo systemctl daemon-reload
    
    # 启动 Prometheus 服务
    sudo systemctl start prometheus
    
    # 设置开机启动
    sudo systemctl enable prometheus
    
    # 检查服务状态
    sudo systemctl status prometheus
  7. 确认 Prometheus 是否启动成功。

     sudo netstat -ntlp | grep 9090

通过 docker 部署 prometheus 监控 OceanBase 云数据库

  1. 下载 OBCloud Exporter。

    说明

    目前 OBCloud Exporter 暂未放开直接下载,可联系技术支持人员获取。

  2. 部署 OBCloud Exporter。

    1. 解压 OBCloud Exporter 安装包,安装目录为 /opt/obcloud-exporter

      mkdir /opt/obcloud-exporter
      tar -zxvf Obcloud_Exporter.tar.gz -C /opt/obcloud-exporter --strip-components=1

      解压后目录包含如下文件:

      • Dockerfile:Docker 容器构建文件。

      • muticloud_metric_config.yaml:指标配置文件,此文件默认不需要修改。

      • application.yaml:采集配置文件。

      • obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar:OBCloud Exporter 程序。

      • readme.md:项目说明。

    2. 编辑配置文件 application.yaml。

      # 监控名称
      aliyun_monitor:
        # 身份凭据
        credential:
          access_key_id: xxx
          access_key_secret: xx
          region_id: ap-southeast-1
          # 终端地址
          end_point: xxx
          # 是否定时刷新 metric 指标,默认为 false。
          metric_meta_auto_refresh: false
        instances:
        		# 实例 ID
          - instance_id: xxx
            # 查询集群下指定租户,需配置 tenant_id
            tenant_id: xxx
            # 实例类型:cluster 集群实例,tenant 租户实例/Serverless 实例。
            instance_type: tenant
            metrics: 

      参数说明:

      • access_key_id、access_key_secret:鉴权信息,可在对应平台申请。具体操作,请参见,创建AccessKey

      • region_id、end_point:请参见 公有云服务区域说明

      • metric_meta_auto_refresh:是否定时刷新 metric 指标,默认为 false。

      • instances:监控实例,可包含多个集群、租户实例,通过短划线(-)并列填入。

      • instance_id:集群 ID、serverless 实例 ID、租户实例 ID。

        说明

        不支持使用集群下的租户 ID。

      • instance_type:固定为 cluster(集群)或 tenant(租户)。当 instance_id 为集群实例时,填入 cluster;当 instance_id 为租户实例、Serverless 实例时,填入 tenant。

      • tenant_id:查询集群下指定租户,需配置 tenant_id。

      • metrics:指标信息,不填表示采集全部指标。当需要采集指定指标时,格式如下:

        instances:
          -instance_id: xxx
            tenant_id: xxx
            instance_type: cluster
            metrics: 
              - sql_all_rt
              - sql_delete_rt
        说明
        • metric 指标的详细介绍,请参见 监控指标清单

        • 采集指标过多可能会影响采集速度,适当情况下拆分为多个 exporter。

  3. 通过 Docker 启动 OBCloud Exporter。

    1. /opt/obcloud-exporter目录下,构建 obcloud-exporter 容器。

      cd /opt/obcloud-exporter
      docker build -t obcloud-exporter:1.0 .
    2. 启动容器或者映射外部配置文件启动。

      1. 直接启动 Docker 容器

        docker run -itd -p9400:9400 --name obcloud-exporter obcloud-exporter:1.0
      2. 通过映射外部配置文件启动 Docker 容器。

        docker run -itd -p9400:9400 -v /opt/obcloud-exporter/application.yaml:/app/application.yaml --name obcloud-exporter obcloud-exporter:1.0
  4. 通过浏览器验证部署结果,访问对应 IP 地址的 9400 端口,确认是否获取到监控数据。

    说明

    实际使用中,根据实际配置的地址端口进行访问。

  5. 创建 Prometheus 配置文件 prometheus.yml。

    vi /usr/local/bin/prometheus.yml

    编辑配置文件内容:

    global:
      scrape_interval: 30s
      evaluation_interval: 30s
    
    scrape_configs:
      - job_name: obcloud-exporter-test
        static_configs:
            # 本地服务器加端口
          - targets: ['obcloud-exporter:9400']
            labels:
              instance: obcloud-exporter
  6. 启动 Prometheus 服务。

     docker run  -d \
       -p 9090:9090 \
       -v /usr/local/bin/prometheus.yml:/etc/prometheus/prometheus.yml  \
       --link obcloud-exporter  \
       --name prometheus \
       prom/prometheus
  7. 确认 Prometheus 是否启动成功。

    sudo netstat -ntlp | grep 9090

通过 Prometheus 查看数据库监控

通过浏览器访问 Prometheus 服务地址:http://localhost:9090/targets,查看相应的监控信息。lQLPJxcJ683eZ_HNAmbNDuKwDdAnFkHqjxkF4KMzI2DYAA_3810_614

监控指标清单

配置 OBCloud Exporter 时,其支持的指标项遵循 OceanBase 云数据库自身所涵盖的指标范围。在运行时,系统会同步 OceanBase 云数据库集群的自定义监控指标,包括集群自定义监控指标中的 集群主机 部分及租户级别下的所有自定义监控指标。详细内容,请参见 集群监控指标清单租户监控指标清单

当 application.yaml 配置文件中的 metric_meta_auto_refresh 参数设置为 false 时,支持的指标保持初次访问返回的结果;当 metric_meta_auto_refresh 参数设置为 true 时,则每 10 分钟会更新一次支持的指标清单。