colección registro de clúster K8S

                                            k8s集群日志收集
  1. Lo recopilación de registros
    K8S sistema de componentes registro
    K8S Cluster desplegado dentro del registro de aplicación

  2. Acceder esquema Filebeat + ELK

      

Filebeat (herramienta de recopilación de registros) + Logstach (datos del motor de procesamiento) + Elasticserch (almacenamiento de datos, búsqueda de texto completo, distribuido motor de búsqueda) + Kibana (visualización de datos, gráficos, búsqueda)
colección registro de clúster K8S

      

3 logs de contenedores cómo recoger
      

Pod adicional de recopilación de registros contenedor dedicado: Recoger programa
ventajas: acoplamiento bajas
desventajas: Cada cápsula iniciar un agente de recopilación de registros, el consumo de recursos y el aumento de los costes de mantenimiento de operación y mantenimiento
            
4 despliegue DaemonSet ensamblaje toman K8S log / var / log / messages
      
4.1 Instalación ELK en el nodo de puerto
      
de la instalación, configuración ELK
      

1)安装OpenJDK
yum -y install java-1.8.0-OpenJDK
            
2)安装Logstash
https://www.elastic.co/guide/en/logstash/7.6/installing-logstash.html
            
配置网络源
/ etc / yum. repos.d / logstash.repo
[logstash-7.x]
name = elástico repositorio para 7.x paquetes
baseurl = https://artifacts.elastic.co/packages/7.x/yum
gpgcheck = 1
gpgkey = https: / /artifacts.elastic.co/GPG-KEY-elasticsearch
activar = 1
autorefresh = 1
type = rpm-md
                        

3) Instalación ELK montaje
yum la instalación logstash elasticsearch Kibana -Y
            
4) de montaje configurado.
            
Para modificar la configuración Kibana
VI /etc/kibana/kibana.yml
            
la server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: [ " HTTP: // localhost: 9200 "]
                        

Logstash modificar la configuración
            
vi /etc/logstash/conf.d/logstash-to-es.conf

de entrada {
latidos {
port => 5044
}

}

filtro {

}

de salida {
Elasticsearch {
hosts => [ " http://127.0.0.1:9200 "]
de índice => "K8S-log -% {+} aaaa.mm.dd" #索引格式
}
stdout {codec => rubydebug}

}

            
Iniciar servicio
systemctl empezar Kibana # inicio Kibana
systemctl Start elasticsearch # inicia elasticsearch
/ usr / share reportar / logstash / bin / logstash -f /etc/logstash/conf.d/logstash-to-es.conf y
            
192.168.1.143:5601 acceso # Kibana
            
5) crear una vaina (realiza nodo maestro) de recopilación de registros componente

            

kubectl aplicar -f K8S-logs.yaml
                        
apiVersion: v1
tipo: configMap
metadatos:
nombre: K8S-logs-filebeat-config
espacio de nombres: Kube-sistema

datos:
filebeat.yml: | -
filebeat.prospectors:

  • escribir: registro de
    caminos:

    • / messages
      campos:
      app: K8S
      Tipo: Módulo
      fields_under_root: true

    output.logstash:
    anfitriones: [ '192.168.1.143:5044']


apiVersion: Aplicaciones / v1
tipo: DaemonSet
metadatos:
nombre: K8S-registros de
espacio de nombres: Kube-sistema
de especificaciones:
selector:
matchLabels:
Proyecto: K8S
aplicación: filebeat
plantilla:
metadatos:
etiquetas:
Proyecto: K8S
de aplicaciones: filebeat
especificaciones:
Contenedores:

  • Nombre: filebeat
    imagen: docker.elastic.co/beats/filebeat:6.4.2
    args: [
    "c", "/etc/filebeat.yml",
    "-e",
    ]
    recursos:
    peticiones:
    CPU: 100m
    memoria: 100mi
    limita:
    500: CPU
    de memoria: 500MI
    SecurityContext:
    RunAsUser: 0
    volumeMounts:
    • Nombre: filebeat-config
      de ruta de montaje: /etc/filebeat.yml
      SUBPATH: filebeat.yml
    • Nombre: K8S-logs
      de ruta de montaje: / Mensajes
      volúmenes:
  • Nombre: K8S-logs
    rutaServidor:
    ruta: / var / log / messages
    Tipo: Archivo
  • Nombre: filebeat-config
    configMap:

6) los índices Kibana add

Kibana 界面 -> Índice Patterns- "K8S-log - * -> @ timestamp-> Crear patrón-index> Descubrir

            
7) Ver registro

colección registro de clúster K8S

                        
Nginx registros recogidos 6
            
1) crear un espacio de nombres
CAT namespace.yaml
apiVersion: v1
tipo: el espacio de nombres
del Metadatos:
Nombre: la Prueba
            
2) crear vaina de configMap (archivo de configuración guardado filebeat)
            

kubectl aplicar -f filebeat-nginx-configmap.yaml
            
gato filebeat-nginx-configmap.yaml
apiVersion: v1
tipo: configMap
metadatos:
nombre: filebeat-nginx-config
espacio de nombres: test

datos:
filebeat.yml: | -
filebeat.prospectors:

  • escribir: registro de
    caminos:

    • /usr/local/nginx/logs/access.log
      campos: # añadir campo adicional que indica si se configura para hacer fuente de campo y el tipo de recopilación de registros
      de aplicaciones: la WWW
      del tipo: nginx-Acceso
      fields_under_root: # true recogerá los registros en la interfaz Kibana superior
  • escribir: registro de
    caminos:

    • /usr/local/nginx/logs/error.log
      campos:
      aplicación: www
      Tipo: nginx-error
      fields_under_root: true

    output.logstash: # registro de salida de la recopilación de datos logstash a los
    anfitriones: [ '192.168.1.143:5044']

            
3) Crear una contraseña secreta que se utiliza para guardar el puerto del usuario
            
kubectl crear secreta ventana acoplable-registro harborsecret123 --docker -server = 192.168.1.143 --docker-nombre de usuario = 'Zhanghai' --docker-password = '123 @ Abcde' test -n
            
4) modificar la configuración logstash
            
/ usr / share / logstash / bin / y logstash -f /etc/logstash/conf.d/logstash-to-es.conf
            
CAT-logstash-a es.conf
INPUT {
Beats {
Puerto => 5044
}
}

Filtro {
}

salida {
si [App] == "www" {
si [Tipo] == "nginx de acceso" {
elasticsearch {
hosts => [ " http://127.0.0.1:9200 "]
index => "nginx-acceso- % {+ aaaa.mm.dd} "
}
}
else if [tipo] == "nginx-error"{
elasticsearch {
hosts => [" http://127.0.0.1:9200 "]
index =>" nginx-error -% {+ aaaa.mm.dd} "
}
}
else if [tipo] == "tomcat-catalina"{
elasticsearch {
hosts => [" http://127.0.0.1:9200 "]
index =>" tomcat catalina -% {+} aaaa.mm.dd"
}
}
else if [App] == "" K8S{
Si [Tipo] == "módulo" {
Elasticsearch {
anfitriones => ["http://127.0.0.1:9200 "]
de índice => "K8S-log -% {+ aaaa.mm.dd}"
}
}
}
}
}

            
5)创建nginx的vaina
            
kubectl aplicar -f nginx-deployment.yaml
            
gato nginx-deployment.yaml
apiVersion: Aplicaciones / v1beta1
tipo: Despliegue
de metadatos:
nombre: php-demostración
espacio de nombres: Prueba
de especificaciones:
réplicas: 3
Selector:
matchLabels:
Proyecto: www
aplicación: php-demo
plantilla:
metadatos:
etiquetas:
proyecto: www
aplicaciones php-demo
de especificaciones:
imagePullSecrets:

  • Nombre: harborsecret123
    contenedores:
  • Nombre: Nginx
    imagen: 192.168.1.143/project/php-demo:latest
    imagePullPolicy: Siempre
    puertos:

    • containerPort: 80
      Nombre: web
      Protocolo: TCP
      recursos:
      Requests:
      CPU: 0,5
      de memoria: 256Mi
      límites:
      CPU: 1
      de memoria: 1GI
      recursos:
      Requests:
      CPU: 0,5
      de memoria: 256Mi
      límites:
      CPU: 1
      de memoria: 1GI
      livenessProbe:
      HTTPGet:
      camino : /status.php
      puerto: 80
      initialDelaySeconds: 6
      tiempo_espera_en_segundos: 20
      volumeMounts:
    • Nombre: nginx-registra
      de ruta de montaje: / usr / share / nginx / logs locales
  • Nombre: filebeat
    imagen: docker.elastic.co/beats/filebeat:6.4.2
    args: [
    "c", "/etc/filebeat.yml",
    "-e",
    ]
    recursos:
    límites:
    de memoria: 500MI
    solicitudes:
    100m: cpu
    memoria: 100mÎ
    SecurityContext:
    RunAsUser: 0
    volumeMounts:

    • Nombre: filebeat-config
      de ruta de montaje: /etc/filebeat.yml
      SUBPATH: filebeat.yml
    • Nombre: nginx-registra
      de ruta de montaje: / usr / share / nginx / logs locales

      volúmenes:

  • Nombre: nginx-registra
    emptyDir: {}
  • Nombre: filebeat-config
    configMap:
    Nombre: filebeat-nginx-config

colección registro de clúster K8S

            

5) Configurar Kibana Frente
            
Kibana Interfaz -> Kibana Índice Patterns- "nginx- acceso - * -> @ timestamp-> Crear patrón-index> Descubrir
colección registro de clúster K8S

colección registro de clúster K8S

            

  1. Tomcat registros recopilados
                
    1) crear una vaina de configMap
                
    CAT filebeat-tomcat-configmap.yaml
    apiVersion: v1
    tipo: configMap
    los metadatos:
    filebeat-config: Nombre del
    espacio de nombres: la Prueba

datos:
filebeat.yml: | -
filebeat.prospectors:

  • escribir: registro de
    caminos:
    • /usr/local/tomcat/logs/catalina.*
      campos:
      Aplicación: la WWW
      del tipo: Tomcat-catalina
      fields_under_root: true
      de varias líneas: # coincidencia de varias líneas, tiene [el principio de la línea de la entrada de registro
      patrón: '^ ['
      negate: a cierto
      partido: después
      output.logstash:
      los anfitriones: [ '192.168.1.143:5044']
                  
      kubectl Aplicar -f filebeat-Tomcat-configmap.yaml

            
2)创建Tomcat的vaina
            
kubectl aplicar -f Tomcat-deployment.yaml
gato gato-deployment.yaml
apiVersion: Aplicaciones / v1beta1
tipo: Despliegue
de metadatos:
nombre: Tomcat-java-demostración
espacio de nombres: Prueba
de especificaciones:
réplicas: 3
selectores:
matchLabels:
proyecto: www
aplicación: java-demo
plantilla:
metadatos:
etiquetas:
proyecto: www
aplicaciones java-demo
de especificaciones:
imagePullSecrets:

  • Nombre: harborsecret123
    contenedores:
  • Nombre: Tomcat
    imagen: 192.168.1.143/project/tomcat-java-demo:latest
    imagePullPolicy: Siempre
    puertos:

    • containerPort: 8080
      Nombre: web
      Protocolo: TCP
      recursos:
      Requests:
      CPU: 0,5
      de memoria: 1GI
      límites:
      CPU: 1
      de memoria: 2GI
      livenessProbe:
      HTTPGet:
      Ruta: /
      puerto: 8080
      initialDelaySeconds: 60
      tiempo_espera_en_segundos: 20
      readinessProbe:
      HTTPGet:
      Ruta: /
      puerto: 8080
      initialDelaySeconds: 60
      tiempo_espera_en_segundos: 20
      volumeMounts:
    • Nombre: Tomcat-registra
      de ruta de montaje: / usr / local / Tomcat / logs
  • Nombre: filebeat
    imagen: docker.elastic.co/beats/filebeat:6.4.2
    args: [
    "c", "/etc/filebeat.yml",
    "-e",
    ]
    recursos:
    límites:
    de memoria: 500MI
    solicitudes:
    100m: cpu
    memoria: 100mÎ
    SecurityContext:
    RunAsUser: 0
    volumeMounts:
    • Nombre: filebeat-config
      de ruta de montaje: /etc/filebeat.yml
      SUBPATH: filebeat.yml
    • Nombre: tomcat-registra
      de ruta de montaje: / usr / local / tomcat / logs
      volúmenes:
  • Nombre: Tomcat-registra
    emptyDir: {}
  • Nombre: filebeat-config
    configMap:
    Nombre: filebeat-config

            

3) Recepción de configuración Kibana
            

Kibana 界面 -> Índice Kibana Patrones-tomcat-catalina - * -> @ timestamp-> Crear patrón-index> Descubrir

colección registro de clúster K8S

Supongo que te gusta

Origin blog.51cto.com/13836096/2484937
Recomendado
Clasificación