Git Product home page Git Product logo

pgbouncer-operator's Introduction

Charmed PgBouncer Operator

Charmhub Release Tests

Description

The PgBouncer Operator deploys and operates the PgBouncer lightweight connection pooler for PostgreSQL. This charm is only compatible with the data platform postgresql-operator charm.

Usage

To deploy pgbouncer in front of three units of postgres:

juju deploy pgbouncer --channel=edge
juju deploy postgresql --channel=edge -n 3
juju add-relation pgbouncer:backend-database postgresql:database

To deploy and relate your application to the above cluster, using the updated data platform relation (recommended):

juju deploy my-app
juju add-relation pgbouncer:database my-app:pg-backend

To deploy and relate an application to the above cluster, using the legacy pgsql relation (not recommended - this will be deprecated in future):

juju deploy my-app
juju add-relation pgbouncer:db my-app:db

Or, if my-app needs admin permissions:

juju add-relation pgbouncer:db-admin my-app:db

Configuration Options

Set these using the command juju config <option>=<value>.

  • pool_mode:

    • default: session
    • Specifies when a server connection can be reused by other clients.
    • Can be one of the following values:
      • session
        • Server is released back to pool after client disconnects.
      • transaction
        • Server is released back to pool after transaction finishes.
      • statement
        • Server is released back to pool after query finishes. Transactions spanning multiple statements are disallowed in this mode.
  • max_db_connections:

    • default: 100
    • Do not allow more than this many server connections per database (regardless of user). This considers the PgBouncer database that the client has connected to, not the PostgreSQL database of the outgoing connection.
    • Note that when you hit the limit, closing a client connection to one pool will not immediately allow a server connection to be established for another pool, because the server connection for the first pool is still open. Once the server connection closes (due to idle timeout), a new server connection will immediately be opened for the waiting pool.
    • 0 = unlimited

From these values and the current deployment, the following pgbouncer.ini config values are calculated proportional to max_db_connections:

  • effective_db_connections = max_db_connections / number of pgbouncer instances running in a unit
    • Number of pgbouncer instances is equal to number of cpu cores on unit.
  • default_pool_size = effective_db_connections / 2
    • A larger default_pool_size means each new unit will have plenty of spare space when it comes online, allowing the cluster to be more stable when more traffic is needed.
  • min_pool_size = effective_db_connections / 4
    • Larger min_pool_size and reserve_pool_size (relative to pgbouncer defaults) means that if a unit goes down for whatever reason, the other units in the cluster should be able to easily handle its workload.
  • reserve_pool_size = effective_db_connections / 4

If max_db_connections is set to 0, the derivatives are set as below, based on pgbouncer defaults. It's advised to avoid this and instead set max_db_connections to an amount you're expecting to use, as it will set the following values to better suit your use case.

  • default_pool_size = 20
  • min_pool_size = 10
  • reserve_pool_size = 10

The following config values are set as constants in the charm:

  • max_client_conn = 10000
  • ignore_startup_parameters = extra_float_digits

Relations

  • database
    • Provides a relation to client applications.
    • Importantly, this relation doesn't handle scaling the same way others do. All PgBouncer nodes are read/writes, and they expose the read/write nodes of the backend database through the database name f"{dbname}_readonly".
    • However, the leader node is the only node in the "endpoints" field, and the follower nodes are stored in the "read-only-endpoints" field of the relation databag. This is to preserve interoperability with the postgres charm.
  • backend-database
    • Relates to backend postgresql-operator database charm. Without a backend relation, this charm will enter BlockedStatus - if there's no Postgres backend, this charm has no purpose.

The expected data presented in a relation interface is provided in the docstring at the top of the source files for each relation.

Legacy Relations

The following relations are legacy, and will be deprecated in a future release in favour of relations using the data platform provides library. For future compatibility, build relations with the data platform requires library.

  • db
    • Provides read-write access to backend database
  • db-admin
    • Provides read-write access to backend database
    • The user created by the relation (credentials provided in the relation databag) has admin permissions

License

The Charmed PgBouncer Operator is free software, distributed under the Apache Software License, version 2.0. See LICENSE for more information.

Security

Security issues in the Charmed PgBouncer Operator can be reported through LaunchPad. Please do not file GitHub issues about security issues.

Contributing

Please see the Juju SDK docs for guidelines on enhancements to this charm following best practice guidelines, and CONTRIBUTING.md for developer guidance. For more information, get in touch on the Charmhub Mattermost server.

pgbouncer-operator's People

Contributors

a-velasco avatar carlcsaposs-canonical avatar dragomirp avatar juditnovak avatar lucasgameiroborges avatar marceloneppel avatar paulomach avatar renovate[bot] avatar taurus-forever avatar wrfitch avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pgbouncer-operator's Issues

Read-only endpoints problem

Hi! I've discovered some weird behavior with read-only-endpoints.

Steps to reproduce

Model:

image
  1. Pgbouncer always includes read-only channel in its config upon different database name (main database name + _readonly suffix) if there are postgresql replicas. (example below is on data-integrator/1)

    [databases]
    
    asd = host=10.88.216.205 dbname=asd port=5432 auth_user=pgbouncer_auth_relation_7
    
    asd_readonly = host=10.88.216.56,10.88.216.129 dbname=asd port=5432 auth_user=pgbouncer_auth_relation_7
    
  2. But pgbouncer does not notify client application about read-only-endpoints if it's not exposed (external-node-connectivity).

    image
  3. And even when it exposed, it notifies client application with read-only-endpoints pointing to each non-leader pgbouncer unit IP.

    image

Expected behavior

Pgbouncer always must provide application with both RW and read-only channels if there are postgresql replicas active. And, i assume, there is need to move read-only channel to different endpoint, because postgresql_client/v0 assumes that database name will be the same and only endpoint is different.

Actual behavior

When not exposed, pgbouncer will ignore read-only channel, so that application just can't use postgresql replicas.
And when exposed, app will put all the non-leader pgbouncer unit IPs into read-only-endpoints (but it has nothing to do with read-only channels to postgresql replicas, it just another pgbouncer units pointing to the same primary).

Versions

Operating system: Ubuntu 23.10

Juju CLI: 3.4.2-genericlinux-amd64

Juju agent: 3.4.0

postgresql charm revision: edge (rev. 393)
pgbouncer charm revision: 1/edge (rev. 142)

LXD: 5.21.1 LTS

Unix socket problem

Hi!
Previously, I have been told by Canonical team, that pgbouncer-operator is following mysql-router concept with Unix socket propagation to the client application. But i did research and found that it doesn't work that way: instead, it uses TCP port for both exposed and not exposed relations (it is code snippet, but everything were double-checked in real tests):

        exposed = bool(
            self.database_provides.fetch_relation_field(relation.id, "external-node-connectivity")
        )
        if exposed:
            rw_endpoint = f"{self.charm.leader_ip}:{self.charm.config['listen_port']}"
        else:
            rw_endpoint = f"localhost:{self.charm.config['listen_port']}"

link to the relations code

Mysql-router, on the other hand, really propagates single Unix socket. Issue lays in that pgbouncer-operator was made as subordinate charm only with assumption, that it will work with similar concept as mysql-router.

Also, there is no mentions of Unix socket in application and relation specification documentations - i think it should be.

And about pgbouncer and it's multithreading

Pgbouncer creates N processes (for each CPU core / thread), and each process has it's own TCP port and Unix socket. In the TCP case, all the ports are combined by so_reuseport, which also includes load balancing. But for the Unix socket, there is no such feature to combine them all, so basically there is N different Unix sockets, and in case these all sockets will be reported to the client application, there wouldn't be any automatic load balancing (and therefore multithreading) - it will be only on the client application responsibility.

ha-cluster-vip for latest/edge

Hello,
I'm trying to build juju PostgreSQL cluster with 3 nodes and PGBouncer+Data-integrator available via single VIP address.

I found that data-integrator supports only [email protected] versions:

data-integrator available releases are:
  channel "latest/stable": available bases are: [email protected]
  channel "latest/candidate": available bases are: [email protected]
  channel "latest/beta": available bases are: [email protected]
  channel "latest/edge": available bases are: [email protected]

This OS version (22.04) supports only 1/* versions of PGBouncer, but this versions does not supports ha-cluster-vip/dns parameters on configuration.

I would like to know, is there any way to build such cluster with VIP, or it is impossible and we have to wait [email protected] support for pgbouncer latest/stable?

(here https://charmhub.io/pgbouncer/integrations?channel=1/edge integration with HACluster announced, but looks like does not support)

Steps to reproduce

juju integrate hacluster pgbouncer

Expected behavior

integrated successfully

Actual behavior

ERROR ambiguous relation: "hacluster pgbouncer" could refer to "hacluster:juju-info pgbouncer:juju-info"; "hacluster:peer-availability pgbouncer:juju-info"; "pgbouncer:juju-info hacluster:juju-info"

Versions

Operating system: Ubuntu 22.04.4 LTS

Juju CLI: 3.4.2-genericlinux-amd64

ubuntu@jujunode1-tst:~$ juju status
Model            Controller          Cloud/Region        Version  SLA          Timestamp
postgresql-maas  lxd-remote-default  lxd-remote/default  3.4.2    unsupported  09:52:39Z

App              Version  Status   Scale  Charm            Channel        Rev  Exposed  Message
data-integrator           active       3  data-integrator  latest/stable   19  no
hacluster                 unknown      0  hacluster        2.4/stable     131  no
pgbouncer        1.21.0   active       3  pgbouncer        1/edge         142  yes
postgresql       14.11    active       3  postgresql       14/edge        393  yes

Unit                Workload  Agent  Machine  Public address  Ports     Message
data-integrator/0   active    idle   3        240.9.0.161
  pgbouncer/0       active    idle            240.9.0.161     6432/tcp
data-integrator/1*  active    idle   4        240.81.0.43
  pgbouncer/3*      active    idle            240.81.0.43     6432/tcp
data-integrator/2   active    idle   5        240.7.0.43
  pgbouncer/2       active    idle            240.7.0.43      6432/tcp
postgresql/0*       active    idle   0        240.81.0.166    5432/tcp
postgresql/1        active    idle   1        240.9.0.212     5432/tcp
postgresql/2        active    idle   2        240.7.0.203     5432/tcp  Primary

Machine  State    Address       Inst id        Base          AZ  Message
0        started  240.81.0.166  juju-f7af5d-0  [email protected]      Running
1        started  240.9.0.212   juju-f7af5d-1  [email protected]      Running
2        started  240.7.0.203   juju-f7af5d-2  [email protected]      Running
3        started  240.9.0.161   juju-f7af5d-3  [email protected]      Running
4        started  240.81.0.43   juju-f7af5d-4  [email protected]      Running
5        started  240.7.0.43    juju-f7af5d-5  [email protected]      Running

postgresql charm revision: 393
pgbouncer charm revision: 142

LXD: 5.21.1 LTS

PgBouncer service pgbouncer-pgbouncer@0 not running

Steps to reproduce

  1. deploy single PostgreSQL 14/edge rev 393 as Primary
juju deploy postgresql --channel=14/edge --revision=393 [email protected]
  1. deploy data-integrator
juju deploy data-integrator --channel=latest/stable [email protected] --config database-name=maasdb,extra-user-roles=svc_pgsql_maas --to 0
  1. deploy pgbouncer
juju deploy pgbouncer --channel 1/edge [email protected]
  1. integrate all with each other
juju integrate pgbouncer data-integrator
juju integrate postgresql pgbouncer

Expected behavior

PgBouncer service is running and working

Actual behavior

PGBouncer status: PgBouncer service pgbouncer-pgbouncer@0 not running

Versions

Operating system: Ubuntu 22.04.4 LTS

Juju CLI: 3.4.2-genericlinux-amd64

Juju agent:

Every 2.0s: juju status --relations --color                                                                                                                                                    ubuntu@jujunode1-tst:~$ juju status --relations
Model                          Controller          Cloud/Region        Version  SLA          Timestamp
postgresql-14edge-rev393-test  lxd-remote-default  lxd-remote/default  3.4.2    unsupported  15:03:09Z

App              Version  Status   Scale  Charm            Channel        Rev  Exposed  Message
data-integrator           active       1  data-integrator  latest/stable   19  no
pgbouncer        1.21.0   blocked      1  pgbouncer        1/edge         142  no       PgBouncer service pgbouncer-pgbouncer@0 not running
postgresql       14.11    active       1  postgresql       14/edge        393  no       Primary

Unit                Workload  Agent  Machine  Public address  Ports     Message
data-integrator/0*  active    idle   0        240.81.0.101
  pgbouncer/0*      blocked   idle            240.81.0.101    6432/tcp  PgBouncer service pgbouncer-pgbouncer@0 not running
postgresql/0*       active    idle   0        240.81.0.101    5432/tcp  Primary

Machine  State    Address       Inst id        Base          AZ  Message
0        started  240.81.0.101  juju-f2963e-0  [email protected]      Running

Integration provider                   Requirer                               Interface              Type         Message
data-integrator:data-integrator-peers  data-integrator:data-integrator-peers  data-integrator-peers  peer
pgbouncer:database                     data-integrator:postgresql             postgresql_client      subordinate
pgbouncer:pgb-peers                    pgbouncer:pgb-peers                    pgb_peers              peer
pgbouncer:upgrade                      pgbouncer:upgrade                      upgrade                peer
postgresql:database                    pgbouncer:backend-database             postgresql_client      regular
postgresql:database-peers              postgresql:database-peers              postgresql_peers       peer
postgresql:restart                     postgresql:restart                     rolling_op             peer
postgresql:upgrade                     postgresql:upgrade                     upgrade                peer

LXD: 5.20

Log output

Juju debug log:

juju debug-log --include pgbouncer/0 --limit 1000
unit-pgbouncer-0: 14:54:02 INFO juju.worker.uniter unit "pgbouncer/0" started
unit-pgbouncer-0: 14:54:03 INFO juju.worker.uniter hooks are retried true
unit-pgbouncer-0: 14:54:34 INFO juju Starting unit workers for "pgbouncer/0"
unit-pgbouncer-0: 14:54:34 INFO juju.worker.apicaller [a42e70] "unit-pgbouncer-0" successfully connected to "240.9.0.100:17070"
unit-pgbouncer-0: 14:54:38 INFO juju.worker.apicaller [a42e70] "unit-pgbouncer-0" successfully connected to "240.9.0.100:17070"
unit-pgbouncer-0: 14:54:43 INFO juju.worker.migrationminion migration migration phase is now: NONE
unit-pgbouncer-0: 14:54:43 INFO juju.worker.logger logger worker started
unit-pgbouncer-0: 14:54:47 INFO juju.worker.upgrader no waiter, upgrader is done
unit-pgbouncer-0: 14:55:11 INFO juju.worker.uniter unit "pgbouncer/0" started
unit-pgbouncer-0: 14:55:12 INFO juju.worker.uniter hooks are retried true
juju show-status-log pgbouncer/0
Time                   Type       Status       Message
10 Apr 2024 14:39:50Z  juju-unit  executing    running pgb-peers-relation-changed hook
10 Apr 2024 14:39:54Z  workload   maintenance  Updating database relation connection information
10 Apr 2024 14:39:55Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@0 not running
10 Apr 2024 14:39:55Z  workload   maintenance  updating PgBouncer users
10 Apr 2024 14:39:56Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@0 not running
10 Apr 2024 14:39:58Z  workload   maintenance  updating PgBouncer config
10 Apr 2024 14:39:58Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@0 not running
10 Apr 2024 14:41:02Z  juju-unit  error        hook failed: "pgb-peers-relation-changed"
10 Apr 2024 14:41:09Z  juju-unit  executing    running pgb-peers-relation-changed hook
10 Apr 2024 14:41:13Z  workload   maintenance  Updating database relation connection information
10 Apr 2024 14:41:14Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@0 not running
10 Apr 2024 14:41:15Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@1 not running
10 Apr 2024 14:41:16Z  workload   maintenance  updating PgBouncer users
10 Apr 2024 14:41:16Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@1 not running
10 Apr 2024 14:41:20Z  workload   maintenance  updating PgBouncer config
10 Apr 2024 14:41:20Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@1 not running
10 Apr 2024 14:41:21Z  workload   maintenance  Reloading Pgbouncer
10 Apr 2024 14:41:21Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@1 not running
10 Apr 2024 14:41:22Z  workload   blocked      PgBouncer service pgbouncer-pgbouncer@0 not running
10 Apr 2024 14:55:13Z  juju-unit  idle

Additional context

Cannot add relation "data-integrator:postgresql pgbouncer:database": establishing a new relation for data-integrator:postgresql would exceed its maximum relation limit of 1

Steps to reproduce

Following on the tutorial here: https://discourse.charmhub.io/t/pgbouncer-tutorial-deploy-pgbouncer/12290/1 I can't relate the data-integrator with the pgboucher charm:

juju integrate data-integrator pgbouncer --debug --verbose
09:40:55 INFO  juju.cmd supercommand.go:56 running juju [3.4.2 a80becbb4da5985fa53c63824a4bd809e9d03954 gc go1.21.8]
09:40:55 DEBUG juju.cmd supercommand.go:57   args: []string{"/snap/juju/26968/bin/juju", "integrate", "data-integrator", "pgbouncer", "--debug", "--verbose"}
09:40:55 INFO  juju.juju api.go:86 connecting to API addresses: [192.168.2.32:17070 10.100.2.92:17070 253.2.92.1:17070]
09:40:55 DEBUG juju.api apiclient.go:1172 successfully dialed "wss://192.168.2.32:17070/model/0f46e0dd-74e1-4e91-8943-860640f2e2d1/api"
09:40:55 INFO  juju.api apiclient.go:707 connection established to "wss://192.168.2.32:17070/model/0f46e0dd-74e1-4e91-8943-860640f2e2d1/api"
09:40:55 DEBUG juju.api monitor.go:35 RPC connection died
ERROR cannot add relation "data-integrator:postgresql pgbouncer:database": establishing a new relation for data-integrator:postgresql would exceed its maximum relation limit of 1 (quota limit exceeded)
09:40:55 DEBUG cmd supercommand.go:549 error stack: 
cannot add relation "data-integrator:postgresql pgbouncer:database": establishing a new relation for data-integrator:postgresql would exceed its maximum relation limit of 1 (quota limit exceeded)
github.com/juju/juju/rpc.(*Conn).Call:178: 

Expected behavior

Be able to integrate the charms

Actual behavior

Integration fails

Versions

Model    Controller              Cloud/Region            Version  SLA          Timestamp
default  openstacklab-regionone  openstacklab/RegionOne  3.4.0    unsupported  09:41:48+03:00

App              Version  Status   Scale  Charm            Channel    Rev  Exposed  Message
data-integrator           active       1  data-integrator  stable      19  no       
pgbouncer                 unknown      0  pgbouncer        1/stable    88  no       
postgresql       14.10    active       3  postgresql       14/stable  363  no       

Unit                Workload  Agent  Machine  Public address  Ports     Message
data-integrator/0*  active    idle   5        10.100.2.109              
postgresql/0        active    idle   2        10.100.2.255    5432/tcp  
postgresql/1        active    idle   3        10.100.3.84     5432/tcp  
postgresql/2*       active    idle   4        10.100.1.186    5432/tcp  Primary

Machine  State    Address       Inst id                               Base          AZ    Message
2        started  10.100.2.255  5166fd77-b663-47c4-aad3-961773d26642  [email protected]  nova  ACTIVE
3        started  10.100.3.84   c0e19107-7eb0-4785-9793-7724f80583ab  [email protected]  nova  ACTIVE
4        started  10.100.1.186  5754ca24-3a65-4882-a36d-903b29a4abea  [email protected]  nova  ACTIVE
5        started  10.100.2.109  04bea12f-d1d7-4b45-a2e8-c000264e0c95  [email protected]  nova  ACTIVE

Integration provider                   Requirer                               Interface              Type     Message
data-integrator:data-integrator-peers  data-integrator:data-integrator-peers  data-integrator-peers  peer     
pgbouncer:pgb-peers                    pgbouncer:pgb-peers                    pgb_peers              peer     joining  
pgbouncer:upgrade                      pgbouncer:upgrade                      upgrade                peer     joining  
postgresql:database                    data-integrator:postgresql             postgresql_client      regular  
postgresql:database                    pgbouncer:backend-database             postgresql_client      regular  
postgresql:database-peers              postgresql:database-peers              postgresql_peers       peer     
postgresql:restart                     postgresql:restart                     rolling_op             peer     
postgresql:upgrade                     postgresql:upgrade                     upgrade                peer     

Operating system: jammy
Juju CLI: 3.4.2-genericlinux-amd64
Juju agent: 3.4.0
postgresql charm revision: 14/stable 363
pgbouncer charm revision: 1/stable 88

LXD: N/A, runs on openstack

Log output

Juju debug log: N/A; client error

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/ci.yaml
  • canonical/data-platform-workflows v13.2.0
  • actions/checkout v4
  • codecov/codecov-action v3
  • canonical/data-platform-workflows v13.2.0
  • canonical/data-platform-workflows v13.2.0
.github/workflows/lib-check.yaml
  • actions/checkout v4
  • canonical/charming-actions 2.4.0
.github/workflows/release.yaml
  • canonical/data-platform-workflows v13.2.0
  • canonical/data-platform-workflows v13.2.0
.github/workflows/sync_issue_to_jira.yaml
  • canonical/data-platform-workflows v13.2.0
poetry
pyproject.toml
  • ops ^2.12.0
  • pgconnstr ^1.0.1
  • tenacity ^8.2.3
  • cosl ^0.0.11
  • pydantic ^1.10.15
  • poetry-core ^1.9.0
  • cryptography ^42.0.5
  • jsonschema ^4.21.1
  • psycopg2 ^2.9.9
  • psycopg ^3.1.18
  • ops >=2.0.0
  • poetry-core *
  • pydantic ^1.10, <2
  • cosl *
  • cryptography *
  • jsonschema *
  • ruff ^0.4.2
  • codespell ^2.2.6
  • coverage ^7.5.0
  • pytest ^8.2.0
  • pytest-asyncio *
  • jinja2 ^3.1.3
  • parameterized ^0.9.0
  • pytest ^8.2.0
  • pytest-github-secrets v13.2.0
  • pytest-operator ^0.35.0
  • pytest-operator-cache v13.2.0
  • pytest-operator-groups v13.2.0
  • juju <=3.4.0.0
  • tenacity *
  • mailmanclient ^3.3.5
  • psycopg2-binary ^2.9.9
  • allure-pytest ^2.13.5
regex
.github/workflows/ci.yaml
  • Juju 2 2.9.49
.github/workflows/ci.yaml
  • Juju 3 3.1.8
.github/workflows/ci.yaml
  • libjuju 2 2.9.49.0

  • Check this box to trigger a request for Renovate to run again on this repository

COS Dashboard "Total Query Time" is empty

Steps to reproduce

Deploy standart tutorial with COS and start continious writes on test-app.

Expected behavior

All dashboards have data.

Actual behavior

image
Missing data on dashboard for "Total Query Time" and "Database reserved pool size".

Hovewer the exporter provides them:

> juju ssh pgbouncer/0
ubuntu@juju-801057-2:~$ curl 127.0.0.1:9127/metrics | grep pgbouncer_stats_received_bytes_total
  pgbouncer_stats_received_bytes_total{database="pgbouncer"} 0
0 pgbouncer_stats_received_bytes_total{database="postgresql_test_app_first_database"} 1.789629e+06

Versions

App                  Version  Status  Scale  Charm                Channel        Rev  Exposed  Message
pgbouncer            1.21.0   active      1  pgbouncer            1/stable        88  no       
pgbouncer-cos-agent           active      1  grafana-agent        latest/stable   65  no       
postgresql           14.10    active      1  postgresql           14/stable      363  no       Primary
postgresql-test-app           active      1  postgresql-test-app  latest/stable  119  no       received database credentials of the first database

Unit                      Workload  Agent  Machine  Public address  Ports     Message
postgresql-test-app/0*    active    idle   2        10.184.219.161            received database credentials of the first database
  pgbouncer-cos-agent/1*  active    idle            10.184.219.161            
  pgbouncer/1*            active    idle            10.184.219.161            
postgresql/0*             active    idle   0        10.184.219.86   5432/tcp  Primary

Log output

No related information in logs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.