Обсуждение: Re: Capturing both IP address and hostname in the log

Поиск
Список
Период
Сортировка

Re: Capturing both IP address and hostname in the log

От
Tom Lane
Дата:
[ moving to -hackers ]

Adrian Klaver <adrian.klaver@aklaver.com> writes:
> On 4/10/25 05:22, Tefft, Michael J wrote:
>> We have set log_hostname ON and we get hostname reported – but we do not 
>> get IP address. We would like to capture both.
>> Is there a way to capture both IP address and hostname in the log 
>> messages? Or must we choose “one or the ootehr”?

> I see the same thing. It seems either or.

Melanie recently committed a patch (9219093ca) that purports to
generalize our log_connections logging ability:

    Convert the boolean log_connections GUC into a list GUC comprised of the
    connection aspects to log.
    
    This gives users more control over the volume and kind of connection
    logging.
    
    The current log_connections options are 'receipt', 'authentication', and
    'authorization'. The empty string disables all connection logging. 'all'
    enables all available connection logging.

I wonder if it'd be reasonable to remove the separate log_hostname GUC
and fold it into this infrastructure, and while doing so make it
possible to log either or both of the client IP address and hostname.
(For that matter, I think there is interest in being able to capture
the server IP address too, cf 3516ea768.  You might wish to log the
IP address only once, not in every log line.)

            regards, tom lane



Re: Capturing both IP address and hostname in the log

От
"David G. Johnston"
Дата:
On Thu, Apr 10, 2025 at 9:00 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
[ moving to -hackers ]

Adrian Klaver <adrian.klaver@aklaver.com> writes:
> On 4/10/25 05:22, Tefft, Michael J wrote:
>> We have set log_hostname ON and we get hostname reported – but we do not
>> get IP address. We would like to capture both.
>> Is there a way to capture both IP address and hostname in the log
>> messages? Or must we choose “one or the ootehr”?

> I see the same thing. It seems either or.

cross-posting to -hackers now that it is here.

v19 plans aside the existing wording is incorrect (just here, other places correctly point out the either-or aspect of the output).

The wording really should be more like:

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index fea683cb49..c545fee6c9 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -7614,10 +7614,11 @@ local0.*    /var/log/postgresql
       </term>
       <listitem>
        <para>
-        By default, connection log messages only show the IP address of the
-        connecting host. Turning this parameter on causes logging of the
-        host name as well.  Note that depending on your host name resolution
-        setup this might impose a non-negligible performance penalty.
+        By default, for TCP/IP-originated connections, the identifier of the host
+        making the connection is its IP address.  Turning this parameter on tells
+        the system to record the resolved host name instead.  Note that depending
+        on your host name resolution setup this might impose a non-negligible
+        performance penalty.
         This parameter can only be set in the <filename>postgresql.conf</filename>
         file or on the server command line.
        </para>


Both the connection logging routine and log_line_prefix %h / %r simply report the "identifier of the host making the connection".

David J.

Re: Capturing both IP address and hostname in the log

От
Melanie Plageman
Дата:

On Thu, Apr 10, 2025 at 12:00 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Melanie recently committed a patch (9219093ca) that purports to
generalize our log_connections logging ability:

    Convert the boolean log_connections GUC into a list GUC comprised of the
    connection aspects to log.

    This gives users more control over the volume and kind of connection
    logging.

    The current log_connections options are 'receipt', 'authentication', and
    'authorization'. The empty string disables all connection logging. 'all'
    enables all available connection logging.

I wonder if it'd be reasonable to remove the separate log_hostname GUC
and fold it into this infrastructure, and while doing so make it
possible to log either or both of the client IP address and hostname.
(For that matter, I think there is interest in being able to capture
the server IP address too, cf 3516ea768.  You might wish to log the
IP address only once, not in every log line.)

Seems reasonable to me. I'd be willing to move such a thing forward but would want to see the feature requestors' specific desired behavior (e.g. an option for each of hostname, client ip address, and server address?). Also, if they write a WIP patch at least to config.sgml, it would also help me gauge how serious of a request it is or, rather, how satisfactory a solution a log_connections option is.

Perhaps there are people who absolutely love log_hostname and don't want to see it deprecated as a separate GUC?

I also think folding in log_disconnections as a "disconnection" option makes sense. I do have some anxiety that a very long list of options will anger users -- but I suppose that ship mostly sailed.

- Melanie