博客 / 詳情

返回

Prometheus 和 Grafana 監控 PostgreSQL

 

1,客户端安裝配置postgres_exporter代理

1.1 下載客户端

cd /usr/local
cd postgresql_package/
ll
sudo su
sudo -
sudo
sudo useradd -M -r -s /sbin/nologin postgres_exporter

#筆者是一個arm架構的Linux操作系統,因此下載的是arm64版本的postgres_exporter.這裏可以根據自己的環境下載對應的版本
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.18.1/postgres_exporter-0.18.1.linux-arm64.tar.gz
tar xf postgres_exporter*.tar.gz
ll
sudo  wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.18.1/postgres_exporter-0.18.1.linux-arm64.tar.gz
sudo  tar xf postgres_exporter*.tar.gz
ll
sudo mv postgres_exporter-0.18.1.linux-arm64 postgres_exporter
ll
cd postgres_exporter/
ll
sudo chown -R postgres_exporter /usr/local/postgresql_package/postgres_exporter

其實postgres_exporter代理的客户端非常簡單,只有一個postgres_exporter文件,(pg_stat_statements.yaml後面會提到,這裏不涉及這個文件)

image

1.2 編輯配置文件

編輯postgres_exorpter的配置文件

root@******:/usr/local/postgresql_package/postgres_exporter# cat .env
# Format
# DATA_SOURCE_NAME=postgresql://username:password@localhost:5432/postgres?sslmode=disable

# Monitor all databases via postgres_exporter
DATA_SOURCE_NAME="postgresql://postgres:******@localhost:5432/?sslmode=disable"

# PG_EXPORTER_EXTEND_QUERY_PATH="/usr/local/postgresql_package/postgres_exporter/pg_stat_statements.yaml"

# Monitor specific databases on the PostgreSQL server
# DATA_SOURCE_NAME="postgresql://username:password@localhost:5432/database-name?sslmode=disable"

授權當前目錄給postgres_exporter 
sudo chown -R postgres_exporter: ./postgres_exporter

 

1.3 編輯systemctl服務文件

配置postgres_exporter的systemctl服務,並啓動服務

sudo tee /etc/systemd/system/postgres_exporter.service<<EOF
[Unit]
Description=Prometheus exporter for Postgresql
Wants=network-online.target
After=network-online.target
[Service]
User=postgres_exporter
Group=postgres_exporter
WorkingDirectory=/usr/local/postgresql_package/postgres_exporter
EnvironmentFile=/usr/local/postgresql_package/postgres_exporter/.env
ExecStart=/usr/local/postgresql_package/postgres_exporter --web.listen-address=:9187 --web.telemetry-path=/metrics
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start postgres_exporter
sudo systemctl enable postgres_exporter

 

1.4 驗證代理的http接口

http://192.168.*:*:9187,如果可以正常訪問,至此postgres_exporter已經配置完成。

image

image

 

 

2,Prometheus服務端 添加 postgres_exporter

2.1 prometheus配置文件增加postgres_exporter的客户端代理

  # PostgreSQL Monitoring with postgres_exporter
  - job_name: 'postgres_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.*.*:9187']

2.2 重啓prometheus服務端

systemctl restart prometheus

2.3 prometheus管理控制枱查看postgres_exporter

實際上是上面http://192.168.*:*:9187這個代理客户端註冊到服務端中

image

2.4  grafna導入postgresql監控的官方模板9628

官方的監控模板效果如下

image

可以在grafana官方參考已有的模板
https://grafana.com/grafana/dashboards/

 

3,增加自定義監控指標

3.1 創建自定義指標的yaml配置文件

參考上面第一個截圖,上面提到pg_stat_statements.yaml這個文件,這裏基於pg_stats_statements做一個統計,計算結果相當於數據庫的QPS指標
image

pg_stat_statements:
  query: " SELECT datname, sum(calls) as calls FROM pg_stat_statements JOIN pg_database ON pg_stat_statements.dbid = pg_database.oid group by datname"
  metrics:
    - datname:
        usage: "LABEL"
        description: "Database name"
    - calls:
        usage: "COUNTER"
        description: "Number of times executed"

3.2,編輯postgres_exorpter的配置文件,加載自定義配置

如下,在postgresql的配置文件.env中增加一行配置
PG_EXPORTER_EXTEND_QUERY_PATH="/usr/local/postgresql_package/postgres_exporter/pg_stat_statements.yaml"

root@******:/usr/local/postgresql_package/postgres_exporter# cat .env
# Format
# DATA_SOURCE_NAME=postgresql://username:password@localhost:5432/postgres?sslmode=disable

# Monitor all databases via postgres_exporter
DATA_SOURCE_NAME="postgresql://postgres:******@localhost:5432/?sslmode=disable"

PG_EXPORTER_EXTEND_QUERY_PATH="/usr/local/postgresql_package/postgres_exporter/pg_stat_statements.yaml"

# Monitor specific databases on the PostgreSQL server
# DATA_SOURCE_NAME="postgresql://username:password@localhost:5432/database-name?sslmode=disable"

授權當前目錄給postgres_exporter 
sudo chown -R postgres_exporter: ./postgres_exporter

3.3,重啓prometheus服務端

systemctl restart prometheus

3.4,檢查自定義數據的收集

image

3.5,在grafana面板上增加自定義指標的監控圖

在官方模板9628的基礎上,點擊新增報表,選擇自定義數據源的數據pg_stat_statements_call 這個指標,來計算數據庫的QPS指標

image

其效果如下

image

 

 

參考鏈接:
https://www.rockdata.net/zh-cn/tutorial/monitor-with-prometheus-and-grafana/
https://www.rockdata.net/zh-cn/tutorial/prometheus-custom-metrics/
https://www.linux.org.ru/forum/general/15376989

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.