filebeat + logstash + influxdb + Grafana para crear un sistema de monitoreo de registros del sitio web

filebeat + logstash + influxdb + Grafana para crear un sistema de monitoreo de registros del sitio web

 

yexiansen preocupación

0.822018.02.01 13:13:22 número de palabras 1,093 lectura 3,109

filebeat + logstash + influxdb + Grafana para crear un sistema de monitoreo de registros del sitio web

imagen

Recopilar datos (fliebeat) -> filtrar datos (logstash) -> almacenar datos (InfluxDB) -> mostrar datos (Grafana).

Con recursos limitados, construí este servicio en un servidor CentOS 7.

latido de archivo

Filebeat es una herramienta de envío de archivos de registro. Después de instalar el cliente en su servidor, filebeat monitoreará el directorio de registro o los archivos de registro especificados, rastreará y leerá estos archivos (rastrea los cambios de archivo, sigue leyendo) y reenviará esta información Vaya a elasticsearch o logstarsh.
El siguiente es el flujo de trabajo de filebeat: cuando inicia el programa filebeat, se iniciará uno o más detectores (prospectores) para detectar el directorio de registro o archivo que especifique. Para cada archivo de registro encontrado por el detector, se inicia filebeat Proceso de cosecha (cosechadora), cada proceso de cosecha lee el nuevo contenido de un archivo de registro y envía estos nuevos datos de registro al programa de procesamiento (spooler), el programa de procesamiento reunirá estos eventos y finalmente filebeat enviará los datos recopilados a usted. Ubicación.

Una breve descripción de logstash

Logstash es un motor de recopilación de datos de código abierto con capacidades de transmisión de datos en tiempo real. Puede filtrar uniformemente datos de diferentes fuentes y enviarlos al destino de acuerdo con las especificaciones establecidas por el desarrollador.
Como su nombre lo indica, Logstash recopila objetos de datos como archivos de registro. Debido a que hay muchas fuentes de archivos de registro (como registros del sistema, registros del servidor, etc.) y el contenido es desordenado, no es fácil para los humanos observarlo. Por lo tanto, podemos usar Logstash para recopilar y filtrar uniformemente los archivos de registro en contenido altamente legible, lo que es conveniente para que los desarrolladores o el personal de operación y mantenimiento observen, a fin de analizar de manera efectiva el rendimiento del sistema / operación del proyecto y hacer monitoreo y advertencia temprana. Trabajo de preparación, etc.

breve influxdb

InfluxDB es una base de datos distribuida de series de tiempo, eventos e indicadores de código abierto. Escrito en Go, no se requieren dependencias externas. Su objetivo de diseño es lograr una expansión distribuida y escalable horizontalmente.

Breve descripción de Grafana

Grafana es un panel de medidas completo y un editor gráfico desarrollado basado en JS, una herramienta para ayudar a los desarrolladores a encontrar problemas

La relación entre varios

filebeat es responsable de recopilar datos de registro recién generados y enviarlos a logstash para el filtrado de datos. logstash envía los datos formateados a la base de datos de series de tiempo influxdb. grafana lee los datos de la base de datos influxdb y los muestra en tiempo real, monitoreando el estado del sitio web, como el número de visitas por minuto El número de bytes enviados, la situación de 500, etc.

Pasos para construir un sistema de monitoreo de registro de sitio web

1. Configuración del servidor Nginx

1.1 La configuración de log_format es la siguiente

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent  $request_time "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

1.2 El formato de archivo de registro correspondiente es el siguiente

192.168.154.2 - - [30/Mar/2017:01:27:09 -0700] \"GET /index.html HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36\" \"-\""

2.instalación y configuración de logstash

2.1 La instalación de logstash, mi versión es logstash-5.6.1-1.noarch

yum install logstash

2.2 La regularidad de grok en logstash (agregado en logstash / vendor / bundle / jruby / 1.9 / gems / logstash-patterns-core-xxx / patterns / grok-patterns)

WZ ([^ ]*)
NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{NUMBER:request_time} %{QS:referer} %{QS:agent} %{QS:xforward}

2.3 Contenido del archivo de configuración logstash.conf

input {
    file {
        path     => ["/var/log/nginx/access.log"]
        type    => "nginxlog"
        start_position => "beginning"
    }
}

filter {  
    grok {  
      match => { "message" => "%{NGINXACCESS}" }
    }  
} 
output {

    influxdb {
                     db => "influxdb中的数据库名"
                     host => "localhost"
                     port => "8086"
                     user => "你的账号"
                     password => "你的密码"
             coerce_values => {
                     "request" => "varchar"
                     "status" => "varchar"
               }
                    data_points => {
                                  "request" => "%{request}"
                                  "status" => "%{status}"
                                  "referer"=>"%{referer}"
                                  "agent"=>"%{agent}"
                                  "method"=>"%{method}"
                                  "remote_ip"=>"%{remote_ip}"
                                  "bytes"=>"%{bytes}"
                                  "host"=>"%{host}"
                                  "timestamp"=>"%{timestamp}"
                      
                    }

} 

3. instalación y configuración de archivos

3.1 Instalación de Filebeat

Mi versión de Filebeat es 5.1.1

yum install filebeat

3.2 Configuración de Filebeat, el archivo de configuración generalmente se encuentra en / etc / filebeat /

filebeat.prospectors:                                                                              
- input_type: log 
  paths:
    - /var/log/nginx/access.log
output.logstash:
  hosts: ["localhost:5044"] //监控本机的5044端口,可以自己定义需要和logstash配置文件中的beats端口一致

3.3 hoyos escalonados

El archivo de configuración de logstash está en / etc / logstash /, necesitamos configurar un enlace suave en / usr / share / logstah / config

ln -s /etc/logstash/* /usr/share/logstash/config/

El archivo de configuración que configuramos en /etc/logstash/conf.d/ también necesita estar conectado a / usr / share / logstash /, que es diferente del anterior

ln -s /etc/logstash/conf.d/logostash.conf /usr/share/logstash/

Logstash 5.0 y versiones posteriores han eliminado muchos complementos, incluido el complemento ifluxdb. Necesitamos usar gem para instalar. Enlace a lo siguiente para instalar el complemento Logstash en forma de paquete Gems

4. Instalación y configuración de influxdb

4.1 Instalación de influxdb

Mi versión es influxdb-1.0.2.x86_64.rpm

yum install influxdb

4.2 Configuración de Influxdb

//管理后台配置,可以根据ip或者域名+端口号8083访问influxdb数据库的管理后台
[admin]
  enabled = true
  bind-address = ":8083"
[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = false
  log-enabled = true
  write-tracing = false
  pprof-enabled = false                                                                                                                             
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"
  max-row-limit = 10000
  realm = "InfluxDB"

5. Instalación y configuración de Grafana

5.1 Instalación de Grfana

Mi versión de Grfana es grafana-4.2.0-1.x86_64.rpm

yum install grafana

5.2 Iniciando Grafana

service granfan rstart

5.3 Configuración de Grafana, fuente de datos de configuración

 

imagen

5.4 Abra el servicio para que se ejecute en segundo plano, monitoree los registros y visualice en tiempo real

nohup bin/logstash -f test.conf --path.data=/var/ &

6. Conclusión

Después de dos días de estudio y varias dificultades, finalmente construimos una interfaz de monitoreo en tiempo real muy hermosa, que conduce a nuestro monitoreo en tiempo real del estado de ejecución del sitio web.

17 artículos originales publicados · Me gusta 228 · Visita 330,000+

Supongo que te gusta

Origin blog.csdn.net/cxu123321/article/details/105470333
Recomendado
Clasificación