Opened 6 years ago

Closed 5 years ago

#285 closed улучшение (готово)

Добавить настройку "запись лога"

Reported by: san Owned by: alx
Priority: средний Milestone: 1 очередь
Component: VE-01 Keywords:
Cc:

Description

Предлагаю добавить в плату настройку, которая будет включать/выключать запись лога в плате аналогично действиям описанным в инструкции: ve_diag.

Change History (14)

comment:1 by alx, 6 years ago

Milestone: 2 очередь1 очередь

comment:2 by alx, 6 years ago

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

  1. Как показали эксперименты, в busybox'овском syslogd есть какое-то ограничение на очередь сообщений или что-то типа этого. Если ему приходит сразу "пачка" сообщений, то в лог попадают только первые 10, а остальные теряются. Надо бы или подкрутить какую-то настройку в нем, или заменить syslogd на другой, или писать лог не в syslog, а прямо в файл.
  1. Было бы, наверное, полезно иметь фильтр сообщений журнала. Сейчас журналирование регулируется очень грубо: изменяется только приоритет сообщений (подробность лога: DEBUG - INFO - WARNING - ERROR), и только при старте (опцией -l). Если включить отладочный лог, в нем может быть трудно найти то, что интересует. Как можно это улучшить?
    1. Изменять уровень ведения журнала динамически - из веб-интерфейса (записью в какую-то конфигурационную переменную).
    2. Применять приоритеты лога к каждому канальному окончанию индивидуально - это поможет выводить подробный лог только событий, связанных только с одним или несколькими интересующими канальными окончаниями.

Саша, что ты думаешь по этому поводу? Давай обсудим, а по результатам создадим конкретные тикеты.

comment:3 by san, 6 years ago

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

По 2.1. я тоже согласен, нужна такая настройка рядом с кнопочкой "включить запись лога"

А насчёт 2.2 я сомневаюсь в целесообразности реализации.

in reply to:  3 comment:4 by alx, 6 years ago

Replying to san:

А насчёт 2.2 я сомневаюсь в целесообразности реализации.

Хм... Попробую пояснить мотивацию. Допустим, у нас имеется 250 абонентов. Один из них пожаловался, что у него что-то неправильно работает (не работает). Оператор хочет с помощью журнала выяснить, что же происходит. Он включает подробный лог и просит абонента повторить вызов. Но в это же время другие абоненты тоже куда-то звонят! В результате в журнале кроме сообщений, связанных с нужным канальным окончанием, будет куча ненужных сообщений об активности других канальных окончаний, что затруднит анализ. Возможность включать подробный лог только для событий, связанных с определенными канальными окончаниями, решает эту проблему, убирая заведомо ненужные сообщения из лога.

comment:5 by alx, 6 years ago

Кстати, Саша, как думаешь, может быть полезной функция направлять сообщения не своему собственному, а внешнему syslog'у (например указанием в конфиге адреса хоста, куда надо логгировать)?

in reply to:  5 comment:6 by alx, 6 years ago

Replying to alx:

направлять сообщения не своему собственному, а внешнему syslog'у

Предполагаемый сценарий: я обнаружил, что что-то работает неправильно. В конфигурации просто пишу адрес своего компьютера как получателя лога, одновременно повышаю подробность. И спокойно смотрю логи на своем компьютере - это избавляет меня от необходимости копировать логи из платы, автоматически решает проблему 1, плюс не расходуется ресурс ПЗУ постоянной записью в нее (точнее, я беспокоюсь не столько о ресурсе ПЗУ, сколько о том, что после записи большого объема на jffs2 плата начинает тормозить при старте - ей надо все записанное просканировать)... Плюс логи можно наблюдать практически в реальном времени, и для этого не надо сидеть в консоли платы, где все утилиты довольно убоги...

comment:7 by san, 6 years ago

функция направлять сообщения не своему собственному, а внешнему syslog'у

Для применения "на столе" будет полезной, а в реальном применении наверное нет, т.к. у пользователей, судя по практике, практически никогда нет возможности дать нам доступ напрямую к блоку.

in reply to:  7 comment:8 by alx, 6 years ago

Replying to san:

Для применения "на столе" будет полезной, а в реальном применении наверное нет, т.к. у пользователей, судя по практике, практически никогда нет возможности дать нам доступ напрямую к блоку.

??? При чем тут мы? Я ничего не писал о даче доступа нам. Предполагаемый вариант использования функции описан в comment:6. Может быть тебя запутало то, что я там писал от имени оператора? Чтобы исключить возможную путаницу, перепишу от 3-го лица:

Предполагаемый сценарий: оператор, обслуживающий плату VE-01, обнаружил, что что-то работает неправильно. В конфигурации он просто пишет адрес своего компьютера как получателя лога, одновременно повышает подробность. И спокойно смотрит логи на своем компьютере - это избавляет его от необходимости копировать логи из платы... и так далее...

comment:9 by san, 6 years ago

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

in reply to:  9 comment:10 by alx, 6 years ago

Replying to san:

предполагаеемые операторы ничего не понимают в нашил логах

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

(никакой инструкции/расшифровки логов у нас нет),

Какая может быть инструкция по чтению лога? Никогда в жизни такой инструкции не видел (хотя логов разных прочитал множество). :) Читать учат в школе. Какая расшифровка? Лог не зашифрован. :) Вот недавно мне присылали логи станции ISKRATEL Si2000, которую я никогда не видел, так мне не потребовалось никакой инструкции чтобы из прочитать... Или вот пример с нашим логом по мотивам реальных событий. Допустим, у кого-то соединение отбилось по неизвестной причине. Человек смотрит лог и видит там запись "RTP timeout" (который он, действительно, установил). Какая еще инструкция и "расшифровка" нужна чтобы понять, что произошел тот самый таймаут RTP, который он сам установил в конфигурации? По-моему, никакая - все и так ясно, написано открытым текстом.

Конечно, в логе есть информация, которую пользователь без дополнительных пояснений не поймет - например в разных событиях есть поля flags=0001, data=2219. Но в 99% случаях этого ему понимать и не надо. А Incoming call, CAS event или Call disconnected вполне понятны без пояснений...

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

Это если что-то не так с платой VE-01 (или, как минимум, пользователь подозревает это). В противном случае лично мне, например, эти логи неинтересны. У меня своих полно. :)

Version 0, edited 6 years ago by alx (next)

in reply to:  2 comment:11 by alx, 6 years ago

Replying to alx:

  1. Как показали эксперименты, в busybox'овском syslogd есть какое-то ограничение на очередь сообщений или что-то типа этого.

Как оказалось, это ограничение не в busybox'е, а в ядре. Есть параметр sysctl net.unix.max_dgram_qlen, который равен 10. Предлагается где-нибудь в стартовом скрипте устанавливать его в значение, скажем, 100 - этого должно хватить для наших целей.

comment:12 by alx, 6 years ago

In 1484/sip_ua:

При старте параметру sysctl net.unix.max_dgram_qlen устанавливается
значение 256. See #285.

comment:13 by alx, 5 years ago

In 1607/sip_ua:

Добавлена переменная, устанавливающая параметры логгирования.
Пока можно изменять только текущий приоритет. See #285.

comment:14 by alx, 5 years ago

Resolution: готово
Status: newclosed

В r1608 стало можно устанавливать как приоритет, так и режим журналирования (в файл или в буфер).
Режим и приоритет записываются в конфиг-файл /etc/config/system.

Note: See TracTickets for help on using tickets.