SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
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 des logs : les outils récents
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
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étection d'anomalies
Et bien sûr debuggage
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
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 non standards
commons-logging
Tentative de création d'une facade pour unifier des
implémentations différentes
Succès mitigé
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
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
LES RAISONS DE CHOISIR LOGBACK
Plus performant
Semble avoir une meilleure gestion de la concurrence
Configuration similaire à log4j
Format des messages à la StringFormat
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)
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
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
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
#fle o itretr
itr r necpo
Srn ueI =gtsrdoeo(;
tig srd
eUeISmhw)
MCpt"srd,ueI)
D.u(ueI" srd;
#lgakpten
obc atr
%{srd
XueI}
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;
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;
}
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 disque, mais aussi pour
envoyer ces logs à d'autres machines
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
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
SYSLOG AND FRIENDS
Les limitations du syslog originel ont donné lieu à des
implémentations concurrentes
D'abord syslog-ng
Puis rsyslog
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
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
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
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 toutes les configurations présentes dans
/t/ortt.
eclgoaed
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
}
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 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
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]
}
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}
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"
}
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"
]
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"
}
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
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 se base sur le format GELF
(attention gros changements à venir)
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
}
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
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
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>
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
GRAYLOG2-WEB : LES LIMITES
Peu de problèmes applicatifs mais...
Migrations infernales
Changements technologiques fréquents
Recherche textuelle parfois déroutante pour l'utilisateur
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
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
(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 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
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
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é
QUESTIONS ?

Contenu connexe

Tendances

Rapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 trRapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 trCheikh Tidiane DIABANG
 
Sécuriser un serveur web
Sécuriser un serveur webSécuriser un serveur web
Sécuriser un serveur webTaoufik JABBARI
 
Rapport administration systèmes et supervision réseaux tp3 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp3 diabang master1 trRapport administration systèmes et supervision réseaux tp3 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp3 diabang master1 trCheikh Tidiane DIABANG
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderMohamed Ben Bouzid
 
Rapport administation systèmes et supervision réseaux tp1 diabang master1 tr
Rapport administation systèmes et supervision réseaux tp1 diabang master1 trRapport administation systèmes et supervision réseaux tp1 diabang master1 tr
Rapport administation systèmes et supervision réseaux tp1 diabang master1 trCheikh Tidiane DIABANG
 
Zabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvertZabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvertLook a box
 
Nouveautés PHP 7 : Introduction et performances - MeetUP Openska
Nouveautés PHP 7 : Introduction et performances - MeetUP OpenskaNouveautés PHP 7 : Introduction et performances - MeetUP Openska
Nouveautés PHP 7 : Introduction et performances - MeetUP OpenskaOpenska
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linuxKhalid ALLILI
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logJulien Maitrehenry
 
Formation Linux lpi 101
Formation Linux lpi 101 Formation Linux lpi 101
Formation Linux lpi 101 Kais Baccour
 
Install arch ultrabook full luks ssd
Install arch ultrabook full luks ssdInstall arch ultrabook full luks ssd
Install arch ultrabook full luks ssdAnthony Le Goff
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015Stéphane Legrand
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en gokader15
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4julien pauli
 

Tendances (20)

Rapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 trRapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 tr
 
Sécuriser un serveur web
Sécuriser un serveur webSécuriser un serveur web
Sécuriser un serveur web
 
Poster réseau - DNS
Poster réseau - DNSPoster réseau - DNS
Poster réseau - DNS
 
Rapport administration systèmes et supervision réseaux tp3 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp3 diabang master1 trRapport administration systèmes et supervision réseaux tp3 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp3 diabang master1 tr
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey Spider
 
Rapport administation systèmes et supervision réseaux tp1 diabang master1 tr
Rapport administation systèmes et supervision réseaux tp1 diabang master1 trRapport administation systèmes et supervision réseaux tp1 diabang master1 tr
Rapport administation systèmes et supervision réseaux tp1 diabang master1 tr
 
Nagios twil
Nagios twilNagios twil
Nagios twil
 
Zabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvertZabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvert
 
Nouveautés PHP 7 : Introduction et performances - MeetUP Openska
Nouveautés PHP 7 : Introduction et performances - MeetUP OpenskaNouveautés PHP 7 : Introduction et performances - MeetUP Openska
Nouveautés PHP 7 : Introduction et performances - MeetUP Openska
 
Linux Administrateur
Linux AdministrateurLinux Administrateur
Linux Administrateur
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
 
Formation Linux lpi 101
Formation Linux lpi 101 Formation Linux lpi 101
Formation Linux lpi 101
 
Install arch ultrabook full luks ssd
Install arch ultrabook full luks ssdInstall arch ultrabook full luks ssd
Install arch ultrabook full luks ssd
 
Postgresql et psqlrc
Postgresql et psqlrcPostgresql et psqlrc
Postgresql et psqlrc
 
Implementing a key/value store
Implementing a key/value storeImplementing a key/value store
Implementing a key/value store
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4
 

Similaire à Gestion des logs sur une plateforme web

Solr overview presentation
Solr overview presentationSolr overview presentation
Solr overview presentationspy-seth
 
Coffee script
Coffee scriptCoffee script
Coffee scriptantho1404
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database ConnectivityKorteby Farouk
 
Beyond F5 - windbg et .Net
Beyond F5 - windbg et .NetBeyond F5 - windbg et .Net
Beyond F5 - windbg et .NetYann Schwartz
 
Mesurer la performance dans le milieu hostile du développement Java
Mesurer la performance dans le milieu hostile du développement JavaMesurer la performance dans le milieu hostile du développement Java
Mesurer la performance dans le milieu hostile du développement JavaAntonio Gomes Rodrigues
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réellesGeoffroy Arnoud
 
SkillValue Master Class NodeJS 101
SkillValue Master Class NodeJS 101SkillValue Master Class NodeJS 101
SkillValue Master Class NodeJS 101Benoit Fillon
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Yannick Chartois
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLDamien Seguy
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Google Spreadsheet, astuces et fonctions cachées pour ne plus vous en passer ...
Google Spreadsheet, astuces et fonctions cachées pour ne plus vous en passer ...Google Spreadsheet, astuces et fonctions cachées pour ne plus vous en passer ...
Google Spreadsheet, astuces et fonctions cachées pour ne plus vous en passer ...iProspect France
 
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosTp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosSaid Benaissa
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec RCdiscount
 

Similaire à Gestion des logs sur une plateforme web (20)

Solr overview presentation
Solr overview presentationSolr overview presentation
Solr overview presentation
 
Coffee script
Coffee scriptCoffee script
Coffee script
 
oracle : le PL-SQL
oracle : le PL-SQLoracle : le PL-SQL
oracle : le PL-SQL
 
Retour d'expérience sur PowerShell
Retour d'expérience sur PowerShellRetour d'expérience sur PowerShell
Retour d'expérience sur PowerShell
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Beyond F5 - windbg et .Net
Beyond F5 - windbg et .NetBeyond F5 - windbg et .Net
Beyond F5 - windbg et .Net
 
Mesurer la performance dans le milieu hostile du développement Java
Mesurer la performance dans le milieu hostile du développement JavaMesurer la performance dans le milieu hostile du développement Java
Mesurer la performance dans le milieu hostile du développement Java
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réelles
 
iTunes Stats
iTunes StatsiTunes Stats
iTunes Stats
 
Ruby STAR
Ruby STARRuby STAR
Ruby STAR
 
SkillValue Master Class NodeJS 101
SkillValue Master Class NodeJS 101SkillValue Master Class NodeJS 101
SkillValue Master Class NodeJS 101
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Google Spreadsheet, astuces et fonctions cachées pour ne plus vous en passer ...
Google Spreadsheet, astuces et fonctions cachées pour ne plus vous en passer ...Google Spreadsheet, astuces et fonctions cachées pour ne plus vous en passer ...
Google Spreadsheet, astuces et fonctions cachées pour ne plus vous en passer ...
 
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosTp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec R
 
BBL chez Mappy autour de Tsung
BBL chez Mappy autour de TsungBBL chez Mappy autour de Tsung
BBL chez Mappy autour de Tsung
 
Hello mongo
Hello mongoHello mongo
Hello mongo
 

Gestion des logs sur une plateforme web

  • 1. GESTION DES LOGS SUR UNE PLATEFORME WEB
  • 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. 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. POURQUOI ON PARLE PEU DES LOGS Pas exactement glamour Difficile à vendre aux clients, et donc au management
  • 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. 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. CE QU'ON N'ATTEND PAS FORCÉMENT D'UN SYSTÈME DE LOGS Archivage pour raison légales Stockage infini de fichiers
  • 8. MAIS QU'EST-CE QU'UNE LOG ? Un message émis par une application (donc par un développeur) Qui / Quand / Où / Quoi
  • 10. AU COMMENCEMENT ÉTAIT LOG4J Créé par Ceki Gülcü Utilisé depuis 1823
  • 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. 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. 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. LES RAISONS DE CHOISIR LOGBACK Plus performant Semble avoir une meilleure gestion de la concurrence Configuration similaire à log4j Format des messages à la StringFormat
  • 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. 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. 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
  • 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. 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. 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. 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. COMME TOUT CODE, LES LOGS SONT À REFACTORER Après recette en dev Après passage en prod
  • 24. LE DÉVELOPPEUR EST LE PREMIER RESPONSABLE DE LA QUALITÉ DES LOGS
  • 25. LES LOGS SYSTÈME Messages système avec syslog Nettoyage avec logrotate
  • 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. 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. 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. SYSLOG AND FRIENDS Les limitations du syslog originel ont donné lieu à des implémentations concurrentes D'abord syslog-ng Puis rsyslog
  • 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. 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. 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
  • 34. OBJECTIFS DE LOGROTATE Ne pas laisser les logs devenir trop volumineuses Ne pas laisser s'accumuler les archives de logs
  • 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. 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. LIMITES DE LOGROTATE Système de datation pas très souple Pas le meilleur ami des applications java
  • 38. LA CENTRALISATION DES LOGS Récolter / transformer : logstash Stocker / afficher : graylog2, kibana, elasticsearch
  • 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. 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. 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. 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. 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. 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. 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. LOGSTASH : LES LIMITES Refactoring fréquents, donc upgrades douloureux Consommation CPU et mémoire
  • 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. 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. 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. 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. VU DE HAUT CA DONNE © http://www.graylog2.org/
  • 52. GRAYLOG2-WEB : LISTE DES MESSAGES
  • 53. GRAYLOG2-WEB : DÉTAIL D'UN MESSAGE
  • 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. 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. 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. 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. (TENTATIVE DE DÉMO GRAYLOG2)
  • 59. CENTRALISATION DES LOGS : LES AUTRES OPTIONS SAAS Systèmes de collecte Systèmes de visualisation
  • 60. SAAS : LES ACTEURS Splunk Papertrail Loggly
  • 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. 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. 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é