Содержание
Проброс syslog в ELK
Настройка syslog
Выводим все сообщения от PHP в отдельный файл /var/log/php.log
:
echo -e ':syslogtag,contains,"php" /var/log/php.log\n& stop' | sudo tee /etc/rsyslog.d/10-php.conf sudo service rsyslog restart php -r "syslog(LOG_INFO, 'test info');" tail /var/log/php.log
Последняя команда должна вывести сообщение, похожее на это: Feb 7 09:21:51 pushorigin-desktop php: test info
Настройка logrotate
Настроим ротацию файла логов /var/log/php.log
.
Нужно подправить файл /etc/logrotate.d/rsyslog
(Debian) или /etc/logrotate.d/syslog
(CentOS), добавив следующее:
- /etc/logrotate.d/rsyslog
/var/log/php.log { rotate 7 daily missingok notifempty compress delaycompress sharedscripts postrotate reload rsyslog >/dev/null 2>&1 || true endscript }
Точную команду для postrotate
можно подглядеть в этом же файле.
logrotate
обычно висит на ежедневном выполнении: cat /etc/cron.daily/logrotate
Кидаем данные => filebeat => logstash => elasticsearch
На машине с ELK (точнее, нам нужен ES) настраиваем шаблоны индексов. На логирующей машине - устанавливаем и настраиваем filebeat
.
Установка и настройка filebeat
На хост-машине, которая будет слать логи в ELK, делаем следующее:
- скачиваем пакет,
filebeat
должен быть той же версии, что в ELK, иначе могут быть ошибки - устаналиваем
filebeat
- редактируем конфиг:
sudo vim /etc/filebeat/filebeat.yml
- стартуем:
sudo service filebeat start
- смотрим логи:
cat /var/log/filebeat/filebeat