---
sourceDocument: Zurich IT Operations Management
sourceDocumentLink: https://www.servicenow.com/docs/r/zurich/it-operations-management

 Release :

    - zurich

ft:locale :

    - en-US

ft:publication_title :

    - Zurich IT Operations Management

ft:clusterId :

    - itom

bundleId :

    - itom

workflow :

    - Technology


---

# PostgreSQL

# PostgreSQL discovery {#ariaid-title1}

Release version: Zurich  
Updated September 17, 2026  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 minutes to read
Summarize  
![AI sparkle icon](https://servicenow.com/docs/portal-asset/ai-sparkle-icon) Summarized using AI  
This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.  

## Summary of PostgreSQL discovery

PostgreSQL discovery in ServiceNow identifies running PostgreSQL database instances on Windows and Linux systems, populating the CMDB with detailed instance data.
It requires SSH credentials and root-level database access to retrieve configuration and version information accurately.
This discovery capability helps maintain an up-to-date inventory of PostgreSQL instances, essential for effective database and infrastructure management.
Show full answer Show less  

## Prerequisites and Configuration

* **SSH Credentials:** Create SSH credentials to enable secure access for discovery operations.
* **Root-Level Access:** The user must have root-level access to read the `postgresql.conf` file and run privileged commands necessary for discovery and service mapping.
* **Privileged Commands:** Ensure the user can execute elevated Unix commands required for discovering and mapping PostgreSQL instances.
* **Multiple Instances Differentiation:** To distinguish multiple PostgreSQL instances on a single host, set the `mid.discovery.postgresql.includeportinname` MID Server property. This appends the port number to the instance name (supported on UNIX hosts only), making each instance uniquely identifiable.

## Discovery Process Components

* **Classifiers and Probes:** Discovery uses a classifier that triggers probes such as *PostgreSQL - Configuration* (requires `mustsudo` parameter), *PostgreSQL - Version* , and *PostgreSQL DB*. These collect configuration and version data.
* **Patterns:** The PostgreSQL Instance Horizontal Pattern launches these probes and is key to identifying PostgreSQL instances.
* **Probe Activation:** For new instances, probes are initially inactive on the classifier and must be enabled for effective discovery.

## Data Collected and CMDB Population

When running the PostgreSQL DB pattern, discovery collects and populates these key fields in the `cmdbcidbpostgresqlinstance` table:

* **Name:** Display name of the instance, defaulting to `instance@hostname`. Can be customized to include port number.
* **Data Directory:** Location of the PostgreSQL data directory from the process command line.
* **TCP Port(s):** The listening port of the PostgreSQL instance.
* **Config File:** Path to `postgresql.conf`.
* **Version:** PostgreSQL version from the executable.

## CI Relationships

The discovered PostgreSQL Instance CI is linked to the host server it runs on, either a Windows Server or Linux Server CI, via a **Runs on** relationship, enabling clear mapping of database instances to their infrastructure.  
Discovery can find running instances of PostgreSQL on Windows and Linux systems.

## Credentials and other prerequisites {#r_DiscoverPostgreSQLInstances__section_ix5_ymk_mbb}

Create SSH credentials for PostgreSQL discovery
:   For more information, see [SSH credentials](https://www.servicenow.com/docs/access?context=r_SSHCredentialsForm&version=zurich&pubname=zurich-platform-security&ft:locale=en-US).

Verify root-level access to the database
:   The user must have root-level access to the database to access the `postgresql.conf` file.

Verify privileged commands for for PostgreSQL discovery

:   For a list of privileged commands that you need for Discovery
    and Service Mapping, see [Service Mapping commands requiring a privileged user](https://www.servicenow.com/docs/93PFB67kjaijEsyjs9YzkA "Service Mapping uses commands requiring elevated rights to discover and map Unix-based hosts in your organization. In addition to configuring necessary credentials, configure servers in your organization to allow Service Mapping to run these commands with elevated rights."). This list
    includes commands that require elevated rights to discover and map Unix-based hosts in
    your organization.

Differentiate multiple PostgreSQL instances on the same host by port number
:   Starting with Discovery and Service Mapping Patterns version 1.35.0, you can make multiple PostgreSQL instances on the same host distinguishable by port number by creating the
    mid.discovery.postgresql.include_port_in_name
MID Server property. For more information, see [Include the port number in PostgreSQL instance names](https://www.servicenow.com/docs/L0TjnGYXukLsgcNBIQAtWw "You can make multiple PostgreSQL instances on the same host distinguishable by port number by creating the mid.discovery.postgresql.include_port_in_name MID Server property. This property is supported for UNIX hosts only.").  
Note:  
For information on Probe to Pattern migration see the knowledge article [KB0694477](https://support.servicenow.com/kb_view.do?sysparm_article=KB0694477).

## Classifiers, patterns, and probes {#r_DiscoverPostgreSQLInstances__section_mcx_zmk_mbb}

{#r_DiscoverPostgreSQLInstances__table_fzd_2yv_jz__entry__3}

| Classifier | Trigger probes | Patterns |
|-|-|-|
| PostgreSQL Instance | * Horizontal Pattern: launches patterns * PostgreSQL - Configuration\* (add the must_sudo parameter to this probe) * PostgreSQL - Version\* {#r_DiscoverPostgreSQLInstances__ul_ixv_myv_jz} | PostgreSQL DB |
[ ]

{#r_DiscoverPostgreSQLInstances__table_fzd_2yv_jz}

\*For new instances, these probes are inactive on the classifier. Discovery uses patterns for discovery.

To use patterns, verify that the correct pattern is specified in the horizontal pattern probe on the classifier. See [Add the Horizontal Pattern probe to a classifier](https://www.servicenow.com/docs/GvsovgiXtme9QIW~Wj_n~A#t_AddHorizontalPatternProbe "To use a pattern for the identification and exploration phases of horizontal discovery, add the Horizontal Pattern probe to the relevant classifiers. The classifiers must match the CI types you are trying to discover.") for instructions.

## Data collected

Discovery populates the data in the CMDB when running the PostgreSQL DB pattern.

The following fields gather specified information from the target. If the source is not configured, it brings back default information. For instance, for PostgreSQL Instance@hostname (default name), the source needs to be
modified. If not, all the "PostgreSQL Instance@hostname" will be added in the source for the PostgreSQL Instance \[cmdb_ci_db_postgresql_instance\] table.  
{#r_DiscoverPostgreSQLInstances__table_j5p_11t_3kc__entry__2}

| Field | Description |
|-|-|
| Name \[name\] | The display name of the PostgreSQL instance.\* |
| Data Directory \[data_dir\] | The data directory of the PostgreSQL instance, parsed from the process command line. |
| TCP port(s) \[tcp_port\] | The port on which the PostgreSQL instance is listening, determined from the running process. |
| Config File \[postgres_conf\] | The path to the `postgresql.conf` configuration file. |
| Version \[version\] | The PostgreSQL version, retrieved from the process executable. |
[Table 1. PostgreSQL Instance \[cmdb_ci_db_postgresql_instance\]]

{#r_DiscoverPostgreSQLInstances__table_j5p_11t_3kc}\* To populate the Name field in the format instance-port-tcp_port@hostname instead of the default instance@hostname, create the mid.discovery.postgresql.include_port_in_name MID Server property. For more information, see [Include the port number in PostgreSQL instance names](https://www.servicenow.com/docs/L0TjnGYXukLsgcNBIQAtWw "You can make multiple PostgreSQL instances on the same host distinguishable by port number by creating the mid.discovery.postgresql.include_port_in_name MID Server property. This property is supported for UNIX hosts only.").

## Relationships {#r_DiscoverPostgreSQLInstances__section_gyd_q4k_mbb}

{#r_DiscoverPostgreSQLInstances__table_hvy_q4k_mbb__entry__3}

| CI | Relationship | CI |
|-|-|-|
| PostgreSQL Instance \[cmdb_ci_db_postgresql_instance\] | Runs on::Runs | Windows Server \[cmdb_ci_windows_server\] or Linux Server \[cmdb_ci_linux_server\] |
[ ]

{#r_DiscoverPostgreSQLInstances__table_hvy_q4k_mbb}
* **[Include the port number in PostgreSQL instance names](https://www.servicenow.com/docs/L0TjnGYXukLsgcNBIQAtWw)**   
  You can make multiple PostgreSQL instances on the same host distinguishable by port number by creating the mid.discovery.postgresql.include_port_in_name MID Server property. This property is supported for UNIX hosts only.

