LINUX.ORG.RU
ФорумAdmin

Вопрос по syslog-ng - не могу отсортировать логи

 , ,


0

1

Всем привет.

Такая вот ситуация, есть сервер 192.168.1.23 и 192.168.1.24. Хочу настроить syslog-ng таким образом, чтоб сервер 192.168.1.24 слал все логи на 192.168.1.23 и отдельно mysql-логи с 192.168.1.24 на 192.168.1.23 в отдельный файл.

Следовательно пишу такое на 192.168.1.24:

source s_all {
  internal();
  unix-stream("/dev/log");
  file("/proc/kmsg" program_override("kernel: "));
  file("/var/log/dmesg");
};

source mysqld_log { file("/var/log/mysqld.log"); };

# # Описываем новое хранилище логов.
destination remote { udp("192.168.1.23" port(514)); };


log { source(s_all); destination(remote); };
log { source(mysqld_log); destination(remote);};

А такое на 192.168.1.23:

# # Определяем новый источник: сеть.
source s_udp { udp(ip(192.168.1.23)); };


# Описываем фильтр
filter mysqld { program("mysqld"); };


# Описываем хранилище логов.
destination df_remote { file("/var/log/remote/$HOST.other.log"); };

log { source(s_udp); destination(df_remote); };

#-----------------------------------------

destination mysqld_log { file("/var/log/remote/$YEAR.$MONTH.$DAY/mysqld.log" owner("root") group("root") perm(0640) dir_perm(0750) dir_group("root"));};


log { source(s_udp); destination(mysqld_log); filter(mysqld); };

Результат: создаются два лога и туда пишуться аналогичные данные. Не смотря на директиву «filter mysqld» у файл mysqld.log пишется все тоже самое что и в $HOST.other.log.

Т.е. в содержимое mysqld.log попали так же инфа о syslog-ng:

Dec 10 18:55:48 cenros2-24 121210 18:55:47 [Note] Event Scheduler: Loaded 0 events
Dec 10 18:55:48 cenros2-24 121210 18:55:47 [Note] /usr/libexec/mysqld: ready for connections.
Dec 10 18:55:48 cenros2-24 Version: '5.1.66-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution
Dec 10 18:55:48 cenros2-24 121210 18:55:47 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000011' at position 106, relay log '/var/lib/mysql/mysql-relay-bin.000068' position: 251
Dec 10 18:55:48 cenros2-24 121210 18:55:47 [Note] Slave I/O thread: connected to master 'replication@192.168.1.23:3306',replication started in log 'mysql-bin.000011' at position 106
Dec 10 18:56:02 cenros2-24 syslog-ng[6643]: syslog-ng shutting down; version='3.2.5'
Dec 10 18:56:02 cenros2-24 syslog-ng[7015]: syslog-ng starting up; version='3.2.5'

Что ж я делаю не так?

Спасибо.

★★★★★

Что ж я делаю не так?

Используешь не тот софт не с теми насройками. Возьми rsyslog и mysql и прекрати мучаться парсингом файлов.

riki ★★★★ ()
Ответ на: комментарий от ipeacocks

Мне видится, что так решить вопрос лучше. Нельзя менять логгер, или не хочешь - ОК, но я предложил.

riki ★★★★ ()

Для начала непонятно как фильтр должен узнать что программа mysqld. Попробуй сделать program_override как для ядра у тебя. Либо тупо слать мускульные логи на другой порт и так их отделять от основного потока.

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

Для начала непонятно как фильтр должен узнать что программа mysqld.

Верно, я как-то затупил.

Спасибо. Про порты я знал, но думал, что можно как-то иначе сделать.

ipeacocks ★★★★★ ()
Ответ на: комментарий от blind_oracle

program_override работает норм. Но нужно было еще поменять порядок c:

log { source(s_udp); destination(mysqld_log); filter(mysqld); };

на

log { source(s_udp); filter(mysqld); destination(mysqld_log); };

Я думал сначала, что нет разницы - сислог-нг меня поймет.

ipeacocks ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.