Скажем, у меня есть Nginx, работающий внутри контейнера (докер).
Журналы журнала доступа и ошибок отправляются через STDOUT, в Dockerfile:лучший способ отправить журналы контейнеров докеров на logstash
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log
Logspout кажется элегантное решение для отправки STDOUT вашего контейнера внутри logstash (сконфигурированный с системного журнала ввода)
input {
syslog {
type => syslog
port => 5514
}
}
Но logspout не имеет представления о формате журнала, отправленного через STDOUT (или я что-то не хватает?)
Так что я должен сделать что-то вроде:
input {
syslog {
type => nginx-access
port => 5514
}
}
Но как насчет журнала ошибок nginx? И что, если я отправлю php-fpm log через STDOUT тоже? Как logspout управляет этим?
Другим решением является запуск Rsyslog indose контейнер и отправить собранные журналы на вход logstatsh ...
Как вы можете видеть, что это не совсем понятно, для меня ... Я хотел бы быть в состоянии отправить Nginx и PHP-FPM журналы logstash, чтобы они могли быть истолкованы как то, что они есть ... но я не нашел «хорошую практику» ...
можете ли вы помочь мне, пожалуйста
Это должен быть принятый ответ. – Subfuzion
Важно заметить, что выходной драйвер GELF использует только UDP (по состоянию на 20.04.2017), поэтому пакеты могут быть потеряны, если логсташ находится на какой-либо другой машине. – herm
Это хорошо, что нужно иметь в виду. – womble