Еще одна система по сбору логов в Web–интерфейс с целью наглядного отображения собираемого с систем, сервисов.
Помимо использования LogAnalyzer я бы хотел попробовать что-нибудь еще, вдруг окажется что есть инструмент работающий быстрее и проще в настройке (хотя это вряд ли возможно).
Так вот я хочу самостоятельно посмотреть что есть приложение/сервис Graylog2 который мне бы хотелось развернуть на Ubuntu Trusty Server. Как я понял Graylog2 (лог обработчик) имеет связку: ElasticSearch (Сервис хранения сообщений) + Java + MongoDB (Сервис хранения конфигурации и метаданных)
Текущие характеристики тестовой системы: RAM = 2,CPU =1,HDD = 50
По документации схема работы:
ekzorchik@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. В ответ у меня окно приглашения на аутентификацию:
После ввода в соответствующие поля (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 работает должно быть только одно уведомление, что не настроены входящие потоки то все хорошо. Но у меня почему-то не так.
Еще раз смотрю документацию и вижу, что рекомендуется в качестве имени кластера использовать надпись 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
И вот теперь все хорошо. Graylog успешно запущен и ошибок со стороны кластера ElasticSearch нет. Вот оно оказывается как, да же именование имеет значение. Ну пока я разобрал для себя как установить Graylog2, а далее буду разбирать как им пользоваться. На этом я для себя шпаргалку составил. До новых встреч, с уважением автор блога Олло Александр aka ekzorchik.