Controlador de registro Splunk
El controlador de registro splunk envía los registros de los contenedores al HTTP Event Collector (Colector de eventos HTTP) en Splunk Enterprise y Splunk Cloud.
Uso
Puedes configurar el sistema de registro de Docker para que utilice el controlador splunk de forma predeterminada o por contenedor.
Para usar el controlador splunk como el controlador de registro predeterminado, establece las claves log-driver y log-opts con los valores adecuados en el archivo de configuración daemon.json y reinicia Docker. Por ejemplo:
{
"log-driver": "splunk",
"log-opts": {
"splunk-token": "",
"splunk-url": "",
...
}
}Para obtener más información sobre cómo configurar Docker mediante daemon.json, consulta
daemon.json.
NoteSi usas Docker Desktop, edita la configuración del demonio a través del panel de Docker Desktop. Abre Settings y selecciona Docker Engine. Para más detalles, consulta Configuración de Docker Engine.
NoteLas opciones de configuración de
log-optsen el archivo de configuracióndaemon.jsondeben proporcionarse como cadenas. Los valores booleanos y numéricos (como el valor parasplunk-gziposplunk-gzip-level) deben, por lo tanto, estar entre comillas (").
Para utilizar el controlador splunk para un contenedor específico, utiliza las opciones de la línea de comandos --log-driver y --log-opt con docker run:
$ docker run --log-driver=splunk --log-opt splunk-token=VALOR --log-opt splunk-url=VALOR ...
Opciones de Splunk
Las siguientes propiedades te permiten configurar el controlador de registro Splunk.
- Para configurar el controlador
splunken todo el entorno de Docker, edita el archivodaemon.jsoncon la clave"log-opts": {"NOMBRE": "VALOR", ...}. - Para configurar el controlador
splunkpara un contenedor individual, utilizadocker runcon la opción--log-opt NOMBRE=VALOR ....
| Opción | Requerido | Descripción |
|---|---|---|
splunk-token | requerido | Token de Splunk HTTP Event Collector. |
splunk-url | requerido | Ruta a tu instancia de Splunk Enterprise, instancia de autoservicio de Splunk Cloud o clúster gestionado de Splunk Cloud (incluyendo el puerto y el esquema utilizado por HTTP Event Collector) en uno de los siguientes formatos: https://tu_instancia_splunk:8088, https://input-prd-p-XXXXXXX.cloud.splunk.com:8088 o https://http-inputs-XXXXXXXX.splunkcloud.com. |
splunk-source | opcional | Origen del evento. |
splunk-sourcetype | opcional | Tipo de origen del evento. |
splunk-index | opcional | Índice del evento. |
splunk-capath | opcional | Ruta al certificado raíz. |
splunk-caname | opcional | Nombre que se utilizará para validar el certificado del servidor; de forma predeterminada se utiliza el nombre de host de splunk-url. |
splunk-insecureskipverify | opcional | Ignora la validación del certificado del servidor. |
splunk-format | opcional | Formato del mensaje. Puede ser inline, json o raw. El valor predeterminado es inline. |
splunk-verify-connection | opcional | Verifica al iniciar que Docker puede conectarse al servidor de Splunk. El valor predeterminado es true. |
splunk-gzip | opcional | Habilita/deshabilita la compresión gzip para enviar eventos a la instancia de Splunk Enterprise o Splunk Cloud. El valor predeterminado es false. |
splunk-gzip-level | opcional | Establece el nivel de compresión para gzip. Los valores válidos son -1 (predeterminado), 0 (sin compresión), 1 (mejor velocidad) ... 9 (mejor compresión). Por defecto es DefaultCompression. |
tag | opcional | Especifica la etiqueta del mensaje, que interpreta algunas marcas de plantilla. El valor predeterminado es {{.ID}} (12 caracteres del ID del contenedor). Consulta la documentación de la opción de etiqueta de registro para personalizar el formato. |
labels | opcional | Lista de claves de etiquetas separadas por comas que deben incluirse en el mensaje, si estas etiquetas se especifican para el contenedor. |
labels-regex | opcional | Similar y compatible con labels. Una expresión regular para hacer coincidir etiquetas relacionadas con el registro. Se utiliza para opciones avanzadas de etiquetas de registro. |
env | opcional | Lista de claves de variables de entorno separadas por comas que deben incluirse en el mensaje, si estas variables se especifican para el contenedor. |
env-regex | opcional | Similar y compatible con env. Una expresión regular para hacer coincidir variables de entorno relacionadas con el registro. Se utiliza para opciones avanzadas de etiquetas de registro. |
Si ocurre una colisión entre las claves de label y env, el valor de env tiene prioridad. Ambas opciones añaden campos adicionales a los atributos de un mensaje de registro.
A continuación se muestra un ejemplo de las opciones de registro especificadas para la instancia de Splunk Enterprise. La instancia está instalada localmente en la misma máquina en la que se ejecuta el demonio de Docker.
La ruta al certificado raíz y el Nombre Común (Common Name) se especifican utilizando un esquema HTTPS. Esto se utiliza para la verificación. El certificado SplunkServerDefaultCert se genera automáticamente a partir de los certificados de Splunk.
$ docker run \
--log-driver=splunk \
--log-opt splunk-token=176FCEBF-4CF5-4EDF-91BC-703796522D20 \
--log-opt splunk-url=https://splunkhost:8088 \
--log-opt splunk-capath=/ruta/al/certificado/cacert.pem \
--log-opt splunk-caname=SplunkServerDefaultCert \
--log-opt tag="{{.Name}}/{{.FullID}}" \
--log-opt labels=location \
--log-opt env=TEST \
--env "TEST=false" \
--label location=west \
tu/aplicacion
La opción splunk-url para las instancias de Splunk alojadas en Splunk Cloud tiene un formato similar a https://http-inputs-XXXXXXXX.splunkcloud.com y no incluye un especificador de puerto.
Formatos de mensaje
Existen tres formatos de mensajería para el controlador de registro: inline (predeterminado), json y raw.
El formato predeterminado es inline, en el cual cada mensaje de registro se incrusta como una cadena. Por ejemplo:
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "my message"
}{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "{\"foo\": \"bar\"}"
}Para formatear los mensajes como objetos json, establece --log-opt splunk-format=json. El controlador intenta analizar cada línea como un objeto JSON y enviarla como un objeto incrustado. Si no puede analizar el mensaje, se envía como inline. Por ejemplo:
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "my message"
}{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": {
"foo": "bar"
}
}Para formatear los mensajes en modo raw, establece --log-opt splunk-format=raw. Los atributos (variables de entorno y etiquetas) y las etiquetas de registro se anteponen al mensaje. Por ejemplo:
MyImage/MyContainer env1=val1 label1=label1 my message
MyImage/MyContainer env1=val1 label1=label1 {"foo": "bar"}
Opciones avanzadas
El controlador de registro Splunk te permite configurar algunas opciones avanzadas estableciendo variables de entorno para el demonio de Docker.
| Nombre de la variable de entorno | Valor predeterminado | Descripción |
|---|---|---|
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_FREQUENCY | 5s | El tiempo de espera para agrupar más mensajes. |
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_BATCH_SIZE | 1000 | El número de mensajes que deben acumularse antes de enviarlos en un solo lote. |
SPLUNK_LOGGING_DRIVER_BUFFER_MAX | 10 * 1000 | El número máximo de mensajes que se guardan en el búfer para reintentos. |
SPLUNK_LOGGING_DRIVER_CHANNEL_SIZE | 4 * 1000 | El número máximo de mensajes pendientes que pueden estar en el canal utilizado para enviar mensajes al trabajador de registro en segundo plano que los agrupa. |