最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL監(jiān)控怎么搭建?用PostgresExporter輕松實(shí)現(xiàn)

 更新時間:2026年07月25日 09:51:11   作者:TechWJ  
還在為PostgreSQL性能問題頭疼?本文手把手教你用PostgresExporter將數(shù)據(jù)庫指標(biāo)接入Prometheus,實(shí)現(xiàn)連接數(shù)、緩存命中、鎖等待等關(guān)鍵指標(biāo)的實(shí)時監(jiān)控和告警,更有cpolar內(nèi)網(wǎng)穿透方案,輕松搞定跨網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控,讓你的數(shù)據(jù)庫運(yùn)維不再靠猜

前言

PostgreSQL出問題時,最讓人難受的不是報錯本身,而是不知道問題到底從哪里開始。頁面突然變慢,接口偶爾超時,連接池被打滿,業(yè)務(wù)端只看到請求失敗,數(shù)據(jù)庫里卻可能已經(jīng)出現(xiàn)了鎖等待、緩存命中下降、事務(wù)回滾增加或連接數(shù)逼近上限。

如果只靠臨時登錄服務(wù)器查日志、手動執(zhí)行pg_stat相關(guān)SQL,很難形成連續(xù)判斷。一次排查能看到當(dāng)前狀態(tài),卻看不到趨勢;能知道現(xiàn)在慢,卻不一定知道十分鐘前發(fā)生了什么。數(shù)據(jù)庫運(yùn)維真正需要的,是持續(xù)采集、可視化查看和提前告警。

Postgres Exporter就是把PostgreSQL運(yùn)行狀態(tài)接入Prometheus的一層橋梁。它會把數(shù)據(jù)庫內(nèi)部的連接、事務(wù)、緩存、表狀態(tài)、鎖信息、復(fù)制延遲、WAL等指標(biāo)轉(zhuǎn)換成Prometheus能識別的格式,并通過默認(rèn)9187端口暴露出來。

本文會從CentOS 7環(huán)境開始,演示Postgres Exporter下載、解壓、監(jiān)控專用用戶創(chuàng)建、pg_monitor權(quán)限配置、systemd服務(wù)編寫、服務(wù)啟動驗(yàn)證,以及瀏覽器訪問Exporter指標(biāo)頁面。隨后再把它加入Prometheus配置,讓數(shù)據(jù)庫指標(biāo)真正進(jìn)入監(jiān)控體系。

最后,還會補(bǔ)充跨網(wǎng)絡(luò)監(jiān)控場景。對于部署在家庭網(wǎng)絡(luò)、公司內(nèi)網(wǎng)或其他無法被Prometheus直接訪問的PostgreSQL環(huán)境,可以通過 cpolar 將Postgres Exporter的9187端口映射到公網(wǎng),讓Prometheus在不直接暴露數(shù)據(jù)庫端口的前提下,遠(yuǎn)程抓取數(shù)據(jù)庫運(yùn)行指標(biāo)。

前言

1.什么是Postgres Exporter?

Postgres Exporter是PostgreSQL 與 Prometheus之間的“橋梁”——它把數(shù)據(jù)庫內(nèi)部的運(yùn)行狀態(tài)(如連接數(shù)、查詢性能、鎖等待等)轉(zhuǎn)化為Prometheus能理解的時序數(shù)據(jù)。

它能做什么?

1.自動采集數(shù)百項(xiàng)PostgreSQL指標(biāo),例如:

  • 當(dāng)前活躍/空閑連接數(shù)(pg_stat_database.numbackends)
  • 查詢執(zhí)行次數(shù)、失敗次數(shù)(pg_stat_database.xact_commit, xact_rollback)
  • 塊讀取與緩存命中率(blks_read, blks_hit → 可計算緩存命中率)
  • 表/索引膨脹、死元組數(shù)量(用于判斷是否需要 VACUUM)
  • 復(fù)制延遲(pg_stat_replication)
  • WAL寫入量、檢查點(diǎn)統(tǒng)計
  • 鎖等待情況(pg_locks)

2.支持自定義查詢

  • 通過配置文件(queries.yaml),你可以定義自己的 SQL 查詢,將業(yè)務(wù)相關(guān)的數(shù)據(jù)庫狀態(tài)(如“待處理訂單數(shù)”)也作為指標(biāo)導(dǎo)出。

3.兼容多版本PostgreSQL

  • 支持PostgreSQL 9.4及以上版本(包括最新版)。

4.安全可控

  • 只需為Exporter創(chuàng)建一個只讀監(jiān)控用戶(推薦使用 pg_monitor 角色),無需超級用戶權(quán)限。

工作原理

  • Postgres Exporter作為一個獨(dú)立進(jìn)程運(yùn)行(可部署在DB服務(wù)器、應(yīng)用服務(wù)器或容器中)。
  • 它定期連接PostgreSQL,執(zhí)行內(nèi)置或自定義的SQL查詢。
  • 將結(jié)果轉(zhuǎn)換為Prometheus 指標(biāo)格式(如gauge, counter)。
  • 在HTTP端口(默認(rèn) :9187)提供 /metrics接口。
  • Prometheus主動拉?。≒ull)該接口,存儲指標(biāo)并用于告警或可視化。

1.什么是Postgres Exporter?

典型應(yīng)用場景

  • 監(jiān)控數(shù)據(jù)庫性能瓶頸(慢查詢、高 I/O、低緩存命中)
  • 預(yù)防連接池耗盡
  • 跟蹤復(fù)制延遲(主從同步健康度)
  • 自動化告警:如“死元組超過100萬”、“事務(wù)回滾率突增”
  • 構(gòu)建Grafana看板,實(shí)現(xiàn)數(shù)據(jù)庫健康狀態(tài)一目了然

?為什么選擇 Postgres Exporter?

優(yōu)勢說明
?? 輕量無侵入不修改數(shù)據(jù)庫配置(除網(wǎng)絡(luò)和用戶權(quán)限外)
?? 云原生友好支持容器化、Kubernetes、ServiceMonitor
?? 社區(qū)活躍CNCF 生態(tài)項(xiàng)目,持續(xù)維護(hù)更新
?? 靈活擴(kuò)展支持自定義指標(biāo),滿足業(yè)務(wù)監(jiān)控需求

2.Centos7安裝Postgres_Exporter實(shí)時監(jiān)控Postgres數(shù)據(jù)

本地下載后上傳到linux服務(wù)器:

下載地址:https://github.com/prometheus-community/postgres_exporter/releases/tag/v0.19.1

2.Centos7安裝Postgres_Exporter實(shí)時監(jiān)控Postgres數(shù)據(jù)

或者直接在linux服務(wù)器上wget方式下載:

# 新建目錄
mkdir -p /app/postgres_exporter1
# 進(jìn)入目標(biāo)目錄
cd /app/postgres_exporter1
# 下載
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.13.2/postgres_exporter-0.13.2.linux-amd64.tar.gz
# 解壓
tar -vxzf postgres_exporter-0.13.2.linux-amd64.tar.gz
# 移動到安裝目錄
mv /app/postgres_exporter1/postgres_exporter-0.13.2.linux-amd64 /app/postgres_exporter
# 進(jìn)入目錄
cd /app/postgres_exporter

2.Centos7安裝Postgres_Exporter實(shí)時監(jiān)控Postgres數(shù)據(jù)_圖2

3.設(shè)置Postgres監(jiān)控專屬用戶

以postgres用戶進(jìn)入PostgreSQL命令行:

su - postgres
psql

創(chuàng)建專用監(jiān)控用戶(角色)-- 創(chuàng)建用戶(帶登錄權(quán)限),密碼為 ‘your_secure_password’

CREATE USER postgres_exporter WITH PASSWORD 'your_secure_password' LOGIN;

授予必要權(quán)限:

postgres_exporter 需要讀取系統(tǒng)視圖(如 pg_stat_database、pg_stat_user_tables 等),但不能擁有超級用戶權(quán)限。

方法 A:推薦方式(最小權(quán)限)

允許訪問 pg_stat_* 統(tǒng)計信息(需顯式授權(quán))

GRANT pg_monitor TO postgres_exporter;

方法 B:舊版本兼容(PostgreSQL < 10)-- 手動授權(quán)關(guān)鍵視圖

GRANT CONNECT ON DATABASE postgres TO postgres_exporter;

如果需要監(jiān)控其他數(shù)據(jù)庫(如your_app_db),也需授權(quán)

GRANT CONNECT ON DATABASE your_app_db TO postgres_exporter;

授予對 pg_stat_database 等系統(tǒng)視圖的 SELECT 權(quán)限

注意:部分視圖需在每個數(shù)據(jù)庫中單獨(dú)授權(quán)

\c your_app_db

GRANT SELECT ON pg_stat_database TO postgres_exporter;

驗(yàn)證用戶能否連接,退出 psql:# 測試本地連接

psql -h localhost -U postgres_exporter -d postgres

3.設(shè)置Postgres監(jiān)控專屬用戶

4.將postgres_exporter配置為系統(tǒng)服務(wù)

cd /usr/lib/systemd/system
vim postgres_exporter.service
[Unit]
Description= https://github.com/prometheus-community/postgres_exporter
After=network-online.target

[Service]
Type=simple
User=root
Group=root
Environment=DATA_SOURCE_NAME=postgresql://postgres_exporter:postgres_exporter@x.x.x.x:5432/postgres?sslmode=disable
ExecStart=/usr/local/postgres_exporter/postgres_exporter
ExecReload=/bin/kill -HUP
KillMode=process
TimeoutStopSec=20s
Restart=always
[Install]
WantedBy=default.target

4.將postgres_exporter配置為系統(tǒng)服務(wù)

服務(wù)命令:

# 生效系統(tǒng)systemd文件
systemctl daemon-reload
# 設(shè)置開機(jī)自啟
systemctl enable postgres_exporter
# 查看狀態(tài)
systemctl status postgres_exporter
# 啟動
systemctl start postgres_exporter.service
# 停止
systemctl stop postgres_exporter.service

4.將postgres_exporter配置為系統(tǒng)服務(wù)_圖2

也可以手動啟動:

# 后臺啟動
nohup ./postgres_exporter >> /app/postgres_exporter/postgres_exporter.out 2>&1 &

接下來我們通過使用瀏覽器,用IP+9187就可以訪問我們安裝好的postgres_exporter頁面啦!

4.將postgres_exporter配置為系統(tǒng)服務(wù)_圖3

5.配置prometheus監(jiān)控postgres_exporter

找到prometheus的配置文件,編輯添加如下內(nèi)容:

vi prometheus.yml
      - targets: ["localhost:9187"]
        labels:
          app: "postgres_exporter"

5.配置prometheus監(jiān)控postgres_exporter

重啟prometheus服務(wù):

systemctl restart prometheus

使用瀏覽器Ip+9090打開promethues的頁面:

5.配置prometheus監(jiān)控postgres_exporter_圖2

我們可以看到成功的檢測到了postgres_exporter服務(wù)啦!

5.配置prometheus監(jiān)控postgres_exporter_圖3

為了實(shí)現(xiàn)Prometheus對位于公網(wǎng)或不同局域網(wǎng)中的PostgreSQL數(shù)據(jù)庫的監(jiān)控,可在目標(biāo)機(jī)器上部署postgres_exporter以暴露數(shù)據(jù)庫指標(biāo),并通過內(nèi)網(wǎng)穿透工具cpolar將其本地監(jiān)聽端口(如9187)安全地映射到公網(wǎng)。Prometheus服務(wù)器即可通過cpolar提供的公網(wǎng)地址拉取遠(yuǎn)端數(shù)據(jù)庫的監(jiān)控數(shù)據(jù),從而在不依賴復(fù)雜網(wǎng)絡(luò)配置或暴露數(shù)據(jù)庫本身的前提下,完成跨網(wǎng)絡(luò)的監(jiān)控集成。

6.安裝cpolar內(nèi)網(wǎng)穿透工具

cpolar 可以將你本地電腦中的服務(wù)(如 SSH、Web、數(shù)據(jù)庫)映射到公網(wǎng)。即使你在家里或外出時,也可以通過公網(wǎng)地址連接回本地運(yùn)行的開發(fā)環(huán)境。

??以下是安裝cpolar步驟:

使用一鍵腳本安裝命令:

sudo curl https://get.cpolar.sh | sh

6.安裝cpolar內(nèi)網(wǎng)穿透工具

安裝完成后,執(zhí)行下方命令查看cpolar服務(wù)狀態(tài):(如圖所示即為正常啟動)

sudo systemctl status cpolar

6.安裝cpolar內(nèi)網(wǎng)穿透工具_(dá)圖2

Cpolar安裝和成功啟動服務(wù)后,在瀏覽器上輸入虛擬機(jī)主機(jī)IP加9200端口即:【ip:9200】訪問Cpolar管理界面,使用Cpolar官網(wǎng)注冊的賬號登錄,登錄后即可看到cpolar web 配置界面,接下來在web 界面配置即可:

打開瀏覽器訪問本地9200端口,使用cpolar賬戶密碼登錄即可,登錄后即可對隧道進(jìn)行管理。

6.安裝cpolar內(nèi)網(wǎng)穿透工具_(dá)圖3

7.配置公網(wǎng)地址

登錄cpolar web UI管理界面后,點(diǎn)擊左側(cè)儀表盤的隧道管理——創(chuàng)建隧道:

  • 隧道名稱:可自定義,本例使用了:postgres_exporter,注意不要與已有的隧道名稱重復(fù)

  • 協(xié)議:http

  • 本地地址:9187

  • 域名類型:隨機(jī)域名

  • 地區(qū):選擇China Top

7.配置公網(wǎng)地址

創(chuàng)建成功后,打開左側(cè)在線隧道列表,可以看到剛剛通過創(chuàng)建隧道生成了公網(wǎng)地址,接下來就可以在其他電腦或者移動端設(shè)備(異地)上,使用地址訪問。

7.配置公網(wǎng)地址_圖2

訪問成功。

7.配置公網(wǎng)地址_圖3

8.將本postgres_exporter暴露給Prometheus進(jìn)行遠(yuǎn)程抓取

Prometheus可以通過這個公網(wǎng)地址51bd1f65.r2.cpolar.top訪問到運(yùn)行在本地9187端口的postgres_exporter服務(wù),從而抓取系統(tǒng)指標(biāo)。

      - targets: ["51bd1f65.r2.cpolar.top"]
        labels:
          app: "postgres_exporter"

8.將本postgres_exporter暴露給Prometheus進(jìn)行遠(yuǎn)程抓取

抓取成功!

8.將本postgres_exporter暴露給Prometheus進(jìn)行遠(yuǎn)程抓取_圖2

9.保留固定公網(wǎng)地址

使用cpolar為其配置二級子域名,該地址為固定地址,不會隨機(jī)變化。

9.保留固定公網(wǎng)地址

點(diǎn)擊左側(cè)的預(yù)留,選擇保留二級子域名,地區(qū)選擇china Top,然后設(shè)置一個二級子域名名稱,我這里演示使用的是postgres,大家可以自定義。填寫備注信息,點(diǎn)擊保留。

9.保留固定公網(wǎng)地址_圖2

登錄cpolar web UI管理界面,點(diǎn)擊左側(cè)儀表盤的隧道管理——隧道列表,找到所要配置的隧道postgres,點(diǎn)擊右側(cè)的編輯。

9.保留固定公網(wǎng)地址_圖3

修改隧道信息,將保留成功的二級子域名配置到隧道中

  • 域名類型:選擇二級子域名
  • Sub Domain:填寫保留成功的二級子域名
  • 地區(qū): China Top

點(diǎn)擊更新

9.保留固定公網(wǎng)地址_圖4

更新完成后,打開在線隧道列表,此時可以看到隨機(jī)的公網(wǎng)地址已經(jīng)發(fā)生變化,地址名稱也變成了保留和固定的二級子域名名稱。

9.保留固定公網(wǎng)地址_圖5

最后,我們使用固定的公網(wǎng)地址在任意設(shè)備的瀏覽器中訪問,可以看到成功訪問本地部署的頁面,這樣一個永久不會變化的二級子域名公網(wǎng)網(wǎng)址即設(shè)置好了。

9.保留固定公網(wǎng)地址_圖6

結(jié)尾

完成部署后,Postgres Exporter就可以持續(xù)暴露PostgreSQL的關(guān)鍵運(yùn)行指標(biāo)。連接數(shù)、事務(wù)提交與回滾、緩存命中、鎖等待、復(fù)制狀態(tài)等信息,不再只能臨時登錄數(shù)據(jù)庫查看,而是可以進(jìn)入Prometheus統(tǒng)一采集。

這套方案的價值,在于把數(shù)據(jù)庫從“出了問題再查”變成“平時就能看見趨勢”。當(dāng)連接數(shù)持續(xù)升高、緩存命中率下降、死元組不斷積累或復(fù)制延遲擴(kuò)大時,運(yùn)維人員可以更早發(fā)現(xiàn)異常,而不是等業(yè)務(wù)端已經(jīng)明顯變慢才開始排查。

配置 cpolar 后,位于不同網(wǎng)絡(luò)環(huán)境中的Postgres Exporter也可以被Prometheus遠(yuǎn)程抓取。隨機(jī)域名適合臨時驗(yàn)證,固定二級子域名更適合長期監(jiān)控,避免采集地址頻繁變化導(dǎo)致Prometheus配置失效。

需要注意的是,監(jiān)控指標(biāo)雖然不是數(shù)據(jù)庫業(yè)務(wù)數(shù)據(jù)本身,但仍然會暴露實(shí)例狀態(tài)、連接情況和運(yùn)行負(fù)載。公網(wǎng)訪問時不建議直接暴露數(shù)據(jù)庫端口,Exporter也應(yīng)使用只讀監(jiān)控賬號,并盡量控制訪問范圍。

Postgres Exporter負(fù)責(zé)把數(shù)據(jù)庫狀態(tài)變成指標(biāo),Prometheus負(fù)責(zé)持續(xù)抓取和存儲,cpolar負(fù)責(zé)補(bǔ)上跨網(wǎng)絡(luò)訪問通道。當(dāng)這幾部分組合起來以后,PostgreSQL的運(yùn)行狀態(tài)就不再是黑盒,而是一套可以觀察、分析和提前預(yù)警的數(shù)據(jù)庫監(jiān)控體系。

相關(guān)文章

  • 如何解決PostgreSQL執(zhí)行語句長時間卡著不動不報錯也不執(zhí)行的問題

    如何解決PostgreSQL執(zhí)行語句長時間卡著不動不報錯也不執(zhí)行的問題

    某日開發(fā)同事上報一sql性能問題,一條查詢好似一直跑不出結(jié)果,查詢了n小時,還未返回結(jié)果,這篇文章主要給大家介紹了關(guān)于如何解決PostgreSQL執(zhí)行語句長時間卡著不動不報錯也不執(zhí)行問題的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • PostgreSQL TIMESTAMP類型 時間戳操作

    PostgreSQL TIMESTAMP類型 時間戳操作

    這篇文章主要介紹了PostgreSQL TIMESTAMP類型 時間戳操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Postgresql限制用戶登錄錯誤次數(shù)的實(shí)例代碼

    Postgresql限制用戶登錄錯誤次數(shù)的實(shí)例代碼

    這篇文章主要介紹了Postgresql限制用戶登錄錯誤次數(shù)的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • PostgreSQL數(shù)據(jù)目錄遷移的全過程

    PostgreSQL數(shù)據(jù)目錄遷移的全過程

    生產(chǎn)環(huán)境中隨著PostgreSQL數(shù)據(jù)庫表數(shù)據(jù)的不斷產(chǎn)生,數(shù)據(jù)庫目錄會不斷增長,當(dāng)磁盤空間不足時會有將PostgreSQL數(shù)據(jù)庫數(shù)據(jù)目錄遷移到其他目錄的需求,下面詳細(xì)介紹目錄遷移過程,需要的朋友可以參考下
    2024-04-04
  • postgresql 修改字段長度的操作

    postgresql 修改字段長度的操作

    這篇文章主要介紹了postgresql 修改字段長度的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL 行列轉(zhuǎn)換的實(shí)現(xiàn)方法

    PostgreSQL 行列轉(zhuǎn)換的實(shí)現(xiàn)方法

    本文主要介紹了PostgreSQL 行列轉(zhuǎn)換的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • PostgreSQL基礎(chǔ)知識之SQL操作符實(shí)踐指南

    PostgreSQL基礎(chǔ)知識之SQL操作符實(shí)踐指南

    這篇文章主要給大家介紹了關(guān)于PostgreSQL基礎(chǔ)知識之SQL操作符實(shí)踐的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用PostgreSQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • postgresql減少wal日志生成量的操作

    postgresql減少wal日志生成量的操作

    這篇文章主要介紹了postgresql減少wal日志生成量的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL初始化配置的實(shí)現(xiàn)小結(jié)

    PostgreSQL初始化配置的實(shí)現(xiàn)小結(jié)

    本文主要介紹了PostgreSQL初始化配置的實(shí)現(xiàn)小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • Postgresql?REGEXP開頭的正則函數(shù)用法圖文詳解

    Postgresql?REGEXP開頭的正則函數(shù)用法圖文詳解

    正則表達(dá)式是指一個用來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串,下面這篇文章主要給大家介紹了關(guān)于Postgresql?REGEXP開頭的正則函數(shù)用法的相關(guān)資料,需要的朋友可以參考下
    2024-02-02

最新評論

云安县| 句容市| 叙永县| 佛山市| 河间市| 汨罗市| 习水县| 类乌齐县| 繁昌县| 普格县| 德保县| 乐山市| 宣汉县| 咸丰县| 洪湖市| 长葛市| 正阳县| 连城县| 浪卡子县| 襄樊市| 台北县| 丽江市| 治县。| 谢通门县| 德阳市| 留坝县| 哈密市| 雷山县| 渑池县| 札达县| 陵水| 防城港市| 安庆市| 临泉县| 改则县| 宁强县| 怀柔区| 丹阳市| 五大连池市| 育儿| 肥东县|