Upload
andrey-rebrov
View
833
Download
0
Embed Size (px)
Citation preview
Не превращайте ваши логи в клинопись
Ребров Андрей
Клинопись
Логи
ГДЕ РАЗНИЦА?
Так в чем проблема
• Логов много
• В логах очень много самой разной информации
• Логи раскиданы по нескольким машинам
• Человек не создан для чтения логов =)
Время инструментов!
• Бесплатный инструмент
• Собирает, парсит и хранит логи
• Позволяет искать по логам
• Анализирует логи
Logstash
http://logstash.net
Основная фишка
Много разных логов? • syslog • nginx access log • application logs • database logs
А все ли они в одном формате?
З слона Logstash
• Inputs
• Filters
• Outputs
http://logstash.net/docs/1.1.12/ - Весь список
Inputs • file
• eventlog
• ganglia
• heroku
• syslog
• tcp
Filters
http://logstash.net/docs/1.1.12/ - Весь список
• anonymize
• date
• mutate
• grok
• grep
http://logstash.net/docs/1.1.12/ - Весь список
Outputs • file
• graphite
• http
• irc
• zabbix
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
Очень просто начать
Например
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
Время парсить
Например
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
Показать, все что скрыто
Например
Главное не потеряться
ElasticSearch
http://www.elasticsearch.org
Что такое и с чем едят
Распределенный RESTful поисковый сервер
l «Real-time» поиск
l RESTful API
l Полнотекстовый поиск
l Конфигурация в форматах YAML/JSON
Уже есть в logstash
Добавляем красоты
http://kibana.org
Читаем логи через user-friendly интерфейс
Test Node
Test Node
Logstash Elas/cSearch
Kibana
???
Как можно все это собрать
Нужны почтовые голуби!
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
Сборка
Установка 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
Установка Logstash
mkdir /opt/logstash
wget https://logstash.objects.dreamhost.com/ release/logstash-1.1.9-monolithic.jar -O /opt/ logstash/logstash.jar
Установка Elasticsearch
wget http://download.elasticsearch.org/ elasticsearch/elasticsearch/ elasticsearch-0.20.2.tar.gz
tar -zxf elasticsearch-0.20.2.tar.gz
Установка 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
Возможные проблемы с Kibana
• ERROR: Failed to build gem native extension.
Лечится установкой каждого gem отдельного
• no such file to load – XXX (LoadError)
gem install XXX
Запуск 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
Конфигурируем Logstash #1
input {
lumberjack {
type => "apache-access"
port => 3338
ssl_certificate => "/etc/ssl/logstash.pub"
ssl_key => "/etc/ssl/logstash.key"
}
}
Конфигурируем Logstash #2
filter {
date {
type => "apache-access"
timestamp => "dd/MMM/yyyy:HH:mm:ss Z"
}
}
Конфигурируем Logstash #3
output {
elasticsearch {
embedded => false
cluster => logs
host => "172.28.2.2"
index => "apache-%{+YYYY.MM}"
type => "apache-access"
}
}
Запуск Logstash
/usr/bin/java -jar /opt/logstash/logstash.jar agent -f <path-to-your.conf> -l <path-to-where-
you-want-the.log>
Конфигурируем 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
Запускаем Elasticsearch
./bin/elasticsearch –f
или в фоне
./bin/elasticsearch
Запускаем Kibana
ruby kibana.rb
Profit!
Полезные ссылки 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/