Jump to content
Roman_Petrov

Запись syslog на внешний USB-диск с помощю Syslog-ng

Recommended Posts

Здравствуйте, а как бы еще ограничить файлы логов по объему? или например по дате? ибо многометровый текстовый файл как то не круто)))

Share this post


Link to post
Share on other sites
28 минут назад, John9110 сказал:

Здравствуйте, а как бы еще ограничить файлы логов по объему? или например по дате? ибо многометровый текстовый файл как то не круто)))

По объему видимо никак, такой функционал не предусмотрен. По дате теоретически можно, сделав достаточно сложный скрипт с помощью cron. Но нужно ли это? Можно в этом самом файле пользоваться поиском по критерию даты. 

Share this post


Link to post
Share on other sites
2 часа назад, John9110 сказал:

Здравствуйте, а как бы еще ограничить файлы логов по объему? или например по дате? ибо многометровый текстовый файл как то не круто)))

Все можно сделать. И по объему и по времени. Это же linux. Ставьте logrotate (возможно, он по дефолту уже стоит - я не помню) и настраивайте /opt/etc/logrotate.conf.

Только еще нужно в /opt/etc/cron.daily засунуть задачу, чтобы он запускал ротацию каждые сутки. И, конечно, предварительно поставить cron.

Сейчас спешу. Если не разберетесь и требуется дополнительная помощь, то могу выложить пример своей конфигурации для logrotate и cron.

Edited by gvan

Share this post


Link to post
Share on other sites
1 час назад, gvan сказал:

Все можно сделать. ... могу выложить пример своей конфигурации для logrotate и cron.

Выкладываете, подробности конечно нам интересны. Всегда приятно иметь в копилке логгеров альтернативы, особенно если они лучше.

Share this post


Link to post
Share on other sites
5 часов назад, gvan сказал:

Решение вроде есть, но нужно ставить какой-то другой cron (из busybox). Возможно, данную проблему уже поправили в новых версиях прошивок. Но сейчас не могу проверить, т.к. у меня на диске файловая система ext3 и теперь проблем нет (но они у меня были с ntfs).

Единственное решение для NTFS, чтобы все работало, это действительно crontab из busybox, т.к. vixie's cron (который ставиться отдельно) здесь работать не будет. Во всяком случае, после того, как обновили пару недель назад драйвер NTFS, проблем больше нет никаких. А вот vixie's cron по любому не работает. Как можно поставить (настроить) crontab из busybox можно взять отсюда.

Решение с logrotate действительно интересно, нужно будет при наличии времени попробовать. А так, от имени всех, большое спасибо. Кому актуально, думаю очень пригодиться. Думаю и я в хозяйстве пристрою, т.к. сегодня мой лог файл за 2 месяца раздулся аж до 512 Мб ;)

Share this post


Link to post
Share on other sites
14 часа назад, Roman_Petrov сказал:

Решение с logrotate действительно интересно, нужно будет при наличии времени попробовать

Да, это нужно обязательно сделать. В логе будет проще что-то найти. Да и хранить древние, никому ненужные объемы данных никакого смысла нет.

Свое предыдущее сообщение немного дополнил, конфигурацию для ротации /opt/var/log/messages вынес в отдельный файл (чтобы не изменять основной конф-файл logrotate).

Пробуйте. Возможно, что-то не учел или где-то ошибся. Если не получится или что-то не заработает, как нужно, сообщайте. Будем разбираться.

Share this post


Link to post
Share on other sites
1 час назад, gvan сказал:

Пробуйте. Возможно, что-то не учел или где-то ошибся. Если не получится или что-то не заработает, как нужно, сообщайте. Будем разбираться.

В моем случае это было не особенно актуально, т.к. делал сбор лога определенное время, только когда были проблемы с перегрузкой роутера, чтобы пытаться поймать что происходит... Потом решили другим путем (сняли дамп после kernel panic) и мне стало не актуально, но и сносить не стал ради любопытства как поведет себя, если будет долго работать. Подходить так профессионально, с сортировками по размеру и т.д. как вы, я не стал, да и не знал о существовании lograte. Но ради общества в целом можно подробно тему раскурить и внести в шапку.

Edited by Roman_Petrov

Share this post


Link to post
Share on other sites
8 минут назад, Roman_Petrov сказал:

Но ради общества в целом можно подробно тему раскурить и внести в шапку.

Я тоже об этом подумал. Есть желание это оформить в отдельную тему. Да и так правильней будет: сбор логов это одно дело, а управление их ротацией - другое. Могут быть и другие службы запущены, которые пишут свои логи в отдельные файлы (у меня это, например, прокси).

Просто кроме меня пока это понадобилось только одному пользователю, поэтому пока руки не доходили :)

Share this post


Link to post
Share on other sites
20 минут назад, gvan сказал:

Я тоже об этом подумал. Есть желание это оформить в отдельную тему. Да и так правильней будет: сбор логов это одно дело, а управление их ротацией - другое. Могут быть и другие службы запущены, которые пишут свои логи в отдельные файлы (у меня это, например, прокси).

Просто кроме меня пока это понадобилось только одному пользователю, поэтому пока руки не доходили :)

Ваша права. Сделайте отдельную тему, я закину ссылку в шапку. Кому нужна будет и ротация-сортировка, сделает. И всем хорошо ;)

Edited by Roman_Petrov

Share this post


Link to post
Share on other sites
40 минут назад, Roman_Petrov сказал:

Сделайте отдельную тему

Перенес. Исходное сообщение отредактировал с указанием ссылки на тему.

Share this post


Link to post
Share on other sites
10 часов назад, gvan сказал:

Перенес. Исходное сообщение отредактировал с указанием ссылки на тему.

Закинул ссылку в шапку. Спасибо за работу, думаю многим будет интересно, кто в теме. Успехов!!!

Share this post


Link to post
Share on other sites
1 час назад, enpa сказал:

Giga II...Установил. Прошивка v2.06(AAFS.5)C1. 

Когда прописываю: 

~ # /opt/etc/init.d/S01syslog-ng start
 Starting syslog-ng...

Segmentation fault
   failed.

пишет Segmentation fault, и ... при этом лог сохраняется (куда прописал), в destination messages { file("/opt/syslogs/messages"); };

вопрос. в чем косяк? почему же Segmentation fault? Разве 2.06 не заточена под opkg, а тем более под    Entware-Keenetic? Хотя выше указано, что есть поддержка. Файловая система ext3. Куда копать?

Вопрос, вы данную директорию на диске ваш_диск/syslogs предварительно физически на диске создали (есть такая в корне вашего диска?). Можете попробовать сначала, чтобы писал как по умолчанию 

opt/var/log/messages 

Тогда у вас приходит в норму все? 

Edited by Roman_Petrov
  • Thanks 1

Share this post


Link to post
Share on other sites

Помогите пожалуйста, разобраться .

Роутер 192.168.1.1

nas c возможностью собирать статистику 192.168.1.111

Как только активировал стандартную отправку логов на удаленный сервер в настройках роутера  и указал IP 192.168.1.111.

Стандартные Логи на NAS побежали.

Вот конфиг

Скрытый текст

options {
    chain_hostnames(off);
    sync(0);

    # The default action of syslog-ng 1.6.0 is to log a STATS line
    # to the file every 10 minutes.  That's pretty ugly after a while.
    # Change it to every 12 hours so you get a nice daily update of
    # how many messages syslog-ng missed (0).
    stats(43200);
};

##source src { unix-stream("/dev/log"); internal(); };
source src { udp(ip(192.168.1.) port(514)); };
unix-stream("/dev/log"); };
destination messages { file("/opt/var/log/messages"); };

log { source(src); destination(messages); };

Как только указываю IP NAS 192.168.1.111 в конфиге , тогда служба просто не стартует

~ # /opt/etc/init.d/S01syslog-ng start
 Starting syslog-ng...              failed.

Как заставить роутер отправлять все логи на NAS ?.

Спасибо

Share this post


Link to post
Share on other sites
52 минуты назад, yuoras сказал:

Помогите пожалуйста, разобраться .

Роутер 192.168.1.1

nas c возможностью собирать статистику 192.168.1.111

Как только активировал стандартную отправку логов на удаленный сервер в настройках роутера  и указал IP 192.168.1.111.

Стандартные Логи на NAS побежали.

Вот конфиг

  Показать содержимое

options {
    chain_hostnames(off);
    sync(0);

    # The default action of syslog-ng 1.6.0 is to log a STATS line
    # to the file every 10 minutes.  That's pretty ugly after a while.
    # Change it to every 12 hours so you get a nice daily update of
    # how many messages syslog-ng missed (0).
    stats(43200);
};

##source src { unix-stream("/dev/log"); internal(); };
source src { udp(ip(192.168.1.) port(514)); };
unix-stream("/dev/log"); };
destination messages { file("/opt/var/log/messages"); };

log { source(src); destination(messages); };

Как только указываю IP NAS 192.168.1.111 в конфиге , тогда служба просто не стартует


~ # /opt/etc/init.d/S01syslog-ng start
 Starting syslog-ng...              failed.

Как заставить роутер отправлять все логи на NAS ?.

Спасибо

Если вы хотите логи отправлять на NAS, Entware вам с Syslog вообще не нужно. Достаточно в настройках журнала роутера указать адрес вашего NAS (192.168.1.111) и поставить чекбокс.

Share this post


Link to post
Share on other sites

1. Entware  стоит уже давно , до этого был Zyxware

2. настройках журнала роутера  только системные логи , а мне нужно все.

Нужно это , потому что , данный роутер работает два три дня и зависает (нет доступа веб интрефейсу, SSH).
Только ребут. Ничего нового не устанавливал на него , работал месяцами.

Последнее время наблюдаются зависоны

 

Вот и хочу узнать ,что происходит

Edited by yuoras

Share this post


Link to post
Share on other sites
В Tuesday, December 13, 2016 в 19:08, yuoras сказал:

1. Entware  стоит уже давно , до этого был Zyxware

2. настройках журнала роутера  только системные логи , а мне нужно все.

Нужно это , потому что , данный роутер работает два три дня и зависает (нет доступа веб интрефейсу, SSH).
Только ребут. Ничего нового не устанавливал на него , работал месяцами.

Последнее время наблюдаются зависоны

 

Вот и хочу узнать ,что происходит

Если вы хотите писать логи с помощью syslog на NAS (имхо нет смысла, т.к. с таким же успехом вы можете писать на ЖД роутера), то нужно поиграться со строкой в конфиге, подставляя вместо file расположение NAS в сети:

destination messages { file("/opt/var/log/messages");  };

P.S. Скорее всего у вас уже подгорел процессор, такое бывает. Лечится временно приклейкой более мощного радиатора.

Share this post


Link to post
Share on other sites
3 часа назад, Roman_Petrov сказал:

Если вы хотите писать логи с помощью syslog на NAS

Сам не пробовал на внешний сервер отдавать, но, судя по всему, примерно так:

destination remote {udp("192.168.1.111" port(514));};

log { source(src); destination(remote); };

 

Share this post


Link to post
Share on other sites
3 часа назад, gvan сказал:

Сам не пробовал на внешний сервер отдавать, но, судя по всему, примерно так:


destination remote {udp("192.168.1.111" port(514));};

log { source(src); destination(remote); };

 

Да, сейчас можно попробовать и так

destination messages { udp("192.168.1.111" port(514)); };

Может и так прокатит... Реально судя по всему никто это делать не пробовал, нужно поэксперементировать.

Edited by Roman_Petrov

Share this post


Link to post
Share on other sites

Пока сделал(подглядел) разделение лога на год\месяц\день. пример внизу. Завтра увижу, делит ли лог на день.

 

Скрытый текст

options { 
	chain_hostnames(off); 
	sync(0); 

	# The default action of syslog-ng 1.6.0 is to log a STATS line
	# to the file every 10 minutes.  That's pretty ugly after a while.
	# Change it to every 12 hours so you get a nice daily update of
	# how many messages syslog-ng missed (0).
	stats(43200); 
};


source src { udp(ip(192.168.1.1) port(514)); };

#destination messages { file("/opt/My_Files/log/messages.txt"); };

destination messages { file("/opt/My_Files/log/$YEAR/$MONTH/$DAY/messages.txt" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));};

log { source(src); destination(messages); };

 

 

  • Thanks 1

Share this post


Link to post
Share on other sites
1 час назад, John9110 сказал:

destination messages { file("/opt/My_Files/log/$YEAR/$MONTH/$DAY/messages.txt" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));};

Есть один небольшой (или большой) минус. Будьте готовы к тому, что после перезагрузки роутера часть лога до того момента, пока на нем не синхронизируются часы через интернет, может попасть в старые даты (логи).

В роутере батарейки нет, поэтому при его загрузке дата берется из конфа.

Share this post


Link to post
Share on other sites

syslog-ng некорректно обновляется на новую версию 3.8.1-3.

Пришлось удалить старую версию,

после чего новая версия не ставилась из-за конфликта в устанавливаемых библиотеках,

была поставлена с ключем --force_overwrite

после чего пришлось восстанавливать потерявшийся конфиг из backup-а

посте чего получил кучу warning-ов по конфигу - предыдущая версия очень старая, изменилось очень много, приведенные ранее в этой теме примеры, вероятно, стали некорректны.

Впрочем, warning-и внятные, старый конфиг исправлятся довольно просто, главное, иметь его копию, и не стирать сразу новый конфиг, чтобы взять из него, что нужно.

Edited by HuduGuru
Дополнение

Share this post


Link to post
Share on other sites

Всё из-за того, что в OpenWRT -  syslog-ng: import from oldpackages & eventlog: import from oldpackages , с переименованием второго

Share this post


Link to post
Share on other sites
55 минут назад, HuduGuru сказал:

после чего новая версия не ставилась из-за конфликта в устанавливаемых библиотеках,

К сожалению система пакетов opkg не слишком интеллектуальна. Такое возможно.

Нужно руками переустанавливать пакеты с флагом `--force-reinstall`

Share this post


Link to post
Share on other sites

обновились пакеты и за одно syslog-ng,  и хотя он стартует без ошибок, но уже и логи не пишет. и вообще не создаёт файл. нигде ошибок не выдаётся но и логи не пишутся.

вот такой конфиг

	@version:3.9
	options {
    chain_hostnames(no);
    create_dirs(yes);
    flush_lines(0);
    keep_hostname(yes);
    log_fifo_size(256);
    log_msg_size(1024);
    stats_freq(0);
    flush_lines(0);
    use_fqdn(no);
};
	source src {
    udp(ip(192.168.1.1) port(514));
    internal();
    unix-stream("/dev/log");
};
	source net {
    udp(ip(0.0.0.0) port(514));
};
	source kernel {
        file("/proc/kmsg" program_override("kernel"));
};
	destination messages {
    file("/opt/var/log/messages");
};
	log {
    source(src);
    source(net);
        source(kernel);
    destination(messages);
};
	@include "/opt/etc/custom-logs.conf"
	

Share this post


Link to post
Share on other sites

А что у вас раньше стояло здесь:

};

 source src {

    udp(ip(192.168.1.1) port(514));

    internal();

    unix-stream("/dev/log");

};

Судя по файлу конфигурации, который вы привели, изменилась его структура. Я уже давненько за отсутствием времени не обновлял пакеты и видимо упустил.

P.S. по виду создается впечетление, что теперь нужно, как явно подсказывает сам изначальный текст настроек, работать с:

};

 source net {

    udp(ip(0.0.0.0) port(514));

};

Т.е. в него подставлять настройку приема лога с отправляемого виртуально в сеть по настройке журнала роутера...

Edited by Roman_Petrov

Share this post


Link to post
Share on other sites

конфиг попробовал поправить и строку

    udp(ip(0.0.0.0) port(514));

поменял на строку

    udp(ip(192.168.1.1) port(514));

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

Share this post


Link to post
Share on other sites

Есть одно сомнение. В веб интерфейсе на вкладке журнала вы поставили галку на "отправлять лог на" и выставили адрес самого роутера? 

Share this post


Link to post
Share on other sites

А там в веб интерфейсе нету таковой как галки, чтоб отправлять журнал на внешний компьютер. там просто адрес написан и всё. а вот или галку я не вижу, а она как-то есть, то я сказать не могу. по зрению полный 0. но уже и исходник хтмл той странички смотрел и нету там такой галки, что отправлять журнал, а только ип адрес пишется.

Share this post


Link to post
Share on other sites

да нет. там всё хорошо.

в логе пишется вот такое.

Syslog: server 192.168.1.1: added.

 

так что думаю, что сервер там прописан и оно б должно отправлять, но просто что syslog-ng не пишет.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...