Инструмент для сбора логов GrayLog2

Posted by

Еще одна система по сбору логов в Webинтерфейс с целью наглядного отображения собираемого с систем, сервисов.

Помимо использования LogAnalyzer я бы хотел попробовать что-нибудь еще, вдруг окажется что есть инструмент работающий быстрее и проще в настройке (хотя это вряд ли возможно).

Так вот я хочу самостоятельно посмотреть что есть приложение/сервис который мне бы хотелось развернуть на Ubuntu Trusty Server. Как я понял Graylog2 (лог обработчик) имеет связку: ElasticSearch (Сервис хранения сообщений) + Java + MongoDB (Сервис хранения конфигурации и метаданных)

Текущие характеристики тестовой системы: RAM = 2,CPU =1,HDD = 50

По документации схема работы:

Схема работы GrayLog2ekzorchik@srv-trusty:~$ sudo rm -Rf /var/lib/apt/lists/

ekzorchik@srv-trusty:~$ sudo apt-get update && sudo apt-get upgrade -y

ekzorchik@srv-trusty:~$ sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial -y

ekzorchik@srv-trusty:~$ uname -a

Linux srv-trusty 4.4.0-79-generic #100~14.04.1-Ubuntu SMP Fri May 19 18:36:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Устанавливаю Java в систему, пусть будет пока восьмая версия:

ekzorchik@srv-trusty:~$ sudo apt-add-repository ppa:webupd8team/java

ekzorchik@srv-trusty:~$ sudo apt-get update && sudo apt-get install oracle-java8-installer -y

You MUST agree to the license available in http://java.com/license if you want to use Oracle JDK. - Ok

Do you accept the Oracle Binary Code license terms? - Yes

Как говорят различные руководства нужно в систему установить репозитарий установки MongoDB:

ekzorchik@srv-trusty:~$ echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

ekzorchik@srv-trusty:~$ sudo apt-get update

ekzorchik@srv-trusty:~$ sudo gpg --keyserver keyserver.ubuntu.com --recv 9ECBEC467F0CEB10

ekzorchik@srv-trusty:~$ sudo bash -c "gpg --export --armor 9ECBEC467F0CEB10 | apt-key add -"

OK

ekzorchik@srv-trusty:~$ sudo apt-get update

ekzorchik@srv-trusty:~$ sudo apt-get install mongodb-org -y

ekzorchik@srv-trusty:~$ mongo --version

MongoDB shell version: 2.6.12

Далее устанавливаем ElasticSearch в систему по такому же принципу как добавления репозитария:

ekzorchik@srv-trusty:~$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

OK

ekzorchik@srv-trusty:~$ echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list

deb https://packages.elastic.co/elasticsearch/2.x/debian stable main

ekzorchik@srv-trusty:~$ sudo apt-get update && sudo apt-get install elasticsearch -y

ekzorchik@srv-trusty:~$ sudo update-rc.d elasticsearch defaults 95 10

Далее нужно подправить параметр cluster.name конфигурационного файла ElasticSearch:

ekzorchik@srv-trusty:~$ sudo nano /etc/elasticsearch/elasticsearch.yml

cluster.name: srv-trusty

network.host: localhost

ekzorchik@srv-trusty:~$ sudo service elasticsearch restart

Для проверки, что ElasticSearch работает существует вот такой вот запрос через консоль: (если вывод есть, такой как представлен у меня то все работает)

ekzorchik@srv-trusty:~$ curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

{

"cluster_name" : "srv-trusty",

"status" : "green",

"timed_out" : false,

"number_of_nodes" : 1,

"number_of_data_nodes" : 1,

"active_primary_shards" : 0,

"active_shards" : 0,

"relocating_shards" : 0,

"initializing_shards" : 0,

"unassigned_shards" : 0,

"delayed_unassigned_shards" : 0,

"number_of_pending_tasks" : 0,

"number_of_in_flight_fetch" : 0,

"task_max_waiting_in_queue_millis" : 0,

"active_shards_percent_as_number" : 100.0

}

Устанавливаем GrayLog2 в систему:

ekzorchik@srv-trusty:~$ sudo apt-get install apt-transport-https

ekzorchik@srv-trusty:~$ wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb

ekzorchik@srv-trusty:~$ sudo dpkg -i graylog-2.2-repository_latest.deb

ekzorchik@srv-trusty:~$ sudo apt-get update && sudo apt-get install graylog-server -y

Чтобы сервис graylog мог стартовать в автоматическом режиме при загрузке систему нужно:

ekzorchik@srv-trusty:~$ sudo rm -f /etc/init/graylog-server.override

ekzorchik@srv-trusty:~$ sudo service graylog-server start

graylog-server start/running, process 4206

Генерируем секретную фразу

ekzorchik@srv-trusty:~$ sudo apt-get install pwgen -y

ekzorchik@srv-trusty:~$ SECRET=$(pwgen -s 99 1)

ekzorchik@srv-trusty:~$ sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog/server/server.conf

Теперь создаем пароль на вход в Webинтерфейс Graylog:

ekzorchik@srv-trusty:~$ PASSWORD=$(echo -n 712mbddr@ | shasum -a 256 | awk '{print $1}')

ekzorchik@srv-trusty:~$ sudo -E sed -i -e 's/root_password_sha2 = .*/root_password_sha2 = '$PASSWORD'/' /etc/graylog/server/server.conf

ekzorchik@srv-trusty:~$ ip r

default via 10.7.8.100 dev eth0

10.7.8.0/23 dev eth0 proto kernel scope link src 10.7.9.130

ekzorchik@srv-trusty:~$ sudo nano /etc/graylog/server/server.conf

root_username = admin

#rest_listen_uri = http://127.0.0.1:9000/api/

rest_listen_uri = http://10.7.9.130:12900/

#web_listen_uri = http://127.0.0.1:9000/

web_listen_uri = http://10.7.9.130:9000/

#elasticsearch_index_prefix = graylog

elasticsearch_index_prefix = srv-trusty

После не забываем сохранить внесенные изменения и перезапускаем всю систему с установленным Graylog:

ekzorchik@srv-trusty:~$ sudo reboot

ekzorchik@srv-trusty:~$ sudo netstat -tulpn | grep :9000

tcp6 0 0 10.7.9.130:9000 :::* LISTEN 806/java

Затем открываю браузер и в строку адресу ввожу http://IP&DNS:9000 адрес сервера где составляю данную заметку установки Graylog в систему Ubuntu Trusty Server. В ответ у меня окно приглашения на аутентификацию:

Окно аутентификации в Web интерфейс GrayLog2

После ввода в соответствующие поля (Username: admin, Password: 712mbddr@) данных нажимаю Sign in. Вот только странно, что меня не пускает, пишет: Invalid credentials, please verify them and retry.

Проверяю:

ekzorchik@srv-trusty:~$ PASSWORD=$(echo -n 712mbddr@ | shasum -a 256 | awk '{print $1}')

ekzorchik@srv-trusty:~$ echo $PASSWORD

0f4e548e505360ce63d651aedf0befd2d01f4cc488344dfa3efdb15ec3e2384e

ekzorchik@srv-trusty:~$ sudo grep root_password_sha2 /etc/graylog/server/server.conf

root_password_sha2 =

Странно, а где значения?

Исправляю.

ekzorchik@srv-trusty:~$ sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog/server/server.conf

Проблема была в том, что в первом поиске был символ пробела между символом равенства и точкой.

ekzorchik@srv-trusty:~$ sudo service graylog-server restart

На заметку: сервис стартует не сразу, а через некоторое время.

После переходу к URL вкладе где авторизовываюсь, введя данные нажимаю Sign In. Виже надпись We are preparing Graylog for you… и после меня перекидывает к тому чему я стремился к Web-интерфейсу управления логами. Нажимаю на уведомление в виде красного кружка и в качестве подтверждения что GrayLog работает должно быть только одно уведомление, что не настроены входящие потоки то все хорошо. Но у меня почему-то не так.

Проблема с кластером в ElasticSearch

Еще раз смотрю документацию и вижу, что рекомендуется в качестве имени кластера использовать надпись graylog. Ну что ж попробую:

ekzorchik@srv-trusty:~$ sudo nano /etc/elasticsearch/elasticsearch.yml

cluster.name: graylog

ekzorchik@srv-trusty:~$ sudo service elasticsearch restart

ekzorchik@srv-trusty:~$ sudo nano /etc/graylog/server/server.conf

elasticsearch_index_prefix = graylog

#elasticsearch_index_prefix = srv-trusty

ekzorchik@srv-trusty:~$ sudo service graylog-server restart

Кластер ElasticSearch запущен и ошибка выше не ошибка просто нет настроенных входов

И вот теперь все хорошо. Graylog успешно запущен и ошибок со стороны кластера ElasticSearch нет. Вот оно оказывается как, да же именование имеет значение. Ну пока я разобрал для себя как установить Graylog2, а далее буду разбирать как им пользоваться. На этом я для себя шпаргалку составил. До новых встреч, с уважением автор блога Олло Александр aka ekzorchik.