How To Monitor PostgreSQL Like a Pro!

Ajay Patel February 18, 2020

 

The database is the heart of the application. Before we dig into some insights about why it's essential to monitor Postgres, we’ll first discuss a bit about monitoring.

Monitoring is collecting historic data points that you then use to generate alerts (for any anomalies), to optimize your database and lastly to be proactive in case something goes wrong (for example, a failing database). 

The “We will see when it happens” approach might work with your personal projects, but can cost significant money for an enterprise if not paid attention to. While it is essential to monitor your database, it is also important to know what and why to monitor. From my professional experience as a DBA, I have seen most DBAs, developers and operational teams fail to monitor Postgres for the right things. In this post, we will discuss the PostgreSQL monitoring framework that I have built working as a DBA and helping our customers at EnterpriseDB. 
 

Why Is It Essential To Monitor PostgreSQL?

There are 5 key reasons to monitor your PostgreSQL database.

    1. Availability

    2. System Optimization

    3. Identify Performance Problems

    4. Business Process improvement

    5. Capacity Planning
 

1. Availability

It's a very simple equation that if you don't have a database running, your application will not work. If the application is critical, it directly impacts your users and organization. We define availability in two parts: your system or host availability and database availability. If either one or both has a problem, your application will fail. If you have an SLA to meet, make sure to monitor your database system for availability.

2. System Optimization

Do you think your database system (including Host) is optimized to give the optimal results? Or do you have any system bottlenecks? Monitoring helps to identify those gaps, and you can make changes to your system accordingly to see if it resolves the problem. To put this into perspective, there may be a situation where you see a very high load on the system. You figured out that there is a host parameter that can be set to a better value, and you don't see the load spikes again.

3. Identify Performance Problems

'Proactive monitoring can help you to identify future performance problems. From the database side, it could be related to bloating, slow running queries, table and index statistics, or the vacuum being unable to catch up. If you monitor these areas, you’ll be able to identify problems happening now and those that may lead to bigger challenges in future.

4. Business Process Improvement

You must be thinking, “How can Business Process improvement be done by monitoring?” Running databases for over 13 years and managing more than 500+ databases, you learn not just about the database, but how to run your database operations effectively. Every database user or customer has a different need and priority. Knowing your system (load, user activity, etc.) helps you to prioritize customer tasks, reporting jobs, or downtime.

5. Capacity Planning

More user or application growth means more system resources. It leads to key questions: Do you need more disk space? Do you need a new read replica? Do you need to scale your database system vertically? Monitoring helps you to understand your current system utilization—and if you have data points spread over a few weeks or months, it helps to forecast system scaling needs. And by doing this, you can budget for the resources accordingly.
 

Postgres Monitoring Framework

Monitoring framework helps organizations or users start from zero and go to 100% in simple steps. Being DBA or developer, you may think that you are covered from all angles and there’s no need to improve or use advance monitoring. Framework helps you to find the monitoring gaps and identify how monitoring can be better.

The framework is divided into 4 parts:

Key aspects: Security, Operations, and Performance. 
Monitoring points: Understanding what data to capture for successful monitoring.
Tools: electing the best tool (open source or enterprise).
Baseline: Working with exception based monitoring and defining frequency and threshold. 
 

Components Monitored In the Framework

We have divided monitoring aspects into 3 key elements. 

Performance: Host and database monitoring points which affect the database performance. 
Availability: Host and database monitoring points which affect availability of the systems (application or database)
Security: Monitoring points which affect security related to databases. 
Once you decide which key aspect plays a major role for your ecosystem, the below is a good starting point. 

What Tools Can You Use To Monitor PostgreSQL?

Once you identify the key aspects and monitoring points you would like to monitor, the next step is to identify the tools that support the requirements. Some of the open source tools can very well support your existing automation platform and feature rich GUI or console. However, they may or may not be able to fulfil all of your enterprise requirements. The below comparison will help you to choose based on the type of monitoring you need. Enterprise solution Postgres Enterprise Manager (PEM) has very strong monitoring capabilities along with monitoring Backup status, tuning advisor and capacity planning. 

 

Defining Effective PostgreSQL Monitoring

You can either be proactive to identify the database problems or wait problems to arise and reactively fix it. Effective monitoring simply requires understanding which data points to capture, using alerts on exception, and defining a baseline. Once monitoring is established, our job is to make sure that we keep identifying gaps and adjusting the baseline periodically. 

To learn more about what it takes to monitor Postgres like a pro, watch our on-demand webinar!

 

Ajay Patel

Ajay Patel is a Delivery Manager on the RemoteDBA team, supporting customers worldwide with both small and large Postgres deployments. He has more than a decade of experience in professional services as a database consultant. Prior to joining EDB in 2014, Patel was a DBA/Consultant in Professional Services at Symphony Teleca and was an Oracle DBA at CGI. He is certified in Oracle, Postgres, Teradata, AWS, and PRINCE project management.