Recopilant els LOGs de Synology a Elasticsearch i visualitzant-los a Grafana

Bo, va un altre post de recopilar logs i visualitzar-los per comprendre què passa en la nostra infraestructura, avui tenim un document on veurem com enviar els Logs d'una Synology al nostre Logstash per després emmagatzemar-lo a Elasticsearch i finalment visualitzar-lo amb Grafana.

Així que, ¡canya a la granota que és de goma! (que vell sóc, agur iogurt…) va! Si tenim una NAS del fabricant Synology i volem saber què és el que hi passa, el millor és sempre tirar-nos als logs, però és una mica avorrit llegir línies i línies de text, que no sempre van en temps real, que ens costa comprendre… Doncs per a això (i altres coses més) tenim Elastic Stack, on la Synology enviarà els Logs a Logstash, ací els rebrem i els tractarem, separant en diferents camps la informació que ens interessa i després s'emmagatzema a Elasticsearch. Per visualitzar les dades sempre podem fer servir Kibana, però és que jo sóc més de Grafana, ho sento, així que sigui l'elecció que sigui, podràs visualitzar aquestes dades recopilades en diferents formats, en taules, gràfiques, formacits, mapamundis… així interpretaràs què passa a la Synology, qui accedeix o ho intenta, i què fa… podràs veure-ho com sempre, en temps real o a mode històric per fer consultes. Comencem!

 

Primer òbviament hem de tenir la part d'Elastic Stack instal·lada, el que ve sentLogstashElasticsearch yKibana; llavors ja seria dir-li a la nostra Synology que enviï els Logs a Logstash, al port que ens pugui agradar, ens inventarem un, des del “Centre de Registres > “Enviament de registres” > habilitem “Enviar registros a un syslog server”, indicamos la IP de Logstash y el puerto y TCP o UDP a elección. Y aplicamos los cambios.

 

input {
        tcp {
                type => "Synology"
                port => "1516"
                tags => ["Synology"]
        }
}

filter {

        if [type] == "Synology" {
                        grok {
                            match => { "message" => [
                              "^<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{HOSTNAME:host_title} WinFileService Event: %{WORD:action}, Path: %{GREEDYDATA:path}, File/Folder: %{WORD:path_type}, Size: %{BASE10NUM:file_size} %{WORD:file_size_unit}, User: %{USERNAME:username}, IP: %{IP:src_ip}",
                              "^<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{HOSTNAME:host_title} Connection: User \[%{USERNAME:username}\] from \[%{HOSTNAME:Equipo}\(%{IP:src_ip}\)\] via \[%{DATA:Protocolo}\] %{GREEDYDATA:Missatge} \[%{DATA:shared_folder}\]",
                              "^<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{HOSTNAME:host_title} Connection: User \[(%{USERNAME:username})?\] from \[%{IP:src_ip}\] %{GREEDYDATA:Missatge}",
                              "^<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{HOSTNAME:host_title} Connection\[%{INT:Id_proc}\]: SYSTEM: %{GREEDYDATA:Missatge}",
                              "^<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{HOSTNAME:host_title} System %{USERNAME:username}: %{GREEDYDATA:Missatge}"
                                       ]
                            }
                        }
        }
}

output {

        if ([type]=="Synology"){

                elasticsearch {
                   index => "synology-%{+YYYY.MM.dd}"
                   hosts => "DIRECCION_IP_ELASTICSEARCH:9200"
                }

        }
}

Ahora nos vamos a nuestro Logstash, y ahí podremos crear filtros para separar los distintos campos de los distintos logs que recibamos. Como siempre mejorable, pero estos grok nos valdrán al menos para una Synology DSM con versión 7.0. Así que creamos un fichero de configuración, por ejemplo ‘/etc/logstash/conf.d/synology.confy con este contenido algo haremos.

 

Un cop creat el fitxer de configuració, recordar reiniciar el servicio de Logstash para recargar. Después como siempre, anirem a Kibana i un cop les dades estiguin entrant ja podrem anar a "Management" > "Stack management" > "Kibana" > "Index Patterns" > "Crea't index pattern" per crear el patró de l'índex, el que s' ha dit, com habitualment (en aquest cas i sense les cometes) ‘synology-*’ y tendremos los datos ya en Elasticsearch almacenados de manera correcta. Ahora podríamos conectarnos desdeAnalytics” > “Discover” a nuestro índice de Synology y visualizar que está recogiendo datos.

 

Y luego ya, tras crear el índice en Kibana, ahora en nuestro Grafana deberíamos crear un “Data Source” que apunte contra nuestro Elasticsearch y el índice de Synology. Després ja és deixar volar la imaginació, fer un Dashboard amb diferents Panells, amb diferents dades a visualitzar, uno de estilo Sankey para ver IPs origen/destino y el tráfico que se envían, en formato columnas, entaules para ver datos concretos de por ejemplo los logins correctos, incorrectes, las conexiones, los ficheros que se crean, modifican, eliminan, los usuarios que realizan la acción…

 

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!

Instal·lació de GLPI

21 d'October de 2021