log management
TRANSCRIPT
www.linkedin.com/in/cabreramartin/es
slideshare.net/martinjcabrera
ING. MARTIN J. CABRERAProfesional en Telecomunicaciones y Tecnología de la InformaciónPerito informático Forense - Poder Judicial de la Nación
Master Business Administration (MBA) – Universidad CEMA.Ingeniero en Sistemas de Información – Universidad Abierta Interamericana.
AREAS DE TRABAJO Y RESEARCHNetworking y Sistemas de Información.Gestión de Servicios tecnológicos.Sistema de Gestión de Seguridad (SGSI).Desarrollo de planes de inversión para proyectos tecnológicos.Informática Forense.Delitos Informáticos.
Actualmente colaboro en la publicación de artículos en portales de divulgación tecnológica del sector. Poseo experiencia en presentaciones de proyectos tecnológicas para compañías privadas y presentaciones de tendencias tecnológicas en eventos locales de la industria.
#WHOAMI
PROBLEMÁTICA ACTUAL
LOG MANAGEMENT ≠ EVENT MANAGEMENT
o Estatico
o Múltiples formatos de logs
o Grandes volúmenes de información = Limite de historial
o Limitaciones de almacenamiento
o Análisis de logs = No hay una forma fácil de buscar
o Sistemas propietarios = Logs propietarios
o Diferentes tipos de logs son tratados iguales:
o Error logs
o Transaction logs
o Trace logs
o Warnings logs
o Debugs logs
o Escalable – Redundante - Seguro
NECESIDADES DE LOGGING ACTUALES
o Multiple Input / Multiple Output
o Centralización de logs
o Troubleshooting issues
o Eventos de red
o Sistemas de gestión
o Posibilidad de ejecutar acciones en base a eventos
o Security
o Análisis de logs para la detección de comportamientos sospechosos
o Detección de intrusiones – Malware activity
o Unautorized resourse usage
o Monitoring
o Monitoreo de utilización de recursos
o Capacity planning
o Estadisticas/Metricas de utilizacion de recursos
o Developers Logging
o Nuevos formatos: xml, json, tweet
o Integración con sistemas de gestión operativos
o Dashboard: métricas – estadísticas – panel de control
LOGGING
ARQUITECTURA
SYSLOGS
Servers, routers, firewalls…
ACCESSLOG
Apache webservers
LOG EVENT
Java webapplications (JVM)
BROKER
APP APP
APP APP
FORWARDER
INDEXER VISUALIZE
Search & Storage
Real time reports, dashboards, plots,alerts
grok, mutate, multiline, csv, anonymize, etc
lumberjack
SSL
LOGGING
PLUGING
BENCHMARKING
Logstash
http://www.logstash.netgraphite
http://graphite.wikidot.com/Fluentd
www.fluentd.org/Beaver
github.com/josegonzalez/beaverLogstash-Forwarder
github.com/elasticsearch/logstash-forwarderWoodchuck
github.com/danryan/woodchuckSYSLOG
http://rsyslog.comHeka
http://hekad.readthedocs.org/en/latest/Collectd
https://collectd.org/ElasticSearch
http://www.elasticsearch.com/
SaaS
Cloud log Management service
Loggly
https://www.loggly.com/Papertrail
https://papertrailapp.com/Splunk
http://es.splunk.com/LogEntries
https://logentries.com/
HTTP-URL-monitoring
Pingdom
https://www.pingdom.com
Cloud Monitoring Service
DataDog
https://www.datadoghq.com/Circonus
http://www.circonus.com/Librato
https://metrics.librato.com/
Dashboad
Grafana
http://grafana.org/
Kivana
http://www.elasticsearch.org/overview/kibana/
heroku
http://dashingdemo.herokuapp.com/sample
Atlasboard
http://atlasboard.bitbucket.org/
Gdash
http://www.devco.net/archives/2011/10/08/gdash-graphite-dashboard.php
Giraffe
http://kenhub.github.io/giraffe/#dashboard=Demo&timeFrame=1d
OPEN SOURCE
LOGSTASH
https://github.com/elasticsearch/logstash/doc
Herramienta para la recolección, procesamiento y envió de logs.
Permite la implementación de un sistema redundante y distribuido mediante la
utilización de módulos independientes y redundantes entre si.
Collects logs
Parses logs
Stores logs
Indexes logs
Busqueda y filtrado de logs
Inputs: Server logs, snmp events, windows event, iptables, Routers syslogs,
databases, Netflow, rsyslogs via tcp/udp
+60 codecs
Filters: csv, geoip, grok, mutate, etc
Outputs: elasticsearch, email, exec, mongodb, rabbitmq, redis, etc
Each must have at least an input, filter, or output stanza
from syslog and normalize duration to milliseconds
http://www.logstash.net/
LOG PLUGINS
# with an input plugin:# you can also use this codec with an output.input { file {codec => collectd {authfile => ... # string (optional)nan_handling => ... # string, one of ["change_value", "warn", "drop"] (optional), default:
"change_value"nan_tag => ... # string (optional), default: "_collectdNaN"nan_value => ... # number (optional), default: 0prune_intervals => ... # boolean (optional), default: truesecurity_level => ... # string, one of ["None", "Sign", "Encrypt"] (optional), default: "None"typesdb => ... # array (optional)
}}
}
https://github.com/elasticsearch/logstash/blob/v1.4.2/lib/logstash/codecs/collectd.rb
ELASTICSEARCH
ElasticSearch es una herramienta opensource de búsqueda y análisis de información en
tiempo real.
Sistema redundante
Alta disponibilidad
Multi-tenancy
http://www.elasticsearch.com/
GROK
Es una herramienta de análisis semántico que permite el uso de expresiones regulares para el
`parseo´, filtrado y posterior tratamiento de información.
raw log:
Aug 2 13:29:58 pixl-ram sshd[1631]: Accepted publickey for ram from 192.168.30.1 port 49864 ssh2
non parsed:
{“text“: “Aug 2 13:29:58 pixl-ram sshd[1631]: Accepted publickey for ram from 192.168.30.1 port 49864 ssh2”}
Ejemplo de grok en logstash
{“text“: “Aug 2 13:29:58 pixl-ram sshd[1631]: Accepted publickey for ram from 192.168.30.1 port 49864 ssh2”, “time”: “Aug 2 13:29:58”, “host”: “pixl-ram”, ”process”: “sshd”, “pid”: 1631}
Busqueda: time > “Aug 1 2014”
Herramienta Online de parseo:
http://grokdebug.herokuapp.com/http://grokconstructor.appspot.com/
KIBANA
Herramienta de análisis y visualización de información procesada y guardada en
elasticsearch
HTML + JavaScript
./bin/logstash web -a ADDRESS -p PORT
COLLECTD
Collect, es una herramienta que permite capturar ciertas estadísticas del sistema y vuelca estos
datos en una gráfica.
Una de su principal característica es que a diferencia de otros sistemas similares collect no utiliza
crontab para colectar estos datos, sino que cuenta con su propio demonio para dicho propósito.
http://collectd.org/
RRD is great, and initially Graphite did use RRD for storage. Over time though, we ran into several issues
inherent to RRD's design.
1.RRD can't take updates for a timestamp prior to its most recent update. So for example, if you miss an
update for some reason you have no simple way of back-filling your RRD file by telling rrdtool to apply an
update to the past. Whisper does not have this limitation, and this makes importing historical data into
Graphite way way easier.
2.At the time whisper was written, RRD did not support compacting multiple updates into a single operation.
This feature is critical to Graphite's scalability.
3.RRD doesn't like irregular updates. If you update an RRD but don't follow up another update soon, your
original update will be lost. This is the straw that broke the camel's back, since Graphite is used for various
operational metrics, some of which do not occur regularly (randomly occuring errors for instance) we started to
notice that Graphite sometimes wouldn't display data points which we knew existed because we'd received
alarms on them from other tools. The problem turned out to be that RRD was dropping the data points
because they were irregular. Whisper had to be written to ensure that all data was reliably stored and
accessible.
PORQUE USAR RRD COMO DB?