Zabbix monitorea las alertas de registro anormales de ELK

本文来了解一下企业级日志解决方案ELK中的“L”(Logstash),没错,就是这个神奇小组件,用过的都知道,它是ELK不可缺少的组件,完成了输入(input),过滤(fileter),output(输出)工作,也是需要掌握的难点,说到这里 ,又爱又恨;“爱之好,恨之难”;这个Logstash拥有这强大的插件功能,除了帮我们过滤,高效的输出日志,还能帮我们与Zabbix监控相结合?

Logstash admite una variedad de tipos de salida, que pueden recopilar registros de servicios web, registros del sistema, registros del kernel, etc.; sin embargo, dado que existen registros de salida, la aparición de registros de errores es definitivamente inevitable; cuando aparecen registros de errores, se pueden buscar a través de ELK. Salga, pero ELK no puede proporcionar la función de alarma en tiempo real, lo cual es un poco vergonzoso. Pero no importa, el complemento Logstash se puede combinar con Zabbix para recopilar los registros que requieren alarmas (por ejemplo: error) para completar el monitoreo de registros y activar alarmas.

Primero instale el complemento logstash-output-zabbix:

[root@localhost ~]# /usr/local/logstash/bin/logstash-plugin install logstash-output-zabbix     
Validating logstash-output-zabbix
Installing logstash-output-zabbix
Installation successful

[Filebeat] Terminal de recopilación de registros



filebeat.inputs:- type: log
  enabled: true
  paths:   - /var/log/secure   - /var/log/messages   - /var/log/cron
  fields:
    log_topic: system_log
processors: - drop_fields:
    fields: ["beat", "input", "source", "offset", "prospector"] #这里在filebeat中直接去掉不需要的字段。
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
name: 192.168.37.147        #这是日志输出标识,表明日志来自哪个主机,后面再logstash会用到。
output.kafka:
  enabled: true
  hosts: ["192.168.37.147:9092", "192.168.37.148:9092", "192.168.37.149:9092"]    #日志输出到kafka集群
  version: "0.10"
  topic: '%{[fields.log_topic]}' 
  partition.round_robin:
    reachable_only: true
  worker: 2
  required_acks: 1
  compression: gzip
  max_message_bytes: 10000000
logging.level: debug

[Logstash] Procesamiento de datos


Zabbix monitorea las alertas de registro anormales de ELK

[root@localhost ~]# vim /usr/local/logstash/config/etc/system_log.conf
input {
        kafka {
        bootstrap_servers => "192.168.37.147:9092,192.168.37.148:9092,192.168.37.149:9092"
        topics => ["system_log"]
        codec => "json"
        }
}

filter {    if [fields][log_topic] == "system_log" {    #指定filebeat产生的日志主题
             mutate {
             add_field => [ "[zabbix_key]", "oslogs" ]      #新增的字段,字段名是zabbix_key,值为oslogs。
             add_field => [ "[zabbix_host]", "%{[host][name]}" ]   #新增的字段,字段名是zabbix_host,值可以在这里直接定义,也可以引用字段变量来获取。这里的%{[host][name]获取的就是日志数据的来源IP,这个来源IP在filebeat配置中的name选项进行定义。
             }
         }
    grok {
             match => { "message" => "%{SYSLOGTIMESTAMP:message_timestamp} %{SYSLOGHOST:hostname} %{DATA:message_program}(?:\[%{POSINT:message_pid}\])?: %{GREEDYDATA:message_content}" } #这里通过grok对message字段的数据进行字段划分,这里将message字段划分了5个子字段。其中,message_content字段会在output中用到。
        }
        mutate {        #这里是删除不需要的字段
            remove_field => "@version"
            remove_field => "message"
        }
        date {      #这里是对日志输出中的日期字段进行转换,其中message_timestamp字段是默认输出的时间日期字段,将这个字段的值传给 @timestamp字段。
                match => [ "message_timestamp","MMM  d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]
        }
}

output {        if [message_content]  =~ /(ERR|error|ERROR|Failed)/  {   #定义在message_content字段中,需要过滤的关键字信息,也就是在message_content字段中出现给出的这些关键字,那么就将这些信息发送给zabbix。
              zabbix {
                        zabbix_host => "[zabbix_host]"      #这个zabbix_host将获取上面filter部分定义的字段变量%{[host][name]的值
                        zabbix_key => "[zabbix_key]"        #这个zabbix_key将获取上面filter部分中给出的值
                        zabbix_server_host => "192.168.37.149"  #这是指定zabbix server的IP地址
                        zabbix_server_port => "10051"           #这是指定zabbix server的监听端口
                        zabbix_value => "message_content"              #定要传给zabbix监控项item(oslogs)的值, zabbix_value默认的值是"message"字段,因为上面我们已经删除了"message"字段,因此,这里需要重新指定,根据上面filter部分对"message"字段的内容划分,这里指定为"message_content"字段,其实,"message_content"字段输出的就是服务器上具体的日志内容。
                        }
                    }
}

[Logstash] Prueba y comienza


[root@localhost logstash]# nohup /usr/local/logstash/bin/logstash -f config/etc/system_log.conf --path.data=/tmp/

Zabbix monitorea las alertas de registro anormales de ELK

No estoy seguro de si el archivo de configuración de eventos es correcto, se puede ejecutar en primer plano y enviar a stdout; verifique que los registros recopilados por filebeat se hayan filtrado correctamente.
Agregue la instrucción stdout {codec => rubydebug} a la terminal de salida, ejecute la prueba en primer plano y vea si puede filtrar la salida del registro de errores. El efecto es el siguiente ~ (Recuerde comentar esta instrucción y ejecutarla en el fondo después de ok)

[root@localhost logstash]# /usr/local/logstash/bin/logstash -f config/etc/system_log.conf --path.data=/tmp/

Zabbix monitorea las alertas de registro anormales de ELK

La plantilla de monitoreo de Zabbix se crea hasta que se activa la alarma


1. Crea una plantilla

Zabbix monitorea las alertas de registro anormales de ELK

2. Cree un conjunto de aplicaciones, haga clic en Conjunto de aplicaciones-Crear conjunto de aplicaciones

Zabbix monitorea las alertas de registro anormales de ELK

3. Cree un elemento de supervisión, haga clic en el elemento de supervisión para crear un elemento de supervisión

Zabbix monitorea las alertas de registro anormales de ELK

4. Disparador de alarma, crear disparador

Zabbix monitorea las alertas de registro anormales de ELK

Zabbix monitorea las alertas de registro anormales de ELK

5. Conecte la plantilla que creamos para recopilar registros al host que necesita recopilar registros para verificar el efecto de la activación de la alarma.

Zabbix monitorea las alertas de registro anormales de ELK

Alerta de prueba


SSH se conecta al host de recopilación de registros 192.168.37.147, ingresa deliberadamente la contraseña incorrecta para que el sistema genere un registro de errores, verifica que sea suficiente para enviar al final de zabbix, la siguiente es la información del registro de errores que filtramos, como " error "," Falló ", etc. ~ hasta ahora Hasta ahora, la salida del registro de errores se ha recopilado con éxito ~

Zabbix monitorea las alertas de registro anormales de ELK

para resumir


Echemos un vistazo al tren de pensamiento:

Nuestra arquitectura básicamente no ha cambiado. Aún así, filebat recopila registros y los envía a la cola de mensajes de kibana, y luego Logstash va a extraer los datos del registro y finalmente los transfiere después del procesamiento; es solo una salida de transferencia a zabbix; esto la función se puede realizar. El héroe principal es el complemento Logsatsh (logstash-output-zabbix);

Cabe señalar aquí que la IP del terminal de recopilación de filebeat debe corresponder a la IP del host de monitoreo zabbix; de lo contrario, el registro no pasará ~

Comparta un pequeño truco: a través de este comando puede probar el valor clave definido en zabbix; la siguiente salida se vuelve normal ~, si el valor que no es cero indica falla

[root@localhost zabbix_sender]# /usr/local/zabbix/bin/zabbix_sender -s 192.168.37.147 -z 192.168.37.149 -k "oslogs" -o 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000081"
sent: 1; skipped: 0; total: 1
  • -s: especifica el agente local

  • -z: especifica el servidor zabbix

  • -k: especifica el valor de la clave

Cuando tu corazón está inquieto y no puedes calmarte por mucho tiempo, es hora de estudiar ¿Por qué estudiar y por qué trabajar duro? Debido a que las cosas que quieres son muy caras, no puedes pedirlas y eres demasiado ordinario, por lo que no puedes hacer nada más que estudiar mucho, solo pensar, hacer cosas extraordinarias en lo ordinario ~

Supongo que te gusta

Origin blog.51cto.com/15127501/2656739
Recomendado
Clasificación