Как мы в компании логи собирали (CentOS, RHEL, ScientificLinux)
Ожидает приглашения
Приветствую, хабровчане!
Встала передо мной задача, значится, собирать логи по всем виртуальным машинам, что крутятся на физической.
О связке Elasticsearch+Logstash+Kibana большинство из Вас знает.
Но есть одна вещь, про которую я нашел информацию только разве что на офф. сайте. Называется она NxLog.
Крайне не прожорливая и простая как три копейки софтина.
(К слову сказать, все действия производились от root'а, так что sudo опущено)
Но все же начну по-порядку.
Итак. У нас есть чистая тачка с CentOS/RHEL/ScientificLinux 6.5
Для начала накатим на нее базовый пакет:
1)
2) Установка Elasticsearch+Logstash+Kibana на сервер.
Честно говоря перелопатил очень много, разной степени информативности, сайтов. Но в итоге из всего, что было пришлось составлять свой, краткий мануал по установке данной связки.
Итак:
Добавляем нужные репозитории(про EPEL и REMI не говорю, они по-моему по дефолту у всех):
Добавляем туда:
Сюда пойдет:
(Почему 0.90 спросите вы? Ведь есть 1.0. Отвечу просто — 0.9 работает — 1.0 — пока что нет).
3) Не забываем обновится
4) А дальше, ввиду добавленных репозиториев, выполняем нехитрую команду и получаем в итоге конфетку.
5) Создаем недостающие директории
6) Один товарищ, чей репозиторий мы добавили выше (Ulyaoth), написал nginx-овский конфиг, который вполне себе работает. По этому:
И скачиваем его конфиг:
7) Далее нужно вытянуть vhost файл Kibana, зайти в него и поменять там имя сервера(в скачанном файле будет указано «logstash.ulyaoth.net». Вот его-то и нужно сменить.
8) После это выполните сию замечательную команду:
9) Перейдем в папку Kibana и скачаем туда последнюю версию:
10) Откроем конфиг и сменим там hostname:
Изменить нам потребуется вот это:
11) И опять же скажем спасибо нашему забугорному товарищу Ulyaoth за вот это(удалим дефолтный logstas.json и заменим его на новый):
К слову сказать, он так же может называться default.json, не теряйтесь, господа, это одно и то же.
12) Теперь изменим название заголовка в Kibana, на тот, что нам нравится.
13) Создадим пользователя и дадим ему немного прав.
14) А теперь создадим наш logstash.conf и добавим в него следующее (без фильтров, ибо у каждого они свои):
15) Не забываем добавить правила в iptables:
16) А теперь самое интересное — NxLog:
17) И поправим конфиг для него под наши нужды:
А как править конфиг сказано вот тут:
18) Теперь запустим все наши сервисы и будем наслаждаться красивыми диаграммами:
Встала передо мной задача, значится, собирать логи по всем виртуальным машинам, что крутятся на физической.
О связке Elasticsearch+Logstash+Kibana большинство из Вас знает.
Но есть одна вещь, про которую я нашел информацию только разве что на офф. сайте. Называется она NxLog.
Крайне не прожорливая и простая как три копейки софтина.
(К слову сказать, все действия производились от root'а, так что sudo опущено)
Но все же начну по-порядку.
Итак. У нас есть чистая тачка с CentOS/RHEL/ScientificLinux 6.5
Для начала накатим на нее базовый пакет:
1)
yum install nano mc openssh-clients wget
2) Установка Elasticsearch+Logstash+Kibana на сервер.
Честно говоря перелопатил очень много, разной степени информативности, сайтов. Но в итоге из всего, что было пришлось составлять свой, краткий мануал по установке данной связки.
Итак:
Добавляем нужные репозитории(про EPEL и REMI не говорю, они по-моему по дефолту у всех):
nano /etc/yum.repos.d/ulyaoth.repo
Добавляем туда:
[ulyaoth]
name=Ulyaoth Repositories
baseurl=http://repos.ulyaoth.net/RHEL/$releasever/$basearch/
enabled=1
gpgcheck=0
nano /etc/yum.repos.d/elasticsearch.repo
Сюда пойдет:
[elasticsearch-0.90]
name=Elasticsearch repository for 0.90.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/0.90/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1
(Почему 0.90 спросите вы? Ведь есть 1.0. Отвечу просто — 0.9 работает — 1.0 — пока что нет).
3) Не забываем обновится
yum update
4) А дальше, ввиду добавленных репозиториев, выполняем нехитрую команду и получаем в итоге конфетку.
yum install logstash elasticsearch nginx rsyslog tar wget vim policycoreutils-python
zip java-1.6.0-openjdk-devel.x86_64 gcc gcc-c++
5) Создаем недостающие директории
mkdir -p /var/log/nginx/kibana
mkdir -p /usr/share/nginx/kibana/public
mkdir -p /etc/nginx/sites-available
mkdir -p /etc/nginx/sites-enabled
6) Один товарищ, чей репозиторий мы добавили выше (Ulyaoth), написал nginx-овский конфиг, который вполне себе работает. По этому:
rm -rf nginx.conf
И скачиваем его конфиг:
wget trash.ulyaoth.net/trash/nginx/conf/nginx.conf
7) Далее нужно вытянуть vhost файл Kibana, зайти в него и поменять там имя сервера(в скачанном файле будет указано «logstash.ulyaoth.net». Вот его-то и нужно сменить.
cd /etc/nginx/sites-available/
wget trash.ulyaoth.net/trash/nginx/vhost/kibana
nano /etc/nginx/sites-available/kibana
8) После это выполните сию замечательную команду:
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/kibana
9) Перейдем в папку Kibana и скачаем туда последнюю версию:
cd /usr/share/nginx/kibana/public
wget download.elasticsearch.org/kibana/kibana/kibana-latest.tar.gz
tar xzfv kibana-latest.tar.gz
10) Откроем конфиг и сменим там hostname:
nano config.js
Изменить нам потребуется вот это:
“http://”+window.location.hostname+”:9200″,
11) И опять же скажем спасибо нашему забугорному товарищу Ulyaoth за вот это(удалим дефолтный logstas.json и заменим его на новый):
cd /usr/share/nginx/kibana/public/app/dashboards
rm -rf logstash.json
wget trash.ulyaoth.net/trash/kibana/dashboard/logstash.json
К слову сказать, он так же может называться default.json, не теряйтесь, господа, это одно и то же.
12) Теперь изменим название заголовка в Kibana, на тот, что нам нравится.
nano logstash.json
13) Создадим пользователя и дадим ему немного прав.
Create a nologin user called kibana
useradd -s /sbin/nologin kibana
chown -R kibana:nginx /usr/share/nginx/kibana/
14) А теперь создадим наш logstash.conf и добавим в него следующее (без фильтров, ибо у каждого они свои):
mkdir -p /opt/logstash-1.4.0.beta2/conf/
nano /opt/logstash-1.4.0.beta2/conf/logstash.conf
input {
syslog {
type => syslog
port => 5544
codec => plain { charset => “ISO-8859-1″ }
}
}
output {
elasticsearch {
host => “localhost”
}
}
15) Не забываем добавить правила в iptables:
iptables -A INPUT -p tcp -m tcp --dport 5544 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 9200 -j ACCEPT
iptables save
16) А теперь самое интересное — NxLog:
yum localinstall downloads.sourceforge.net/project/nxlog-ce/nxlog-ce-2.7.1191-1.x86_64.rpm?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fnxlog-ce%2Ffiles%2F&ts=1395271039&use_mirror=netcologne
17) И поправим конфиг для него под наши нужды:
Nano /etc/nxlog.conf
А как править конфиг сказано вот тут:
nxlog.org/nxlog-docs/en/nxlog-reference-manual.html
18) Теперь запустим все наши сервисы и будем наслаждаться красивыми диаграммами:
service elasticsearch start
service logstash start
service nginx start
service nxlog start