You can register databases and geodatabases in PostgreSQL to collect metrics and attribute information.
Prerequisites for monitoring
The following prerequisites are necessary for monitoring databases and geodatabases in PostgreSQL:
- ArcGIS Monitor Agent must be installed on a machine that has access to the PostgreSQL machine and must be registered with ArcGIS Monitor Server.
When access to the PostgreSQL machine is available, it is recommended that you install Monitor Agent on that machine to collect operating system metrics.
- The PostgreSQL versions listed below are supported for monitoring. The specific versions listed are the minimum minor versions certified for each supported major release of PostgreSQL. Newer minor versions are supported but are not certified unless otherwise stated. The PostgreSQL version updates must also be supported by the PostgreSQL Global Development Group.
- PostgreSQL 17.2 (64-bit)
- PostgreSQL 16.8 (64 bit)
- PostgreSQL 15.12 (64 bit)
- PostgreSQL 14.17 (64 bit)
Note:
Client drivers are included with the Monitor software.
- When Monitor Agent is not installed on the PostgreSQL machine, the firewall must allow communication between PostgreSQL and the ArcGIS Monitor machine on port 5432.
Note:
If PostgreSQL is configured to run on a different port, communication must be allowed on that port instead.
- The role (user account) that you use to register the database must be assigned the PostgreSQL LOGIN attribute.
Caution:
It is recommended that you grant only read permissions to the role (user account) to prevent custom database queries from altering the database.
Register databases for monitoring
You must be assigned the Administrator or Manager role to register components.
To register databases and geodatabases in PostgreSQL, complete the following steps:
- Access ArcGIS Monitor if necessary.
The Home page appears.
- Click Monitoring.
The Monitoring page appears with registered components listed alphabetically by name.
- Click Register component.
The Register component wizard appears.
Note:
If you don't have sufficient privileges, Register component is not available.
- Choose the Monitor Agent machine where the component is installed, and click Next.
If Monitor Agent cannot be installed on the machine, choose a Monitor Agent machine that has access to the database instead.
The Component type page appears.
- Under Database, choose PostgreSQL, and click Next.
The Component details page appears.
- Provide a name for the component in the Component name text box.
- Optionally, provide a description for the component in the Description text box.
- Optionally, click Apply Labels
and choose the labels that you want to apply to the component. Tip:
Provide the name of a label in the Enter label name text box to search for a specific label. If the label doesn't exist, click Create new label to add the label and apply it to the component.
- Click Next.
The Connection page appears.
- Provide the fully qualified domain name and port number or IP address and port number of the database instance that you want to register in the Address text box.
The default port number for PostgreSQL is 5432.
- Provide the name of the database that you want to register in the Database text box.
- Provide the credentials for the database in the Username and Password text boxes.
- If the database requires encrypted connections, check the Require encryption check box.
- Click Register component.
The component is added to the list of monitored components on the Monitoring page.
Once a component is registered, you can configure alert rules and add the component to collections.
Note:
Other component types, such as the enterprise GIS implementation's underlying hardware infrastructure and ArcGIS software, must be registered individually to enable monitoring.
Observers
The following table describes the observers that collect attribute and metric data:
| Observer name | Description |
|---|---|
Database Query | This optional, user-configured observer runs an SQL query on the registered PostgreSQL database and returns a single numeric value. |
Inventory - Database PostgreSQL | This observer scans for changes and manages attribute data and component relationships across the registered PostgreSQL database. It also detects enterprise geodatabase schemas to enable related metrics. The default interval for this observer is 10 minutes; however, you can configure it to run at longer intervals since changes to the database configuration are typically infrequent. |
Metrics - Database PostgreSQL | This observer collects metric data across the registered PostgreSQL database. If no enterprise geodatabase schema is detected by the Inventory observer, no geodatabase-related metrics are collected. The default interval for this observer is 1 minute; however, you can configure it to run at longer intervals since significant database variations are typically infrequent. |
Collected attributes
The subsections below describe the attributes that are collected for registered databases and geodatabases in PostgreSQL.
Database attributes
The following table lists the attributes that are collected for databases in PostgreSQL:
| Attribute name | Description | Data type |
|---|---|---|
Connections max | The maximum number of connections | Integer |
Memory total | The total amount of physical memory for the database instance | Float |
Started at | The last start time of the database instance | Datetime |
System mode | Specifies the state of the system as it is configured in PostgreSQL:
| String |
UTC offset | The UTC time zone offset for the database instance | Integer |
Version | The software version of the PostgreSQL instance | String |
Geodatabase attributes
The following table lists the attribute that is collected for geodatabases in PostgreSQL:
| Attribute name | Description | Data type |
|---|---|---|
Geodatabase version | The version of the enterprise geodatabase | String |
Geodatabase dataset attributes
The following table lists the attributes that are collected for geodatabase datasets:
| Attribute name | Description | Data type |
|---|---|---|
Geometry type | Specifies the geometry type of the dataset:
| String |
Is archived | Specifies whether the dataset is archived:
| String |
Versioned type | Specifies the dataset's versioned type:
| String |
Collected metrics
The subsections below describe the metrics that are collected for registered databases and geodatabases in PostgreSQL.
Database metrics
The following table lists the metrics that are collected for databases in PostgreSQL:
| Metric name | Description | Data type | Unit |
|---|---|---|---|
Cache Hit | The percentage of requests served from the cache, as opposed to requests served from disk | Float | Percent |
Connectivity | The agent's ability to successfully connect to the component | Float | Percent |
Database Connections | The total number of database connections in use | Float | Total |
Database Connections Utilized | The proportion of database connections in use | Float | Percent |
Open Cursors | The number of open cursors in the database | Float | Total |
Storage Used | The total amount of storage used | Float | Total |
Geodatabase metrics
The following table lists the metrics that are collected for geodatabases in PostgreSQL:
| Metric name | Description | Data type | Unit |
|---|---|---|---|
Datasets | The total number of datasets | Float | Total |
GDB Branch Version Conflicts | The total number of branch version conflicts in the geodatabase | Float | Total |
GDB Branch Version Locks | The total number of locks on branch versions in the geodatabase | Float | Total |
GDB Branch Versions | The total number of branch versions in the geodatabase | Float | Total |
GDB Connections | The total number of active connections to the geodatabase | Float | Total |
GDB Connections - editors | The total number of active editor connections to the geodatabase | Float | Total |
GDB Connections - viewers | The total number of active viewer connections to the geodatabase | Float | Total |
GDB Default Version Depth | The depth in the state tree of the default version | Float | Total |
GDB Shared Locks | The total number of shared table locks in the geodatabase | Float | Total |
GDB State Lineages | The total number of edits in the geodatabase for datasets that use traditional versioning | Float | Total |
GDB Version States | The total number of states in the geodatabase for datasets that use traditional versioning | Float | Total |
GDB Versions | The total number of versions in the geodatabase that use traditional versioning | Float | Total |
Rows Total | The total number of rows | Float | Total |
Storage Used | The total amount of storage used | Float | Total |
Geodatabase dataset metrics
The following table lists the metrics that are collected for geodatabase datasets in PostgreSQL:
| Metric name | Description | Data type | Unit |
|---|---|---|---|
Rows Total | The total number of rows | Float | Total |
Storage Used | The total amount of storage used | Float | Total |
Note:
To minimize performance impacts on monitored geodatabases, Monitor uses the database's statistics capability to collect dataset metrics. The accuracy of the metrics may diverge as statistics become obsolete and need to be recalculated.
Optional metrics
The following table lists the optional metric that can be collected by configuring the Database Query observer:
| Metric name | Description | Data type | Unit |
|---|---|---|---|
Database Query - <observer_name> | The response of the SQL query | Float | Total |
Enable optional metrics
To enable optional metrics for PostgreSQL databases and geodatabases, complete the following steps:
- Access ArcGIS Monitor if necessary.
The Home page appears.
- Click Monitoring.
The Monitoring page appears with registered components listed alphabetically by component name.
- Click the name of the PostgreSQL database or geodatabase component for which you want to enable optional metrics.
The database's Overview page appears with its details and an overview of its metrics.
Tip:
Type a keyword in the Search by component name or address text box to search for specific components and subcomponents.
- Click the Observers tab.
The Observers page appears.
- Click Add observer.
The Add observer dialog box appears.
- Choose Database Query, and click Next.
The Observer details page appears.
- Provide a name for the observer in the Observer name text box.
The observer name is used to identify the observer, and all metrics associated with the observer are prefixed with the observer name. For example, if the observer name is Health Check, the name of its metrics would be <MetricName> - health_check.
- Optionally, provide a description for the observer in the Description text box.
- Click Next.
The Configuration page appears.
- Click the Interval drop-down arrow, and choose an interval.
- Provide an SQL query that returns a single numeric value in the Query text box.
The following is an example query that returns the number of days since the database was last backed up:
SELECT (CURRENT_DATE::date - last_archived_time::date) AS last_backup_days FROM pg_stat_archiver;Note:
The observer inherits the credentials of the associated PostgreSQL database or geodatabase component.
- Click Test to validate the SQL query.
The result of the test appears in the Results section.
- Click Add observer.
The observer is added to the list of observers on the Observers page.
Note:
The Add observer button is only available when the SQL query test result is successful.
Optional metrics are collected and automatically appear in Monitor according to the observer's configured interval.
Default alert rules
The following table lists the default alert rules that are configured for databases in PostgreSQL:
| Metric name | Aggregation | Operator | Info threshold | Warning threshold | Critical threshold | Samples |
|---|---|---|---|---|---|---|
Cache Hit | Average | Is less than | 90 | — | — | 3 |
Connectivity | Average | Is less than | — | — | 100 | 2 |
Note:
The default alert rules in the table above are configured for components when Monitor is first deployed. If your Monitor administrator configured default alert rules for the Monitor deployment, the values for the rules above may vary.
Component relationships
The subsections below describe the relationships that are formed with registered PostgreSQL database components.
Geodatabase datasets
The inventory observer for PostgreSQL databases detects only datasets in a geodatabase and forms individual relationships between the PostgreSQL database component and its datasets. When registered with a monitored ArcGIS Server site, the ArcGIS Server inventory observer discovers and manages relationships between its services and the database's datasets.
Note:
If the Data Store component is unregistered in Monitor, its datasets are also unregistered.
Host
A host's inventory observer detects instances of PostgreSQL running on the host machine, and a relationship is formed between the host component and the registered PostgreSQL database component.
Note:
Host relationships for remotely monitored databases cannot be formed as the host is unavailable for monitoring.
ArcGIS Server
When a PostgreSQL database is registered with a monitored ArcGIS Server site, the ArcGIS Server inventory observer discovers and manages relationships between the ArcGIS Server site and the PostgreSQL database component.
Note:
If the PostgreSQL database component is unregistered in Monitor, the relationship between the ArcGIS Server site and PostgreSQL database component is removed.