Graylog2: сбор логов из Nginx и анализ данных в Grafana
Общая
В статье рассматривается возможность сбора логов Nginx в системе Graylog2 а так-же их анализ в Grafana.
Конфигурация выполняется в ОС Debian 9.5
Версия Nginx: nginx/1.12.2
Установка Graylog2 рассмотрена в материале Установка Graylog2 в Debian
Установка Grafana рассмотрена в материале Icinga2 + Influx + Grafana
Установка Nginx и настройка проксирования: Nginx Reverse Proxy + Apache2
Настраиваем Nginx сервер для отправки логов на Graylog.
Nginx будет сам отправлять логин а Gryalog.
nano /etc/nginx/nginx.conf
Прежнее место (/var/log/nginx/) и конфигурацию логов можно оставить как дополнительное место сбора логов.
В разделе http
добавляем следующее:
log_format graylog2_format '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $
access_log syslog:server=Graylog IP-Address:11004 graylog2_format;
error_log syslog:server=Graylog IP-Address:11005;
Перезапускаем Nginx:
service niginx restart
Подготовка Graylog к приему логов с Nginx.
Для этого необходимо установить дополнение из магазина Graylog доступный для загрузки тут.
Далее установим загруженное дополнение - в меню выбираем Systems - Content packs
, выбрать Import content pack
где и загрузить файл JSON
. После чего там же, в Content packs
, появится новый пункт Nginx Web Server
, который необходимо выбрать и нажать Apply content
.
Далее в меню выбрать Systems - Inputs
, убедиться, что соединение работает и нажать Show received messages
, где будут отображаться входящие сообщения. Для удобства отслеживания входящих сообщений в верхней части окна есть кнопка включения автообновления.
https://itcrowd.top/graylog-nginx-grafana#sigProId4148fe2965
Настройка Elasticsearch.
В конце конфигурационного файла укажем новую величину для количества условий запроса, так как стандартное, в 1000 условий, может быть недостаточно:
nano /etc/elasticsearch/elasticsearch.yml
indices.query.bool.max_clause_count: 10240
Перезапускаем Elasticsearch
service elasticsearch restart
Что делать если Grafana и Graylog находятся на разных серверах.
1. Изменить настройки для доступа с других устройств.
nano /etc/elasticsearch/elasticsearch.yml
В разделе Network
указать:
network.host: IP-Адрес сервеа Elasticsearch\Graylog
http.port: 9200
2. Для успешной работы Graylog необходимо ввести в конфигурацию указанный выше адрес и порт доступа к Elasticsearch:
nano /etc/graylog/server/server.conf
elasticsearch_hosts = http://IP-Адрес:9200
Перезапускаем Graylog и Elasticsearch:
service elasticsearch restart
service graylog-server restart
Настройка Grafana.
Настройка доступа к Elasticsearch:
Для этого открываем веб-интерфейс Grafana, выбираем Configuration - Data Sources
и нажимаем Add data source
.
Вводим имя соединения в поле Name
;
В поле Type
выбираем Elasticsearch
;
В поле URL
вводим адрес сервера Elasticsearch
;
В поле Time field name
вводим: timestamp
;
В поле Version
выбираем 5.x
;
Нажимаем Save & Test
. Если все верно то ошибок быть не должно.
https://itcrowd.top/graylog-nginx-grafana#sigProId4775fa3171
Создаем Dashboard в Grafana.
Готовый Dashboard доступен на официальном сайте Grafana и доступен для загрузки тут.
Перед его добавлением установим необходимые дополнения для Grafana:
grafana-cli plugins install grafana-piechart-panel
Перезапустим сервер Grafana:
service grafana-server restart
Добавляем json
файл панели в Grafana
Выбираем Dashboards
— Manage, нажимаем
и импортируем загруженный файл, указывая: Import
— Upload .json File
В поле Name
указываем желаемое имя панели;
В поле Graylog Elasticsearch
указываем созданное выше соединение с базой Elasticsearch.
И нажимаем кнопку Import
.
https://itcrowd.top/graylog-nginx-grafana#sigProIdd1c6ec44c0
Графики начнут заполняться при обращениях к Nginx:
https://itcrowd.top/graylog-nginx-grafana#sigProId31fd433314
- Просмотров: 25407