踩坑指南:入門OpenTenBase之監控篇

来源:https://www.cnblogs.com/guoxiaoyu/p/18117472
-Advertisement-
Play Games

本次監控將採用Prometheus、Grafana可視化工具以及postgres_exporter對OpenTenBase進行全面監控和優化。首先,通過Docker安裝了Prometheus,配置了必要的文件形式進行服務發現,實現了系統正常監控。接著,使用Docker啟動Grafana,並配置數據源... ...


本次監控將採用Prometheus、Grafana可視化工具以及postgres_exporter對OpenTenBase進行全面監控和優化。

安裝監控

Docker安裝

1、Docker要求 CentOs 系統的內核版本高於 3.10

通過 uname-r命令查看你當前的內核版本

uname -r

2、使用 root 許可權登錄 Centos。確保 yum 包更新到最新。

yum -y update

3、卸載舊版本(如果安裝過舊版本的話)

sudo yum remove -y docker*

4、安裝需要的軟體包,yum-utl 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

yum install -y yum-utils

5、設置yum源,並更新yum 的包索引

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache

6、安裝docker

yum install -y docker-ce

8、啟動並加入開機啟動

systemctl start docker && systemctl enable docker

9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)

docker version

10、配置docker鏡像

cd /etc/docker然後編輯vim daemon.json

{
  "registry-mirrors": ["https://jbw52uwf.mirror.aliyuncs.com"]
}

保存退出。

重啟docker服務

systemctl daemon-reload
systemctl restart docker

下載Prometheus

在進行監控優化時,您可以從Prometheus官方網站下載最新版:https://prometheus.io/download/

您可以選擇下載源代碼並解壓使用,也可以通過Docker直接啟動。本教程將重點介紹使用Docker進行快速部署。

執行命令:

docker run -d -p 9090:9090 -v /etc/prometheus:/etc/prometheus prom/prometheus

完成掛載後,請對配置文件進行必要的修改以確保系統正常監控。

vim prometheus.yml

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.56.10:9090"]
  # 主要修改這裡,添加文件形式的掃描
  - job_name: "node"
    file_sd_configs:
    - refresh_interval: 10s
      files:
      - "/etc/prometheus/conf/node*.yaml"

當前Prometheus的配置採用文件形式進行服務發現。在修改配置時,無需重新啟動,系統將自動更新並生效,更新間隔為10秒。

為了修改相關配置文件,首先創建一個名為conf的目錄(mkdir conf)然後通過cd命令進入目錄(cd /etc/prometheus/conf)接著使用vim編輯器來修改文件(vim node-ms.yaml

- targets:
  - "ip:port"
  labels:
    hostname: pg

為了自定義配置信息,請將相應的IP地址和主機名修改為您自己的信息。完成修改後,啟動Prometheus服務,然後您可以通過訪問http://您的IP地址:9090/ 來查看Prometheus的監控數據。

下載Grafana

為了確保配置的持久性,我們可以通過Docker容器以持久化形式啟動Grafana。您可以使用以下命令來啟動Grafana容器,併在容器重啟後保留配置信息:

docker run -d -p 3000:3000 --name=grafana --volume grafana-storage:/var/lib/grafana grafana/grafana-enterprise

啟動後,您可以在瀏覽器中輸入http://您的IP地址:3000/

使用預設的用戶名和密碼admin/admin登錄,以查看Grafana監控界面。

配置數據源

image

在這裡,您只需填寫URL(http://ip:9090/ )即可保存配置。這個URL指向Prometheus的地址,Grafana將通過該地址與Prometheus建立連接,從而獲取數據用於展示監控面板。

image

下載Exporter

Prometheus官方提供了豐富的Exporter,您可以在https://prometheus.io/docs/instrumenting/exporters/ 找到相關信息。

我們可以安裝postgres_exporter來監控資料庫,官方地址為https://github.com/prometheus-community/postgres_exporter。

同樣可以以Docker啟動:

docker run --net=host -e DATA_SOURCE_NAME="postgresql://opentenbase:@ip:port/postgres?sslmode=disable" quay.io/prometheuscommunity/postgres-exporter

ip和host修改為自己的信息即可,官方示例中對opentenbase用戶並沒有設置登錄密碼,我們也不設置密碼進行登錄。

啟動後,我們首先登錄到資料庫中,然後進行資料庫用戶的相關設置。

CREATE OR REPLACE FUNCTION __tmp_create_user() returns void as $$
BEGIN
  IF NOT EXISTS (
          SELECT                       -- SELECT list can stay empty for this
          FROM   pg_catalog.pg_user
          WHERE  usename = 'postgres_exporter') THEN
    CREATE USER postgres_exporter;
  END IF;
END;
$$ language plpgsql;
SELECT __tmp_create_user();

DROP FUNCTION __tmp_create_user();

ALTER USER postgres_exporter WITH PASSWORD 'password';

ALTER USER postgres_exporter SET SEARCH_PATH TO postgres_exporter,pg_catalog;

GRANT CONNECT ON DATABASE postgres TO postgres_exporter;

-- OpenTenBase中集成的PostgreSQL版本是10,所以可以執行以下語句,歷史版本可前往開源地址進行查看。
GRANT pg_monitor to postgres_exporter;

postgres_exporter啟動報錯修複

panic: Error converting setting "session_memory_size" value "3M" to float: strconv.ParseFloat: parsing "3M": invalid syntax

goroutine 42 [running]:
main.(*pgSetting).metric(0xc000081720, 0xc0000d5c50?)
        /app/cmd/postgres_exporter/pg_setting.go:87 +0x325
main.querySettings(0x0?, 0xc00010d290)
        /app/cmd/postgres_exporter/pg_setting.go:56 +0x287
main.(*Server).Scrape(0xc00010d290, 0xc000028011?, 0x90?)
        /app/cmd/postgres_exporter/server.go:121 +0xcb
main.(*Exporter).scrapeDSN(0xc0000000c0, 0x44d406?, {0xc000028011, 0x46})
        /app/cmd/postgres_exporter/datasource.go:115 +0x1c5
main.(*Exporter).scrape(0xc0000000c0, 0x0?)
        /app/cmd/postgres_exporter/postgres_exporter.go:679 +0x16c
main.(*Exporter).Collect(0xc0000000c0, 0xc00003ff60?)
        /app/cmd/postgres_exporter/postgres_exporter.go:568 +0x25
github.com/prometheus/client_golang/prometheus.(*Registry).Gather.func1()
        /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/registry.go:457 +0xe7
created by github.com/prometheus/client_golang/prometheus.(*Registry).Gather in goroutine 18
        /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/registry.go:547 +0xbab

查看postgres_exporter其源碼發現端倪:

SELECT name, setting, COALESCE(unit, ''), short_desc, vartype FROM pg_settings WHERE vartype IN ('bool', 'integer', 'real') AND name != 'sync_commit_cancel_wait';

image

確實是因為session_memory_size的顯示問題,不過我已經提交了PR修複,官方修複後即可成功。

image

配置監控面板

一旦所有組件都成功啟動,接下來我們需要前往市場尋找我們想要的監控面板。你可以訪問Grafana的官方儀錶板市場:https://grafana.com/grafana/dashboards/?search=postgresql

image

一旦找到您喜歡的面板,請點擊此處進行導入。以下以ID:9628為示例進行導入操作。

這裡選擇我們的數據源。

image

讓我們來看一下效果如何:

image

總結

本次監控將採用Prometheus、Grafana可視化工具以及postgres_exporter對OpenTenBase進行全面監控和優化。首先,通過Docker安裝了Prometheus,配置了必要的文件形式進行服務發現,實現了系統正常監控。接著,使用Docker啟動Grafana,並配置數據源連接到Prometheus,展示監控面板。最後,安裝了postgres_exporter以監控資料庫,並解決了啟動報錯問題。在配置監控面板時,通過Grafana的儀錶板市場找到了適合的監控面板,併成功導入使用。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 作用 GROUP_CONCAT 是 MySQL 中用於將查詢結果集中的多行數據合併為單個字元串的聚合函數。它將每行數據的指定欄位值連接起來,並以指定的分隔符分隔,最終返回一個包含所有值的字元串。 以下是 GROUP_CONCAT 函數的一般語法: SELECT GROUP_CONCAT(column ...
  • 目錄一、Linux下MySQL忘記root密碼情景再現1、停止MySQL服務2、安全模式啟動MySQL服務,並暫時跳過許可權表驗證以及禁用網路連接3、更新mysql.user表中root用戶的密碼。4、刷新MySQL的許可權緩存二、Windows下MySQL忘記密碼(8.0以上版本)情景再現1、通過管理 ...
  • 生產環境有一套3個節點的MySQL InnoDB Cluster,MySQL的版本為Server version: 8.0.35 MySQL Community Server - GPL, 早上突然收到Zabbix的告警,其中一個節點出現空間告警:"/data: Disk space is low ...
  • 各位熱愛 SeaTunnel 的小伙伴們,SeaTunnel 社區 3 月月報來啦!這裡將記錄 SeaTunnel 社區每個月的重要更新,並評選出月度之星,歡迎關註。 SeaTunnel 月度 Merge Stars 感謝以下小伙伴 3 月為 Apache SeaTunnel 做的精彩貢獻(排名不分 ...
  • 各位熱愛 DolphinScheduler 的小伙伴們,DolphinScheduler 社區月報開始更新啦!這裡將記錄 DolphinScheduler 社區每月的重要更新。 社區為 DolphinScheduler 3.2.x 版本做了諸多功能改進和 bug 修複 DolphinSchedule ...
  • 4月10日,以“Data+AI,構建新質生產力”為主題的袋鼠雲春季發佈會圓滿落幕。大會中,袋鼠雲帶來了一系列“+AI”的數字化產品與最新行業沉澱,旨在將數據與AI緊密結合,打破傳統的生產力邊界,賦能企業實現更高質量、更高效率的數字化發展。 2部白皮書:聚焦行業沉澱 《行業指標體系白皮書》:系統闡述了 ...
  • 添加一套針對MuSQL資料庫CRUD的Dao和Mapper代碼,同時我們寫了一個註解以切麵的方式實現根據配置實例化Oracle的Dao、MySQl的Dao、同時調用Oracle和MySQLDao的功能。​ 首先,我們需要設置一個新的MySQL資料庫環境,這將作為我們的新數據源。我們有額外的數據核對方... ...
  • 很高興和大家宣佈,Apache DolphinScheduler 社區今年再次成功入選入選由中國科學院軟體研究所開源軟體供應鏈點亮計劃發起的“開源之夏”活動。 入選公示鏈接:https://mp.weixin.qq.com/s/9ExBWGoFPzZ0_SrpAcosZg 此活動旨在鼓勵和引導在校學 ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...