
Coletando LOGs do Synology no Elasticsearch e visualizando-os no Grafana
Poço, Outro post é sobre como coletar logs e visualizá-los para entender o que está acontecendo em nossa infraestrutura, hoje temos um documento onde veremos como enviar os Logs de um Synology para o nosso Logstash e depois armazená-lo no Elasticsearch e finalmente visualizá-lo com o Grafana.
Então, ¡caña al mono que es de goma! (que viejo soy, agur yogur…) Vai! Si tenemos una NAS del fabricante Synology y queremos saber qué es lo que pasa en ella, lo mejor es siempre tirarnos a los logs, pero es un poco aburrido leer líneas y líneas de texto, que no siempre van en tiempo real, que nos cuesta comprender… Pues para eso (y otras cosas más) tenemos Elastic Stack, donde la Synology enviará los Logs a Logstash, ahí los recibiremos y los trataremos, separando en distintos campos la info que nos interesa y luego se almacene en Elasticsearch. Para visualizar los datos siempre podemos usar Kibana, pero es que yo soy más de Grafana, Desculpa, así que sea la elección que sea, podrás visualizar esos datos recopilados en distintos formatos, en tablas, gráficas, Queijos, mapamundis… así interpretarás qué pasa en la Synology, quién accede o lo intenta, y qué hace… podrás verlo como siempre, en tiempo real o a modo histórico para hacer consultas. Começou!
Primeiro, obviamente temos que ter a parte do Elastic Stack instalada, O que foiArmazenamento, Elasticsearch eKibana; luego ya sería indicarle a nuestra Synology que envíe los Logs a Logstash, para o porto de nossa escolha, nos inventaremos uno, desde el “Centro de Registros“ > “Envío de registros” > habilitamos “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.
Entrada { TCP { tipo => "Synology" porta => "1516" tags => ["Synology"] } } filtro { se [tipo] == "Synology" { Grok { correspondência => { "Mensagem" => [ "^<%{DERRUBE:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{NOME DO HOST:host_title} WinFileService Event: %{PALAVRA:Ação}, Caminho: %{DADOS GANANCIOSOS:Caminho}, File/Folder: %{PALAVRA:path_type}, Size: %{BASE10NUM:file_size} %{PALAVRA:file_size_unit}, Utilizador: %{NOME DE UTILIZADOR:nome de usuário}, IP: %{IP:src_ip}", "^<%{DERRUBE:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{NOME DO HOST:host_title} Conexão: Utilizador \[%{NOME DE UTILIZADOR:nome de usuário}\] De \[%{NOME DO HOST:Equipo}\(%{IP:src_ip}\)\] via \[%{DATA:Protocolo}\] %{DADOS GANANCIOSOS:Mensagem} \[%{DATA:shared_folder}\]", "^<%{DERRUBE:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{NOME DO HOST:host_title} Conexão: Utilizador \[(%{NOME DE UTILIZADOR:nome de usuário})?\] De \[%{IP:src_ip}\] %{DADOS GANANCIOSOS:Mensagem}", "^<%{DERRUBE:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{NOME DO HOST:host_title} Connection\[%{INT:Id_proc}\]: SYSTEM: %{DADOS GANANCIOSOS:Mensagem}", "^<%{DERRUBE:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{NOME DO HOST:host_title} Sistema %{NOME DE UTILIZADOR:nome de usuário}: %{DADOS GANANCIOSOS:Mensagem}" ] } } } } saída { se ([tipo]=="Synology"){ ElasticSearch { índice => "synology-%{+AAAAA. 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.conf’ y con este contenido algo haremos.
Depois que o arquivo de configuração for criado, recordar reiniciar el servicio de Logstash para recargar. Depois, como sempre, iremos para o Kibana e, assim que os dados chegarem, podemos ir para "Gerenciamento" > "Gerenciamento de pilha" > "Kibana" > "Padrões de índice" > "Criar padrão de índice" para criar o padrão de índice, Como eu disse, como de costume (neste caso e sem as aspas) ‘synology-*’ y tendremos los datos ya en Elasticsearch almacenados de manera correcta. Ahora podríamos conectarnos desde “Analytics” > “Discover” a nuestro índice de Synology y visualizar que está recogiendo datos.
Y luego ya, depois de criar o índice no Kibana, ahora en nuestro Grafana deberíamos crear un “Data Source” que apunte contra nuestro Elasticsearch y el índice de Synology. Então é deixar sua imaginação correr solta, faça um Dashboard com diferentes Dashboards, com dados diferentes para visualizar, Um de Estilo Sankey para visualizar IPs de origem/destino e o tráfego que está sendo enviado, em formato de coluna, emimpasse para ver datos concretos de por ejemplo los logins correctos, Incorreto, las conexiones, los ficheros que se crean, modifican, eliminan, los usuarios que realizan la acción…