Configura Rsyslog para recopilar logs de tu host, contenedores y servicios.
Configuración
Recopilación de logs
Rsyslog versión 8 o posterior
A partir de la
versión 8.1.5 Rsyslog recomienda el modo
inotify
. Tradicionalmente,
imfile
utilizaba el modo polling, que consume muchos más recursos (y es más lento) que el modo
inotify
.
Habilita el módulo imfile
para monitorizar archivos específicos de logs. Para añadir el módulo imfile
, añada lo siguiente a tu rsyslog.conf
:
module(load="imfile" PollingInterval="10") #needs to be done just once
Crea un archivo /etc/rsyslog.d/datadog.conf
.
En /etc/rsyslog.d/datadog.conf
, añade la siguiente configuración y sustituye <site_url>
por y <API_KEY>
por tu clave de API Datadog. Debes incluir una línea input
distinta para cada archivo de log que quieras monitorizar:
## For each file to send
input(type="imfile" ruleset="infiles" Tag="<APP_NAME_OF_FILE1>" File="<PATH_TO_FILE1>")
## Set the Datadog Format to send the logs
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - - %msg%\n"
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="intake.logs.<site_url>" port="10514" template="DatadogFormat")
}
En /etc/rsyslog.d/datadog.conf
, añade la siguiente configuración y sustituye <site_url>
por y <API_KEY>
por tu clave de API Datadog. Debes incluir una línea input
distinta para cada archivo de log que quieras monitorizar:
## For each file to send
input(type="imfile" ruleset="infiles" Tag="<TAGS>" File="<PATH_TO_FILE1>")
## Set the Datadog Format to send the logs
template(name="test_template" type="list") { constant(value="{") property(name="msg" outname="message" format="jsonfr") constant(value="}")}
# include the omhttp module
module(load="omhttp")
ruleset(name="infiles") {
action(type="omhttp" server="http-intake.logs.<site_url>" serverport="443" restpath="api/v2/logs" template="test_template" httpheaders=["DD-API-KEY: <API_KEY>", "Content-Type: application/json"])
}
Reinicia Rsyslog. Tus nuevos Logs se reenviarán directamente a tu cuenta de Datadog.
sudo systemctl restart rsyslog
Asocia tus logs con las métricas y las etiquetas (tags) del host.
Para asegurarte de que tus logs están asociados a las métricas y las etiquetas del mismo host en tu cuenta de Datadog, configura el HOSTNAME
en tu rsyslog.conf
para que coincida con el nombre de host de tus métricas de Datadog.
- Si especificaste un nombre de host en
datadog.conf
o datadog.yaml
, sustituye el valor %HOSTNAME%
en rsyslog.conf
para que coincida con tu nombre de host. - Si no especificaste un nombre de host en
datadog.conf
o datadog.yaml
, no necesitas cambiar nada.
Para sacar el máximo partido de tus logs en Datadog, define un origen para los logs.
Si reenvías tus logs al Datadog Agent, puedes definir el origen en el archivo de configuración del Agent.
Si no vas a reenviar tus logs al Datadog Agent, crea un archivo de configuración distinto para cada origen en /etc/rsyslog.d/
.
Para definir el origen, utiliza el siguiente formato (si tienes varios orígenes, cambia el nombre del formato en cada archivo):
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - [metas ddsource=\"<MY_SOURCE_NAME>\"] %msg%\n"
Puedes añadir etiquetas personalizadas con el atributo ddtags
:
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - [metas ddsource=\"<MY_SOURCE_NAME>\" ddtags=\"env:dev,<KEY:VALUE>\"] %msg%\n"
(Opcional) Datadog corta las conexiones inactivas tras un periodo de inactividad. Algunas versiones de Rsyslog no son capaces de reconectarse cuando es necesario. Para mitigar este problema, utiliza marcadores de tiempo para que la conexión nunca se interrumpa:
Añade las siguientes líneas a tu archivo de configuración de Rsyslog:
$ModLoad immark
$MarkMessagePeriod 20
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
- (Opcional) Añade el cifrado TLS a los logs enviados desde Rsyslog a tu cuenta de Datadog.
Instala los paquetes rsyslog-gnutls
y ca-certificates
:
sudo apt-get install rsyslog-gnutls ca-certificates
Añade la siguiente línea al final de tu archivo /etc/rsyslog.d/datadog.conf
:
## Define the destination for the logs
$DefaultNetstreamDriverCAFile /etc/ssl/certs/ca-certificates.crt
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="intake.logs.datadoghq.com" port="10516" template="DatadogFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logs.datadoghq.com" )
}
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
- (Opcional) Añade el cifrado TLS a los logs enviados desde Rsyslog a tu cuenta de Datadog.
Instala los paquetes rsyslog-gnutls
y ca-certificates
:
sudo apt-get install rsyslog-gnutls ca-certificates
Añade la siguiente línea al final de tu archivo /etc/rsyslog.d/datadog.conf
:
## Define the destination for the logs
$DefaultNetstreamDriverCAFile /etc/ssl/certs/ca-certificates.crt
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="tcp-intake.logs.datadoghq.eu" port="443" template="DatadogFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logs.datadoghq.eu" )
}
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
Habilita el módulo imfile
para monitorizar archivos específicos de logs. Para añadir el módulo imfile
, añada lo siguiente a tu rsyslog.conf
:
module(load="imfile" PollingInterval="10") #needs to be done just once
Crea un archivo /etc/rsyslog.d/datadog.conf
.
En /etc/rsyslog.d/datadog.conf
, añade la siguiente configuración y sustituye <site_url>
por y <API_KEY>
por tu clave de API Datadog. Debes incluir una línea input
distinta para cada archivo de log que quieras monitorizar:
## For each file to send
input(type="imfile" ruleset="infiles" Tag="<APP_NAME_OF_FILE1>" File="<PATH_TO_FILE1>")
## Set the Datadog Format to send the logs
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - - %msg%\n"
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="intake.logs.<site_url>" port="10514" template="DatadogFormat")
}
En /etc/rsyslog.d/datadog.conf
, añade la siguiente configuración y sustituye <site_url>
por y <API_KEY>
por tu clave de API Datadog. Debes incluir una línea input
distinta para cada archivo de log que quieras monitorizar:
## For each file to send
input(type="imfile" ruleset="infiles" Tag="<TAGS>" File="<PATH_TO_FILE1>")
## Set the Datadog Format to send the logs
template(name="test_template" type="list") { constant(value="{") property(name="msg" outname="message" format="jsonfr") constant(value="}")}
# include the omhttp module
module(load="omhttp")
ruleset(name="infiles") {
action(type="omhttp" server="http-intake.logs.<site_url>" serverport="443" restpath="api/v2/logs" template="test_template" httpheaders=["DD-API-KEY: <API_KEY>", "Content-Type: application/json"])
}
Reinicia Rsyslog. Tus nuevos Logs se reenviarán directamente a tu cuenta de Datadog.
sudo systemctl restart rsyslog
Asocia tus logs con las métricas y las etiquetas del host.
Para asegurarte de que tus logs están asociados a las métricas y las etiquetas del mismo host en tu cuenta de Datadog, configura el HOSTNAME
en tu rsyslog.conf
para que coincida con el nombre de host de tus métricas de Datadog.
- Si especificaste un nombre de host en
datadog.conf
o datadog.yaml
, sustituye el valor %HOSTNAME%
en rsyslog.conf
para que coincida con tu nombre de host. - Si no especificaste un nombre de host en
datadog.conf
o datadog.yaml
, no necesitas cambiar nada.
Para sacar el máximo partido de tus logs en Datadog, define un origen para los logs.
Si reenvías tus logs al Datadog Agent, puedes definir el origen en el archivo de configuración del Agent.
Si no vas a reenviar tus logs al Datadog Agent, crea un archivo de configuración distinto para cada origen en /etc/rsyslog.d/
.
Para definir el origen, utiliza el siguiente formato (si tienes varios orígenes, cambia el nombre del formato en cada archivo):
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - [metas ddsource=\"<MY_SOURCE_NAME>\"] %msg%\n"
Puedes añadir etiquetas personalizadas con el atributo ddtags
:
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - [metas ddsource=\"<MY_SOURCE_NAME>\" ddtags=\"env:dev,<KEY:VALUE>\"] %msg%\n"
(Opcional) Datadog corta las conexiones inactivas tras un periodo de inactividad. Algunas versiones de Rsyslog no son capaces de reconectarse cuando es necesario. Para mitigar este problema, utiliza marcadores de tiempo para que la conexión nunca se interrumpa:
Añade las dos siguientes líneas a tu archivo de configuración de Rsyslog:
$ModLoad immark
$MarkMessagePeriod 20
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
- (Opcional) Añade el cifrado TLS a los logs enviados desde Rsyslog a tu cuenta de Datadog.
Instala los paquetes rsyslog-gnutls
y ca-certificates
:
sudo yum install rsyslog-gnutls ca-certificates
Añade la siguiente línea al final de tu archivo /etc/rsyslog.d/datadog.conf
:
## Define the destination for the logs
$DefaultNetstreamDriverCAFile /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="intake.logs.datadoghq.com" port="10516" template="DatadogFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logs.datadoghq.com" )
}
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
- (Opcional) Añade el cifrado TLS a los logs enviados desde Rsyslog a tu cuenta de Datadog.
Instala los paquetes rsyslog-gnutls
y ca-certificates
:
sudo yum install rsyslog-gnutls ca-certificates
Añade la siguiente línea al final de tu archivo /etc/rsyslog.d/datadog.conf
:
## Define the destination for the logs
$DefaultNetstreamDriverCAFile /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="tcp-intake.logs.datadoghq.eu" port="443" template="DatadogFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logs.datadoghq.eu" )
}
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
Habilita el módulo imfile
para monitorizar archivos específicos de logs. Para añadir el módulo imfile
, añada lo siguiente a tu rsyslog.conf
:
module(load="imfile" PollingInterval="10") #needs to be done just once
Crea un archivo /etc/rsyslog.d/datadog.conf
.
En /etc/rsyslog.d/datadog.conf
, añade la siguiente configuración y sustituye <site_url>
por y <API_KEY>
por tu clave de API Datadog. Debes incluir una línea input
distinta para cada archivo de log que quieras monitorizar:
## For each file to send
input(type="imfile" ruleset="infiles" Tag="<APP_NAME_OF_FILE1>" File="<PATH_TO_FILE1>")
## Set the Datadog Format to send the logs
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - - %msg%\n"
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="intake.logs.<site_url>" port="10514" template="DatadogFormat")
}
En /etc/rsyslog.d/datadog.conf
, añade la siguiente configuración y sustituye <site_url>
por y <API_KEY>
por tu clave de API Datadog. Debes incluir una línea input
distinta para cada archivo de log que quieras monitorizar:
## For each file to send
input(type="imfile" ruleset="infiles" Tag="<TAGS>" File="<PATH_TO_FILE1>")
## Set the Datadog Format to send the logs
template(name="test_template" type="list") { constant(value="{") property(name="msg" outname="message" format="jsonfr") constant(value="}")}
# include the omhttp module
module(load="omhttp")
ruleset(name="infiles") {
action(type="omhttp" server="http-intake.logs.<site_url>" serverport="443" restpath="api/v2/logs" template="test_template" httpheaders=["DD-API-KEY: <API_KEY>", "Content-Type: application/json"])
}
Reinicia Rsyslog. Tus nuevos Logs se reenviarán directamente a tu cuenta de Datadog.
sudo systemctl restart rsyslog
Asocia tus logs con las métricas y las etiquetas del host.
Para asegurarte de que tus logs están asociados a las métricas y las etiquetas del mismo host en tu cuenta de Datadog, configura el HOSTNAME
en tu rsyslog.conf
para que coincida con el nombre de host de tus métricas de Datadog.
- Si especificaste un nombre de host en
datadog.conf
o datadog.yaml
, sustituye el valor %HOSTNAME%
en rsyslog.conf
para que coincida con tu nombre de host. - Si no especificaste un nombre de host en
datadog.conf
o datadog.yaml
, no necesitas cambiar nada.
Para sacar el máximo partido de tus logs en Datadog, define un origen para los logs.
Si reenvías tus logs al Datadog Agent, puedes definir el origen en el archivo de configuración del Agent.
Si no vas a reenviar tus logs al Datadog Agent, crea un archivo de configuración distinto para cada origen en /etc/rsyslog.d/
.
Para definir el origen, utiliza el siguiente formato (si tienes varios orígenes, cambia el nombre del formato en cada archivo):
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - [metas ddsource=\"<MY_SOURCE_NAME>\"] %msg%\n"
Puedes añadir etiquetas personalizadas con el atributo ddtags
:
$template DatadogFormat,"<DATADOG_API_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% - - [metas ddsource=\"<MY_SOURCE_NAME>\" ddtags=\"env:dev,<KEY:VALUE>\"] %msg%\n"
(Opcional) Datadog corta las conexiones inactivas tras un periodo de inactividad. Algunas versiones de Rsyslog no son capaces de reconectarse cuando es necesario. Para mitigar este problema, utiliza marcadores de tiempo para que la conexión nunca se interrumpa:
Añade las dos siguientes líneas a tu archivo de configuración de Rsyslog:
$ModLoad immark
$MarkMessagePeriod 20
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
- (Opcional) Añade el cifrado TLS a los logs enviados desde Rsyslog a tu cuenta de Datadog.
Instala los paquetes rsyslog-gnutls
y ca-certificates
:
sudo dnf install rsyslog-gnutls ca-certificates
Añade la siguiente línea al final de tu archivo /etc/rsyslog.d/datadog.conf
:
## Define the destination for the logs
$DefaultNetstreamDriverCAFile /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="intake.logs.datadoghq.com" port="10516" template="DatadogFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logs.datadoghq.com" )
}
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
- (Opcional) Añade el cifrado TLS a los logs enviados desde Rsyslog a tu cuenta de Datadog.
Instala los paquetes rsyslog-gnutls
y ca-certificates
:
sudo dnf install rsyslog-gnutls ca-certificates
Añade la siguiente línea al final de tu archivo /etc/rsyslog.d/datadog.conf
:
## Define the destination for the logs
$DefaultNetstreamDriverCAFile /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
ruleset(name="infiles") {
action(type="omfwd" protocol="tcp" target="tcp-intake.logs.datadoghq.eu" port="443" template="DatadogFormat" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logs.datadoghq.eu" )
}
Reinicia el servicio Rsyslog:
sudo systemctl restart rsyslog
Solucionar problemas
¿Necesitas ayuda? Contacta con el equipo de soporte de Datadog.