Backend- "Análisis súper detallado del marco de registro de elk integrado de springboot (elasticsearch + logstash + kibana)

Introducción

El marco de registro de elk es la abreviatura de las tres tecnologías de elasticsearch, logstash y kibana. Elasticsearch es un motor de búsqueda, logstash es una plataforma de administración de registros y kibana es la interfaz gráfica de usuario de elasticsearch. El marco de registro de elk es para mostrar el registro en la página web de acuerdo con nuestros requisitos, y puede realizar consultas agregadas y análisis de filtros. No es necesario iniciar sesión en el servidor para realizar coincidencias grep y no es necesario seleccionar los errores lentamente en el archivo de registro. Primero mira las representaciones:

De la siguiente manera: la ubicación
Esta es la visualización del registro
del registro de la siguiente manera: el análisis del registro
Análisis de registros

instalación

Estos tres programas se pueden descargar desde el sitio web oficial (requiere _ 微 _ 皮 _ ah), ya los he empaquetado aquí para mayor comodidad y se pueden descargar directamente,
enlace: https://download.csdn.net/download/nienianzhi1744 / 13192854

La carpeta después de la descompresión es la siguiente:

Descomprime el directorio

Instalación de elasticsearch

1. [ Modificación del archivo de configuración] : modifique el archivo elasticsearch.yml en el directorio elasticsearch-6.8.1 / config y agregue la siguiente configuración:

#允许跨域请求
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type
#开启安全校验
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.authc.accept_default_password: true

Como se muestra en la siguiente figura:
elasticsearch.yml
2. [Establecer contraseña de inicio de sesión] : comando cmd para ingresar al directorio elasticsearch-6.8.1 / bin, ingrese el siguiente comando para configurar la contraseña de inicio de sesión:

elasticsearch-setup-passwords auto

Presione y después de presionar enter para ejecutar, y la contraseña se establecerá automáticamente, como se muestra en la siguiente figura:
Establecer contraseña de elasticsearch
copie y pegue el nombre de usuario y la contraseña para grabar, se usarán más adelante.
(Hay un problema aquí: ingresar el comando para establecer automáticamente la contraseña en Windows no reportará un error, pero ingresar el comando elasticsearch-setup-passwords interactivo para configurar manualmente la contraseña reportará un error: Fallo de conexión a: http: / /127.0.0.1:9200/ _xpack / security / _authenticate? Bastante fallido: conexión rechazada: conectar. Estudiaré por qué más tarde cuando tenga tiempo)

3. [Instalar el tokenizador de elasticsearch] : no cierre la ventana después de que se complete la ejecución del comando anterior, continúe ejecutando el comando en el directorio bin para instalar el tokenizador, este paso lleva un poco más de tiempo y el comando se ejecutará automáticamente salida en el medio para confirmar si continuar, presionamos y Continuar, la ventana estará disponible automáticamente para ingresar una vez que se complete la instalación:

elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.1/elasticsearch-analysis-ik-6.8.1.zip

(Debe instalarse aquí, de lo contrario, se informará un error durante la integración posterior: analizador [xxx] no encontrado para el campo [xxx]])

4. [Iniciar elasticsearch] : haga doble clic en elasticsearch.bat para iniciar elasticsearch. Como se muestra en la siguiente figura: Después de
Iniciar elasticsearch
comenzar, aparecerá la ventana de comando elasticsearch, no la cierre, como se muestra en la figura siguiente:
ventana de comando de elasticsearch
5: [Acceso al navegador elasticsearch] : En este momento, escriba en el navegador: http: / / localhost: 9200 /
y escriba 2 en la ventana emergente El nombre de usuario y la contraseña configurados automáticamente por paso:
Nombre de usuario:
contraseña elástica : xxx La
interfaz que se muestra a continuación indica que elasticsearch se ha iniciado correctamente. Esta página web localhost: 9200 se puede cerrado y no está disponible temporalmente.
elasticsearch comenzó con éxito

instalación de kibana

1. [ Modificación del archivo de configuración] : modifique el archivo kibana.yml en el directorio kibana-6.8.1-windows-x86_64 \ config y agregue la siguiente configuración:

#中文汉化
i18n.locale: "zh-CN"
server.host: "0.0.0.0"
# ES的访问端口号
elasticsearch.url: "http://localhost:9200"
# ES的用户名和密码
elasticsearch.username: "elastic"
elasticsearch.password: "gJRr45HLoRVzoqyRaWxO"

Como se muestra en la siguiente figura:
Modificar el archivo de configuración
2: [Acceso al navegador kibana] : Haga clic en el archivo kibana.bat en el directorio bin, la ventana cmd será como se muestra en la figura siguiente después de un inicio exitoso, no cierre la ventana.
Kibana dinámica
ventana de comando de kibana
http: // localhost: 5601 /. Ingrese el nombre de la cuenta y la contraseña: el nombre de la cuenta y la contraseña son el
nombre de usuario:
contraseña "elástica" : "xxx" mencionado en la configuración automática anterior . El
inicio de sesión es exitoso como se muestra en la siguiente figura:
página de kibana

Instalación de logstash

1. [Modificación del archivo de configuración] : cree un nuevo archivo de configuración logstash.conf en el directorio logstash-6.3.0 \ bin y agregue la siguiente configuración (hay dos configuraciones a continuación, simplemente elija una):

La primera configuración es leer el registro de la consola (yo uso esto primero): de la siguiente manera:

#读取控制台日志
input {
    
     stdin {
    
     } }

input {
    
    
  tcp {
    
    
    host => "127.0.0.1"
    port => 9250
    mode => "server"
#    tags => ["tags"]
    codec => json_lines
    }
}

# output {
    
     stdout {
    
     codec => rubydebug } }
output {
    
    
  stdout{
    
    codec =>rubydebug}
  elasticsearch {
    
    
    hosts => ["localhost:9200"]
    index => "logback-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "xxx"
  }
}

El segundo es leer el registro en el archivo: de la siguiente manera

input {
    
    
    file {
    
    
        path => "c:/opt/logs/java-contract-info.log" # 日志文件
        type => "elasticsearch"
        discover_interval => 3		  #心跳监听日志文件是否改变
        start_position => "beginning" #从文件开始处读写
    }
}

output {
    
    
 stdout{
    
    
  codec => rubydebug
 }
  elasticsearch {
    
    
   hosts => "localhost:9200"
   index => "logstash-%{+YYYY.MM.dd}"
   user => "elastic"
   password => "xxx"
  }
}

(Quiero explicar aquí. Lo más notable en la configuración anterior es: output.elasticsearch.index: "logstash -% {+ YYYY.MM.dd}"
Aquí se crea un índice llamado "logstash-date" por defecto. Se usará en kibana
)
Agregar archivo de configuración
2. [Iniciar logstash] : cmd ingresa al directorio logstash-6.3.0 \ bin y ejecuta el comando

logstash -f logstash.conf

Iniciar logstash
Después de ejecutar el comando, verá: El resultado del punto final de API Logstash iniciado correctamente {: puerto => 9600} indica que Logstash se ha iniciado. No cierre esta ventana, porque Logstash siempre supervisará nuestra consola de ideas. Esta ventana de cmd también La consola idea tiene registros que se pueden comparar (tenga en cuenta que no todos los registros de la consola se imprimirán en esta ventana, solo se imprimirán aquellos con un formato coincidente), y se generarán en el formato aquí.

integrado

Después de la complicada configuración anterior, la integración en Springboot es relativamente simple. Envíe el registro de la consola a kibana para consultas y análisis visuales, sin escribir código (ElasticsearchConfig, EKLController, ESRepository, ESData, etc.), solo necesita agregar dependencias y hacer un archivo xml de configuración. Los siguientes pasos:

1. Agregue dependencia de pom:

Primero echemos un vistazo a la estructura de mi proyecto. Agregue los siguientes archivos de configuración en el archivo pom del módulo. (Antes de agregar: si ya existe una dependencia de spring-boot-starter-web en el archivo pom, agregue la exclusión para excluir las referencias duplicadas del paquete de registro, y no se preocupe).

Excluyendo declaraciones de paquetes duplicadas:

<exclusions>
     <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
     </exclusion>
</exclusions>

Estructura del proyecto
Agregue la declaración de la que depende pom en el módulo que necesita para construir el sistema de registro:

<!-- &lt;!&ndash;elasticsearch&ndash;&gt;
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.2.1.RELEASE</version>
        </dependency>
        &lt;!&ndash; ElasticSearch &ndash;&gt;
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>6.5.0</version>
        </dependency>-->
        <!-- Java High Level REST Client -->
        <!--<dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>6.5.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.elasticsearch</groupId>
                    <artifactId>elasticsearch</artifactId>
                </exclusion>
            </exclusions>
        </dependency>-->
        <!--logstash-->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>5.2</version>
        </dependency>
        <dependency>
            <groupId>net.logstash.log4j</groupId>
            <artifactId>jsonevent-layout</artifactId>
            <version>1.6</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-core</artifactId>
                </exclusion>
            </exclusions>
            <version>1.1.8</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.8</version>
        </dependency>

PD: ¿Por qué debería comentar las varias dependencias anteriores, porque solo el posicionamiento y el análisis del registro no parecen usar el paquete jar comentado anteriormente?

2. Agregue el archivo de configuración logback.xml:

No es difícil ver en el diagrama de estructura de directorios del proyecto anterior que coloqué el archivo de configuración de registro logback.xml y el archivo de configuración de springboot en el mismo directorio.
El contenido específico de logback.xml es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--这个是logback包中自带的base.xml文件-->
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <!--对应的映射的配置名-->
    <appender name="deliver_log_appender"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--配置logStash 服务地址,9250。9250是logstash-6.3.0\bin\logstash.conf文件中配置的输出端口号 -->
        <destination>127.0.0.1:9250</destination>
        <!-- 日志输出编码 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <charset>utf8</charset>
            <!--Pattern为日志匹配的规则,也是索引的字段名,此处我们不指定,是因为在日志的打印的时候是直接打印的实体,
            实体与的字段与值是规则的json格式,所以此处不做额外处理-->
            <Pattern>%msg%n</Pattern>
        </encoder>
    </appender>

    <!--deliver_log是日志输出的名字-->
    <logger name="deliver_log" additivity="false" level="INFO">
        <!--appender-ref为映射的配置名-->
        <appender-ref ref="deliver_log_appender"/>
    </logger>
</configuration>

Relación de salida
Para springboot, la configuración anterior está bien, no es necesario escribir otro código. Inicie springboot después de que se complete la configuración

utilizar

Visitamos: localhost: 5601 y entramos en la página principal de kibana.
Haga clic en Descubrir en el menú superior a la derecha, el registro de salida llamado "deliver_log" en el sistema se mostrará aquí, y se mostrará a continuación solo cuando haya registros. como sigue
página de visualización del registro de kibana

1. Posicionamiento de troncos

En la columna de entrada del comando de arriba, descubre: ingresa las condiciones para consultar los registros relacionados, y las consultas de múltiples condiciones pueden usar conectores como y, o. Muy similar a la declaración SQL
Ubicación del registro

2. Análisis de registros

1: Ver gestión de índices

Antes del análisis de registros, es necesario crear un modo de índice. Solo después de que se crea el modo de índice, los campos del índice pueden realizar estadísticas agregadas u otras operaciones.

Haga clic en: Administración> Administración de índices para ver nuestro índice, seguido de una lista de números de documentos. Una vez creado el índice, si el registro correspondiente al índice no tiene salida de registro, el número de documentos es 0 y un índice con 0 documentos no puede crear un patrón de índice. En otras palabras, antes de crear un patrón, asegúrese de generar el registro existente (independientemente de si el resultado está en la consola o en un archivo).

PD: Algunos estudiantes pueden tener preguntas, por qué el nombre en la administración de índices es logback-2020.11.24. Esto se debe a que lo configuramos en logstash-6.3.0 \ bin \ logstash.conf en los pasos anteriores, este nombre es personalizable y se puede cambiar.
Gestión de índices

2: Crear modo de índice

Prefijo de nombre de índice + comodín. (Si el valor no coincide, pero el nombre del índice se puede ver en la administración del índice, entonces el índice no debe tener datos. En este momento, primero debemos registrar la salida y generar el registro de la lógica empresarial del programa para que coincida .) Haga clic en Siguiente paso.
El primer paso para crear un patrón de índice
Seleccione el nombre del campo del filtro de tiempo como se muestra en la figura siguiente, y luego haga clic en Crear modo de índice.
Inserte la descripción de la imagen aquí

Una vez completada la creación, podemos desplazarnos hacia abajo y ver que el modo de índice contiene nuestros nombres de campo definidos por la entidad, así como varios nombres de campo que vienen con el sistema elk. Estos nombres de campo personalizados de nuestras entidades se pueden utilizar para crear gráficos visuales.

Nombre del campo de índice
ps: Después de que se crea el índice, no hay un punto verde "que se pueda buscar y agregar" detrás del campo, luego debe hacer clic para actualizar y luego presionar OK.
Actualizar campo de índice

3: crear una vista

El funcionamiento es el siguiente: Visualización "haga clic en el signo +" qué vista se requiere (personalizado, elijo una tabla aquí) En el
Crear vista
paso anterior, elegí una tabla. Entonces, la vista se mostrará en la tabla de la derecha.
A la izquierda está la función agregada de configuración. Por supuesto, la función de agregación no necesita escribirse a mano, puede hacer clic directamente en el cuadro desplegable de la izquierda.
Por ejemplo, elijo el alce actual para recopilar 6 registros de entidad impresos. Cada registro tiene el campo de mensaje en mi entidad. Luego, quiero consultar el número de cada mensaje y mostrarlo, similar a: mensaje, recuento (mensaje). Puede realizar las siguientes opciones:
1: Selección de indicador: Recuento
2: Haga clic en el cubo, haga clic en Dividir fila. Seleccione el mensaje como campo y ordene de acuerdo con el indicador de selección: Recuento
3: haga clic en el botón de ejecución del triángulo verde que se encuentra arriba para obtener el resultado de la consulta
Inserte la descripción de la imagen aquí

para resumir

El servicio de registro de Alibaba Cloud, que se ha utilizado antes para las estadísticas de registro, es similar a esta función, pero el servicio de registro de Alibaba Cloud está cobrado, por lo que es bastante práctico estudiar este alce por mí mismo. Esta vez estudié alces y el blog de mi compañero de clase Zhou me inspiró mucho.
No hay tiempo suficiente y hay omisiones y errores inevitables en el blog. Corrígeme. elk es un sistema enorme. No es suficiente aprender a usarlo. Actualizaré mi experiencia de aprendizaje en el futuro. Bienvenidos a comunicarnos entre nosotros.

Supongo que te gusta

Origin blog.csdn.net/nienianzhi1744/article/details/110196556
Recomendado
Clasificación