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.