I. Descripción general
1. ELK consta de tres componentes
2. Función
Recopilación de registros Análisis de registros Visualización de registros
3. ¿Por qué usarlo?
Los registros son muy importantes para analizar el estado de los sistemas y aplicaciones, pero generalmente la cantidad de registros es relativamente grande y está dispersa.
Si hay menos servidores o programas para administrar, también podemos iniciar sesión en cada servidor uno por uno para verlos y analizarlos.
Pero si la cantidad de servidores o programas es relativamente grande, este método parecerá impotente. En base a esto, también se aplican algunos sistemas de registro centralizados.
En la actualidad, los más famosos y maduros son Splunk (comercial), Scribe de FaceBook, Chukwa de Apache, Fluentd de Cloudera y ELK, etc.
2. Componentes
1.búsqueda elástica
análisis de registros
Programa de almacenamiento, análisis y recopilación de registros de código abierto
características
Distribuido, sin configuración, descubrimiento automático, fragmentación automática de índices
Mecanismo de copia de índice Interfaz de estilo tranquilo Múltiples fuentes de datos Carga de búsqueda automática
2.logstash
colección de registros
Herramientas para recopilar, analizar y filtrar registros
Proceso de trabajo
El método de trabajo general es la arquitectura c/s, el cliente se instala en el servidor que necesita recopilar registros y el servidor es responsable de filtrar y modificar los registros recibidos de cada nodo y luego enviarlos a Elasticsearch.
Entradas → Filtros → Salidas
Entrada --> Filtro --> Salida
APORTE
Archivo: lee desde un archivo en el sistema de archivos, similar al comando tail -f |
Syslog: escuche los mensajes de registro del sistema en el puerto 514 y analícelos de acuerdo con el estándar RFC3164 |
Redis: leer desde el servicio redis |
Beats: leer desde filebeat |
FILETES
Grok: al analizar datos de texto arbitrarios, Grok es el complemento más importante para Logstash. Su función principal es convertir cadenas en formato de texto en datos estructurados específicos y utilizarlos con expresiones regulares. |
Expresión oficial de grok: logstash-patterns-core/patterns en main logstash-plugins/logstash-patterns-core GitHub |
Depuración en línea de Grok: Depurador de Grok |
Mutar: Transformar el campo. Por ejemplo, eliminar, reemplazar, modificar, cambiar el nombre de campos, etc. |
Soltar: Soltar algunos eventos sin procesar. |
Clonar: Copie el Evento, y también se pueden agregar o eliminar campos durante este proceso. |
Geoip: agregue información geográfica (para la pantalla gráfica frontal de kibana) |
SALIDAS
Elasticsearch: puede guardar datos de manera eficiente y consultarlos de manera conveniente y sencilla. |
Archivo: guarde los datos del evento en un archivo. |
Graphite: envía datos de eventos al componente gráfico, que es un componente de visualización gráfica de almacenamiento de código abierto popular. |
3. kibana
La visualización de registros
es una interfaz web amigable para que Logstash y ElasticSearch realicen análisis en función de los registros recopilados y almacenados, lo que puede ayudar a resumir, analizar y buscar registros de datos importantes.
3. Tipo de arquitectura
ALCE
es logstash kibana
ELKK
es logstash kafka kibana
ELFK
es logstash (el peso pesado consume más recursos del sistema) filebeat (el peso ligero ocupa menos recursos del sistema) kibana
ELFKK
es logstash filebeat kafka kibana
4. Caso
Experimento de clúster del sistema de recopilación de registros ELK
1. Topología experimental
2. Configuración del entorno
Establezca la dirección IP de cada host como IP estática en la topología, modifique los nombres de host nodo1 y nodo2 en los dos nodos y configure el archivo de hosts.
nodo1:
hostnamectl set-hostname nodo1
vim/etc/hosts
192.168.2.4 nodo1
192.168.2.3 nodo2
nodo2:
hostnamectl set-hostname nodo2
vim/etc/hosts
192.168.2.4 nodo1
192.168.2.3 nodo2
3. Instale elasticsearch de los nodos nodo1 y nodo2
1. Instalación
mv alce paquete alce
discos compactos cada uno
rpm -ivh elasticsearch-5.5.0.rpm
2. Configuración
nodo1:
vim /etc/elasticsearch/elasticsearch.yml
cluster.name:my-elk-cluster //nombre del cluster
nodo.nombre:nodo1 //nombre de nodo
path.data:/var/lib/elasticsearch //ruta de almacenamiento de datos
path.logs: /var/log/elasticsearch/ //ruta de almacenamiento de registros
bootstrap.memory_lock: false //No bloquear la memoria al inicio
network.host:0.0.0.0 // Proporciona la dirección IP vinculada al servicio, 0.0.0.0 representa todas las direcciones
http.port:9200 //El puerto de escucha es 9200
Discovery.zen.ping.unicast.hosts: ["nodo1", "nodo2"] // El descubrimiento de clústeres se realiza mediante unidifusión
nodo2:
vim /etc/elasticsearch/elasticsearch.yml
cluster.name:my-elk-cluster //nombre del cluster
nodo.nombre:nodo2 //nombre de nodo
path.data:/var/lib/elasticsearch //ruta de almacenamiento de datos
path.logs: /var/log/elasticsearch/ //ruta de almacenamiento de registros
bootstrap.memory_lock: false //No bloquear la memoria al inicio
network.host:0.0.0.0 // Proporciona la dirección IP vinculada al servicio, 0.0.0.0 representa todas las direcciones
http.port:9200 //El puerto de escucha es 9200
Discovery.zen.ping.unicast.hosts: ["nodo1", "nodo2"] // El descubrimiento de clústeres se realiza mediante unidifusión
3. Inicie el servicio elasticsearch
nodo1 y nodo2
systemctl iniciar búsqueda elástica
4. Ver información del nodo
3. Instale el complemento elasticsearch-head en el nodo1
1. Instalar nodo
discos compactos cada uno
tar xf nodo-v8.2.1.tar.gz
nodo cd-v8.2.1
./configure && make && make install
Espere a que se complete la instalación.
2. Copiar comando
discos compactos cada uno
tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
3. Instale el cabezal de búsqueda elástico
discos compactos cada uno
tar xf elasticsearch-head.tar.gz
cd elasticcabezal de búsqueda
instalación npm
4. Modifique el archivo de configuración de elasticsearch
vim /etc/elasticsearch/elasticsearch.yml
# Requerir nombres explícitos al eliminar índices:
#
#action.destructivo_requires_name: verdadero
http.cors.enabled: true // Habilita el soporte de acceso entre dominios, el valor predeterminado es falso
http.cors.allow-origin: "*" //Dirección de dominio permitida para acceso entre dominios
Reinicie el servicio: systemctl reinicie elasticsearch
5. Inicie elasticsearch-head
cd /root/elk/elasticsearch-head
inicio de ejecución de npm &
Ver monitoreo: netstat -anput | grep :9100
6. Visita:
7. prueba
Ingrese en la terminal del nodo1:
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Tipo de contenido: aplicación/json' -d '{"user":"zhangsan","mesg":"hola mundo"} '
Actualiza el navegador para ver la información correspondiente
4. Instale logstash en el servidor nodo1
discos compactos cada uno
rpm -ivh logstash-5.5.1.rpm
systemctl inicia logstash.servicio
En -s /usr/share/logstash/bin/logstash /usr/local/bin/
Prueba 1: entrada y salida estándar
logstash -e 'entrada{ stdin{} }salida { stdout{} }'
Prueba 2: decodificación con rubydebug
logstash -e 'entrada { stdin{} } salida { stdout{ codec=>rubydebug }}'
Prueba 3: salida a elasticsearch
logstash -e 'entrada { stdin{} } salida { elasticsearch{ hosts=>["192.168.2.3:9200"]} }'
Ver resultados:
Si no puedes verlo, ¡actualiza! ! !
5. Formato de archivo de recopilación de registros de Logstash (almacenado en /etc/logstash/conf.d de forma predeterminada)
El archivo de configuración de Logstash consta básicamente de tres partes: entrada, salida y filtro (según sea necesario). El formato del archivo de configuración estándar es el siguiente:
entrada (...) entrada
filtrar {...} filtrar
salida {...} salida
Dentro de cada sección, también se pueden especificar múltiples métodos de acceso. Por ejemplo, para especificar dos archivos de origen de registro, el formato es el siguiente:
aporte {
archivo{ruta =>"/var/log/messages" tipo =>"syslog"}
archivo {ruta =>"/var/log/apache/access.log" tipo =>"apache"}
}
Caso: recopilación de registros de información del sistema a través de logstash
chmod o+r /var/log/mensajes
vim /etc/logstash/conf.d/system.conf
aporte {
archivo{
ruta =>"/var/log/mensajes"
tipo => "sistema"
start_position => "comienzo"
}
}
producción {
búsqueda elástica {
hosts =>["192.168.1.1:9200"]
índice => "sistema-%{+AAAA.MM.dd}"
}
}
Reinicie el servicio de registro: systemctl restart logstash
Ver registros: http://192.168.2.3:9100
Seis, instalación del nodo 1 en kibana
discos compactos cada uno
rpm -ivh kibana-5.5.1-x86_64.rpm
1. Configurar kibana
vim /etc/kibana/kibana.yml
server.port: 5601 //El puerto abierto por Kibana
server.host: "0.0.0.0" //La dirección en la que Kibana escucha
elasticsearch.url: "http://192.168.8.134:9200"
//Establecer una conexión con Elasticsearch
kibana.index: ".kibana" //Agregar índice .kibana en Elasticsearch
2. Iniciar kibana
systemctl iniciar kibana
3. Acceder a kibana:
La primera visita necesita agregar un índice, agregamos el índice que se agregó antes: sistema-*
7. Caso empresarial:
1. Recopile información del registro de acceso httpd
2. Instale logstash en el servidor httpd, parametrice el proceso de instalación anterior y no es necesario realizar pruebas.
3. logstash actúa como un agente (agente) en el servidor httpd y no es necesario iniciarlo
4. Escriba el archivo de configuración de recopilación de registros httpd
vim /etc/logstash/conf.d/httpd.conf
aporte {
archivo{
path=>"/var/log/httpd/access_log" //Recopilar registros de acceso de Apache
type => "access" //El tipo se especifica como acceso
start_position => "principio" // recopilar desde el principio
}
producción{
búsqueda elástica {
hosts =>["192.168.8.134:9200"] // dirección y puerto de escucha de elasticsearch
index => "httpd_access-%{+YYYY.MM.dd}" //Especifica el formato del índice
}
}
5. Utilice el comando logstash para importar la configuración:
logstash -f /etc/logstash/conf.d/httpd.conf
¡Usa kibana para verlo! http://192.168.2.3:5601 ¡ Crea el índice httpd_access-* en la pestaña de administración al visualizar!