Hi, I have a hard time understanding the behaviour of the multiple host based macros with respect to the value of the use-fqdn(), and keep-hostname() params. First of all, when setting use-fqdn(yes), isn't the network destination supposed to send the fqdn? In our case, tcpdump shows that the short hostname is sent instead. Additionally, what does the following paragraph from the documentation mean? The hostname-related macros (${FULLHOST}, ${FULLHOST_FROM}, ${HOST}, and ${HOST_FROM}) do not have any effect if the keep-hostname() option is disabled Does that mean they are empty if keep-hostname(no) ? Cheers
Hi, I have a hard time understanding the behaviour of the multiple host based
macros with respect to the value of the use-fqdn(), and keep-hostname() params.
This is a confusing part of our documentation that I tried to clarify a few months ago. Unfortunately, it is still not the best.
First of all, when setting use-fqdn(yes), isn't the network destination supposed to send the fqdn? In our case, tcpdump shows that the short hostname is sent instead.
use-fqdn(), use-dns(), normalize-hostnames() and dns-cache() are actually source options but they can be used in the global "options" block as well. They do NOT really have effect if the keep-hostname option is set to "yes". If you set use-fqdn to "yes" for a source (or globally), you might want to set keep-hostname() to "no" in order to overwrite the original hostname that was parsed from the message. The original hostname may not be an FQDN, but syslog-ng can not touch it when keep-hostname() is enabled. As an alternative (if you also want to keep the original hostname), you can write a custom template for the destination where ${HOST_FROM} is used instead of ${HOST}. Additionally, what does the following paragraph from the documentation mean?
The hostname-related macros (${FULLHOST}, ${FULLHOST_FROM}, ${HOST}, and ${HOST_FROM}) do not have any effect if the keep-hostname() option is disabled
Does that mean they are empty if keep-hostname(no) ?
This sentence from the documentation is completely incorrect. Let me summarize the real behavior: FULLHOST is just an alias for HOST. FULLHOST_FROM is an alias for HOST_FROM. HOST_FROM always contains the hostname resolved by the current syslog-ng instance (using the values of use-fqdn(), use-dns(), normalize-hostnames() and dns-cache()). HOST contains the original (parsed) hostname of the message if keep-hostname() is enabled. Otherwise, it contains the value of HOST_FROM (or chained hostnames if chain-hostnames() is set). -- László Várady
Hi László, Thanks so much for this excellent clarification. I think Robert could copy-paste it as-is in place of the current paragraph ;-) Cheers
participants (2)
-
Fabien Wernli
-
Várady, László