Features of PEM on top of PgAdmin
Tags: postgres, pem, pgadmin, apacheage
Published: 2023-08-15 18:33:51

## Introduction
PEM stands for Postgres Enterprise Manager, which is a comprehensive management tool for PostgreSQL and EDB Postgres Advanced Server1. PEM is built upon pgAdmin, which is the most popular open source administration and development platform for PostgreSQL. 

## PEM Console
PEM Console is a desktop application that provides a graphical user interface for PEM. It is built upon pgAdmin, which means that it inherits all the features of pgAdmin plus the additional features of PEM. PEM Console allows you to access and manage your PostgreSQL or EDB Postgres servers and databases from your local machine, without the need of a web browser or a network connection.

PEM Console is compatible with Windows, Linux, and Mac OS X platforms, You need to register the PEM agent with the PEM server using the `pemworker utility`. Once you have done that, you can launch PEM Console and log in with your username and password. You can then see your servers and databases in the browser panel, and start managing them as you wish.

## PEM REST API

PEM REST API is a web service that allows you to interact with PEM programmatically using HTTP requests and responses. It exposes various endpoints for performing operations such as retrieving information, creating and modifying objects, executing commands, running queries, generating reports, and accessing other tools. You can use PEM REST API to automate tasks, integrate with other applications, or create custom solutions for your PostgreSQL or EDB Postgres servers and databases.

PEM REST API is based on the OpenAPI specification, You can use any programming language or tool that supports HTTP requests to communicate with PEM REST API. 

To use PEM REST API, you need to authenticate yourself with your username and password using the Basic Authentication scheme. You also need to specify the Content-Type header as application/json for all requests that have a body. You can then send HTTP requests to the endpoints of PEM REST API.

## PEM CLI

PEM CLI is a command-line interface that allows you to interact with PEM using commands and arguments. It is a wrapper around the PEM REST API, which means that it uses the same endpoints and parameters as the PEM REST API. PEM CLI allows you to perform tasks such as retrieving information, creating and modifying objects, executing commands, running queries, generating reports, and accessing other tools from your terminal or shell. You can use PEM CLI to automate tasks, integrate with other scripts or programs, or create custom solutions for your PostgreSQL or EDB Postgres servers and databases.

PEM CLI is available for Windows, Linux, and Mac OS X platforms, **you can launch PEM CLI from your terminal or shell by typing `pem` followed by a command name and its arguments**. You can also use `pem --help` or `pem <command> --help` to see the usage and options of each command.

## Features Extended by PEM:
- Monitoring the performance, health, and activity of your PostgreSQL or EDB Postgres servers and databases in real time. You can view metrics such as CPU, memory, disk, network, sessions, locks, transactions, queries, replication, backups, logs, and alerts.

- Allow You to create custom dashboards and charts to visualize the data that matters to you.

- Setting up notifications and actions based on predefined or custom rules and thresholds. You can receive alerts via email, SMS, or SNMP when something goes wrong or needs your attention.

- Help you to optimize the performance of your PostgreSQL or EDB Postgres servers and databases by providing recommendations and tools for tuning various parameters and settings.

- Assist you to protect your data and ensure its availability by offering backup and recovery solutions for your PostgreSQL or EDB Postgres servers and databases. You can schedule full or incremental backups, restore data from backups or point-in-time recovery (PITR), verify backup integrity, encrypt backup files, compress backup size, and manage backup storage.

- Allow you to analyze the performance of your SQL queries and statements by providing tools for profiling and debugging. You can capture and view the execution plans of your queries and identify slow or problematic queries.

- Enable you to manage your team members and their access to your PostgreSQL or EDB Postgres servers and databases by providing features for role-based security and auditing.

## Apache AGE
Please Visit [Apache AGE](https://age.apache.org) which is A Graph Extension to very popular Database PostgreSQL, and [visit AGE's Github repository](https://github.com/apache/age) if you want to contribute.

## Conclusion

In this post, I have shown you some of the extra features of PEM that make it stand out from other enterprise managers. These features are:

- PEM Console: A desktop application that provides a graphical user interface for PEM.
- PEM REST API: A web service that allows you to interact with PEM programmatically using HTTP requests and responses.
- PEM CLI: A command-line interface that allows you to interact with PEM using commands and arguments.

These features allow you to access and manage your PostgreSQL or EDB Postgres servers and databases from different platforms and interfaces according to your preference and convenience. 
They also enable you to automate tasks, integrate with other applications, or create custom solutions for your PostgreSQL or EDB Postgres servers and databases.
Some 
PEM also extends the functionality of pgAdmin by providing features such as monitoring, alerting, tuning, backup and recovery, SQL profiling, team management, and auditing

I hope you have found this post informative and helpful. If you have any questions or feedback, please feel free to leave a comment below. Thank you for reading!