Introducción y construcción del sistema de análisis de registros ELK (súper detallado)

Tabla de contenido

1. Introducción al sistema de análisis de registros ELK

2. Introducción a Elasticsearch

2.1 Descripción general de Elasticsearch

3. Introducción a Logstash

4. Introducción a Kibana

Cinco, principio de funcionamiento de ELK

6. Implementar el sistema de análisis de registros ELK

 6.1 Implementación del clúster ELK Elasticsearch (opera en los nodos Nodo1, Nodo2)

6.2 Implementar el software Elasticsearch

6.3 Crear ruta de almacenamiento de datos y autorizar

6.4 Si se debe iniciar elasticsearch con éxito  

6.5 Ver información del nodo  

 6.6 Instalar el complemento Elasticsearch-head

6.6.1 Compilar e instalar el nodo

6.6.2 Instalar phantomjs (marco de interfaz de usuario)

6.6.3 Instalar la herramienta de visualización de datos Elasticsearch-head

6.6.4 Modificar el archivo de configuración principal de Elasticsearch

6.6.5 Iniciar el servicio elasticsearch-head

6.6.6 Ver información de Elasticsearch a través de Elasticsearch-head

6.6.7 Insertar índice

6.7 Implementación de ELK Logstash (operando en nodos Apache)

6.7.1 Cambiar el nombre de host

6.7.2 Instalar el servicio Apache (httpd)

6.7.3 Instalar el entorno Java

6.7.4 Instalar logstash

6.7.5 Prueba de Logstash

6.7.6 Definir el archivo de configuración logstash


1. Introducción al sistema de análisis de registros ELK

ELK es un conjunto compuesto por tres software de código abierto que incluyen, entre otros, Elasticsearch (es para abreviar), Logstash y Kibana. Estos tres programas sintetizan ELK. Es un conjunto completo de soluciones para extracción de datos (Logstash), análisis de búsqueda (Elasticsearch) y visualización de datos (Kibana), por lo que también se le llama pila ELK.

ELK es un término general para una pila de tecnología de arquitectura de análisis de registros de código abierto y gratuito, el sitio web oficial https://www.elastic.co/cn. Contiene tres componentes básicos, a saber, Elasticsearch, Logstash y Kibana.

2. Introducción a Elasticsearch

2.1 Descripción general de Elasticsearch

Proporciona un motor de búsqueda de texto completo para usuarios distribuidos.

 ElasticSearch: es un motor de recuperación y almacenamiento distribuido desarrollado en base a Lucene (una arquitectura de motor de recuperación de texto completo), que se utiliza para almacenar varios registros. Elasticsearch está desarrollado en Java y puede comunicarse con Elasticsearch a través de una interfaz web RESTful a través de un navegador. Elasticsearch es un motor de búsqueda escalable, distribuido y en tiempo real que permite búsquedas estructuradas de texto completo. Normalmente se utiliza para indexar y buscar grandes volúmenes de datos de registro, y también se puede utilizar para buscar en muchos tipos diferentes de documentos. 

3. Introducción a Logstash

como motor de recolección de datos. Admite la recopilación dinámica de datos de varias fuentes de datos y realiza operaciones como filtrar, analizar, enriquecer y unificar el formato de los datos, y luego los almacena en una ubicación especificada por el usuario y, generalmente, los envía a Elasticsearch. Logstash está escrito en lenguaje Ruby y se ejecuta en Java Virtual Machine (JVM), es una poderosa herramienta de procesamiento de datos que puede realizar la transmisión de datos, el procesamiento de formato y la salida de formato. Logstash tiene una potente función de complemento, que a menudo se utiliza para el procesamiento de registros.

Entrada relativa (recopilación de datos) filtro (filtrado de datos) salida (salida de datos)

4. Introducción a Kibana

Kibana generalmente se implementa junto con Elasticsearch. Kibana es un poderoso panel de visualización de datos para Elasticsearch. Kibana proporciona una interfaz web gráfica para explorar los datos de registro de Elasticsearch, que se puede utilizar para resumir, analizar y buscar datos importantes.

Cinco, principio de funcionamiento de ELK

(1) Implemente Logstash en todos los servidores que necesiten recopilar registros, o primero centralice la administración de registros en el servidor de registros e implemente Logstash en el servidor de registros.

(2) Logstash recopila registros, formatea y envía registros al clúster de Elasticsearch.

(3) Elasticsearch indexa y almacena los datos formateados.

(4) Kibana consulta los datos del clúster ES para generar gráficos y muestra los datos del front-end.

Resumen: logstash, como recopilador de registros, recopila datos de fuentes de datos, filtra y formatea los datos y luego los almacena en Elasticsearch y kibana visualiza los registros.

6. Implementar el sistema de análisis de registros ELK

Nodo Nodo1 (2C/4G): nodo1/192.168.237.21 Elasticsearch Kibana

Nodo Nodo2 (2C/4G): nodo2/192.168.237.22 Elasticsearch

Nodo Apache: apache/192.168.237.23 Logstash Apache

 6.1 Implementación del clúster ELK Elasticsearch (opera en los nodos Nodo1, Nodo2)

两台node都做
vim /etc/hosts
192.168.10.13 node1 
192.168.10.14 node2   

Nota: problema de versión

java -version #Si no está instalado,

yum -y instalar java openjdk versión "1.8.0_131"

Entorno de ejecución OpenJDK (compilación 1.8.0_131-b12)

VM de servidor OpenJDK de 64 bits (compilación 25.131-b12, modo mixto)  

Se recomienda utilizar jdk.

6.2 Implementar el software Elasticsearch

(1)安装elasticsearch—rpm包
#上传elasticsearch-5.5.0.rpm到/opt目录下
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm 

(2)加载系统服务
systemctl daemon-reload    
systemctl enable elasticsearch.service

(3)修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

grep -v "^#" /etc/elasticsearch/elasticsearch.yml

6.3 Crear ruta de almacenamiento de datos y autorizar

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

6.4 Si se debe iniciar elasticsearch con éxito  

systemctl start elasticsearch.service
netstat -antp | grep 9200

6.5 Ver información del nodo  

acceso al navegador

http://192.168.237.21:9200/

http://192.168.237.22:9200/

Ver nodos Nodo1, Nodo2 

http://192.168.237.21:9200/_cluster/health?pretty

http://192.168.237.22:9200/_cluster/health?pretty

 Vea el estado de salud del clúster y podrá ver que el valor de estado es verde (verde), lo que indica que el nodo se está ejecutando de manera saludable.

 # Usar el método anterior para ver el estado del clúster no es fácil de usar. Puede administrar el clúster de manera más conveniente instalando el complemento Elasticsearch-head.

 6.6 Instalar el complemento Elasticsearch-head

Después de Elasticsearch versión 5.0, el complemento Elasticsearch-head debe instalarse como un servicio independiente y debe instalarse utilizando la herramienta npm (una herramienta de administración de paquetes para NodeJS).
Para instalar Elasticsearch-head, debe instalar el nodo de software dependiente y phantomjs por adelantado.
nodo: es un entorno de ejecución de JavaScript basado en el motor Chrome V8.
phantomjs: es una API de JavaScript basada en webkit, que puede entenderse como un navegador invisible y puede hacer cualquier cosa que pueda hacer un navegador basado en webkit.

6.6.1 Compilar e instalar el nodo

#上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y

cd /opt
tar zxvf node-v8.2.1.tar.gz

cd node-v8.2.1/
./configure
make && make install

6.6.2 Instalar phantomjs (marco de interfaz de usuario)

#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

6.6.3 Instalar la herramienta de visualización de datos Elasticsearch-head

#上传软件包 elasticsearch-head.tar.gz 到/opt
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

6.6.4 Modificar el archivo de configuración principal de Elasticsearch

vim /etc/elasticsearch/elasticsearch.yml 
...... --末尾添加以下内容-- 
http.cors.enabled: true                  #开启跨域访问支持,默认为
 false http.cors.allow-origin: "*"       #指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch

6.6.5 Iniciar el servicio elasticsearch-head

#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /usr/local/src/elasticsearch-head/
npm run start &


netstat -natp |grep 9100

6.6.6 Ver información de Elasticsearch a través de Elasticsearch-head

6.6.7 Insertar índice

#通过命令插入一个测试索引,索引为 index-demo,类型为 test。

//输出结果如下:curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

Visite http://192.168.237.21:9100/ con el navegador para ver la información del índice y podrá ver que el índice está dividido en 5 fragmentos de forma predeterminada y hay una copia. Haga clic en "Explorar datos", encontrará el índice creado en el nodo1 como demostración de índice y la información relacionada de prueba de tipo.

6.7 Implementación de ELK Logstash (operando en nodos Apache)

6.7.1 Cambiar el nombre de host

hostnamectl set-hostname apache

6.7.2 Instalar el servicio Apache (httpd)

yum -y install httpd
systemctl start httpd

6.7.3 Instalar el entorno Java

yum -y install java
java -version

6.7.4 Instalar logstash

#上传软件包 logstash-5.5.1.rpm 到/opt目录下
cd /opt
rpm -ivh logstash-5.5.1.rpm                           
systemctl start logstash.service                      
systemctl enable logstash.service

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

6.7.5 Prueba de Logstash

Opciones comunes para los comandos de Logstash: -f: a través de esta opción, puede especificar el archivo de configuración de Logstash y configurar los flujos de entrada y salida de Logstash de acuerdo con el archivo de configuración. -e: obtenido de la línea de comando, la entrada y la salida van seguidas de una cadena, que se puede usar como configuración de Logstash (si está vacía, stdin se usa como entrada y stdout se usa como salida de forma predeterminada). -t: prueba si el archivo de configuración es correcto y luego sale.

Defina flujos de entrada y salida: #La entrada usa entrada estándar, la salida usa salida estándar (similar a tuberías)

logstash -e 'input { stdin{} } output { stdout{} }'
......
www.baidu.com										#键入内容(标准输入)
2020-12-22T03:58:47.799Z node1 www.baidu.com		#输出结果(标准输出)
www.sina.com.cn										#键入内容(标准输入)
2017-12-22T03:59:02.908Z node1 www.sina.com.cn		#输出结果(标准输出)

//执行 ctrl+c 退出

#使用 rubydebug 输出详细格式显示,codec 为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
......
www.baidu.com										#键入内容(标准输入)


//El resultado no se muestra en la salida estándar, sino que se envía a Elasticsearch. Puede visitar http://192.168.10.13:9100/ con un navegador para ver la información del índice y la navegación de datos.

#使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.10.13:9200"] } }'
			 输入				输出			对接
......
www.sina.com.cn										#键入内容(标准输入)

 

6.7.6 Definir el archivo de configuración logstash

El archivo de configuración de Logstash consta básicamente de tres partes: entrada, salida y filtro (opcional, utilícelo según sea necesario).

entrada: indica la recopilación de datos de fuentes de datos, fuentes de datos comunes como Kafka, archivos de registro, etc.

filtro: indica la capa de procesamiento de datos, incluido el formato de datos, la conversión de tipos de datos, el filtrado de datos, etc., y admite expresiones regulares

salida: indica que los datos recopilados por Logstash son procesados ​​por el filtro y luego enviados a Elasticsearch.

#El formato es el siguiente:

aporte {...}

filtrar {...}

producción {...}

#En 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:

entrada {archivo {ruta =>"/var/log/messages" tipo =>"syslog"}

archivo { ruta =>"/var/log/httpd/access.log" tipo =>"apache"} }

Modifique el archivo de configuración de Logstash para recopilar registros del sistema /var/log/messages y enviarlos a elasticsearch.

chmod +r /var/log/messages					#让 Logstash 可以读取日志

vim /etc/logstash/conf.d/system.conf
input {
    file{
        path =>"/var/log/messages"						#指定要收集的日志的位置
        type =>"system"									#自定义日志类型标识
        start_position =>"beginning"					#表示从开始处收集
    }
}
output {
    elasticsearch {										#输出到 elasticsearch
        hosts => ["192.168.10.13:9200"]					#指定 elasticsearch 服务器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"					#指定输出到 elasticsearch 的索引格式
    }
}

systemctl restart logstash 

Acceda al navegador http://192.168.237.22:9100/ para ver la información del índice

Supongo que te gusta

Origin blog.csdn.net/m0_71888825/article/details/132054574
Recomendado
Clasificación