Для начала следует упомянуть, что rsyslog - это очень гибкая система логирования для UNIX-подобных систем, поддерживающая множество разных настроек и возможностей.
### Игнорирование ошибок недоступности получателя (напр. RabbitMQ):
Для игнорирования ошибок, связанных с недоступностью получателя, вы можете использовать директивы в файле конфигурации rsyslog для ограничения сообщений об ошибках или использования очередей для буферизации сообщений.
1. Для ограничения сообщений об ошибках, можно добавить в ваш файл `rsyslog.conf` такие строки:
```shell
# Путь к конфигурационному файлу обычно /etc/rsyslog.conf
$ActionResumeRetryCount -1 # Бесконечные попытки переподключения
$ActionQueueType LinkedList # Использование памяти для буферизации сообщений
$ActionQueueFileName queue # Очередь диска для сохранения сообщений
$ActionQueueSaveOnShutdown on # Сохранение сообщений в случае остановки rsyslog
$ActionQueueMaxDiskSpace 1g # Максимальное пространство для очереди на диске
```
Эти настройки помогут уменьшить вероятность потери сообщений из-за временной недоступности получателя, но полностью игнорировать такие ошибки не рекомендуется, так как это может привести к потере важных данных логов.
### Пересылка данных в Logstash:
Для пересылки логов из rsyslog в Logstash можно использовать следующую конфигурацию:
1. Включите модуль `omfwd`.
```shell
module(load="omfwd")
```
2. Добавьте правило для отправки данных на Logstash:
```shell
action(type="omfwd"
Target="logstash_server_hostname" # Замените на имя хоста вашего сервера Logstash
Port="logstash_port" # Замените на порт INPUT вашего Logstash
Protocol="tcp" # Или используйте "udp" если настроили Logstash на прием такого трафика
Template="LongTagForwardFormat") # Выберите или настройте нужный формат сообщения
```
Убедитесь, что Logstash настроен на прием логов с rsyslog через соответствующий plugin (например, `tcp` или `udp` input).
### Пересылка данных в RabbitMQ:
Чтобы пересылать сообщения с rsyslog прямо в RabbitMQ, вам возможно потребуется воспользоваться специальным плагином или сторонними инструментами, так как rsyslog по умолчанию не поддерживает прямую интеграцию с RabbitMQ.
Один из способов - использовать omprog модуль rsyslog для вызова внешнего скрипта:
1. Настройте внешний скрипт (например, python скрипт), который будет принимать строки логов и публиковать их в RabbitMQ.
2. Добавьте конфигурацию в `rsyslog.conf`, чтобы использовать `omprog`:
```shell
module(load="omprog")
action(type="omprog"
binary="/path/to/your/script.py") # Путь к вашему скрипту
```
Ваш скрипт должен корректно обрабатывать получаемые данные и заботиться об их доставке в RabbitMQ.
При работе с rsyslog, всегда внимательно прочитайте документ