本文介紹如何通過部署 OBCloud Exporter 和 Prometheus 進行 OceanBase 雲資料庫的監控。
背景資訊
OBCloud Exporter 是OceanBase 提供的一款資料庫資料處理工具,可通過該工具完成 OceanBase 資料庫的鑒權和資料擷取。再結合本地 Prometheus 工具對資料庫進行相應的監控。
下文通過系統直接部署和通過 docker 部署兩種方式說明相應的工具使用方法。
前提條件
已部署 Java 8 及以上的運行環境。
已完成 Docker 部署。
系統運行 Prometheus 監控 OceanBase 雲資料
下載 OBCloud Exporter。
說明目前 OBCloud Exporter 暫未放開直接下載,可聯絡技術支援人員擷取。
部署 OBCloud Exporter。
解壓 OBCloud Exporter 安裝包,安裝目錄為
/opt/obcloud-exporter
。mkdir /opt/obcloud-exporter unzip Obcloud_Exporter.zip -d /opt/obcloud-exporter
解壓後目錄包含如下檔案:
Dockerfile:Docker 容器構建檔案。
muticloud_metric_config.yaml:指標設定檔,此檔案預設不需要修改。
application.yaml:採集設定檔。
obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar:OBCloud Exporter 程式。
readme.md:專案說明。
編輯設定檔 application.yaml。
aliyun_monitor: ## 身份憑據 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 end_point: xxx metric_meta_auto_refresh: false default_metric: - sql_all_rt - sql_delete_rt ## 執行個體資訊 instances: instance_id: xxx tenant_id: xxx instance_type: cluster metrics: - sql_all_rt - sql_delete_rt
參數說明:
參數名稱
是否必填
參數描述
樣本值
access_key_id
是
鑒權資訊,訪問 我的帳號 > AccessKey 擷取,可在對應平台申請。具體操作,請參見,建立AccessKey。
************
access_key_secret
是
鑒權資訊,訪問 我的帳號 > AccessKey 擷取,可在對應平台申請。具體操作,請參見,建立AccessKey。
************
region_id
是
地區資訊,請參見 公用雲端服務地區說明。
ap-southeast-1
end_point
是
終端地址,請參見 公用雲端服務地區說明。
oceanbasepro.ap-southeast-1.aliyuncs.com
metric_meta_auto_refresh
否
是否定時重新整理 metric 指標,預設為 false。
false
default_metric
否
預設指標,當沒有配置 instances 指定採集的執行個體和指標時,可通過 default_metric 控制帳號下所有執行個體採集指定的指標。
- sql_all_rt
instance_id
否
叢集執行個體 ID 或租戶執行個體 ID。可包含多個叢集、租戶執行個體,通過短劃線(-)並列填入。
ob************
tenant_id
否
查詢叢集下指定租戶,需配置 tenant_id, instance_type=cluster 時可以不配置。
當執行個體為租戶執行個體時,需 instance_id 和 tenant_id 都配置相同的執行個體 ID,並且指定 instance_type 為 tenant。
t************
instance_type
否
執行個體類型:
cluster:叢集主機維度監控指標,並且會自動採集叢集下所有租戶的監控資料。
tenant:租戶資料庫維度指標。
tenant
metrics
否
指標資訊,預設為採集全部指標。具體指標清單,請參見本文 監控指標清單 章節。
說明採集指標過多可能會影響採集速度,適當情況下拆分為多個 exporter。
- sql_all_rt
通過 Java 運行 OBCloud Exporter。
可以通過如下命令,指定設定檔啟動 OBCloud Exporter。
java -Dconfig=/xx/application.yaml -jar obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar --spring.config.location=/xx/application.properties
-Dconfig:(可選)指定監控設定檔啟動。
--spring.config.location:(可選)程式預設整合並開啟了 SpringBoot 的 actuator 組件,預設連接埠為 8082,實際使用中也可以自行配置,根據實際配置的地址連接埠進行訪問。預設配置為:
server.port=-1 management.server.port=8082 management.endpoints.web.exposure.include=health,info management.endpoint.health.show-details=always
常見樣本:
# 預設配置啟動 OBCloud Exporter java -jar obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar # 指定環境組態變數啟動 OBCloud Exporter java -jar obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar --spring.config.location=/xx/application.properties # 指定監控設定檔啟動 OBCloud Exporter java -Dconfig=/xx/application.yaml -jar obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar # 同時指定監控設定檔和環境變數配置啟動 OBCloud Exporter java -Dconfig=/xx/application.yaml -jar obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar --spring.config.location=/xx/application.properties
通過瀏覽器驗證部署結果,訪問對應 IP 位址的 9400 連接埠,確認是否擷取到監控資料。
說明實際使用中,根據實際配置的地址連接埠進行訪問。
下載 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
部署 Prometheus。
解壓並安裝 Prometheus 軟體,安裝目錄為
/opt/prometheus
。mkdir -p /opt/prometheus tar -zxvf prometheus-2.50.1.linux-amd64.tar.gz -C /opt/prometheus --strip-components=1
轉移設定檔 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']
建立 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
(可選)設定使用者名稱和使用者組,上一步驟中配置已有的使用者/使用者組或者沒有配置,可忽略此步驟。
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
啟動 Prometheus 服務。
# 載入新的 systemd 配置 sudo systemctl daemon-reload # 啟動 Prometheus 服務 sudo systemctl start prometheus # 設定開機啟動 sudo systemctl enable prometheus # 檢查服務狀態 sudo systemctl status prometheus
確認 Prometheus 是否啟動成功。
sudo netstat -ntlp | grep 9090
通過 docker 部署 prometheus 監控 OceanBase 雲資料庫
下載 OBCloud Exporter。
說明目前 OBCloud Exporter 暫未放開直接下載,可聯絡技術支援人員擷取。
部署 OBCloud Exporter。
解壓 OBCloud Exporter 安裝包,安裝目錄為
/opt/obcloud-exporter
。mkdir /opt/obcloud-exporter unzip Obcloud_Exporter.zip -d /opt/obcloud-exporter
解壓後目錄包含如下檔案:
Dockerfile:Docker 容器構建檔案。
muticloud_metric_config.yaml:指標設定檔,此檔案預設不需要修改。
application.yaml:採集設定檔。
obcloud-exporter-1.0-SNAPSHOT-jar-with-dependencies.jar:OBCloud Exporter 程式。
readme.md:專案說明。
編輯設定檔 application.yaml。
aliyun_monitor: ## 身份憑據 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 end_point: xxx metric_meta_auto_refresh: false default_metric: - sql_all_rt - sql_delete_rt ## 執行個體資訊 instances: instance_id: xxx tenant_id: xxx instance_type: cluster metrics: - sql_all_rt - sql_delete_rt
參數說明:
參數名稱
是否必填
參數描述
樣本值
access_key_id
是
鑒權資訊,訪問 我的帳號 > AccessKey 擷取,可在對應平台申請。具體操作,請參見,建立AccessKey。
************
access_key_secret
是
鑒權資訊,訪問 我的帳號 > AccessKey 擷取,可在對應平台申請。具體操作,請參見,建立AccessKey。
************
region_id
是
地區資訊,請參見 公用雲端服務地區說明。
ap-southeast-1
end_point
是
終端地址,請參見 公用雲端服務地區說明。
oceanbasepro.ap-southeast-1.aliyuncs.com
metric_meta_auto_refresh
否
是否定時重新整理 metric 指標,預設為 false。
false
default_metric
否
預設指標,當沒有配置 instances 指定採集的執行個體和指標時,可通過 default_metric 控制帳號下所有執行個體採集指定的指標。
- sql_all_rt
instance_id
否
叢集執行個體 ID 或租戶執行個體 ID。可包含多個叢集、租戶執行個體,通過短劃線(-)並列填入。
ob************
tenant_id
否
查詢叢集下指定租戶,需配置 tenant_id, instance_type=cluster 時可以不配置。
當執行個體為租戶執行個體時,需 instance_id 和 tenant_id 都配置相同的執行個體 ID,並且指定 instance_type 為 tenant。
t************
instance_type
否
執行個體類型:
cluster:叢集主機維度監控指標,並且會自動採集叢集下所有租戶的監控資料。
tenant:租戶資料庫維度指標。
tenant
metrics
否
指標資訊,預設為採集全部指標。具體指標清單,請參見本文 監控指標清單 章節。
說明採集指標過多可能會影響採集速度,適當情況下拆分為多個 exporter。
- sql_all_rt
通過 Docker 啟動 OBCloud Exporter。
在
/opt/obcloud-exporter
目錄下,構建 obcloud-exporter 容器。cd /opt/obcloud-exporter docker build -t obcloud-exporter:1.0 .
啟動容器或者映射外部設定檔啟動。
直接啟動 Docker 容器
docker run -itd -p9400:9400 --name obcloud-exporter obcloud-exporter:1.0
通過映射外部設定檔啟動 Docker 容器。
docker run -itd -p9400:9400 -v /opt/obcloud-exporter/application.yaml:/app/application.yaml --name obcloud-exporter obcloud-exporter:1.0
通過瀏覽器驗證部署結果,訪問對應 IP 位址的 9400 連接埠,確認是否擷取到監控資料。
說明實際使用中,根據實際配置的地址連接埠進行訪問。
建立 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
啟動 Prometheus 服務。
docker run -d \ -p 9090:9090 \ -v /usr/local/bin/prometheus.yml:/etc/prometheus/prometheus.yml \ --link obcloud-exporter \ --name prometheus \ prom/prometheus
確認 Prometheus 是否啟動成功。
sudo netstat -ntlp | grep 9090
通過 Prometheus 查看資料庫監控
通過瀏覽器訪問 Prometheus 服務地址:http://localhost:9090/targets
,查看相應的監控資訊。
配置樣本
動態擷取帳號下執行個體
採集所有指標
## 監控名稱 monitor: ## 身份憑據 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 ## 終端地址 end_point: xxx metric_meta_auto_refresh: false
採集指定指標
## 監控名稱 monitor: ## 身份憑據 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 ## 終端地址 end_point: xxx metric_meta_auto_refresh: false ## 預設指標,當沒有配置instances自動擷取執行個體時,可通過 default_metric 指定採集的指標 default_metric: - sql_all_rt - sql_delete_rt
採集帳號下指定的叢集
採集所有指標,instance_type 值設定為 cluster 時,可同時採集叢集的主機指標和租戶資料庫指標。
## 監控名稱 monitor: ## 身份憑據 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 end_point: xxx metric_meta_auto_refresh: false instances: instance_id: xxx instance_type: cluster
採集租戶資料庫所有指標,instance_type 值設定為 tenant 時,只採集指定租戶的租戶資料庫指標。
## 監控名稱 monitor: ## 身份憑據 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 end_point: xxx metric_meta_auto_refresh: false instances: instance_id: xxx tenant_id: xx instance_type: tenant
採集指定的指標,可根據實際情況選擇 instance_type。
## 監控名稱 monitor: ## 身份憑據 credential: access_key_id: xxx access_key_secret: xx region_id: ap-southeast-1 end_point: xxx metric_meta_auto_refresh: false instances: instance_id: xxx tenant_id: xxx instance_type: tenant metrics: - sql_all_rt - sql_delete_rt
採集多個帳號
## 監控名稱
aliyun:
## 身份憑據
credential:
access_key_id: xxx
access_key_secret: xx
region_id: ap-southeast-1
end_point: xxx
metric_meta_auto_refresh: false
muti:
## 身份憑據
credential:
access_key_id: xxx
access_key_secret: xx
end_point: xxx
監控指標清單
叢集主機
採集項名稱 | 採集項說明 | 採集項單位 |
load1 | 過去1分鐘系統平均負載 | - |
load5 | 過去5分鐘系統平均負載 | - |
load15 | 過去15分鐘系統平均負載 | - |
cpu_percent | CPU 使用率 | % |
memory_buffers | 核心 Buffer Cache 大小 | GB |
memory_cached | 緩衝使用的記憶體 | GB |
memory_free | 可用實體記憶體大小 | GB |
memory_used | 使用實體記憶體大小 | % |
net_recv | 每秒接收資料量 | MB |
net_send | 每秒發送資料量 | MB |
net_throughput | 網路吞吐率 | MB |
ntp_offset_milliseconds | ntp時鐘位移 | ms |
ob_data_disk_percent | OB 資料盤使用率 | % |
ob_clog_disk_percent | OB 日誌盤使用率 | % |
ob_data_disk_used_size | 磁碟使用量 | GB |
ob_process_exists | OB進程存活狀態 | - |
ob_clog_io | OB 日誌盤平均每秒 IO 次數 | times/s |
ob_clog_io_read | OB 日誌盤平均每秒讀 IO 次數 | times/s |
ob_clog_io_write | OB 日誌盤平均每秒寫IO 次數 | times/s |
ob_clog_io_read_time | OB 日誌盤平均每次讀 IO 耗時 | ms |
ob_clog_io_time | OB 日誌盤平均每次 IO 耗時 | ms |
ob_clog_io_write_time | OB 日誌盤平均每次寫 IO 耗時 | ms |
ob_clog_io_byte | OB 日誌盤平均每秒 IO 資料量 | MB |
ob_clog_io_read_byte | OB 日誌盤每秒讀 IO 資料量 | MB |
ob_clog_io_write_byte | OB 日誌盤每秒寫 IO 資料量 | MB |
ob_clog_io_util | OB 日誌盤 IO 使用率 | % |
ob_data_io | OB 資料盤平均每秒 IO 次數 | times/s |
ob_data_io_read | OB 資料盤平均每秒讀 IO 次數 | times/s |
ob_data_io_write | OB 資料盤平均每秒寫 IO 次數 | times/s |
ob_data_io_read_time | OB 資料盤平均每次讀 IO 耗時 | ms |
ob_data_io_time | OB 資料盤平均每次 IO 耗時 | ms |
ob_data_io_write_time | OB 資料盤平均每次寫 IO 耗時 | ms |
ob_data_io_byte | OB 資料盤平均每秒 IO 資料量 | MB |
ob_data_io_read_byte | OB 資料盤每秒讀 IO 資料量 | MB |
ob_data_io_write_byte | OB 資料盤每秒寫 IO 資料量 | MB |
ob_data_io_util | OB 資料盤 IO 使用率 | % |
租戶資料庫
效能與 SQL
採集項名稱 | 採集項說明 | 採集項單位 |
sql_all_count | 每秒處理 SQL 陳述式數 | times/s |
sql_delete_count | 每秒處理 Delete 語句數 | times/s |
sql_insert_count | 每秒處理 Insert 語句數 | times/s |
sql_other_count | DDL, DCL, DTL 等其他語句數 | times/s |
sql_replace_count | 每秒處理 Replace 語句數 | times/s |
sql_select_count | 每秒處理 Select 語句數 | times/s |
sql_update_count | 每秒處理 Update 語句數 | times/s |
sql_all_rt | SQL 陳述式平均處理耗時 | ms |
sql_delete_rt | Delete 語句平均處理耗時 | ms |
sql_insert_rt | Insert 語句平均處理耗時 | ms |
sql_other_rt | DDL, DCL, DTL 等其他語句平均處理耗時 | ms |
sql_replace_rt | Replace 語句平均處理耗時 | ms |
sql_select_rt | Select 語句平均處理耗時 | ms |
sql_update_rt | Update 語句平均處理耗時 | ms |
p99_sql_all_rt | 99 分位 SQL 陳述式平均處理耗時 | ms |
active_session | 當前活躍會話數 | - |
all_session | 當前會話數 | - |
sql_distributed_count | 每秒處理分布式執行計畫數 | times/s |
sql_local_count | 每秒處理本地執行數 | times/s |
sql_remote_count | 每秒處理遠程執行計畫數 | times/s |
system_event_internal_total_waits | 每秒內部等待事件次數 | times/s |
system_event_io_total_waits | 每秒 IO 等待事件次數 | times/s |
system_event_latch_total_waits | 每秒 latch 等待事件次數 | times/s |
system_event_other_total_waits | 每秒其他等待事件次數 | times/s |
system_event_row_lock_wait_total_waits | 每秒鎖等待事件次數 | times/s |
system_event_sync_rpc_total_waits | 每秒同步 RPC 等待事件次數 | times/s |
wait_event_count | 每秒等待事件次數 | times/s |
system_event_internal_time_waited | 內部等待事件平均耗時 | ms |
system_event_io_time_waited | IO 等待事件平均耗時 | ms |
system_event_latch_time_waited | latch 等待事件平均耗時 | ms |
system_event_other_time_waited | 其他等待事件平均耗時 | ms |
system_event_row_lock_wait_time_waited | 鎖等待時間平均耗時 | ms |
system_event_sync_rpc_time_waited | 同步 RPC 等待事件平均耗時 | ms |
wait_event_rt | 等待事件平均耗時 | ms |
request_dequeue_count | 從處理隊列出隊的請求數量 | times/s |
request_enqueue_count | 進入處理隊列的請求數量 | times/s |
request_queue_time | SQL 請求在等待隊列中的等待耗時 | μs |
ob_cpu_percent | 租戶線程CPU使用率 | - |
memstore_percent | MEMStore使用百分比 | - |
rpc_packet_in_rt | Rpc 收包平均耗時 | μs |
rpc_packet_out_rt | Rpc 發包平均耗時 | μs |
rpc_packet_in | Rpc 收包輸送量 | byte |
rpc_packet_out | Rpc 發包輸送量 | byte |
opened_cursors_count | 開啟的遊標數 | - |
ob_worktime | 資料庫工作時間 | s |
ob_foreground_worktime | 資料庫前台工作時間 | s |
ob_background_worktime | 資料庫後台工作時間 | s |
ob_no_idle_waiting_time | 資料庫非空閑等待時間 | s |
ob_foreground_no_idle_waiting_time | 資料庫前台非空閑等待時間 | s |
ob_background_no_idle_waiting_time | 資料庫後台非空閑等待時間 | s |
slow_sql_count | 慢sql數量 | - |
事務
採集項名稱 | 採集項說明 | 採集項單位 |
transaction_commit_count | 每秒提交事務數 | times/s |
transaction_count | TPS | times/s |
transaction_rollback_count | 每秒復原事務數 | times/s |
transaction_timeout_count | 每秒逾時事務數 | times/s |
transaction_commit_rt | 事務平均提交耗時 | ms |
transaction_rollback_rt | 事務平均復原耗時 | ms |
transaction_rt | 服務端每個事務平均處理時間 | ms |
trans_commit_log_count | 每秒提交的交易記錄數 | times/s |
clog_trans_log_total_size | 每秒提交的交易記錄大小 | byte |
memstore_write_lock_fail_count | 寫鎖等待失敗次數 | times/s |
memstore_write_lock_succ_count | 寫鎖等待成功次數 | times/s |
memstore_write_lock_wait_time | 寫鎖平均等待耗時 | μs |
transaction_multi_partition_count | 每秒分散式交易數 | times/s |
transaction_single_partition_count | 每秒普通事務數 | times/s |
trans_commit_log_sync_rt | 每次交易記錄網路同步平均耗時 | ms |
儲存與緩衝
採集項名稱 | 採集項說明 | 採集項單位 |
active_memstore_used | 活躍 MEMStore 大小 | MB |
major_freeze_trigger | 觸發合并閾值 | MB |
memstore_limit | MEMStore的limit | MB |
total_memstore_used | MEMStore 總大小 | MB |
io_read_count | SSStore 每秒讀次數 | times/s |
io_write_count | SSStore 每秒寫次 | times/s |
io_read_rt | SSStore 每次讀取平均耗時 | ms |
io_write_rt | SSStore 每次寫入平均耗時 | ms |
io_read_size | SSStore 每秒讀取資料量 | byte |
io_write_size | SSStore 每秒寫入資料量 | byte |
block_cache_size | 塊緩衝大小 | MB |
bloom_filter_cache_size | bloom filter 緩衝大小 | MB |
clog_cache_size | Clog 緩衝大小 | MB |
location_cache_size | location 緩衝大小 | MB |
plan_cache_size | 執行計畫緩衝大小 | MB |
row_cache_size | 行緩衝大小 | MB |
block_cache_hit_ratio | 塊快取命中率 | - |
bloom_filter_cache_hit_ratio | bloom filter 快取命中率 | - |
clog_cache_hit_ratio | Clog 快取命中率 | - |
location_cache_hit_ratio | location 快取命中率 | - |
plan_cache_hit_ratio | 執行計畫快取命中率 | - |
row_cache_hit_ratio | 行快取命中率 | - |
block_cache_req_total | 塊緩衝請求次數 | - |
bloom_filter_cache_req_total | bloom filter 緩衝請求次數 | - |
clog_cache_req_total | Clog 緩衝請求次數 | - |
location_cache_req_total | location 緩衝請求次數 | - |
row_cache_req_total | 行緩衝請求次數 | - |
ob_tenant_binlog_disk_used | binlog日誌磁碟使用量 | GB |
ob_tenant_memory_percent | OB租戶記憶體使用量率 | % |
ob_tenant_log_disk_total_bytes | 日誌盤總量 | GB |
ob_tenant_log_disk_used_bytes | 日誌盤使用量 | GB |
ob_tenant_server_required_size | 資料佔用量 | GB |
ob_tenant_server_data_size | 資料量 | GB |