ElasticSearch, Logstash y Kiabana implementan ELK nginx log

ELK consta de tres herramientas de código abierto, ElasticSearch, Logstash y Kiabana.

1. Descripción general de ELK

1. Introducción a ELK

ElasticSearch: Es un motor de búsqueda distribuido de código abierto, sus características son: distribuido, configuración cero, descubrimiento automático, fragmentación automática de índices, mecanismo de copia de índices, interfaz de estilo restful, múltiples fuentes de datos, carga de búsqueda automática, etc.

Logstash:  es una herramienta de código completamente abierto que puede recopilar, analizar y almacenar sus registros para su uso posterior.

Kibana: también es una herramienta de código abierto y gratuita, Kibana se puede utilizar para Logstash 

Y la interfaz web amigable para el análisis de registros proporcionada por ElasticSearch puede ayudar a agregar, analizar y buscar registros de datos importantes.

2. Pila y arquitectura del protocolo ELK

 

ELK en realidad no es una pieza de software, sino un conjunto de soluciones. Es el acrónimo de tres productos de software, Elasticsearch, Logstash y Kibana. Estos tres softwares son todos software de código abierto, generalmente utilizados en conjunto, y pertenecen sucesivamente a la empresa elastic.co, por lo que se denominan pila de protocolos ELK.

Implemente logstash en todos los servicios que necesitan recopilar registros. Logstash recopila los registros generados por el servidor de aplicaciones, recopila los registros y los entrega al servicio de búsqueda de texto completo ElasticSearch, mientras que Kibana consulta los datos del clúster ES para generar gráficos y luego los devuelve al navegador del cliente.

二 ,ElasticSearch

2.1 Descripción general de ElasticSearch

ElasticSearch es un servidor de búsqueda basado en Lucene. Proporciona un motor de búsqueda de texto completo con capacidades distribuidas para múltiples usuarios, basado en una interfaz web RESTful. Elasticsearch está desarrollado en Java y lanzado como fuente abierta bajo los términos de la licencia de Apache. Actualmente es un popular motor de búsqueda empresarial para diseño en la nube En el cálculo , se puede lograr una búsqueda en tiempo real, que es estable, confiable, rápida y fácil de instalar y usar.

Elasticsearch es un motor de búsqueda y análisis distribuido en tiempo real en comparación con la base de datos: La mayoría de las bases de datos parecen ahora extremadamente incompetentes en términos de extraer el conocimiento disponible. Pueden filtrar consultas por marca de tiempo o coincidencia exacta, pero no pueden realizar búsquedas de texto completo, procesar sinónimos y calificar documentos según su relevancia. Elasticsearch puede generar resultados de análisis y agregación basados ​​en los mismos datos, lo más importante es que pueden procesar datos en tiempo real sin una gran cantidad de procesos de trabajo (threads).

2.2 Escenarios de la aplicación ElasticSearch

En la era de Internet, para crear un sitio web o una aplicación, es necesario agregar funciones de búsqueda para realizar tanto la búsqueda en el sitio como la búsqueda fuera del sitio, pero es muy difícil completar la búsqueda y garantizar la función y el rendimiento de la operacion. Queremos que las soluciones de búsqueda se ejecuten rápidamente. Queremos tener una configuración cero y un modo de búsqueda completamente libre. Queremos poder usar JSON para indexar datos a través de HTTP. Esperamos que nuestro servidor de búsqueda esté siempre disponible. Esperamos poder comenzar desde una y expandirnos a cientos de aplicaciones, queremos búsqueda en tiempo real, queremos multi-tenancy simple y queremos construir una solución en la nube. Entonces usamos Elasticsearch para resolver todos estos problemas y más problemas que puedan surgir.

En cuanto a ElasticSearch, el despliegue de Kibana hace referencia a los dos artículos anteriores:

https://blog.csdn.net/lchmyhua88/article/details/88928311

https://blog.csdn.net/lchmyhua88/article/details/103183862

En este artículo, hablo principalmente sobre el uso de ELK y la construcción de Logstash.

Primero compile ElasticSearch, Kibana, lo que uso aquí es:

kibana-7.6.2-linux-x86_64 ; elasticsearch-7.6.2 ; elasticsearch-analysis-ik-7.6.2 ; logstash-7.6.2 ;

Elasticsearch instala ik word segmentation (los dos artículos anteriores ya han hablado de ello y no lo repetiremos aquí).

Echemos un vistazo a la construcción de Logstash, descargue directamente el paquete tar 7.6.2 del sitio web oficial , descomprímalo y configúrelo:

Escribimos los registros a los que accede nginxf en elasticsearch :

nginx.conf establece el formato de registro de acceso:

log_format main '$ remote_addr - $ remote_user [$ time_local]'

                     'fwf [$ http_x_fordered_for] consejo [$ http_true_client_ip]'

                     '$ upstream_addr $ upstream_response_time $ request_time'

                     '$ geoip_country_code'

                     '$ http_host $ solicitud'

                     '"$ estado" $ body_bytes_sent "$ http_referer"'

                     '"$ http_accept_language" "$ http_user_agent"';

Abra access_log en la configuración de lch.demo.com.conf en vhost:

Luego creamos un archivo logstash.conf en el directorio de logstash-7.6.2, el contenido es el siguiente:

input {         file {                 path => "/var/log/nginx/lch.demo.com-error.log"                 type => "system-log"                 start_position => "begin"         } } output {         elasticsearch {                 hosts => "127.0 .0.1: 9200 "                 index =>" system_log -% {+ AAAA.MM.dd} "         } }











Entonces tenemos que iniciar logstash:

./bin/logstash -f /htdocs/share/logstash-7.6.2/logstash.conf

Puede ver que el registro se ha incluido en elasticsearch, podemos ver:

curl -X GET HTTP://127.0.0.1:9200/_cat/indices?v

Luego, inicie sesión en el backend de Kibana y configure el índice ahora mismo:

 

 Haga clic en Siguiente para establecer el nombre del campo del filtro: seleccione "@ marca de tiempo"

 Guarde, vuelva a la página de inicio y abra la búsqueda system_log *, puede ver el contenido del registro de nginx en este momento, puede buscar las palabras clave en el registro:

Puede ver que el registro se ha enviado a  elasticsearch. También puede escribir varios registros escritos por el programa para redistribuirlos y luego escribirlos en elasticsearch.

Al iniciar elasticsearch o logstash, se puede informar del siguiente error, memoria insuficiente. En este momento, debe modificar la configuración predeterminada de jvm.options de elasticsearch o logstash, la predeterminada es 1G, puede cambiarla a un tamaño más pequeño, por supuesto, si la configuración de la computadora es alta, no la necesita.

Advertencia de máquina virtual del servidor Java HotSpot (TM) de 64 bits: INFO: os :: commit_memory (0x00000000c0000000, 174456832, 0) falló; error = 'No se puede asignar memoria' (errno = 12) # # No hay memoria suficiente para que el entorno de ejecución de Java continúe. # La asignación de memoria nativa (mmap) no pudo asignar 174456832 bytes para confirmar la memoria reservada.

 

 

Supongo que te gusta

Origin blog.csdn.net/lchmyhua88/article/details/107690351
Recomendado
Clasificación