GESTION DES LOGS SUR
UNE PLATEFORME WEB
AU MENU
Les logs , pourquoi faire ?
Logger en java : comment, avec quoi
Coté système : syslog and friends
Centralisation d...
APPROCHE TRADITIONNELLE
<ab>@l,vu pue ntoe lslg dn ~tma/tf/os?
bru al os ovz etyr e os as /octsuflg
<ab>o aueciia
bru n
n ...
POURQUOI ON PARLE PEU DES LOGS
Pas exactement glamour
Difficile à vendre aux clients, et donc au management
POURQUOI IL FAUDRAIT EN PARLER
Connaissance de l'usage d'une application
Connaissance de l'usage d'une plateforme
Détectio...
CE QU'ON ATTEND D'UN SYSTÈME DE LOGS
Collecte de messages issus de différentes sources
Normalisation des messages issus de...
CE QU'ON N'ATTEND PAS FORCÉMENT D'UN
SYSTÈME DE LOGS
Archivage pour raison légales
Stockage infini de fichiers
MAIS QU'EST-CE QU'UNE LOG ?
Un message émis par une application (donc par un
développeur)
Qui / Quand / Où / Quoi
LOGGER EN JAVA
AU COMMENCEMENT ÉTAIT LOG4J
Créé par Ceki Gülcü
Utilisé depuis 1823
PUIS VINRENT...
jdk-logging
Introduction d'un framework de logging dans le JDK 1.4
Peu de succès : API limitée, log levels...
POUR EN ARRIVER À SLF4J ET LOGBACK
Créés par ... Ceki Gülcü
slf4j
Successeur de commons-logging
Bindings pour les autres f...
LES RAISONS DE CHOISIR SLF4J
Approche "facade"
Bindings pour une intégration facile
sfjaijr #fcd
l4-p.a
aae
lgakcascjr#ipe...
LES RAISONS DE CHOISIR LOGBACK
Plus performant
Semble avoir une meilleure gestion de la concurrence
Configuration similair...
LES RAISONS DE CHOISIR LOGBACK
Reload des configurations
Modularisation via des includes, des variables...
Gestion des con...
LOGBACK : MODULARISATION DES CONFIGS
<nldd
icue>
<mCniuao/
jxofgrtr>
<rprynm=pten
poet ae"atr"
vle"{rgn
au=$oii}
%{dM/yyH:...
LOGBACK : GESTION DE CONDITIONS
<nldd
icue>
<fcniin"rpry"sFlLge".qasgoeae"re)>
i odto=poet(ueieogr)eulInrCs(tu""
<hn
te>
<...
INTERLUDE

QUELQUES BONNES PRATIQUES
NIVEAU DE LOG

CHOISIR LE BON LOG LEVEL N'EST PAS UNE OPTION
/ tu soy
/ re tr
lge.eu(Smti'vr bdhpee"
ogrdbg"oehn ey a apnd...
CONTENU DU MESSAGE
Donner un maximum de contexte : identifiants, contenu des
variables
Le MDC est là pour automatiser ça
#...
CONTENU DU MESSAGE
Eviter les informations sensibles
Eviter les codes d'erreur ésotériques
lge.ro(Err00";
ogrerr"ro 04)

N...
PERFORMANCE
Eviter les logs dans des boucles
Conditionner les logs si construction de message complexe
i (ogriDbgnbe(){
f ...
COMME TOUT CODE, LES LOGS SONT À REFACTORER
Après recette en dev
Après passage en prod
LE DÉVELOPPEUR EST LE PREMIER RESPONSABLE DE LA
QUALITÉ DES LOGS
LES LOGS SYSTÈME
Messages système avec syslog
Nettoyage avec logrotate
SYSLOG
Un protocole créé dans les années 80 pour gérer les logs
sendmail, puis unix
Utilisé pour écrire des logs sur disqu...
LES COMPOSANTES D'UN MESSAGE SYSLOG
Timestamp
Message
Hostname
Facility : le composant système qui a envoyé le message (0 ...
EXEMPLE DE MESSAGE SYSLOG
<8 CO Ot41:70 spotdg-e2189--(ot CD(c /& rnprs7> RN c
41:1 upr-iidv 30
ro) M
d
& u-at rpr /t/rnhu...
SYSLOG AND FRIENDS
Les limitations du syslog originel ont donné lieu à des
implémentations concurrentes
D'abord syslog-ng
...
EXEMPLE DE CONFIGURATION RSYSLOG
/t/sso.of
ecrylgcn
$oLa iusc #poie spotfrlclsse lgig
Mdod mxok
rvds upr o oa ytm ogn
$oLa...
EXEMPLE DE CONFIGURATION RSYSLOG
/t/sso./0dfutcn
ecrylgd5-eal.of
#
#Frtsm sadr lgfls Lgb fclt.
is oe tnad o ie. o y aiiy
#...
EXEMPLE DE CONFIGURATION RSYSLOG
/t/sso./9galg.of
ecrylgd9-ryo2cn
$epaeGalgOtu,<PI>%P-AE %IETM%%OTAE
tmlt ryo2upt"%R% APNM...
LOGROTATE
OBJECTIFS DE LOGROTATE
Ne pas laisser les logs devenir trop volumineuses
Ne pas laisser s'accumuler les archives de logs
PRINCIPE DE LOGROTATE
Le script / t / r n d i y l g o a eest exécuté
ecco.al/ortt
tous les jours
Et traite par défaut tout...
EXEMPLE DE CONFIGURATION
/t/ortt./pce
eclgoaedaah2
/a/w//os*lg/a/o/pce/lg {
vrww*lg/.o vrlgaah2*o
diy
al
msigk
isno
dtet
a...
LIMITES DE LOGROTATE
Système de datation pas très souple
Pas le meilleur ami des applications java
LA CENTRALISATION DES
LOGS
Récolter / transformer : logstash
Stocker / afficher : graylog2, kibana, elasticsearch
LOGSTASH

UN PIPELINE DE TRAITEMENT D'ÉVÈNEMENTS COMPOSÉ :
d'inputs : f l , s s o ...
ie ylg
de filtres et codecs : m l i ...
LOGSTASH : EXEMPLE D'INPUT
Tail d'un fichier sur disque
fl {
ie
tp = "yaah-ces
ye > m-pceacs"
pt = [/a/o/pce/yacs.o"
ah > ...
LOGSTASH : EXEMPLE DE FILTRE
Structuration d'un message avec g o
rk
go {
rk
tg = [acs'
as > 'ces]
#121..4-[9Ot21:64:9+20|y...
LOGSTASH : EXEMPLE DE FILTRE
Suppression d'un message avec g e
rp
ge {
rp
tg
as
= [acs'
> 'ces]
ngt = tu
eae > re
mth = ["...
LOGSTASH : EXEMPLE DE FILTRE
Modification d'un message avec m t t
uae
mtt {
uae
tg
as
gu
sb

}

= [ao_in]
> 'nnsg'
= [
>
"...
LOGSTASH : EXEMPLE DE FILTRE
Recomposition d'une stacktrace avec m l i i e
utln
mliie{
utln
tp = "yjv-ye
ye > m-aatp"
pten...
LOGSTASH : EXEMPLE D'OUTPUT
Envoi des logs vers graylog2 et vers la console
gl {
ef
hs = "ylgcletrcm
ot > m-o-olco.o"
tg =...
LOGSTASH : LES LIMITES
Refactoring fréquents, donc upgrades douloureux
Consommation CPU et mémoire
GRAYLOG2

UN SYSTÈME EN DEUX PARTIES
graylog2-server, un collecteur écrit en java
graylog2-web, une webapp rails
Le tout s...
LE FORMAT GELF

UNE VERSION ENRICHIE ET SOUPLE DU FORMAT SYSLOG
{
"eso" "."
vrin: 10,
"ot:"w1,
hs" ww"
"hr_esg" "hr msae,
...
GRAYLOG2-SERVER
UN AGENT JAVA QUI :

récolte les logs qui lui sont envoyées (par logstash, une appli
java...)
les stocke d...
GRAYLOG2-WEB
UNE WEBAPP QUI :

affiche tous les messages
permet une recherche multi-critères
dispose d'un mécanisme de per...
VU DE HAUT CA DONNE

© http://www.graylog2.org/
GRAYLOG2-WEB : LISTE DES MESSAGES
GRAYLOG2-WEB : DÉTAIL D'UN MESSAGE
GRAYLOG2-WEB : CONFIGURATION LOGBACK
<pedrnm=GL"cas"emoa.obcgl.efpedr>
apne ae"EF ls=m.ocrlgakefGlApne"
<aiiylgakgl<fclt>
...
GRAYLOG2-WEB : LES LIMITES
Peu de problèmes applicatifs mais...
Migrations infernales
Changements technologiques fréquents...
EXEMPLE D'APPLICATION : SUIVI D'UNE
REQUÊTE
On veut pouvoir suivre une requête dans tous les système
de l'application
On v...
EXEMPLE D'APPLICATION : SUIVI D'UNE
REQUÊTE
Coté applicatif java, il faut pouvoir recevoir cet id sous
forme de header htt...
(TENTATIVE DE DÉMO GRAYLOG2)
CENTRALISATION DES LOGS : LES AUTRES
OPTIONS
SAAS
Systèmes de collecte
Systèmes de visualisation
SAAS : LES ACTEURS
Splunk
Papertrail
Loggly
COLLECTE : FLUME
“Flume is a distributed, reliable, and available
service for efficiently collecting, aggregating,
and mov...
COLLECTE : FLUENTD
“Fluentd is a fully free and fully open-source
log collector that instantly enables you to have
a ‘Log ...
VISUALISATION : KIBANA
Projet indépendant, passé depuis sous l'ombrelle
elasticsearch
Se branche sur n'importe quel index ...
QUESTIONS ?
Upcoming SlideShare
Loading in …5
×

Gestion des logs sur une plateforme web

1,766 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,766
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
15
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Gestion des logs sur une plateforme web

  1. 1. GESTION DES LOGS SUR UNE PLATEFORME WEB
  2. 2. AU MENU Les logs , pourquoi faire ? Logger en java : comment, avec quoi Coté système : syslog and friends Centralisation des logs : les outils récents
  3. 3. APPROCHE TRADITIONNELLE <ab>@l,vu pue ntoe lslg dn ~tma/tf/os? bru al os ovz etyr e os as /octsuflg <ab>o aueciia bru n n rtcl <e> hm,j rgre dv mk e ead
  4. 4. POURQUOI ON PARLE PEU DES LOGS Pas exactement glamour Difficile à vendre aux clients, et donc au management
  5. 5. POURQUOI IL FAUDRAIT EN PARLER Connaissance de l'usage d'une application Connaissance de l'usage d'une plateforme Détection d'anomalies Et bien sûr debuggage
  6. 6. CE QU'ON ATTEND D'UN SYSTÈME DE LOGS Collecte de messages issus de différentes sources Normalisation des messages issus de ces sources Accessibilité des messages Simplification de la recherche d'information
  7. 7. CE QU'ON N'ATTEND PAS FORCÉMENT D'UN SYSTÈME DE LOGS Archivage pour raison légales Stockage infini de fichiers
  8. 8. MAIS QU'EST-CE QU'UNE LOG ? Un message émis par une application (donc par un développeur) Qui / Quand / Où / Quoi
  9. 9. LOGGER EN JAVA
  10. 10. AU COMMENCEMENT ÉTAIT LOG4J Créé par Ceki Gülcü Utilisé depuis 1823
  11. 11. PUIS VINRENT... jdk-logging Introduction d'un framework de logging dans le JDK 1.4 Peu de succès : API limitée, log levels non standards commons-logging Tentative de création d'une facade pour unifier des implémentations différentes Succès mitigé
  12. 12. POUR EN ARRIVER À SLF4J ET LOGBACK Créés par ... Ceki Gülcü slf4j Successeur de commons-logging Bindings pour les autres frameworks logback Successeur de log4j
  13. 13. LES RAISONS DE CHOISIR SLF4J Approche "facade" Bindings pour une intégration facile sfjaijr #fcd l4-p.a aae lgakcascjr#ipeetto obc-lsi.a mlmnain lgakcr.a #ipeetto obc-oejr mlmnain jloe-l4.a #rmlc cmoslgigjr c-vrsfjjr epae omn-ogn.a lgjoe-l4.a #rmlc lgj o4-vrsfjjr epae o4 jlt-l4 #big jv.tllgig u-osfj rde aaui.ogn
  14. 14. LES RAISONS DE CHOISIR LOGBACK Plus performant Semble avoir une meilleure gestion de la concurrence Configuration similaire à log4j Format des messages à la StringFormat
  15. 15. LES RAISONS DE CHOISIR LOGBACK Reload des configurations Modularisation via des includes, des variables... Gestion des conditions (if, else) Gestion de la rotation Gestion de la compression (bof)
  16. 16. LOGBACK : MODULARISATION DES CONFIGS <nldd icue> <mCniuao/ jxofgrtr> <rprynm=pten poet ae"atr" vle"{rgn au=$oii} %{dM/yyH:ms.S} dd/Myy-Hm:sSS [Xpd][XppesoI} %{i} %{hSsind] [XueI} [XuiuI} %{srd] %{nqed] [XfntoaI} %{ucinld] [tra] %hed %ee %:L-%s%" lvl C% mgn soe =cnet/ cp "otx"> <nld rsuc=lgakapne-osl.m"> icue eore"obc-pedrcnoexl/ <nld rsuc=lgakapne-ryo.m"> icue eore"obc-pedrgalgxl/ <nld rsuc=lgakapne-iexl/ icue eore"obc-pedrfl.m"> <nld rsuc=lgakcso-ogr.m"> icue eore"obc-utmlgesxl/ <nld rsuc=lgakro.m"> icue eore"obc-otxl/ <icue> /nldd
  17. 17. LOGBACK : GESTION DE CONDITIONS <nldd icue> <fcniin"rpry"sFlLge".qasgoeae"re)> i odto=poet(ueieogr)eulInrCs(tu"" <hn te> <otlvl"NO> ro ee=IF" <pedrrfrf"IE> apne-e e=FL" <pedrrfrf"EF> apne-e e=GL" <apne-e>/pedrrf<ro> /pedrrf<apne-e>/ot <te> /hn <le es> <otlvl"NO> ro ee=IF" <pedrrfrf"TOT> apne-e e=SDU" <apne-e>/ot /pedrrf<ro> <es> /le <i> /f <icue> /nldd
  18. 18. INTERLUDE QUELQUES BONNES PRATIQUES
  19. 19. NIVEAU DE LOG CHOISIR LE BON LOG LEVEL N'EST PAS UNE OPTION / tu soy / re tr lge.eu(Smti'vr bdhpee" ogrdbg"oehn ey a apnd)
  20. 20. CONTENU DU MESSAGE Donner un maximum de contexte : identifiants, contenu des variables Le MDC est là pour automatiser ça #fle o itretr itr r necpo Srn ueI =gtsrdoeo(; tig srd eUeISmhw) MCpt"srd,ueI) D.u(ueI" srd; #lgakpten obc atr %{srd XueI}
  21. 21. CONTENU DU MESSAGE Eviter les informations sensibles Eviter les codes d'erreur ésotériques lge.ro(Err00"; ogrerr"ro 04) Ne pas oublier la stacktrace lge.ro(Errwiedigsuf,e; ogrerr"ro hl on tf" ) #v s lge.ro() ogrerre;
  22. 22. PERFORMANCE Eviter les logs dans des boucles Conditionner les logs si construction de message complexe i (ogriDbgnbe(){ f lge.seuEald) lge.eu(Pitn {,{ ad{" vle,vle,vle) ogrdbg"rnig } } n }, au1 au2 au3; }
  23. 23. COMME TOUT CODE, LES LOGS SONT À REFACTORER Après recette en dev Après passage en prod
  24. 24. LE DÉVELOPPEUR EST LE PREMIER RESPONSABLE DE LA QUALITÉ DES LOGS
  25. 25. LES LOGS SYSTÈME Messages système avec syslog Nettoyage avec logrotate
  26. 26. SYSLOG Un protocole créé dans les années 80 pour gérer les logs sendmail, puis unix Utilisé pour écrire des logs sur disque, mais aussi pour envoyer ces logs à d'autres machines
  27. 27. LES COMPOSANTES D'UN MESSAGE SYSLOG Timestamp Message Hostname Facility : le composant système qui a envoyé le message (0 : kernel, 2 : mail, 16: local0...). Figé Severity : de 0 (Emergency) à 7 (Debug) PRI (8 * Facility + Severity = useless) Le pid du process Limité à de l'ASCII sur 1024 bytes
  28. 28. EXEMPLE DE MESSAGE SYSLOG <8 CO Ot41:70 spotdg-e2189--(ot CD(c /& rnprs7> RN c 41:1 upr-iidv 30 ro) M d & u-at rpr /t/rnhul) eot ecco.ory
  29. 29. SYSLOG AND FRIENDS Les limitations du syslog originel ont donné lieu à des implémentations concurrentes D'abord syslog-ng Puis rsyslog
  30. 30. EXEMPLE DE CONFIGURATION RSYSLOG /t/sso.of ecrylgcn $oLa iusc #poie spotfrlclsse lgig Mdod mxok rvds upr o oa ytm ogn $oLa iko Mdod mlg #poie kre lgigspot(rvosydn b rlg) rvds enl ogn upr peiul oe y kod #Mdodimr #poie -MR- msaecpblt $oLa mak rvds -AK- esg aaiiy #poie UPsso rcpin rvds D ylg eeto #Mdodiup $oLa md #UPevru 54 $DSreRn 1 $cinieealTmlt RYLGTaiinlieomt AtoFlDfutepae SSO_rdtoaFlFra $nldCni /t/sso./.of Icueofg ecrylgd*cn
  31. 31. EXEMPLE DE CONFIGURATION RSYSLOG /t/sso./0dfutcn ecrylgd5-eal.of # #Frtsm sadr lgfls Lgb fclt. is oe tnad o ie. o y aiiy # at,uhrv* uhatpi. /a/o/uhlg vrlgat.o **at,uhrvnn .;uhatpi.oe -vrlgsso /a/o/ylg #rn* co. /a/o/rnlg vrlgco.o #amn* deo. -vrlgdeo.o /a/o/amnlg kr. en* -vrlgkr.o /a/o/enlg #p. lr* -vrlglrlg /a/o/p.o mi. al* -vrlgmi.o /a/o/allg #sr* ue. -vrlgue.o /a/o/srlg
  32. 32. EXEMPLE DE CONFIGURATION RSYSLOG /t/sso./9galg.of ecrylgd9-ryo2cn $epaeGalgOtu,<PI>%P-AE %IETM%%OTAE tmlt ryo2upt"%R% APNM% TMSAP HSNM% %RCD %SI%%TUTRDDT%%s%n POI% MGD SRCUE-AA mg" $cinowrDfutepaeGalgOtu **@o-olco.yoanlcl54 AtoFradealTmlt ryo2upt . lgcletrmdmi.oa:1
  33. 33. LOGROTATE
  34. 34. OBJECTIFS DE LOGROTATE Ne pas laisser les logs devenir trop volumineuses Ne pas laisser s'accumuler les archives de logs
  35. 35. PRINCIPE DE LOGROTATE Le script / t / r n d i y l g o a eest exécuté ecco.al/ortt tous les jours Et traite par défaut toutes les configurations présentes dans /t/ortt. eclgoaed
  36. 36. EXEMPLE DE CONFIGURATION /t/ortt./pce eclgoaedaah2 /a/w//os*lg/a/o/pce/lg { vrww*lg/.o vrlgaah2*o diy al msigk isno dtet aex rtt 1 oae 0 mxg 1 aae 0 cmrs opes iepy fmt cet 64ro am rae 4 ot d saesrps hrdcit psrtt otoae i [- /a/u/pce.i ] te f f vrrnaah2pd ; hn /t/ntdaah2rsat>/e/ul ecii./pce etr dvnl f i edcit nsrp }
  37. 37. LIMITES DE LOGROTATE Système de datation pas très souple Pas le meilleur ami des applications java
  38. 38. LA CENTRALISATION DES LOGS Récolter / transformer : logstash Stocker / afficher : graylog2, kibana, elasticsearch
  39. 39. LOGSTASH UN PIPELINE DE TRAITEMENT D'ÉVÈNEMENTS COMPOSÉ : d'inputs : f l , s s o ... ie ylg de filtres et codecs : m l i i e g o , m t t ... utln, rk uae d'outputs : g a l g e a t c e r h l b a o r y o , l s i s a c , i r t ... Cela donne un système extrêmement souple
  40. 40. LOGSTASH : EXEMPLE D'INPUT Tail d'un fichier sur disque fl { ie tp = "yaah-ces ye > m-pceacs" pt = [/a/o/pce/yacs.o" ah > "vrlgaah2m-ceslg] ecue= [*g" xld > ".z] dbg= tu eu > re tg = [acs' as > 'ces] }
  41. 41. LOGSTASH : EXEMPLE DE FILTRE Structuration d'un message avec g o rk go { rk tg = [acs' as > 'ces] #121..4-[9Ot21:64:9+20|yevrf| 7.902||0/c/020:80 00]msre.r #43PS /pw/2gsinar HT/.|0|18570||12 4|OT d/sv/etonie TP112034|495-124 pten= "{PCEACS_ATR} atr > %AAH_CESPTEN" pten_i = "dt/t/osahaetpten." atrsdr > /aaeclgts/gn/atrsd } Définition d'une pattern AAH_CESPTEN%COEBAKT%PP}{OTcretsre}{IE PCEACS_ATR {LS_RCE}{IE%HS:urn_evr%PP} %ITpr}{IE%WR:eb %ETNEUIAHAA_RSA:eus} {N:ot%PP}{ODvr} {XEDDRPTPRMO_TRrqet HT/{UBRhtvrin%PP}{AHO_UBRrsos}{IE TP%NME:tpeso}{IE%DS_RNME:epne%PP} %DS_RNME:ye}{IE%DS_RNME:eus_ie {AHO_UBRbts%PP}{AHO_UBRrqettm} %PP}{AHO_UBRttlrqettm}{IE%DS_RWR:hSsind {IE%DS_RNME:oa_eus_ie%PP}{AHO_ODppesoI} %PP}{AHO_ODpd%PP}{NQEI:nqed {IE%DS_RWR:i}{IE%UIU_DuiuI}
  42. 42. LOGSTASH : EXEMPLE DE FILTRE Suppression d'un message avec g e rp ge { rp tg as = [acs' > 'ces] ngt = tu eae > re mth = ["msae,"iae/ ] ac > @esg" /mgs" }
  43. 43. LOGSTASH : EXEMPLE DE FILTRE Modification d'un message avec m t t uae mtt { uae tg as gu sb } = [ao_in] > 'nnsg' = [ > "msae, @esg" "m/r?in(09-AZ+" /yulsg=[-az-]), "m/r?in<RVT> /yulsg=PIAE" ]
  44. 44. LOGSTASH : EXEMPLE DE FILTRE Recomposition d'une stacktrace avec m l i i e utln mliie{ utln tp = "yjv-ye ye > m-aatp" pten= "" atr > ^s wa = "rvos ht > peiu" }
  45. 45. LOGSTASH : EXEMPLE D'OUTPUT Envoi des logs vers graylog2 et vers la console gl { ef hs = "ylgcletrcm ot > m-o-olco.o" tg = [acs' as > 'ces] lvl= "no ee > if" } sdu {dbg= tu } tot eu > re
  46. 46. LOGSTASH : LES LIMITES Refactoring fréquents, donc upgrades douloureux Consommation CPU et mémoire
  47. 47. GRAYLOG2 UN SYSTÈME EN DEUX PARTIES graylog2-server, un collecteur écrit en java graylog2-web, une webapp rails Le tout se base sur le format GELF (attention gros changements à venir)
  48. 48. LE FORMAT GELF UNE VERSION ENRICHIE ET SOUPLE DU FORMAT SYSLOG { "eso" "." vrin: 10, "ot:"w1, hs" ww" "hr_esg" "hr msae, sotmsae: Sot esg" "ulmsae:"akrc hrmr suf, fl_esg" Bctae eennoe tf" "ietm" 19892.1, tmsap: 2199842 "ee" 1 lvl: , "aiiy:"amn-akn" fclt" pyetbced, "ie:"vrwwsmfl.b, fl" /a/w/oeier" "ie:36 ln" 5, "ue_d:4, _sri" 2 "smtiges" "o" _oehn_le: fo }
  49. 49. GRAYLOG2-SERVER UN AGENT JAVA QUI : récolte les logs qui lui sont envoyées (par logstash, une appli java...) les stocke dans une instance elasticsearch
  50. 50. GRAYLOG2-WEB UNE WEBAPP QUI : affiche tous les messages permet une recherche multi-critères dispose d'un mécanisme de permissions permet d'explorer les données avec des requêtes libres
  51. 51. VU DE HAUT CA DONNE © http://www.graylog2.org/
  52. 52. GRAYLOG2-WEB : LISTE DES MESSAGES
  53. 53. GRAYLOG2-WEB : DÉTAIL D'UN MESSAGE
  54. 54. GRAYLOG2-WEB : CONFIGURATION LOGBACK <pedrnm=GL"cas"emoa.obcgl.efpedr> apne ae"EF ls=m.ocrlgakefGlApne" <aiiylgakgl<fclt> fclt>obc-ef/aiiy <ryo2evrot$galgot<galgsrehs> galgsrehs>{ryoHs}/ryo2evrot <ryo2evrot121/ryo2evrot galgsrepr>20<galgsrepr> <slgenm>re/slgenm> ueograetu<ueograe <stranm>re/stranm> uehedaetu<uehedae <ryo2evreso>..<galgsrevrin galgsrevrin096/ryo2evreso> <hntrsod10<cukhehl> cukhehl>00/hntrsod <esgpten%%E<msaeatr> msaeatr>mrx/esgpten <diinlil>i:pd/diinlil> adtoafedpd_i<adtoafed <diinlil>rgn_rgn/diinlil> adtoafedoii:oii<adtoafed <diinlil>srd_srd/diinlil> adtoafedueI:ueI<adtoafed <diinlil>nqed_nqed/diinlil> adtoafeduiuI:uiuI<adtoafed <diinlil>hSsind_hSsind/diinlil> adtoafedppesoI:ppesoI<adtoafed <apne> /pedr
  55. 55. GRAYLOG2-WEB : LES LIMITES Peu de problèmes applicatifs mais... Migrations infernales Changements technologiques fréquents Recherche textuelle parfois déroutante pour l'utilisateur
  56. 56. EXEMPLE D'APPLICATION : SUIVI D'UNE REQUÊTE On veut pouvoir suivre une requête dans tous les système de l'application On va donc générer un identifiant unique pour cette requête, et le faire passer de couche en couche RqetedrstUIU_D%UIU_De eusHae e NQEI {NQEI} 122.0.2|7.4011[4Ot21:90:0+20| 7.31110122..1|2/c/030:52 00] scr.iiot.oa|4|E /sruigclbc=o.otrstaa euedgpselcl43GT j/otn?alakfsRue.eDt HT/.|0|1|36|36|hbqeh379vgeo1 TP11205114714733ug9sibbvvbt| 238UjswZQAIRcAA 57|mGKYWAB9tAAV
  57. 57. EXEMPLE D'APPLICATION : SUIVI D'UNE REQUÊTE Coté applicatif java, il faut pouvoir recevoir cet id sous forme de header http, ou ampq / AQ / MP MCpt"NQEI" msaegtedr(.e(UIU_D,Srn.ls); D.u(UIU_D, esg.eHaes)gt"NQEI" tigcas) / o / u / HT / TP MCptMCUIU,rqetgtedr"NQEI") D.u(D_NQE eus.eHae(UIU_D); Mais aussi le faire passer sous forme de header Msaerprispoete =nwMsaerpris) esgPoete rpris e esgPoete(; poete.eHae(UIU_D,MCgt"NQEI") rprisstedr"NQEI" D.e(UIU_D); dgpsebthidxr2/021-03:404[24][5km25v1vrr2u5 iiot-ac-nee 41/031:85.2 301 udkks1s2h30jo] [27d7f7838503de13 [mcaYWAHpeAAu f63dbdfa9e5fbe23] UjnwZQAADIAA] [d1a27c082b47ac17 [ipesnTsEeuo-]IF 6560f84b9e9273a0] SmlAycakxctr1 NO cmdgpsebthcr.o luce.eRlcrcnJbanhreoao:1o.iiot.ac.oejb anhrNweiTaigoLuceDcrtr5 Apnigt Nwei tascinteprmtr=301 pedn o eRlc rnato h aaee 24
  58. 58. (TENTATIVE DE DÉMO GRAYLOG2)
  59. 59. CENTRALISATION DES LOGS : LES AUTRES OPTIONS SAAS Systèmes de collecte Systèmes de visualisation
  60. 60. SAAS : LES ACTEURS Splunk Papertrail Loggly
  61. 61. COLLECTE : FLUME “Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.” Créé chez Cloudera, donné à la fondation Apache Orienté big data Beaucoup plus souple que scribe
  62. 62. COLLECTE : FLUENTD “Fluentd is a fully free and fully open-source log collector that instantly enables you to have a ‘Log Everything’ architecture with 125+ types of systems. Fluentd treats logs as JSON, a popular machine-readable format. It is written primarily in C with a thin-Ruby wrapper that gives users flexibility.” Créé chez TreasureData Assez proche de logstash Beaucoup d'inputs / outputs, peu de filtres
  63. 63. VISUALISATION : KIBANA Projet indépendant, passé depuis sous l'ombrelle elasticsearch Se branche sur n'importe quel index elasticsearch Une option à suivre, malgré quelques lacunes de sécurité
  64. 64. QUESTIONS ?

×