Análisis de registros ------ servicio apache de análisis de registros ELK

Prefacio

  1. Las ventajas de hacer elk:
    mejorar la seguridad, almacenar registros de forma centralizada, ayudar en la resolución de problemas y localizar problemas;
  2. Composición de la estructura:

------------>
browser(浏览器)- --kibana(日志分析web接口)---elasticsearch cluster(分布式多用户能力的全文搜索引擎服务器)----logstash(数据采集器,格式化转换输出..---appserver(运行的服务)
  1. Tres componentes comunes del sistema de análisis de registros de alces

búsqueda elástica

Introducción: un servidor de búsqueda basado en Lucene.
Proporciona un motor de búsqueda de texto completo con capacidades distribuidas de múltiples usuarios, basado en una interfaz web RESTful.
Elasticsearch está desarrollado en Java y lanzado como código abierto bajo los términos de la licencia de Apache Es un popular motor de búsqueda empresarial.
Diseñado para usarse en computación en la nube, puede lograr búsquedas en tiempo real, estables, confiables, rápidas y fáciles de instalar y usar.

Índice de índice de nodo de
clúster casi en tiempo real (biblioteca): tipo (tabla): fragmentación y copia de documentos (registros)



logstash

Introducción:
una potente herramienta de procesamiento de datos, la herramienta de recopilación
puede realizar la transmisión de datos, el procesamiento de formato, la salida formateada,
la entrada de datos, el procesamiento de datos (filtrado, reescritura) y la salida de datos.

Componentes principales
exportadores
indexador
corredor de
búsqueda y almacenamiento de
interfaz web

Varias direcciones de complementos: https://github.com/logstash-plugins

类型:

    input类:也就是在input区域内定义使用的插件。
    codec类:定于处理数据格式,如plain,json,json_lines等格式。这个可以定义在input、output区域中。
    filter类:也就是在filter区域内定义使用的插件。
    output类:也就是在output区域内定义使用的插件。
  

input类插件,常用的插件:file、tcp、udp、syslog,beats等。

①.file插件:

file插件字段解释:
codec =>             #可选项,默认是plain,可设置其他编码方式。

discover_interval => #可选项,logstash多久检查一下path下有新文件,默认15s。

exclude =>           #可选项,排除path下不想监听的文件。

sincedb_path =>      #可选项,记录文件以及文件读取信息位置的数据文件。~/.sincedb_xxxx

sincedb_write_interval => #可选项,logstash多久写一次sincedb文件,默认15s.

stat_interval =>          #可选项,logstash多久检查一次被监听文件的变化,默认1s。

start_position =>         #可选项,logstash从哪个位置读取文件数据,默认从尾部,值为:end。初次导入,设置为:beginning。

path =>                   #必选项,配置文件路径,可定义多个。

tags =>                   #可选项,在数据处理过程中,由具体的插件来添加或者删除的标记。

type =>                   #可选项,自定义处理时间类型。比如nginx_log等

kibana

Kibana es una interfaz web de análisis de registros para Logstash y ElasticSearch. Puede usarlo para realizar búsquedas, visualización, análisis y otras operaciones eficientes en el registro.

Funciones principales:
búsqueda elástica, integración perfecta, integración de
datos, análisis de datos complejos,
para beneficiar a más miembros del equipo,
interfaz flexible, más fácil de compartir
, configuración simple, visualización de múltiples fuentes de datos,
exportación de datos simple

  1. Pasos de procesamiento de registros
    // Centralizar la gestión de
    registros // Dar formato a los registros (logstash) y enviarlos al servicio es
    // Indexar y almacenar los
    datos formateados (elasticsearch) // Visualización de datos de front-end (kibana)
apache 20.0.0.16
ND1 20.0.0.17
nd1 / kibana 20.0.0.18

1. Cree el clúster ELK-es en 20.0.0.17-18

Los pasos de configuración de los dos nodos son los mismos, seguí la configuración de un nodo para la salida;
20.0.0.17 nodo-20.0.0.18 nodo

Paso 1: modificar el archivo de hosts, asignación de hosts

1. Cambiar el archivo de host

vi   /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
20.0.0.17  nd1
20.0.0.18  nd2

2. Copie archivos de forma remota al nodo nd2

scp  /etc/hosts  root@20.0.0.18:/etc/hosts
//输入密码

3. Compruebe si el entorno Java admite

[root@nd1 ~]#   java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

Paso 2: cargue el paquete de software en el directorio local

  1. Subido a / root /
软件包:
elasticsearch-5.5.0.rpm                                //elas软件
elasticsearch-head.tar.gz                             //数据可视化工具
node-v8.2.1.tar.gz                                    //组件依赖包
phantomjs-2.1.1-linux-x86_64.tar.bz2                 //前端框架
  1. Instalar software elástico

rpm -ivh elasticsearch-5.5.0.rpm

  1. Servicio de sistema de carga

systemctl daemon-reload
systemctl enbale elasticsearch.service

  1. Cambiar el archivo de configuración principal de elasticsearch

备份 备份 :
cd / etc / elasticsearch /
cp -p elasticsearch.yml elasticsearch.yml.bak

Cambiar configuración:

vim elasticsearch.yml

17 cluster.name: my-elk-cluster
23 node.name: nd2
33 path.data: /data/elk_data
37 path.logs: /var/log/elk_log
43 bootstrap.memory_lock: false
55 network.host: 0.0.0.0
59 http.port: 9200
68 discovery.zen.ping.unicast.hosts: ["nd1", "nd2"]

// Explicación de la configuración

// Nombre del clúster // Nombre del
nodo, no puede ser el mismo, ID único
// Ruta de almacenamiento de datos
// Ruta de almacenamiento de registros
// No bloquear la memoria al inicio: Bloquear la dirección de la memoria física para evitar que se intercambie la memoria es, cámbiela a no Permitido, falso
// Proporcione la dirección IP vinculada al servicio, 0.0.0.0 representa todas las direcciones
// puerto de escucha 9200
// El descubrimiento del clúster se logra mediante unidifusión

  1. Crear directorio de datos, directorio de almacenamiento de registros

mkdir / data / elk_data
mkdri / var / log / elk_log

// Cambie el propietario y el grupo del archivo, para que els tenga permiso de acceso
// La cuenta es la cuenta del programa que se crea automáticamente cuando se instala rpm

chown elasticsearch.elasticsearch / data / elk_data
chown elasticsearch.elasticsearch / var / log / elk_log

  1. Reinicie el servicio, filtre el puerto
    systemctl restart
    elasticsearch.service netstat -antp | grep 9200

Nota:
Si el puerto no se puede filtrar, la pregunta: El contenido del archivo de configuración es inconsistente,
como por ejemplo:
¿Existe el directorio de almacenamiento de datos?
¿Existe el archivo de registro? Permisos
¿El formato es incorrecto?
¡Compruebe el contenido del archivo de configuración! ! ! ! !

Paso 3: ver la información del nodo, verificar el estado y el estado del clúster

// Este paso se puede omitir para ver y la interfaz se visualizará más tarde;

Abra el navegador e ingrese http://20.0.0.17:9200/ para ver la información del nodo

{
    
    
  "name" : "nd1",
  "cluster_name" : "my-elk-cluster",
  "cluster_uuid" : "AXIGROSISnqxKh4pb3IxvA",
  "version" : {
    
    
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

Verifique en el navegador e ingrese http://20.0.0.17:9200/_cluster/health?pretty para verificar la salud y el estado del clúster

{
    
    
  "cluster_name" : "my-elk-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

Paso 4: instalar herramientas de visualización

// Además, también debe instalarse el nodo del clúster 20.0.0.18
// El paquete de software está en el directorio raíz del host

  1. Instale el entorno de compilación
    yum -y install gcc gcc-c ++ make
  2. Compile e instale el paquete del nodo
tar zxf  node-v8.2.1.tar.gz

cd  node-v8.2.1

./configure

make -j3  (等待时间较长)

make  install
  1. Instalar phantomjs // marco front-end
cd 
tar  jxf   phantomjs-2.1.1-linux-x86_64.tar.bz2
cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs     /usr/local/bin        //将命令文件,能够被系统识别
  1. Instalar elasticsearch-head.tar.gz
cd ~

tar  zxf   elasticsearch-head.tar.gz 
 
cd   elasticsearch-head

npm install     //npm安装模块的方式,前端工具
  1. Modificar el archivo de configuración principal
vim elasticsearch.yml 

 //在末尾添加
http.cors.enabled: true
http.cors.allow-origin: "*"

//配置解释
开启跨地域访问支持,默认为false
跨域访问允许访问的域名地址
 
  1. Reiniciar el sistema de servicio
    cctl reiniciar elasticsearch

  2. Inicie la herramienta de visualización

cd   elasticsearch-head
[root@nd2 elasticsearch-head]# npm run start &       //切换到后台运行
[1] 86579
[root@nd2 elasticsearch-head]# 
> elasticsearch-head@0.0.0 start /root/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100


  1. Puerto de filtro

[root @ nd2 elasticsearch-head] # netstat -antp | grep 9100
tcp 0 0 0.0.0.0:9100 0.0.0.0:* ESCUCHA 86589 / gruñido

Ingrese 20.0.0.17:9100 para acceder, y se mostrará la interfaz visual;
// El entorno experimental no ha construido keepalived, por lo que se accede a la dirección en el clúster y el entorno de producción debe ser la dirección de servicio virtual vip o la ip del servidor proxy para
Inserte la descripción de la imagen aquí
agregar el índice

curl -XPUT 'localhost: 9200 / index-demo / test / 1? pretty & pretty' -H 'content-Type: application / json' -d '{“user”: “zhangsan”, “mesg”: “hello world”} '

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Dos, nodo 20.0.0.18 para construir kibana

Kibana es una interfaz web de análisis de registros para Logstash y ElasticSearch. Puede usarlo para realizar búsquedas, visualización, análisis y otras operaciones eficientes en el registro.

(Entorno experimental, por lo que 18 es el nodo en el clúster de elas, que también se considera kibana)

// Sube el paquete al local

rpm -ivh kibana-5.5.1-x86_64.rpm     //安装
rpm -qc kibana                       //查看软件包配置文件位置
cd /etc/kibana/                  
cp kibana.yml kibana.yml.bak          //备份配置
vim kibana.yml  
2行:server.port: 5601                 //端口
7:server.host: "0.0.0.0"              //监听地址
21:elasticsearch.url: "http://20.0.0.17:9200"    //和elas建立联系
30:kibana.index: ".kibana"               //在elas中添加的索引名称

// Iniciar el servicio

systemctl iniciar kibana.service
systemctl habilitar kibana.service

// Puerto de filtro

netstat -antp | grep 5601

3. Construya apache y logstash en el nodo 20.0.0.16

Paso 1: preparación ambiental

1. Cambió el nombre de host

hostnamectl set-hostname como
bash

2. Instale apache

yum -y install httpd          
rpm -ql httpd                    //软件包的所有文件

//启动服务httpd
systemctl start httpd        //启动服务之后,日志文件才产生
systemctl enable httpd

java -version                    //查看java环境jdk是否支持,无则安装yum -y install java

Paso 2: Instale logstash

Logstash es una canalización de procesamiento de datos del lado del servidor de código abierto que puede obtener datos de múltiples fuentes de datos al mismo tiempo, transformarlos y luego enviarlos a su "almacenamiento" favorito

// Coloque el paquete de software en el directorio

rpm -ivh logstash-5.5.1.rpm

// Iniciar logstash

systemctl start logstash.service
systemctl enanle logstash.service

// El archivo de comando, para ser reconocido por el sistema, debe ser una ruta absoluta
ln -s / usr / share / logstash / bin / logstash / usr / local / bin /

Paso 3: prueba de acoplamiento

El archivo de configuración de logstash se compone principalmente de tres partes: entrada, salida, filtro (según sea necesario)
opción de logstash
// opción:
-f: puede especificar el archivo de configuración de logstash, configurar logstash de acuerdo con el archivo de configuración
-e: seguido de cadena, cadena Se puede usar como configuración de logstash (si es "", stdin se usa como entrada y stdout como salida por defecto)
-t: prueba si el archivo de configuración es correcto y luego sale

Prueba 1: entrada y salida local

logstash -e "input { stdin{} } output { stdout{} }"
.....等待.....(第一行error报错 log4j是java日志,不影响logstash)
this is zz                                                            //输入字符
2020-10-29T08:12:43.086Z as this is zz           //输出字符

Prueba 2: use rubydebug para mostrar una salida detallada, el códec es un códec

logstash -e  "input { stdin{} } output { stdout{codec=>rubydebug} }"
.....等待.....(第一行error报错 log4j是java日志,不影响logstash)
this is aaa             //输入字符
//输出字符如下:
{
    
    
    "@timestamp" => 2020-10-29T08:17:34.050Z,
      "@version" => "1",
          "host" => "as",
       "message" => "this is aaa"
}

Prueba 3: entrada local, salida en servicio elas

logstash -e "input { stdin{} } output { elasticsearch { hosts=>["20.0.0.17:9200"] } }"
.....等待.....(第一行error报错 log4j是java日志,不影响logstash)
this is yz           //输入字符

Vista del navegador: al ingresar a la herramienta de visualización del clúster de servicios elas ip20.0.0.17: 9100
se generará el índice logstash-2020.10.29 y el registro de datos
Inserte la descripción de la imagen aquí
Prueba 4: Realice la configuración de la conexión al host Apache y use el archivo de registro del sistema para probar

chmod  o+r  /var/log/messages            //将系统日志让其他用户可以执行
//编写logstash配置
vi  /etc/logstash/conf.d/system.conf

input {
    
    
        file{
    
    
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
 }
}
output {
    
    
        elasticsearch{
    
    
        hosts => ["20.0.0.17:9200"]
        index => "system-%{+YYY.MM.dd}"
 }
}

///配置解释:
input {
    
                  ///输入
        file{
    
                   //文件
        path => "/var/log/messages"       //日志文件位置
        type => "system"                          //类型(索引)名称
        start_position => "beginning"       //从beginning开始
 }
}
output {
    
                 //输出
        elasticsearch{
    
                  //elas服务
        hosts => ["20.0.0.17:9200"]   //ip地址:实验环境集群当中的地址
        index => "system-%{+YYY.MM.dd}"
 }
}

Dos métodos para cargar la configuración:

1.重启服务 
systemctl restart logstash.service 

2.指定配置文件加载        //
cd /etc/logstash/conf.d/
logstash -f  system.conf

Verificación: El
sistema de índices se generará en es y se registrará.
Inserte la descripción de la imagen aquí
5. Apache realizará la configuración de acoplamiento y supervisará el archivo de registro; el
archivo de configuración de logstash se compone principalmente de tres partes: entrada, salida, filtro (según sea necesario)

vi /etc/logstash/conf.d/apache-log.conf 

input {
    
    
        file{
    
    
        path => "/etc/httpd/logs/access_log"
        type => "access"
        start_position => "beginning"
 }
        file{
    
    
        path => "/etc/httpd/logs/error_log"
        type => "error"
        start_position => "beginning"
 }
}
output {
    
    
        if [type] == "access" {
    
    
        elasticsearch {
    
    
        hosts => ["20.0.0.17:9200"]
        index => "apache_access-%{+YYY.MM.dd}"
  }
 }
        if [type] == "error" {
    
    
        elasticsearch {
    
    
        hosts => ["20.0.0.17:9200"]
        index => "apache_error-%{+YYY.MM.dd}"
  }
 }
}

// Explicación de la configuración

input {
    
       //下面解释跟上面system测试意思的操作差不多
       
}
output {
    
          //输出
        if [type] == "access" {
    
       //如果类型栏是access
        elasticsearch {
    
                   //输出elas服务上的记录格式
        hosts => ["20.0.0.17:9200"]
        index => "apache_access-%{+YYY.MM.dd}"
  }
 }
        if [type] == "error" {
    
         //如果类型栏是error
        elasticsearch {
    
                   //输出elas服务上的记录格式
        hosts => ["20.0.0.17:9200"]
        index => "apache_error-%{+YYY.MM.dd}"
  }
 }
}

es verificación genera el nombre de índice definido:

Nota:
Si el índice no aparece en la verificación en este momento, regístrelo. El servicio httpd debe reiniciarse o recargarse, y luego el archivo de configuración especificado por logstash se carga en es

Inserte la descripción de la imagen aquí

Cuarto, verificación de kibana

Verificación 1

Prueba 4: Realice la configuración de la conexión al host Apache, use el archivo de registro del sistema para probar la
visualización y una vista más optimizada del registro.
Ingrese http://20.0.0.18:5601 para
ingresar a la interfaz de kibana ---- le permitirá crear un nombre de índice o patrón --- -Introduzca el sistema de nombre de índice correcto- * en es (no se puede crear si es incorrecto) ---- haga clic en crear a continuación
Inserte la descripción de la imagen aquí

Verificación 2

Apache docking configuración, monitorear archivos de registro;
crear administración ------ patrones de índice ------ crear patrón de índice crear índice

// ¡Índice de entrada incorrecto, no se puede crear! ! !
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_47320286/article/details/109367511
Recomendado
Clasificación