• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

postgres-checkup: PostgreSQL Health Check and SQL Performance Analysis

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

postgres-checkup

开源软件地址:

https://gitee.com/mirrors/postgres-checkup

开源软件介绍:

Please support the project giving a GitLab star (it's on the main page,at the upper right corner):

Add a star

Demo: an example of postgres-checkup report (based on CI, multi node).

Disclaimer: Conclusions, Recommendations – work in progress.To treat the data correctly, you need deep Postgres knowledge. Each reportconsists of 3 sections: Observations, Conclusions, and Recommendations.Observations are filled automatically. As for Conclusions and Recommendationssections, not all reports are auto-generated.

About

Postgres Checkup (postgres-checkup) is a new kind of diagnostics tool for a deep analysis of a Postgres database health. It detects current and potential issues with database performance, scalability and security. It also produces recommendations on how to resolve or prevent them.

A monitoring system will only show current, urgent problems. And postgres-checkup will show sneaking up, deeper problems, that may hit you in the future. It helps to solve many known database administration problems and common pitfalls. It aims to detect issues at a very early stage and to suggest the best ways to prevent them.We recommend to run these on a regular basis — weekly, monthly, and quarterly. And also to run these right before and after applying any major change to a database server. Whether it’s a schema or configuration parameter or cluster settings change.

Why do you need postgres-checkup and why it's safe and easy to use:

  • It is unobtrusive: its impact on the observing system isclose to zero. It does not use any heavy queries, keeping resource usagevery low, and avoiding having the “observer effect”.postgres-checkup reports were successfully tested on real-world databasescontaining 500,000+ tables and 1,000,000+ indexes.

  • Zero install (on observed machines): it is able to analyze any Linuxmachine (including virtual machines), as well as cloud Postgres instances(such as Amazon RDs or Google Cloud SQL), not requiring any additional setupor any changes. It does, however, require a privileged access that a DBA usuallyhas anyway.

  • Complex analysis: unlike most monitoring tools, which provide just raw data,postgres-checkup combines data from various parts of the system (e.g.,internal Postgres stats are combined with knowledge about system resourcesin autovacuum setting and behavior analysis) joining the data into well-formattedreports aimed to solve particular DBA problems. Also, it analyzes the masterdatabase server together with all its replicas, which is neccessary in suchcases as index analysis or search for settings deviations.

Reports Structure

Postgres-checkup produces two kinds of reports for every check:

  • JSON reports (*.json) — can be consumed by any program or service, orstores in some database.

  • Markdown reports (*.md) — the main format for humans, may contain lists,tables, pictures. Being of native format for GitLab and GitHub, such reportsare ready to be used, for instance, in their issue trackers, simplifyingworkflow. Markdown reports are derived from JSON reports.

Markdown reports can be converted to different formats such as HTML or PDF.

Each report consists of three sections:

  1. "Observations": automatically collected data. This is to be consumed byan expert DBA.
  2. "Conclusions": what we conclude from the Observations, stated in plain Englishin the form that is convenient for engineers who are not DBA experts.
  3. "Recommendations": action items, what to do to fix the discovered issues.

Both "Conclusions" and "Recommendations" are to be consumed by engineers whowill make decisions what, how and when to optimize.

Installation and Usage

Requirements

For the operator machine (from where the tool will be executed), the followingOS are supported:

  • Linux (modern RHEL/CentOS or Debian/Ubuntu; others should work as well, butare not yet tested);
  • MacOS.

There are known cases when postgres-checkup was successfully used on Windows,although with some limitations.

The following programs must be installed on the operator machine:

  • bash
  • psql
  • coreutils
  • jq >= 1.5
  • go >= 1.17 (no binaries are shipped at the moment)
  • awk
  • sed
  • pandoc *
  • wkhtmltopdf >= 0.12.4 *

pandoc and wkhtmltopdf are optional, they are needed for generating HTML andPDF versions of report (options --html, --pdf).

Nothing special has to be installed on the observed machines. However, they mustrun Linux (again: modern RHEL/CentOS or Debian/Ubuntu; others should work aswell, but are not yet tested).

:warning: Only Postgres version 9.6 and higher are currently officially supported.

How to Install

1. Install required programs

Ubuntu/Debian:

sudo apt-get update -ysudo apt-get install -y git postgresql coreutils jq golang# Optional (to generate PDF/HTML reports)sudo apt-get install -y pandocwget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xztar xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xzsudo mv wkhtmltox/bin/wkhtmlto* /usr/local/binsudo apt-get install -y openssl libssl-dev libxrender-dev libx11-dev libxext-dev libfontconfig1-dev libfreetype6-dev fontconfig

CentOS/RHEL:

sudo yum install -y git postgresql coreutils jq golang# Optional (to generate PDF/HTML reports)sudo yum install -y pandocwget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xztar xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xzsudo mv wkhtmltox/bin/wkhtmlto* /usr/local/binsudo yum install -y libpng libjpeg openssl icu libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi

MacOS (assuming that Homebrew is installed):

brew install postgresql coreutils jq golang git# Optional (to generate PDF/HTML reports)brew install pandoc Caskroom/cask/wkhtmltopdf

2. Clone this repo

git clone https://gitlab.com/postgres-ai/postgres-checkup.git# Use --branch to use specific release version. For example, to use version 1.1:#   git clone --branch 1.1 https://gitlab.com/postgres-ai/postgres-checkup.gitcd postgres-checkup

3. Build pghrep

cd ./pghrepmake maincd ..

Example of Use

Let's make a report for a project named prod1. Assume that we have two servers,db1.vpn.local and db2.vpn.local.

Postgres-checkup automatically detects which one is the master:

./checkup -h db1.vpn.local -p 5432 --username postgres --dbname postgres --project prod1 -e 1
./checkup -h db2.vpn.local -p 5432 --username postgres --dbname postgres --project prod1 -e 1

Which literally means: connect to the server with given credentials, save data into prod1project directory, as epoch of check 1. Epoch is a numerical (integer) sign of current iteration.For example: in half a year we can switch to "epoch number 2".

-h db2.vpn.local means: try to connect to host via SSH and then use remote psql command to perform checks.If SSH is not available the local 'psql' will be used (non-psql reports will be skipped) to establishPostgres connection. If you want to avoid "guessing", use -ssh-hostname or --pg-hostname.

Also, you can define a specific way to connect: SSH or psql:

--ssh-hostname db2.vpn.local - SSH will be used for the connection. SSH port can be defined as wellwith option --ssh-port.

--pg-hostname db2.vpn.local - psql will be used for the connection. The port where PostgreSQLaccepts connections can be defined with the option --pg-port.

In case when --pg-port or --ssh-port are not defined but --port is defined, value of --port optionwill be used instead of --pg-port or --ssh-port depending on the current connection type.

For comprehensive analysis, it is recommended to run the tool on the master andall its replicas – postgres-checkup is able to combine all the information frommultiple nodes to a single report.

Some reports (such as K003) require two snapshots, to calculate "deltas" ofmetrics. So, for better results, use the following example, executing it during peak workinghours, with $DISTANCE values from 10 min to a few hours:

$DISTANCE="1800" # 30 minutes# Assuming that db2 is the master, db3 and db4 are its replicasfor host in db2.vpn.local db3.vpn.local db4.vpn.local; do  ./checkup \    -h "$host" \    -p 5432 \    --username postgres \    --dbname postgres \    --project prod1 \    -e 1 \    --file resources/checks/K000_query_analysis.sh # the first snapshot is needed only for reports K***donesleep "$DISTANCE"for host in db2.vpn.local db3.vpn.local db4.vpn.local; do  ./checkup \    -h "$host" \    -p 5432 \    --username postgres \    --dbname postgres \    --project prod1 \    -e 1done

As a result of execution, two directories containing .json and .md files willbe created:

./artifacts/prod1/json_reports/1_2018_12_06T14_12_36_+0300/./artifacts/prod1/md_reports/1_2018_12_06T14_12_36_+0300/

Each of generated files contains information about "what we check" and collected data forall instances of the postgres cluster prod1.

A human-readable report can be found at:

./artifacts/prod1/md_reports/1_2018_12_06T14_12_36_+0300/Full_report.md

Open it with your favorite Markdown files viewer or just upload to a service such as gist.github.com.

You can collect and process data separately by specifying working mode name in CLI option --mode %mode% or using it as a "command" (checkup %mode%).
Available working modes:
collect - collect data;process - generate MD (and, optionally, HTML, PDF) reports with conclusions and recommendations;upload - upload generated reports to Postgres.ai platform;run - collect and process data at once. This is the default mode, it is used when no other mode is specified. Note, that upload is not included.

Docker


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap