La Suite ELK au service des développeurs et de la production

La Suite ELK au service des développeurs et de la production

Comment la Suite ELK facilite la centralisation et la corrélation d'indicateurs hétérogènes, pour une meilleure prise de décision.

7d1caf9df777b3b2cf474ff743494335?s=128

Jérémy Lecour

October 14, 2016
Tweet

Transcript

  1. Suite ELK au service des développeurs et de la production

  2. observer, mesurer, améliorer Icons by Alexander Skowalsky, Shawn Schmidt and

    Andreas Bjurenborg from the Noun Project
  3. logiciels libres au service de l’entreprise

  4. metrics

  5. metrics métier

  6. metrics • utilisateurs connectés • nombre de commandes • panier

    moyen • état du stock métier
  7. metrics • utilisateurs connectés • nombre de commandes • panier

    moyen • état du stock métier système
  8. metrics • utilisateurs connectés • nombre de commandes • panier

    moyen • état du stock • temps de chargement • taux d’échec • réponse de la BDD • disponibilité des services métier système
  9. sources hétérogènes

  10. sources hétérogènes

  11. sources hétérogènes

  12. sources hétérogènes

  13. sources hétérogènes

  14. sources hétérogènes

  15. étude de cas

  16. xeonys-fr-01 HAProxy Apache/FPM A1 Apache/FPM A2 BDD-A Queues Varnish Apache/FPM

    B1 Apache/FPM B2 BDD-B Queues Apache/FPM B3 xeonys-uk HAProxy Varnish Apache/FPM 1 Apache/FPM 2 BDD Queues xeonys-de HAProxy Varnish Apache/FPM 1 Apache/FPM 2 BDD Queues Apache/FPM 3
  17. Icon by Chameleon Design from the Noun Project

  18. Icon by Chameleon Design from the Noun Project

  19. Icon by Chameleon Design from the Noun Project indicateurs imprécis

  20. Icon by Chameleon Design from the Noun Project indicateurs imprécis

  21. Icon by Chameleon Design from the Noun Project indicateurs imprécis

    logs éparpillés
  22. Icons by Chameleon Design, il Capitano, Shmidt Sergey and Kirby

    Wu from the Noun Project
  23. Icons by Chameleon Design, il Capitano, Shmidt Sergey and Kirby

    Wu from the Noun Project
  24. Icons by Chameleon Design, il Capitano, Shmidt Sergey and Kirby

    Wu from the Noun Project
  25. Icons by Chameleon Design, il Capitano, Shmidt Sergey and Kirby

    Wu from the Noun Project
  26. ELK Icons by Chameleon Design, il Capitano, Shmidt Sergey and

    Kirby Wu from the Noun Project
  27. ELK

  28. ELK Elasticsearch

  29. ELK Elasticsearch • Logstash

  30. ELK Elasticsearch • Logstash • Kibana

  31. Logstash

  32. Logstash Extract Transform Load

  33. Logstash Extract Transform Load inputs: beats: port: 5044 gelf: port:

    12201 use_udp: true
  34. Logstash Extract Transform Load inputs: beats: port: 5044 gelf: port:

    12201 use_udp: true filters: grok: pattern: httpd date: match: dd-MMM-YYYY HH:mm:ss mutate: convert: [line: integer] geoip: src: remote_ip target: geo
  35. Logstash Extract Transform Load inputs: beats: port: 5044 gelf: port:

    12201 use_udp: true filters: grok: pattern: httpd date: match: dd-MMM-YYYY HH:mm:ss mutate: convert: [line: integer] geoip: src: remote_ip target: geo outputs: elasticsearch: host: 127.0.0.1:9200 index: logs-%{type}-%{+YYYY.MM.dd} stdout: codec: rubydebug
  36. Elasticsearch la base de donnée au cœur de tout

  37. Elasticsearch

  38. Elasticsearch Performance

  39. Elasticsearch Performance Interface REST/HTTP

  40. Elasticsearch Performance Interface REST/HTTP Syntaxe JSON

  41. Elasticsearch Performance Interface REST/HTTP Syntaxe JSON Cluster natif

  42. Elasticsearch Performance Interface REST/HTTP Syntaxe JSON Cluster natif Simple et

    souple
  43. Elasticsearch indexation de documents Icons by Chameleon Design and Shmidt

    Sergey from the Noun Project
  44. Elasticsearch indexation de documents Icons by Chameleon Design and Shmidt

    Sergey from the Noun Project
  45. Elasticsearch indexation de documents Icons by Chameleon Design and Shmidt

    Sergey from the Noun Project
  46. index Icon by Shmidt Sergey from the Noun Project

  47. logs-http Icon by Shmidt Sergey from the Noun Project

  48. logs-http-{YMD} Icon by Shmidt Sergey from the Noun Project

  49. logs-http-{YMD} 2016.10.10 Icon by Shmidt Sergey from the Noun Project

  50. logs-http-{YMD} 2016.10.11 2016.10.10 Icon by Shmidt Sergey from the Noun

    Project
  51. logs-http-{YMD} 2016.10.12 2016.10.11 2016.10.10 Icon by Shmidt Sergey from the

    Noun Project
  52. logs-http-{YMD} 2016.10.13 2016.10.12 2016.10.11 2016.10.10 Icon by Shmidt Sergey from

    the Noun Project
  53. logs-http-{YMD} 2016.10.14 2016.10.13 2016.10.12 2016.10.11 2016.10.10 Icon by Shmidt Sergey

    from the Noun Project
  54. logs-http-{YMD} 2016.10.14 2016.10.13 2016.10.12 2016.10.11 2016.10.10 2015.08.02 Icon by Shmidt

    Sergey from the Noun Project
  55. logs-http-{YMD} 2016.10.14 2016.10.13 2016.10.12 2016.10.11 2016.10.10 2015.08.02 ❌ Icon by

    Shmidt Sergey from the Noun Project
  56. logs-http-{YMD} 2016.10.14 2016.10.13 2016.10.12 2016.10.11 2016.10.10 2015.08.02 recherche ciblée :

    j-2 ❌ { Icon by Shmidt Sergey from the Noun Project
  57. administration facile

  58. administration facile paquets à installer

  59. administration facile paquets à installer très peu de config de

    départ
  60. administration facile paquets à installer très peu de config de

    départ cluster trivial
  61. administration facile paquets à installer très peu de config de

    départ cluster trivial sauvegardes par snapshot
  62. documents

  63. $ curl -XGET 'http://localhost:9200/_search' -d '{ "query": { "bool" :

    { "must" : { "query_string" : { "query" : "some query string here" } }, "filter" : { "term" : { "user" : "kimchy" } } } } } ' documents
  64. $ curl -XGET 'http://localhost:9200/_search' -d '{ "query": { "bool" :

    { "must" : { "query_string" : { "query" : "some query string here" } }, "filter" : { "term" : { "user" : "kimchy" } } } } } ' documents { "_shards":{ "total" : 5, "successful" : 5, "failed" : 0 }, "hits":{ "total" : 1, "hits" : [ { "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_source" : { "user" : "kimchy", "postDate" : "2009-11-15T14:12:12", "message" : "hello Elasticsearch" } } ] } }
  65. agrégations

  66. agrégations GET /cars/transactions/_search { "size" : 0, "aggs": { "colors":

    { "terms": { "field": "color" }, "aggs": { "avg_price": { "avg": { "field": "price" } } } } } }
  67. agrégations GET /cars/transactions/_search { "size" : 0, "aggs": { "colors":

    { "terms": { "field": "color" }, "aggs": { "avg_price": { "avg": { "field": "price" } } } } } } { ... "aggregations": { "colors": { "buckets": [ { "key": "red", "doc_count": 4, "avg_price": { "value": 32500 } }, { "key": "blue", "doc_count": 2, "avg_price": { "value": 20000 } }, { "key": "green", "doc_count": 2, "avg_price": { "value": 21000 } } ] } } ... }
  68. recherche à facettes

  69. recherche à facettes

  70. recherche à facettes

  71. recherche à facettes

  72. recherche à facettes

  73. Kibana

  74. Kibana Interface graphique web

  75. Kibana Interface graphique web Basé sur les agrégations

  76. Kibana Interface graphique web Basé sur les agrégations Visualisations

  77. Kibana Interface graphique web Basé sur les agrégations Visualisations Fouille

    de données
  78. Kibana

  79. logs HTTP

  80. logs HTTP

  81. éléments de corrélation

  82. éléments de corrélation HTTP

  83. éléments de corrélation PHP HTTP

  84. éléments de corrélation PHP HTTP Proxy

  85. éléments de corrélation Queues PHP HTTP Proxy

  86. éléments de corrélation Queues PHP HTTP Proxy date request method

    referrer user-agent host stack
  87. éléments de corrélation Queues PHP HTTP Proxy date request method

    referrer user-agent host stack date file line class function message severity app_name app_env host stack
  88. éléments de corrélation Queues PHP HTTP Proxy date request method

    referrer user-agent host stack date file line class function message severity app_name app_env host stack date request method frontend backend host stack
  89. éléments de corrélation Queues PHP HTTP Proxy date request method

    referrer user-agent host stack date file line class function message severity app_name app_env host stack date request method frontend backend host stack date message severity app_name app_env host stack
  90. index dédiés • logs-http-access • logs-http-error • logs-gelf • logs-redis

    • logs-pgsql • logs-fpm
  91. collecte Icons by Chameleon Design from the Noun Project

  92. collecte Icons by Chameleon Design from the Noun Project

  93. collecte + lib/gelf.php Icons by Chameleon Design from the Noun

    Project
  94. collecte inputs: beats: port: 5044 gelf: port: 12201 use_udp: true

    Logstash + lib/gelf.php Icons by Chameleon Design from the Noun Project
  95. collecte inputs: beats: port: 5044 gelf: port: 12201 use_udp: true

    Logstash + lib/gelf.php Icons by Chameleon Design from the Noun Project
  96. collecte inputs: beats: port: 5044 gelf: port: 12201 use_udp: true

    Logstash + lib/gelf.php prospectors: paths: /var/log/*.log input_type: log output: logstash: hosts: logstash:5044 Filebeat Icons by Chameleon Design from the Noun Project
  97. collecte inputs: beats: port: 5044 gelf: port: 12201 use_udp: true

    Logstash + lib/gelf.php prospectors: paths: /var/log/*.log input_type: log output: logstash: hosts: logstash:5044 Filebeat Icons by Chameleon Design from the Noun Project
  98. Beat

  99. Beat framework Go

  100. Beat framework Go Filebeat

  101. Beat framework Go Filebeat Metricbeat

  102. Beat framework Go Filebeat Metricbeat Packetbeat

  103. et les données métier ?

  104. 2 profils d’utilisation

  105. 2 profils d’utilisation au moins

  106. 2 profils d’utilisation au moins chercher des causes

  107. 2 profils d’utilisation au moins chercher des causes valider des

    hypothèses
  108. popularité croissante

  109. popularité croissante Hébergement et Infogérance Open Source

  110. adopter prudemment

  111. adopter prudemment license

  112. adopter prudemment license modèle économique

  113. adopter prudemment license modèle économique gouvernance du projet

  114. adopter prudemment license modèle économique gouvernance du projet place de

    la communauté
  115. adopter prudemment license modèle économique gouvernance du projet place de

    la communauté ✔
  116. open-source préservé

  117. open-source préservé gros projets externes pérennisés

  118. open-source préservé gros projets externes pérennisés fort engagement dans Lucene

  119. modèle économique

  120. modèle économique Libre, gratuit • Elasticsearch • Logstash • Kibana

    • Beat • Curator • …
  121. modèle économique Libre, gratuit • Elasticsearch • Logstash • Kibana

    • Beat • Curator • … Services • formation • assistance • consulting • X-Pack
  122. modèle économique Libre, gratuit • Elasticsearch • Logstash • Kibana

    • Beat • Curator • … Services • formation • assistance • consulting • X-Pack Cloud • As A Service • Hébergé
  123. conclusions

  124. Hébergement et Infogérance Open Source Jérémy Lecour

  125. forge.evolix.org www.evolix.fr @evolix – @jlecour info@evolix.fr @ wiki.evolix.org Git logo

    from git-scm.org Chain by Bohdan Burmich from the Noun Project Paw Print by Mattijs Dekkers from the Noun Project Twitter logo from twitter.com