Я знаю, что могу сделать это с помощью скриптов, но я хотел бы знать, существует ли такая вещь, как «готовое» программное обеспечение, которое позволяет мне настраивать хост (и пути к файлам), которые я хотел бы получать (при обычном интервалы) от?
Я планирую настроить LogStash для анализа журнала (и отправки их в централизованное хранилище журналов), но многие журналы, которые LogStash будет анализировать, находятся в файлах на удаленных хостах. Если программное обеспечение, специально разработанное для этого, уже существует, это действительно упростило бы работу по настройке извлечения файла журнала.
Кажется, вам нужен компонент, называемый «отправитель журналов» (не путать с репликацией базы данных). Сам Logstash поставляет один; его называют «агентом», и он написан на Java. Если вы не хотите устанавливать [конкретную версию] Java на все свои серверы (что является вполне разумным возражением), то есть множество альтернатив.
У грузоотправителей есть несколько общих свойств, по которым вы можете их сравнить:
Книга Logstash перечисляет несколько; например, lumberjack (написанный на Go и не упакованный моей ОС), и есть много других.
rsyslog также может читать из файлов, но затраты на лицензирование Windows, скорее всего, вас отпугнут; но это может быть полезно, если у вас есть RHEL / Centos / другое устройство, на котором установлен rsyslog (будучи устройством, вы обычно не можете свободно устанавливать все, что захотите, по причинам поддержки).
В настоящее время я использую nxlog, написанный на C; он достаточно маленький, не имеет надоедливых зависимостей во время выполнения или сборки; работает как минимум под Linux и Windows; довольно хорошо портирован; легко построить на платформах, для которых нет пакета; имеет неплохую документацию (но может быть и лучше); отзывчивый разработчик; доступна коммерческая поддержка; может передавать через SSL; читает из множества различных входных данных, включая файлы, системный журнал, журнал событий Windows и другие; выполняет некоторую обработку, в том числе применяет кучу тегов для последующей обработки в logstash; выводит на целую кучу разных вещей (я отправляю свой на центральный сервер журнала, который буферизует, записывает на диск, вращает файлы, а также отправляет данные в Logstash для ввода в эластичный поиск)
Nxlog не идеален; в нем есть ряд ошибок, особенно связанных с синтаксическим анализом конфигурации (обратите внимание на отсутствие точек с запятой), и семантика конфигурации может немного запутать, когда вы хотите попробовать сделать что-то более сложное. Я столкнулся, по крайней мере, с одной утечкой памяти и еще с одной проблемой, которая требует от меня на время реализовать обнаружение зависшего процесса, но, несмотря на все это, я все еще достаточно доволен тем, что мы до сих пор использовали nxlog для нашего парка. до сих пор, и мы продвигаем много данных через него.
Однако, поскольку вы явно упомянули об использовании SSH (является ли это реальным требованием?), Вы можете настроить scp с авторизованными ключами для файла, а затем локально использовать для него канал logstash; и (при условии, что вы каждый раз вызываете logstash заново) использовать возможность logstash записывать, где в файле он попал. Однако следует соблюдать осторожность: вы, вероятно, не хотите, чтобы индексный дескриптор изменялся, поэтому перезапишите файл, используя '...> file.txt', который заменит содержимое, но не заменит сам файл. Однако ротация логов может помешать этому. Вам действительно нужен отправитель журналов на удаленном компьютере. Использование rsyslog может быть полезно, если требуется минимальное вмешательство в среду, хотя у вас не будет возможности передавать через SSL (хотя, возможно, обновленная версия rsyslog позволит это).
Надеюсь, это поможет, Кэмерон