Despliegue alibaba-log-controller y defina CRD AliyunLogConfig para recopilar registros de texto y stdout de los pods ECI.
Requisitos previos
Asegúrese de cumplir con lo siguiente:
Se creó un ACK Serverless cluster.
ack-virtual-node 2.7.0 o posterior está instalado.
Configuración de la recolección de registros
Despliegue de alibaba-log-controller
Inicie sesión en la consola de ACK.
En la esquina superior izquierda, seleccione una región.
En la página Clusters, haga clic en el nombre de su clúster.
En el panel de navegación izquierdo, elija Operations > Add-ons.
Haga clic en la pestaña Logs and Monitoring, busque la tarjeta Alibaba-log-controller y haga clic en Install.
En el cuadro de diálogo de confirmación, haga clic en OK.
Después de la instalación, aparece Installed en la tarjeta Alibaba-log-controller.
Creación de un CRD AliyunLogConfig
Conéctese al clúster ACK Serverless y escriba un archivo de configuración YAML para el CRD de recolección de registros.
Tenga en cuenta las siguientes restricciones antes de crear el CRD:
configNamedebe coincidir exactamente conmetadata.name.La recolección de registros basada en CRD solo aplica a los pods ECI creados después del CRD. Para recopilar registros de pods existentes, vuelva a crearlos mediante una actualización continua.
Después de crear una configuración de Logtail mediante el CRD, gestiónele exclusivamente a través del CRD. Los cambios realizados en la consola de Simple Log Service (SLS) no se sincronizan de vuelta. Para actualizar, modifique directamente el CRD AliyunLogConfig.
Plantilla del CRD
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: simple-stdout-example
spec:
project: k8s-my-project
logstore: k8s-stdout
logstoreMode: standard
shardCount: 2
lifeCycle: 90
logtailConfig:
inputType: plugin
configName: simple-stdout-example
inputDetail:
...
Parámetros básicos
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
|
string |
No |
Nombre del proyecto de SLS. El valor predeterminado es el proyecto de instalación de Logtail. Se crea automáticamente si no existe. |
|
|
string |
Sí |
Nombre del logstore. Se crea automáticamente si no existe. |
|
|
string |
No |
Tipo de logstore. Valores válidos: |
|
|
int |
No |
Número de shards. Valores válidos: 1–10. Valor predeterminado: 2. |
|
|
int |
No |
Periodo de retención de registros en días. Valores válidos: 1–3650. Valor predeterminado: 90. 3650 equivale a permanente. Solo tiene efecto durante la creación. |
|
|
array |
No |
Grupo de máquinas. SLS crea automáticamente |
|
|
object |
Sí |
Configuración de Logtail. Consulte los subparámetros a continuación. |
Subparámetros de logtailConfig:
|
Subparámetro |
Descripción |
|
|
Nombre de la configuración de Logtail. Debe coincidir con |
|
|
Tipo de origen de registros. |
|
|
Configuración detallada de entrada. |
|
|
Tipo de salida. Establezca este valor en |
|
|
Configuración detallada de salida. |
|
|
Una entrada de registro de ejemplo. |
Consulte Configuraciones de Logtail.
Filtrado de contenedores
Las opciones de filtrado dependen de su versión de Logtail.
Logtail anterior a v1.0.34: filtre únicamente por variables de entorno y etiquetas de contenedor.
El namespace de Kubernetes y el nombre del contenedor se asignan a estas etiquetas:
Namespace:
io.kubernetes.pod.namespaceNombre del contenedor:
io.kubernetes.container.name
Utilice estas etiquetas para filtrar contenedores. Si resultan insuficientes, use listas de permitidos o listas de bloqueados de variables de entorno.
Logtail v1.0.34 y posteriores: filtre por metadatos a nivel de Kubernetes, incluidos el nombre del pod, el namespace, el nombre del contenedor y las etiquetas.
Configure los parámetros de filtrado en logtailConfig.inputDetail.advanced.k8s:
|
Parámetro |
Descripción |
|
|
Lista de permitidos de etiquetas de Kubernetes: contenedores que se incluirán |
|
|
Lista de bloqueados de etiquetas de Kubernetes: contenedores que se excluirán |
|
|
Filtrar por namespace (expresión regular) |
|
|
Filtrar por nombre de pod (expresión regular) |
|
|
Filtrar por nombre de contenedor (expresión regular) |
Consulte Recolección de registros de texto de contenedores Kubernetes en modo DaemonSet y Recolección de stdout y stderr de contenedores Kubernetes en modo DaemonSet (versión anterior).
Ejemplo: recolección de registros de texto
Cree log-file.yaml con el siguiente contenido:
apiVersion: log.alibabacloud.com/v1alpha1 # Use the default value. Do not modify.
kind: AliyunLogConfig # Use the default value. Do not modify.
metadata:
name: test-file # Unique resource name in the Kubernetes cluster.
spec:
project: k8s-log-c326bc86**** # Optional. Auto-created if the project does not exist.
logstore: test-file # Required. Auto-created if the Logstore does not exist.
logtailConfig:
inputType: file # file = text logs; plugin = stdout logs.
configName: test-file # Must match metadata.name.
inputDetail:
logType: common_reg_log # Simple mode.
logPath: /log/ # Log file directory.
filePattern: "*.log" # Log file name pattern. Supports * and ?.
dockerFile: true # Set to true to collect from containers.
advanced:
k8s:
K8sNamespaceRegex: ^(default)$
K8sPodRegex: '^(eci-sls-demo.*)$'
Ejemplo: recolección de registros stdout
Cree log-stdout.yaml con el siguiente contenido:
apiVersion: log.alibabacloud.com/v1alpha1 # Use the default value. Do not modify.
kind: AliyunLogConfig # Use the default value. Do not modify.
metadata:
name: test-stdout # Unique resource name in the Kubernetes cluster.
spec:
project: k8s-log-c326bc86**** # Optional. Auto-created if the project does not exist.
logstore: test-stdout # Required. Auto-created if the Logstore does not exist.
shardCount: 2 # Optional. Default: 2. Valid values: 1–10.
lifeCycle: 90 # Optional. Default: 90 days. Valid values: 1–3650. 3650 = permanent.
logtailConfig:
inputType: plugin # plugin = stdout logs; file = text logs.
configName: test-stdout # Must match metadata.name.
inputDetail:
plugin:
inputs:
- type: service_docker_stdout
detail:
Stdout: true
Stderr: true
# IncludeEnv:
# aliyun_logs_test-stdout: "stdout"
Aplicación de la configuración del CRD
kubectl apply -f log-file.yaml
kubectl apply -f log-stdout.yaml
Después de aplicar la configuración, Logtail recopila registros stdout o de texto de cada contenedor y los envía a SLS.
Cree índices en el logstore para habilitar la consulta y el análisis. Consulte Creación de índices.
Prueba de la recolección de registros
Después de crear el CRD, los registros de los pods recién creados se recopilan automáticamente. Compruebe la configuración con estos pasos.
Creación de una aplicación de prueba
Cree test-sls-crd.yaml con el siguiente Deployment. El contenedor escribe tanto en stdout como en un archivo de registros.
apiVersion: apps/v1
kind: Deployment
metadata:
name: eci-sls-demo
labels:
app: sls
spec:
replicas: 1
selector:
matchLabels:
app: sls
template:
metadata:
name: sls-test
labels:
app: sls
alibabacloud.com/eci: "true"
spec:
containers:
- args:
- -c
- mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
command:
- /bin/sh
image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30
imagePullPolicy: Always
name: busybox
kubectl create -f test-sls-crd.yaml
Verificación del estado del pod
kubectl get pod
Salida esperada:
NAME READY STATUS RESTARTS AGE
eci-sls-demo-7bf8849b9f-cgpbn 1/1 Running 0 2m14s
Consulta de los registros recopilados
Inicie sesión en la consola de SLS.
Haga clic en el nombre del proyecto.
Haga clic en el logstore correspondiente a sus contenedores para consultar los registros.
Recolección de registros de texto:

Recolección de registros stdout:

Deshabilitación de la recolección de registros para pods específicos
De forma predeterminada, el CRD recopila registros de todos los pods coincidentes. Para excluir pods específicos, agregue la anotación k8s.aliyun.com/eci-sls-enable: "false" a los metadatos del pod.
Agregue las anotaciones en
spec.template.metadata, no en los metadatos de nivel superior.Las anotaciones solo tienen efecto durante la creación del pod. Los cambios realizados durante las actualizaciones del pod no surten efecto.
apiVersion: apps/v1
kind: Deployment
metadata:
name: eci-sls-demo2
labels:
app: sls
spec:
replicas: 1
selector:
matchLabels:
app: sls
template:
metadata:
name: sls-test
labels:
app: sls
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-sls-enable: "false" # Disables log collection.
spec:
containers:
- args:
- -c
- mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;
done
command:
- /bin/sh
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
imagePullPolicy: Always
name: busybox