Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ELK - Zapanuj nad logami

1,181 views

Published on

Logi są jednym z ważniejszych elementów aplikacji, żyjącej sobie w świecie produkcyjnym. Pomagają w wykrywaniu błędów, a także w eliminowania ich przyczyny. Niestety często analiza logów bywa utrudniona – musimy posiadać ich kopię lub bezpośredni dostęp do serwera produkcyjnego, czasem znajdują się w kilku różnych lokalizacjach, czy też są po prostu za duże, aby wygodnie je przejrzeć.

Podczas prezentacji przedstawiony zostaje ELK stack (Elasticsearch, Logstash, Kibana) - umożliwiający scentralizowanie i zwizualizowanie logów całego ekosystemu aplikacji w jednym miejscu.

Październik 2015

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ELK - Zapanuj nad logami

  1. 1. ELK – Zapanuj nad logami Adrian Piętka
  2. 2. Technical Advisor 2 Zawodowo aktywny od 8 lat Web Development apietka@future-processing.com github.com/adrianpietka @adrian_pietka
  3. 3. 3 AGENDA • Logi • ELK Stack – Elasticsearch – Logstash – Kibana • Praktyka • Podsumowanie
  4. 4. Logi 4 "(...) zapis zawierający informację o zdarzeniach i działaniach dotyczących systemu informatycznego, systemu komputerowego czy komputera."
  5. 5. Logi – po co? 5 Analiza działania systemu Statystyki Detekcja: – błędów, – nieprawidłowości działania, – prób i sposobów włamań.
  6. 6. Logi – problemy 6 Multum logów Brak spójnego formatu Duży rozmiar Ciężko się je przegląda
  7. 7. Logi – jak analizujemy? 7 $: ssh mymagicserver.com $: tail –n 10 /var/logs/apache2/access.log $: cat /var/logs/apache2/error.log | grep 403
  8. 8. 8
  9. 9. Logi – problemy 9 Powodzenia przy analizie 100GB nieustrukturyzowanych logów.
  10. 10. Logi a skalowalność 10
  11. 11. Logi a skalowalność 11 1 2
  12. 12. Logi a skalowalność 12 L O A D B A L A N C E R 1 2 3 4
  13. 13. Logi 13 Kto w ciągu ostatniego miesiąca sam z siebie rzucił okiem na logi?
  14. 14. ELK Stack 14
  15. 15. ELK Stack - Zalety 15 • Wszystkie logi w jednym miejscu • Aktualność logów – Real-Time • Wyszukiwanie i analizowanie danych • Interaktywne wizualizacje, listy • Szybkość przetwarzania danych
  16. 16. E jak Elasticsearch 16 Oparty o Apache Lucene Full-Text Search Real-Time High Availability RESTful API Schema-Free & Document-Oriented
  17. 17. L jak Logstash 17 Inputs • Agregowanie logów z różnych źródeł Filters • Parsowanie danych do postaci znormalizowanej Outputs • Odsyłanie przetworzonych danych „Process any data, from any source”
  18. 18. L jak Logstash - Flow 18 Inputs Filters grok geoip json_encode Outputs FileTCP stdin Lumberjack RabbitMQ Databases mutate
  19. 19. L jak Logstash - Grok 19 • Text Matcher • Unstructured » Structured and Queryable • Patterns (~120) • INT, WORD, NOTSPACE, UUID, DATE • IP, HOST, MAC, PATH. URI, URIPATHPARAM • COMMONAPACHELOG, SYSLOGLINE, RUBY_LOGGER • POSTGRESQL, REDISLOG, MONGO_LOG
  20. 20. L jak Logstash - Grok 20 81.112.56.18 GET /page?id=contact 1337 %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} client : 81.112.56.18 method : GET request : /page?id=contact bytes : 1337
  21. 21. K jak Kibana 21 • Aplikacja webowa • Intuicyjny interfejs • Filtrowanie, wyszukiwanie • Real-Time • Wykresy, listy • Pulpity
  22. 22. K jak Kibana - Log details 22
  23. 23. K jak Kibana - Discover 23
  24. 24. K jak Kibana - Visualize 24
  25. 25. K jak Kibana - Visualize 25
  26. 26. K jak Kibana - Dashboard 26
  27. 27. ELK – Jak to działa 27 Apache Logs System Logs DB Logs App Logs ELK Stack Filters
  28. 28. 28 Praktyka – Konfiguracja podstawowa Logstash Forwarder Application Node Database Node Logstash Forwarder Output Filters RESTful JSON
  29. 29. 29 Praktyka – Konfiguracja wydajna i skalowalna Output Filters RESTful JSON
  30. 30. Praktyka – ELK via Docker 30 $: git clone git@github.com:deviantony/docker-elk.git $: cd docker-elk $: docker-compose up • 5601 - Kibana 4 • 5000 - Logstash TCP Input • 9200 - Elasticsearch HTTP
  31. 31. Praktyka - Logstash-Forwarder 31 { "network": { "servers": ["logstash.host:5000"], "timeout": 15, "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt" }, "files": [ { "paths": ["/var/log/syslog", "/var/log/auth.log"], "fields": {"type": "my-syslog"} }, { "paths": ["/var/log/apache2/access.log", "/var/log/apache2/error.log"], "fields": {"type": "my-apache"} }, { "paths": ["/var/log/app.log"], "fields": {"type": "my-app"} } ] }
  32. 32. Praktyka - Logstash 32 input { lumberjack { port => 5000 ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } } filter {} output { elasticsearch { host => "elasticsearch.host" port => "9200" } }
  33. 33. Praktyka - Logstash 33 filter { if [type] == "my-syslog" { grok { match => {"message" => "%{SYSLOGBASE}"} } } if [type] == "my-apache" { grok { match => {"message" => "%{COMBINEDAPACHELOG}"} } } }
  34. 34. Praktyka - Logstash 34 filter { if [type] == "my-app" { grok { match => {"message" => "%{GREEDYDATA:data} %{IP:ip} %{PATH:file} %{NUMBER:line} %{LOGLEVEL:level} %{QUOTEDSTRING:message}" } } } } 2015-09-28 15:19:45 81.51.21.55 /var/app/src/Plugins.php 43 ERROR "Can't initialize plug-ins directory"
  35. 35. Podsumowanie 35 • Centralizacja logów • Real-Time • Filtrowanie, wyszukiwanie • Wizualizacje, listy • Wydajne, skalowalne rozwiązanie • Grok > Regex • OS Agnostic • Niski próg wejścia
  36. 36. Podsumowanie - Linki 36 • Elastic • elastic.co • github.com/elastic • Docker Images • github.com/deviantony/docker-elk • Grok Debug • grokdebug.herokuapp.com • Grok Patterns • github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
  37. 37. 37 Pytania?

×