Splunk: парсер nginx-логов и аналог google analytics

Splunk — это целая система, которая включает в себя и парсер логов и наблюдение за системой и много ещё. Мне же понадобился только парсинг логов. Подробную информацию можно найти на официальном сайте.

И так, схема следующая: имеем сервер + клиент для пересылки логов с удалённых хостов.

Скачиваем сервер отсюда, распаковываем (я ставил под Solaris, поэтому выбрал tar-архив) запускаем бинарник:

#/opt/splunk/bin/splunk start --accept-license

Ключ «—accept-license» обязателен при первом запуске. При последующий его можно опустить. После этого запустится сервер на порту 8000 и вы сможете перейти на него по адресу http://11.22.33.44:8000 . Login/pass по умолчанию admin/changeme.

Тут открываются широкие возможности. Но наша задача состоит в сборе логов с удалённых серверов, поэтому переходим в Manager >> Forwarding and receiving >> Configure receiving и выбираем Add new, вводим номер порта (по дефолту 9997). Это порт для приёма сообщений от удалённых хостов. Логи, а точнее изменения в логах будут передаваться через сокет на этот порт. Сейчас добавим этот порт в мониторинг. Для этого переходим в Manager >> Data inputs >> UDP. Тут есть нюанс: хотя порт выше мы задавали как TCP, но добавлять нужно как UDP. Вот такой хак. Выбираем Add new и указываем порт 9997 и source address = 11.22.33.44, ведь именно этот порт будет прослушиваться. На этом настройка серверной части закончена.

Хочу заметить, что команды, можно вводить прямо в строке «search»

source=/full/path/to/file | delete

Либо можно выделить нужный source/sourcetype и оно автоматически подставит его в строку search. По дефолту даже admin не может ничего удалить. Для этого нужно добавить себе права: Manager -> Access Controls -> Roles -> Select Specific Role

Для настройки клиента существует splunkforwarder, который можно скачать отсюда. Его так же распаковываем и запускам первый раз с ключём «—accept-license«:

#/opt/splunkforwarder/bin/splunk start --accept-license

Отличие от сервера то, что здесь все операции придёться делать через консоль. При первом выполнении любой команды, вас попросят аутентифицироваться. Login/pass по умолчанию admin/changeme. Изменить их можно так:

#/opt/splunkforwarder/bin/splunk edit user admin -password NEWPASSWORD -auth
Your session is invalid. Please login.
Splunk username: admin
Password:

Добавление пересылки на указанные сервер

#/opt/splunkforwarder/bin/splunk add forward-server 11.22.33.44:9997

Посмотрим, что получилось

#/opt/splunkforwarder/bin/splunk list forward-server
Active forwards:
11.22.33.44:9997
Configured but inactive forwards:
None

Добавим нужные логи

#/opt/splunkforwarder/bin/splunk add monitor /var/log/nginx-acces.log -sourcetype "client1:/var/log/nginx-access.log"
#/opt/splunkforwarder/bin/splunk add monitor /var/log/nginx-error.log -sourcetype "client1:/var/log/nginx-error.log"

Можно вместо отдельного лога добавить целую папку с логами. Посмотрим, что мониторится:

#/opt/splunkforwarder/bin/splunk list monitor
Monitored Directories:
$SPLUNK_HOME/var/log/splunk/splunkd.log
/opt/splunkforwarder/var/log/splunk/audit.log
/opt/splunkforwarder/var/log/splunk/first_install.log
/opt/splunkforwarder/var/log/splunk/license_audit.log
/opt/splunkforwarder/var/log/splunk/license_usage.log
/opt/splunkforwarder/var/log/splunk/metrics.log
/opt/splunkforwarder/var/log/splunk/scheduler.log
/opt/splunkforwarder/var/log/splunk/searchhistory.log
/opt/splunkforwarder/var/log/splunk/splunkd.log
/opt/splunkforwarder/var/log/splunk/splunkd_access.log
/opt/splunkforwarder/var/log/splunk/splunkd_stderr.log
/opt/splunkforwarder/var/log/splunk/splunkd_stdout.log
$SPLUNK_HOME/var/spool/splunk/...stash_new
/var/log/nginx/nginx-access.log
/var/log/nginx/nginx-error.log
Monitored Files:
$SPLUNK_HOME/etc/splunk.version

Здесь так же по дефолту добавились и логи самого splunk’a. Теперь можно дождаться появления новых сообщений в логе и они тут же передадутся на сервер. На сервере их можно посмотреть http://11.22.33.44:8000/en-US/app/search/dashboard_live

В заключении хочу сказать, что splunk написал на python’e со всеми вытекающими последствиями. Сам splunk (как и splunkforwarder) имеют мощную справку прямо в командной строке. Достаточно набрать splunk help [command]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *