Содержание
Установка ELK на Linux в ручном режиме
Установка ELK
filebeat.template.json
также оказались от разных версий (так и не понял как так произошло). Возможно поэтому в /var/log/filebeat/filebeat
были 400-ые ошибки. А может быть шаблон неправильный был (старая версия). Ну и намучался я.
- /var/log/filebeat/filebeat
2017-11-16T14:11:44+03:00 WARN Can not index event (status=400): {"type":"mapper_parsing_exception","reason":"Failed to parse mapping [_default_]: Mapping definition for [error] has unsupported parameters: [properties : {code={type=long}, message={norms=false, type=text}, type={ignore_above=1024, type=keyword}}]","caused_by":{"type":"mapper_parsing_exception","reason":"Mapping definition for [error] has unsupported parameters: [properties : {code={type=long}, message={norms=false, type=text}, type={ignore_above=1024, type=keyword}}]"}}
Устанавливаем Java 8
sudo add-apt-repository -y ppa:webupd8team/java sudo apt-get update sudo apt-get -y install oracle-java8-installer
Устанавливаем ELK + filebeat
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.deb sudo dpkg -i elasticsearch-6.0.0.deb wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.deb sudo dpkg -i logstash-6.0.0.deb wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-amd64.deb sudo dpkg -i kibana-6.0.0-amd64.deb # filebeat, можно также ставить и другие биты wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.0.0-amd64.deb sudo dpkg -i filebeat-6.0.0-amd64.deb
Настройка ELK
Настройка ElasticSearch
vim /etc/elasticsearch/elasticsearch.yml
, раскомментировать и поправить cluster.name
(elk) и node.name
(ubuntu-16).
# sudo /etc/init.d/elasticsearch start # вариант запуска сервиа sudo service elasticsearch start
Проверка работоспособности:
curl http://localhost:9200
Для модуля nginx
из filebeats
нужно поставить плагины (об этом я узнал из лога /var/log/filebeat/filebeat
):
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-user-agent sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-geoip # перезапускаем sudo service elasticsearch restart
Настройка Logstash
Конфигурация (базовая лежит в /etc/logstash/logstash.yml
):
sudo vim /etc/logstash/conf.d/input-beats.conf # вставить это: input { beats { port => 5044 } }
sudo vim /etc/logstash/conf.d/output-elasticsearch.conf # вставить это: output { elasticsearch { hosts => ["localhost:9200"] sniffing => true manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
Запускаем:
sudo service logstash start
Проверка работы:
netstat -ntl | grep 5044 # слушание порта поднимается спустя время (@see анекдот про JAVA) # так можно запустить в консоли и написать что-нибудь в STDIN, получить в "режиме echo" обратно в STDOUT sudo /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
Kibana
sudo service kibana start
Проверка:
curl --head http://localhost:5601
или в браузере:
Beats
Выше мы поставили filebeat. Остальные можно взять на странице загрузок https://www.elastic.co/downloads
не работает (думаю, поправят). Установка дашбордов (не обязательно):
mkdir -p ~/ELK/beats cd ~/ELK/beats wget http://download.elastic.co/beats/dashboards/beats-dashboards-1.3.1.zip unzip beats-dashboards-1.3.1.zip cd beats-dashboards-1.3.1/ ./load.sh
Filebeat
Ставим модули ingest-user-agent
и ingest-geoip
для ES (см выше, если забыли).
Filebeat можно настроить на отправку в Logstash, или напрямую в ES.
sudo vim /etc/filebeat/filebeat.yml
Раскомментировать и поправить output.elasticsearch
(если будем писать сразу в ES):
output.logstash: # The Logstash hosts hosts: ["localhost:5044"]
Запуск:
sudo service filebeat start
ES ругался на отсутствие индекса.
Добавить в ES индекс можно так (вручную) - если использовать Logshash ( еще не проверял):
curl -XPUT 'http://localhost:9200/_template/filebeat' -d@/etc/filebeat/filebeat.template.json -H "Content-Type: application/json" # Удалить можно так: # curl -XDELETE 'http://localhost:9200/_template/filebeat'
Если сразу писать в ES:
sudo vim /etc/filebeat/filebeat.yml # добавить setup.template.overwrite: true # перезапустить и посмотреть, что в логе sudo service filebeat restart # в логе должна быть строчка "Elasticsearch template with name 'filebeat-6.0.0' loaded" sudo less /var/log/filebeat/filebeat
Проверить можно в Dev Tools
, выполнив GET _cat/templates
или через курл:
curl 'http://localhost:9200/_cat/templates'
Проверка в Kibana
http://localhost:5601/app/kibana#/dev_tools/console?_g=() GET _cat/indices?v