Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Не превращайте ваши логи в клинопись

Не превращайте ваши логи в клинопись

Доклад с конференции AutoConfetQA 2013. Рассказ о том, как с помощью Logstash, ElasticSearch и KIbana можно сделать простую и удобную систему сбора логов, в том числе и автотестов.

Andrey Rebrov

May 29, 2013
Tweet

More Decks by Andrey Rebrov

Other Decks in Programming

Transcript

  1. Так в чем проблема •  Логов много •  В логах

    очень много самой разной информации •  Логи раскиданы по нескольким машинам •  Человек не создан для чтения логов =)
  2. •  Бесплатный инструмент •  Собирает, парсит и хранит логи • 

    Позволяет искать по логам •  Анализирует логи Logstash http://logstash.net
  3. Основная фишка Много разных логов? •  syslog •  nginx access

    log •  application logs •  database logs А все ли они в одном формате?
  4. input  {  stdin  {  type  =>  "stdin-­‐type"}  }    

    output  {  stdout  {  debug  =>  true  debug_format  => "json"}  }     java  -­‐jar  logstash-­‐1.1.9-­‐monolithic.jar  agent  -­‐f logstash-­‐simple.conf     Очень просто начать
  5. input  {  stdin  {  type  =>  "stdin-­‐type"}  }    

    filter  {  grok  {  type  =>  "stdin-­‐type"  pattern  => "Hello  %{DATA:message}!"  }  }     output  {  stdout  {  debug  =>  true  debug_format  => "json"}  }     java  -­‐jar  logstash-­‐1.1.9-­‐monolithic.jar  agent  -­‐f logstash-­‐simple.conf     Время парсить
  6. input  {  stdin  {  type  =>  "stdin-­‐type"  }  } output

     {     stdout  {  debug  =>  true  debug_format  =>  "json"  } elasticsearch  {  embedded  =>  true  }     }     java  -­‐jar  logstash-­‐1.1.9-­‐monolithic.jar  agent  -­‐f logstash-­‐search.conf     Показать, все что скрыто
  7. Что такое и с чем едят Распределенный RESTful поисковый сервер

    l  «Real-time» поиск l  RESTful API l  Полнотекстовый поиск l  Конфигурация в форматах YAML/JSON Уже есть в logstash
  8. Test  Node   Test  Node   Logstash   Elas/cSearch  

    Kibana   ??? Как можно все это собрать
  9. Logstash shippers •  beaver - python, multiple outputs •  woodchuck

    - ruby, multiple outputs •  awesant - perl, multiple outputs supported •  lumberjack - C, encrypted+compressed transport •  syslog-shipper - ruby, syslog tcp •  remote_syslog - ruby, syslog tcp/tls •  Message::Passing - perl, multiple inputs and outputs •  nxlog - C, multi platform including windows, tcp/udp/ ssl/tls •  logtail - perl, from flat files to redis
  10. Установка Lumberjack apt-get install rubygems gem install fpm export PATH=$PATH:/var/lib/gems/1.8/bin

    git clone https://github.com/jordansissel/ lumberjack.git cd lumberjack make make deb dpkg -i lumberjack_0.0.8_amd64.deb
  11. Установка Kibana git clone --branch=kibana-ruby https://github.com/ rashidkpc/Kibana.git /opt/kibana apt-get install

    rubygems libcurl4-openssl-dev export PATH=$PATH:/var/lib/gems/1.8/bin cd /opt/kibana bundle install
  12. Возможные проблемы с Kibana •  ERROR: Failed to build gem

    native extension. Лечится установкой каждого gem отдельного •  no such file to load – XXX (LoadError) gem install XXX
  13. Запуск Lumberjack /opt/lumberjack/bin/lumberjack -- host your.logstash.host --port port-for- these-logs --ssl-ca-path

    /etc/ssl/ logstash.pub Для генерации ключей на logstash сервере: openssl req -x509 -newkey rsa:2048 -keyout /etc/ ssl/logstash.key -out /etc/ssl/logstash.pub - nodes -days 365
  14. Конфигурируем Logstash #1 input { lumberjack { type => "apache-access"

    port => 3338 ssl_certificate => "/etc/ssl/logstash.pub" ssl_key => "/etc/ssl/logstash.key" } }
  15. Конфигурируем Logstash #3 output { elasticsearch { embedded => false

    cluster => logs host => "172.28.2.2" index => "apache-%{+YYYY.MM}" type => "apache-access" } }
  16. Конфигурируем Elasticsearch cluster.name: logs index.number_of_replicas: 0 path.data: /elasticsearch/data path.work: /elasticsearch/work

    path.logs: /elasticsearch/logs bootstrap.mlockall: true discovery.zen.ping.multicast.enabled: false
  17. Полезные ссылки l  http://www.logstashbook.com/code/ l  https://github.com/logstash/logstash/blob/v1.1.12/patterns/ grok-patterns l  http://grokdebug.herokuapp.com/ l 

    http://www.infoq.com/articles/review-the-logstash-booл l  http://www.elasticsearch.org/tutorials/using-elasticsearch-for- logs/ l  https://lucene.apache.org/core/old_versioned_docs/versions/ 3_5_0/queryparsersyntax.html l  http://www.elasticsearch.org/tutorials/elasticsearch-on-ec2/ l  http://blog.lusis.org/blog/2012/01/31/load-balancing-logstash- with-amqp/