Releases: Vonng/pigsty
v1.5.0 Release @ 2022-05-22
Docker Support & Infra Monitoring & CMDB & ETCD & Better Cold Backup
Highlights
- Complete Docker Support, enable on meta nodes by default with ton's of software templates.
- gitea, bytebase, pgadmin4, pgweb, postgrest, kong, Minio,...
- Infra Self Monitoring: Nginx, ETCD, Consul, Grafana, Prometheus, Loki, etc...
- New CMDB design compatible with Redis & Greenplum, visualize with CMDB Overview
- Service Discovery: Consul SD now works again for Prometheus targets management
- Redis playbook now works on a single instance with
redis_port
option. - Better cold backup support: crontab for backup, delayed standby with
pg_delay
- Use ETCD as DCS, an alternative to Consul
- Nginx Log Enhancement
Monitoring
Dashboards
- CMDB Overview: Visualize CMDB Inventory
- DCS Overview: Show consul & etcd metrics
- Nginx Overview: Visualize Nginx metrics & access/error logs
- Grafana Overview: Grafana self Monitoring
- Prometheus Overview: Prometheus self Monitoring
- INFRA Dashboard & Home Dashboard Reforge
Architecture
- Infra monitoring targets now have a separated target dir
targets/infra
- Consul SD is available for Prometheus
- etcd, consul, patroni, docker metrics
- Now infra targets are managed by role
infra_register
- Upgrade pg_exporter to v0.5.0 with
scale
anddefault
supportpg_bgwriter
,pg_wal
,pg_query
,pg_db
,pgbouncer_stat
now use seconds instead of ms and µspg_table
counters now have default value 0 instead of NaNpg_class
is replaced bypg_table
andpg_index
pg_table_size
is now enabled with 300s ttl
Provisioning
- The new optional package
docker.tgz
contains Pgadmin, Pgweb, PostgRest, ByteBase, Kong, Minio, etc. - New Role
etcd
to deploy & monitor etcd dcs service - Specify which type of DCS to use with
pg_dcs_type
(etcd
now available) - Add
pg_checksum
option to enable data checksum - Add
pg_delay
option to setup delayed standby leaders - Add
node_crontab
andnode_crontab_overwrite
to create routine jobs such as cold backup - Add a series of
*_enable
options to control components - Loki and Promtail are now installed using the RPM package made by
frpm
. - Allow customize monitoring logo
Software Updates
- Upgrade PostgreSQL to 14.3
- Upgrade Redis to 6.2.7
- Upgrade PG Exporter to 0.5.0
- Upgrade Consul to 1.12.0
- Upgrade vip-manager to v1.0.2
- Upgrade Grafana to v8.5.2
- Upgrade HAproxy to 2.5.7 without rsyslog dependency
- Upgrade Loki & Promtail to v2.5.0 with RPM packages
- New packages:
pg_probackup
New software / application based on docker:
- bytebase : DDL Schema Migrator
- pgadmin4 : Web Admin UI for PostgreSQL
- pgweb : Web Console for PostgreSQL
- postgrest : Auto generated REST API for PostgreSQL
- kong : API Gateway which use PostgreSQL as backend storage
- swagger openapi : API Specification Generator
- Minio : S3-compatible object storage
- Gitea : Private local git service
Bug Fix
- Fix loki & promtail
/etc/default
config file name issue - Now
node_data_dir (/data)
is created before consul init if not exist - Fix HAProxy silence
/var/log/messages
with inappropriate rsyslog dependency
API Change
New Variable
node_data_dir
: major data mount path, will be created if not exist.node_crontab_overwrite
: overwrite/etc/crontab
instead of appendnode_crontab
: node crontab to be appended or overwrittennameserver_enabled
: enable nameserver on this meta node?prometheus_enabled
: enable Prometheus on this meta node?grafana_enabled
: enable grafana on this meta node?loki_enabled
: enable Loki on this meta node?docker_enable
: enable docker on this node?consul_enable
: enable consul server/agent?etcd_enable
: enable etcd server/clients?pg_checksum
: enable pg cluster data-checksum?pg_delay
: recovery min apply delay for standby leader
Reforge
Now *_clean
are boolean flags to clean up existing instances during init.
Now *_safeguard
are boolean flags to avoid purging running instances when executing any playbook.
pg_exists_action
->pg_clean
pg_disable_purge
->pg_safeguard
dcs_exists_action
->dcs_clean
dcs_disable_purge
->dcs_safeguard
Rename
node_ntp_config
->node_ntp_enabled
node_admin_setup
->node_admin_enabled
node_admin_pks
->node_admin_pk_list
node_dns_hosts
->node_etc_hosts_default
node_dns_hosts_extra
->node_etc_hosts
node_dns_server
->node_dns_method
node_local_repo_url
->node_repo_local_urls
node_packages
->node_packages_default
node_extra_packages
->node_packages
node_packages_meta
->node_packages_meta
node_meta_pip_install
->node_packages_meta_pip
node_sysctl_params
->node_tune_params
app_list
->nginx_indexes
grafana_plugin
->grafana_plugin_method
grafana_cache
->grafana_plugin_cache
grafana_plugins
->grafana_plugin_list
grafana_git_plugin_git
->grafana_plugin_git
haproxy_admin_auth_enabled
->haproxy_auth_enabled
pg_shared_libraries
->pg_libs
dcs_type
->pg_dcs_type
Checksums
MD5 (app.tgz) = 7f5712993d68e09798e1d40cea6c6d87
MD5 (docker.tgz) = 53f3c12283d495e4cca55c7fbcaeabfd
MD5 (matrix.tgz) = 3d063437c482d94bd7e35df1a08bbc84
MD5 (pigsty.tgz) = b3b85e124c2cbcb3d64497585f2e53e8
MD5 (pkg.tgz) = 334abc323b78cb22b47d4b4e32635541
v1.4.1 add Docker Support
Routine bug fix / Docker Support / English Docs
Now docker is enabled on meta node by default. You can launch ton's of SaaS with it
English document is available now.
- add docker to default packages
- add docker-compose to default pacakge list
- disable nameserver by default & enable docker role by default
Bug Fix
- fix promtail & loki config var issue
- Fix grafana legacy alerts.
- Disable nameserver by default
- Rename pg-alias.sh for patroni shortcuts
- disable exemplars queries for all dashboards
- fix loki data dir issue #100
- change autovacuum_freeze_max_age from 100000000 to 1000000000
MD5 (pigsty.tgz) = 6f2db6af16e96a6842f28e299f98b96b
MD5 (pkg.tgz) = 9a8da6b926b2742bc37a8a339401f47a
MD5 (app.tgz) = b9a3de9cdea10cfaedf3316941a089ad
MD5 (matrix.tgz) = 3d063437c482d94bd7e35df1a08bbc84
v1.4.0 Release
Quick Start
Get a new Linux x86_64 CentOS 7.8 node. with nopass sudo
& ssh
access, then:
bash -c "$(curl -fsSL http://download.pigsty.cc/get)" # get latest pigsty source
cd ~/pigsty && ./configure --download --non-interactive # pre-check and config templating
./infra.yml # install pigsty on current node
You can also download pigsty source & software packages with curl
:
curl -SL https://github.com/Vonng/pigsty/releases/download/v1.4.0/pkg.tgz -o /tmp/pkg.tgz
curl -SL https://github.com/Vonng/pigsty/releases/download/v1.4.0/pigsty.tgz | gzip -d | tar -xC
Architecture
- Decouple system into 4 major categories:
INFRA
,NODES
,PGSQL
,REDIS
, which makes pigsty far more clear and more extensible. - Single Node Deployment =
INFRA
+NODES
+PGSQL
- Deploy pgsql clusters =
NODES
+PGSQL
- Deploy redis clusters =
NODES
+REDIS
- Deploy other databases =
NODES
+ xxx (e.gMONGO
,KAFKA
, ... TBD)
Accessibility
- CDN for mainland China.
- Get the latest source with
bash -c "$(curl -fsSL http://download.pigsty.cc/get)"
- Download & Extract packages with new
download
script.
Monitor Enhancement
- Split monitoring system into 5 major categories:
INFRA
,NODES
,REDIS
,PGSQL
,APP
- Logging enabled by default
- now
loki
andpromtail
are enabled by default. with prebuilt loki-rpm
- now
- Models & Labels
- A hidden
ds
prometheus datasource variable is added for all dashboards, so you can easily switch different datasource simply by select a new one rather than modifying Grafana Datasources & Dashboards - An
ip
label is added for all metrics, and will be used as join key between database metrics & nodes metrics
- A hidden
- INFRA Monitoring
- Home dashboard for infra: INFRA Overview
- Add logging Dashboards : Logs Instance
- PGLOG Analysis & PGLOG Session now treated as an example Pigsty APP.
- NODES Monitoring Application
- If you don't care database at all, Pigsty now can be used as host monitoring software alone!
- Consist of 4 core dashboards: Nodes Overview & Nodes Cluster & Nodes Instance & Nodes Alert
- Introduce new identity variables for nodes:
node_cluster
andnodename
- Variable
pg_hostname
now means set hostname same as postgres instance name to keep backward-compatible - Variable
nodename_overwrite
control whether overwrite node's hostname with nodename - Variable
nodename_exchange
will write nodename to each other's/etc/hosts
- All nodes metrics reference are overhauled, join by
ip
- Nodes monitoring targets are managed alone under
/etc/prometheus/targets/nodes
- PGSQL Monitoring Enhancement
- Complete new PGSQL Cluster which simplify and focus on important stuff among cluster.
- New Dashboard PGSQL Databases which is cluster level object monitoring. Such as tables & queries among the entire cluster rather than single instance.
- PGSQL Alert dashboard now only focus on pgsql alerts.
- PGSQL Shard are added to PGSQL
- Redis Monitoring Enhancement
- Add nodes monitoring for all redis dashboards.
MatrixDB Support
- MatrixDB (Greenplum 7) can be deployed via
pigsty-matrix.yml
playbook - MatrixDB Monitor Dashboards : PGSQL MatrixDB
- Example configuration added:
pigsty-mxdb.yml
Provisioning Enhancement
Now pigsty work flow works as this:
infra.yml ---> install pigsty on single meta node
| then add more nodes under pigsty's management
|
nodes.yml ---> prepare nodes for pigsty (node setup, dcs, node_exporter, promtail)
| then choose one playbook to deploy database clusters on those nodes
|
^--> pgsql.yml install postgres on prepared nodes
^--> redis.yml install redis on prepared nodes
infra-demo.yml =
infra.yml -l meta +
nodes.yml -l pg-test +
pgsql.yml -l pg-test +
infra-loki.yml + infra-jupyter.yml + infra-pgweb.yml
nodes.yml
to setup & prepare nodes for pigsty- setup node, node_exporter, consul agent on nodes
node-remove.yml
are used for node de-register
pgsql.yml
now only works on prepared nodespgsql-remove
now only responsible for postgres itself. (dcs and node monitor are taken bynode.yml
)- Add a series of new options to reuse
postgres
role in greenplum/matrixdb
redis.yml
now works on prepared nodes- and
redis-remove.yml
now remove redis from nodes.
- and
pgsql-matrix.yml
now install matrixdb (Greenplum 7) on prepared nodes.
Software Upgrade
- PostgreSQL 14.2
- PostGIS 3.2
- TimescaleDB 2.6
- Patroni 2.1.3 (Prometheus Metrics + Failover Slots)
- HAProxy 2.5.5 (Fix stats error, more metrics)
- PG Exporter 0.4.1 (Timeout Parameters, and)
- Grafana 8.4.4
- Prometheus 2.33.4
- Greenplum 6.19.4 / MatrixDB 4.4.0
- Loki are now shipped as rpm packages instead of zip archives
Bug Fix
- Remove consul dependency for patroni , which makes it much more easier to migrate to a new consul cluster
- Fix prometheus bin/new scripts default data dir path :
/export/prometheus
to/data/prometheus
- Fix typos and tasks
- Add restart seconds to vip-manager systemd service
API Changes
New Variable
node_cluster
: Identity variable for node clusternodename_overwrite
: If set, nodename will be set to node's hostnamenodename_exchange
: exchange node hostname (in/etc/hosts
) among play hostsnode_dns_hosts_extra
: extra static dns records which can be easily overwritten by single instance/clusterpatroni_enabled
: if disabled, postgres & patroni bootstrap will not be performed during rolepostgres
pgbouncer_enabled
: if disabled, pgbouncer will not be launched during rolepostgres
pg_exporter_params
: extra url parameters for pg_exporter when generating monitor target url.pg_provision
: bool var to indicate whether perform provision part of rolepostgres
(template, db,user)no_cmdb
: cli args forinfra.yml
andinfra-demo.yml
playbook which will not create cmdb on meta node.
MD5 (app.tgz) = f887313767982b31a2b094e5589a75ea
MD5 (matrix.tgz) = 3d063437c482d94bd7e35df1a08bbc84
MD5 (pigsty.tgz) = e143b88ebea1474f9ebaffddc6072c49
MD5 (pkg.tgz) = 73e8f5ce995b1f1760cb63c1904fb91b
v1.3.1 Bug fix & Dashboard Polish & Software Upgrade
[Monitor]
- PGSQL & PGCAT Dashboard polish
- optimize layout for pgcat instance & pgcat database
- add key metrics panels to pgsql instance dashboard, keep consist with pgsql cluster
- add table/index bloat panels to pgcat database, remove pgcat bloat dashboard.
- add index information in pgcat database dashboard
- fix broken panels in grafana 8.3
- add redis index in nginx homepage
[Deploy]
- New
infra-demo.yml
playbook for one-pass bootstrap - Use
infra-jupyter.yml
playbook to deploy optional jupyter lab server - Use
infra-pgweb.yml
playbook to deploy optional pgweb server - New
pg
alias on meta node, can initiate postgres cluster from admin user (in addition to postgres) - Adjust all patroni conf templates's
max_locks_per_transactions
according totimescaledb-tune
's advise - Add
citus.node_conninfo: 'sslmode=prefer'
to conf templates in order to use citus without SSL - Add all extensions (except for pgrouting) in pgdg14 in package list
- Upgrade node_exporter to v1.3.1
- Add PostgREST v9.0.0 to package list. Generate API from postgres schema.
[BugFix]
- Grafana's security breach (upgrade to v8.3.1 issue)
- fix
pg_instance
&pg_service
inregister
role when start from middle of playbook - Fix nginx homepage render issue when host without
pg_cluster
variable exists - Fix style issue when upgrading to grafana 8.3.1
How to upgrade ?
Manually upgrade grafana with:
cd /etc/yum.repos.d
cp -f backup/grafana.repo .
yum clean all && yum makecache
yum upgrade -y grafana # 8.3.1-1
systemctl restart grafana-server
Install
curl -SL https://github.com/Vonng/pigsty/releases/download/v1.3.1/pkg.tgz -o /tmp/pkg.tgz
curl -SL https://github.com/Vonng/pigsty/releases/download/v1.3.1/pigsty.tgz | gzip -d | tar -xC ~ && cd ~/pigsty
./configure
make install
v1.3.1 问题修复,面板改善与软件升级
[监控]
- PGSQL & PGCAT 面板精制抛光
- 调整 PGCAT Instance & PGCAT Database的默认布局,优化信息呈现方式
- 在PGSQL Instance面板中添加Key Metrics,并与PGSQL Cluster保持一致
- 将表膨胀面板 PGCAT Bloat 集成入 PGCAT Database 面板
- 在 PGCAT Database 面板中添加索引相关信息
- 根据Grafana 8.3的变化调整所有Panel样式:默认列名变化,Fill Opacity默认值变化
- 在Pigsty Nginx首页添加了Redis集群的快速导航
[部署]
- 添加新的
infra-demo.yml
剧本,用于一次性快速拉起多节点沙箱,或专用于特殊配置的环境。 - 将 JupyterLab 从 基础设施部署剧本中移除,成为独立的可选组件,使用
infra-jupyter.yml
剧本部署 - 将 PGWeb 从 基础设施部署剧本中移除,成为独立的可选组件,使用
infra-pgweb.yml
剧本部署 - 在管理节点上添加新的
pg
管理命令别名,可以从管理节点上对数据库节点发起控制。 - 根据TimescaleDB-tune工具的建议,调整了所有模版中参数
max_locks_per_transactions
的默认值。 - 为所有配置模板添加了参数
citus.node_conninfo: 'sslmode=prefer'
,以便在不启用SSL的情况下使用Citus - PGDG14源中的所有扩展插件(pgrouting除外)均已加入软件列表中。
- NodeExporter的默认版本升级至v1.3.1
- 将 PostgREST 9.0 加入默认下载软件包中,可用于自动从数据库模式生成后端REST API。
[问题修复]
- 修复了Grafana任意文件访问高危漏洞
- 修复了从半路中重新执行
pgsql
剧本时,当执行至注册Consul服务时,pg_instance
&pg_service
变量不存在的问题 - 修复了当存在未定义
pg_cluster
节点时,Nginx主页渲染失败的问题 - 修复了升级至Grafana8.3 导致的样式变化
MD5 (app.tgz) = f604d27c7ed3dc1dec9c315e88e43df5
MD5 (pigsty.tgz) = 5f7c04114f4753e524e3e7cd4b16f113
MD5 (pkg.tgz) = 17204439621f324db5630413bb011df1
v1.3 Redis Support & PGCAT Overhaul
-
[FEATURE] Redis Deployment
- standalone mode
- cluster mode
- sentinel mode
- redis_exporter & prometheus record & alert rules
-
[FEATURE] Redis Monitor
-
[FEATURE] monitor: PGCAT Overhaul
- New Dashboard: PGCAT Instance
- New Dashboard: PGCAT Database Dashboard
- Remake Dashboard: PGCAT Table Dashboard
- Now Grafana datasource is automatically registered during monly deployment (PGCAT is enabled)
-
[FEATURE] monitor: PGSQL Enhancement
- New Panels: PGSQL Cluster, add 10 key metrics panel (toggled by default)
- New Panels: PGSQL Instance, add 10 key metrics panel (toggled by default)
- Simplify & Redesign: PGSQL Service
- Add cross-references between PGCAT & PGSL dashboards
-
[ENHANCEMENT] software upgrade
- add PostgreSQL 13 back to default package list
- upgrade to PostgreSQL 14.1 by default
- add greenplum rpm and dependencies
- add redis rpm & source packages
- add perf as default packages
-
[BUG FIX] shell script file permission fixed: #69
-
[BUG FIX] fix pglog shortcuts (pglog12, pglog13, pglog14) to adopt different csvlog versions. add support for PG14 new error codes.
-
[CHANGE] change default values for
max_locks_per_transactions
-
[CHANGE] increase default swapness from 0 to 10 for tuned config templates.
-
[CHANGE] default monitor targets file are now @
/etc/prometheus/targets
instead of/etc/pigsty/targets
How to Upgrade?
This upgrade is all about prometheus & grafana. Following play will do the trick:
cd pigsty && git pull # upgrade pigsty from v1.2 to v1.3
./infra.yml -t grafana_provision,prometheus_config,prometheus_reload
v1.2.0 Release: PG 14 by Default
-
[ENHANCEMENT] Use PostgreSQL 14 as default version
-
[ENHANCEMENT] Use TimescaleDB 2.5 as default extension
- now timescaledb & postgis are enabled in cmdb by default
-
[ENHANCEMENT] new monitor-only mode:
- you can use pigsty to monitor existing pg instances with a connectable url only
- pg_exporter will be deployed on meta node locally
- new dashboard PGSQL Cluster Monly for remote clusters
-
[ENHANCEMENT] Software upgrade
- Postgres to 14.0
- TimescaleDB to 2.5
- grafana to 8.2.2
- pev2 to v0.11.9
- promscale to 0.6.2
- pgweb to 0.11.9
- Add new extensions: pglogical pg_stat_monitor orafce
-
[ENHANCEMENT] Automatic detect machine spec and use proper
node_tune
andpg_conf
templates -
[ENHANCEMENT] Rework on bloat related views, now more information are exposed
-
[ENHANCEMENT] Remove timescale & citus internal monitoring
-
[ENHANCEMENT] New playbook
pgsql-audit.yml
to create audit report. -
[BUG FIX] now pgbouncer_exporter resource owner are {{ pg_dbsu }} instead of postgres
-
[BUG FIX] fix pg_exporter duplicate metrics on pg_table pg_index while executing
REINDEX TABLE CONCURRENTLY
-
[BUG FIX] fix
register_grafana
logic: put password insecureJsonData
instead ofjsonData
-
[BUG FIX] fix
cmdb.sql
: nowpglog.sample
can handle different version of postgres csv logpglog.sample
is a parent table with three child tablesample12
,sample13
,sample14
pglog
shortcuts are enhanced intopglog12
,pglog13
,pglog14 (<- pglog)
. which will pour csvlog into right table.
-
[CHANGE] now all config templates are minimize into two: auto & demo. (removed:
pub4, pg14, demo4, tiny, oltp
)pigsty-demo
is configured ifvagrant
is the default user, otherwisepigsty-auto
is used.
-
[Application]
applog
can visualize your Apple iOS15 privacy log.
How to upgrade from v1.1.1
There's no API change in 1.2.0.
You can still use old pigsty.yml
configuration files (PG13).
For the infrastructure part. Re-execution of infra.yml
will do most of the parts
As for the database. You can still use the existing PG13 instances. In-place upgrade to PG14 is quite
tricky especially when involving extensions such as PostGIS & Timescale. I would highly recommend
performing a database migration with logical replication.
The new playbook pgsql-migration.yml
will make this a lot easier. It will create a series of
scripts which will help you to migrate your cluster with near-zero downtime.
v1.1.1 TimescaleDB upgrade and new Patroni Templates
Pigsty v.1.1.1
- Upgrade timescaledb from
apache
version totimescale
version. - Add a series of new patroni config templates.
The default value for timescaledb.license
is apache rather than timescale as the doc describes #3718
Changes
- [ENHANCEMENT] replace timescaledb
apache
version withtimescale
version - [ENHANCEMENT] upgrade prometheus to 2.30
- [ENHANCEMENT] add new patroni config templates
- [BUG FIX] now pg_exporter config dir's owner are {{ pg_dbsu }} instead of prometheus
What's new in patroni config tempaltes?
Now there are a series of pre-defined patroni config templates aims for different machine spec.
Conf Name | CPU | Mem | Disk |
---|---|---|---|
tiny |
1 | 1GB | 40GB |
mini |
2 | 4GB | 100GB |
small |
4 | 8GB | 200GB |
medium |
8 | 16GB | 500GB |
large |
16 | 32GB | 1TB |
xlarge |
32 | 64GB | 2TB |
oltp,crit,olap |
64 | 400GB | 4TB |
How to upgrade from existing setup ?
How to upgrade to v1.1.1 from v1.0.0.
The major change in v1.1.1 is timescaledb. Which replace old apache
license version with timescale
license version
(reinstall & restart required)
You can failover with patroni, then perform the timescaledb upgrade.
systemctl stop patroni
yum remove -y timescaledb_13
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/$basearch
repo_gpgcheck=0
gpgcheck=0
enabled=1
yum install timescaledb-2-postgresql13
v1.1 HomePage & Client Utils
Demo
Check http://home.pigsty.cc for the brand new user interface! (home page) 🎉
Enhancements
- [ENHANCEMENT] home page overhaul
- [ENHANCEMENT] add jupyter lab integration
- [ENHANCEMENT] add pgweb console integration
- [ENHANCEMENT] add pgbadger support
- [ENHANCEMENT] add pev2 support, explain visualizer
- [ENHANCEMENT] add pglog utils
- [ENHANCEMENT] update default pkg.tgz software version:
- [ENHANCEMENT] add
pg_dummy_filesize
to create fs space placeholder - [ENHANCEMENT] now haproxy admin proxy are served under default server (h.pigsty is no longer needed)
- [ENHANCEMENT] add a new example app:
applog
which could visualize Apple iOS15 privacy log with grafana dashboards. - [ENHANCEMENT] add promscale to default pkg.tgz (replace prometheus tsdb with timescaledb)
Software Upgrades
- upgrade postgres to v13.4 (with official pg14 support)
- upgrade pgbouncer to v1.16 (metrics definition updates)
- upgrade grafana to v8.1.4
- upgrade prometheus to v2.2.29
- upgrade node_exporter to v1.2.2
- upgrade haproxy to v2.1.1
- upgrade consul to v1.10.2
- upgrade vip-manager to v1.0.1
Bug Fixes
- pgbouncer 1.16
SHOW POOLS
,SHOW DATABASES
returns an extra column - ignore errors when provisioning database in existing clusters (skip instead of halt)
API Changes
nginx_upstream
now holds different structures. (incompatible)- new config entries:
app_list
, render into home page's nav entries - new config entries:
docs_enabled
, setup local docs on default server. - new config entries:
pev2_enabled
, setup local pev2 utils. - new config entries:
pgbadger_enabled
, create log summary/report dir - new config entries:
jupyter_enabled
, enable jupyter lab server on meta node - new config entries:
jupyter_username
, specify which user to run jupyter lab - new config entries:
jupyter_password
, specify jupyter lab default password - new config entries:
pgweb_enabled
, enable pgweb server on meta node - new config entries:
pgweb_username
, specify which user to run pgweb - rename internal flag
repo_exist
intorepo_exists
(internal) - now default value for
repo_address
ispigsty
instead ofyum.pigsty
- now haproxy access point is
http://pigsty
instead ofhttp://h.pigsty
v1.0.1 Bug Fix & Document Enhancement
v1.0.1 Minor Release
Bug Fix & Doc Updates
2021-09-14
- Documentation Update
- Chinese document now viable
- Machine-Translated English document now viable
- View document via local browser with
make doc
(powered bydocsify
).
- Bug Fix:
pgsql-remove.yml
does not removeprimary
instance.- it will leave primary postgres intact, which is not desired behavior.
- Bug Fix: replace pg_instance with pg_cluster + pg_seq
- Start-At-Task may fail due to pg_instance undefined
- Bug Fix: remove citus from default shared preload library
- citus will force max_prepared_transaction to non-zero value
- Bug Fix: ssh sudo checking in
configure
:- now
ssh -t sudo -n ls
is used for privilege checking
- now
- Typo Fix:
pg-backup
script typo - Alert Adjust: Remove NtpSanityCheck (duplicate with NtpClockSkew)
- Exporter Adjust: remove collector.systemd to reduce overhead
v1.0.0 GA
Pigsty v1.0.0 GA Released ! 🎉
Get Started
# curl -SL https://github.com/Vonng/pigsty/releases/download/v1.0.0/pigsty.tgz -o ~/pigsty.tgz
# curl -SL https://github.com/Vonng/pigsty/releases/download/v1.0.0/pkg.tgz -o /tmp/pkg.tgz
git clone https://github.com/Vonng/pigsty && cd pigsty
./configure
make install
Highlights
-
Monitoring System Overhaul
- New Dashboards on Grafana 8.0
- New metrics definition, with extra PG14 support
- Simplified labeling system: static label set: (job, cls, ins)
- New Alerting Rules & Derived Metrics
- Monitoring multiple database at one time
- Realtime log search & csvlog analysis
- Link-Rich Dashboards, click graphic elements to drill-down|roll-up
-
Architecture Changes
- Add citus & timescaledb as part of default installation
- Add PostgreSQL 14beta2 support
- Simply haproxy admin page index
- Decouple infra & pgsql by adding a new role
register
- Add new role
loki
andpromtail
for logging - Add new role
environ
for setting up environment for admin user on admin node - Using
static
service-discovery for prometheus by default (instead ofconsul
) - Add new role
remove
to gracefully remove cluster & instance - Upgrade prometheus & grafana provisioning logics.
- Upgrade to vip-manager 1.0 , node_exporter 1.2 , pg_exporter 0.4, grafana 8.0
- Now every database on every instance can be auto-registered as grafana datasource
- Move consul register tasks to role
register
, change consul service tags - Add cmdb.sql as pg-meta baseline definition (CMDB & PGLOG)
-
Application Framework
- Extensible framework for new functionalities
- core app: PostgreSQL Monitor System:
pgsql
- core app: PostgreSQL Catalog explorer:
pgcat
- core app: PostgreSQL Csvlog Analyzer:
pglog
- add example app
covid
for visualizing covid-19 data. - add example app
isd
for visualizing isd data.
- Misc
- Add jupyterlab which brings entire python environment for data science
- Add
vonng-echarts-panel
to bring Echarts support back. - Add wrap script
createpg
,createdb
,createuser
- Add cmdb dynamic inventory scripts:
load_conf.py
,inventory_cmdb
,inventory_conf
- Remove obsolete playbooks:
pgsql-monitor
,pgsql-service
,node-remove
, etc....
API Change
- new var :
node_meta_pip_install
- rename var:
grafana_url
tografana_endpoint
- new var:
grafana_admin_username
- new var:
grafana_database
- new var:
grafana_pgurl
- new var:
pg_shared_libraries
- new var:
pg_exporter_auto_discovery
- new var:
pg_exporter_exclude_database
- new var:
pg_exporter_include_database
Bug Fix
- Fix default timezone Asia/Shanghai (CST) issue
- Fix nofile limit for pgbouncer & patroni
- Pgbouncer userlist & database list will be generated when executing tag
pgbouncer