Jump to content
  • 3

Оптимизация и развитие логов в устройстве


SySOPik

Question

Приветствую. Хочется вновь поднять вопрос развития логов в журнале, развития и оптимизации. За множество лет уровень логирования так и не изменился, не дотягивает даже до уровня ххххх-линков. Хотелось бы, чтоб наконец появился более удобоваримый вид, возможность логирования ошибок и предупреждений, выключения простыни информационных сообщений. У меня, например, везде резервный провайдер WISP с мобильного роутера 4G, и поскольку "холодный" резерв так и не появился, логи забиты ненужной информацией про отсутствие коннекта, найти ошибки в логе нереально чуть меньше чем вообще.

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0
2 минуты назад, SySOPik сказал:

... найти ошибки в логе нереально чуть меньше чем вообще.

Учитывая что на моей памяти это надцатое предложение сделать в web полноценный текстовый редактор с блекджеком и шлю с фильтрами и поиском вставлю свои пять копеек. Много проще слить на пк файло и внешними тулзами сделать с этим логом что угодно, чем городить огород ради того, чтобы этой фичей в web пользовалось ровно полтора землекопа, ибо 99,9% домохозяев и знать не знают что такое logfile. Всё выше сказанное сугубо ИМХО.

  • Y'r wrong 1
Link to comment
Share on other sites

  • 0
2 минуты назад, Mamay сказал:

бо 99,9% домохозяев и знать не знают что такое logfile. Всё выше сказанное сугубо ИМХО.

Кинетики берут основной массой не домохозяйки, их берут более менее понимающие что такое набор компонентов, VPN, резервирование интернета, RMM vs Mobile App и т.д. Домохозяйки берут хххх-линк подешевле или что-то красивенькое.

5 минут назад, Mamay сказал:

Много проще слить на пк файло и внешними тулзами сделать с этим логом что угодно

Можно с доп. средствами сделать фсЕ, но удобоваримый лог в интернет комбайне масте хев априори. Ладно был бы некий функционал в RMM, тогда худо бедно можно как-то выйти.

Link to comment
Share on other sites

  • 0
4 минуты назад, Александр Рыжов сказал:

Если они помогают в диагностике проблем

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

Edited by SySOPik
Link to comment
Share on other sites

  • 0
2 часа назад, sergeyk сказал:

Холодный резерв появился.

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

Но оно не решает вопрос логов. Я как б может и не трогал тему, но начало в одном месте дисконнектить, невозможно как то удобоваримо отфильтровать за сутку-две  ошибки и предупреждения для исследования. В 99% случаев, имхо информационные сообщения "DHCPREQUEST received (STATE_RENEWING) " или "Network::Interface::Rtx::WifiMonitor: "WifiMaster0/AccessPoint1": "  или "Dns::Manager: name server 8.8.8.8 added" как б не особо и нужны. А вот "красненькие" и "зелененькие" сообщения за некоторое время очень интересны.

Edited by SySOPik
Link to comment
Share on other sites

  • 0

хех...

"слеплено на коленке"

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

 

~ # cat /opt/usr/bin/get-log 
#!/bin/sh

wget -qO - --post-data='[{"log":{"once":true}}]' localhost:79/rci/show | \
sed -e '2,3d;s,^\[,,;s,^\],,;s,^[[:space:]]*,,g;s,^"[[:digit:]]*":[[:space:]],,' | tr -d '\n' | \
sed -e 's/},{/}\n{/g;s,}}}$,}\n,g' | \
sed -e 's,^{"message":[[:space:]],,g;s!},!,!g' > /opt/var/log/$HOSTNAME-$(date +%Y_%m_%dT%H:%M).log
~ #
~ # ./hl -l error /opt/var/log/Keenetic-6065-2023_05_18T19:50.log

screen_2023-05-18_21:02:20-hl.png

screen_2023-05-18_21:03:34-hl.png

~ # ./hl -f label=W /opt/var/log/Keenetic-6065-2023_05_18T19:50.log

screen_2023-05-18_21:06:17-hl.png

hl - https://github.com/pamburus/hl

  • Thanks 2
Link to comment
Share on other sites

  • 0
12 часа назад, TheBB сказал:

"слеплено на коленке"

Но ведь можно же и не на коленке? "Могут же, если захотят..."

Link to comment
Share on other sites

  • 0

"Кто хочет, тот ищет возможности, кто не хочет — ищет причины." (

Нужен был лог, без захода на "морду лица" ака dashboard

Скрытый текст
~ # wget -qO - --post-data='[{"log":{"once":true}}]' localhost:79/rci/show
[
  {
    "log": {
      "2389": {
        "message": {
          "level": "Info",
          "label": "I",
          "message": "Network::Interface::Base: \"WifiMaster1/AccessPoint1\": schedule cleared. "
        },
        "timestamp": "Apr 25 18:11:45",
        "ident": "ndm",
        "id": 2389
      },
      "2390": {
        "message": {
          "level": "Info",
          "label": "I",
          "message": "Network::Interface::Wireless: \"WifiMaster1/AccessPoint1\": SSID saved. "
        },
        "timestamp": "Apr 25 18:11:45",
        "ident": "ndm",
        "id": 2390
      },
...

 

знатная "портянка" выходит, надо что-то с "этим" делать

~ # cat /opt/usr/bin/show-log 
#!/bin/sh

wget -qO - --post-data='[{"log":{"once":true}}]' localhost:79/rci/show | \
sed -e '2,3d;s,^\[,,;s,^\],,;s,^[[:space:]]*,,g;s,^"[[:digit:]]*":[[:space:]],,' | \
tr -d '\n' | sed -e 's/},{/}\n{/g;s,}}}$,}\n,g'
~ # 
~ # show-log 
{"message": {"level": "Info","label": "I","message": "Network::Interface::Base: \"WifiMaster1/AccessPoint1\": schedule cleared. "},"timestamp": "Apr 25 18:11:45","ident": "ndm","id": 2389}
{"message": {"level": "Info","label": "I","message": "Network::Interface::Wireless: \"WifiMaster1/AccessPoint1\": SSID saved. "},"timestamp": "Apr 25 18:11:45","ident": "ndm","id": 2390}
...

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

да, знаю, можно натравить jq, однако, мы лёгких путей не ищем, т.к. комсомольцы без трудностей не могут )))

Скрытый текст
~ # hl --help
hl 0.14.0
JSON log converter to human readable representation

USAGE:
    hl [OPTIONS] [--] [FILE]...

ARGS:
    <FILE>...    Files to process

OPTIONS:
        --buffer-size <BUFFER_SIZE>                          Buffer size [env: HL_BUFFER_SIZE=] [default: "2 MiB"]
    -c                                                       Handful alias for --color=always, overrides --color option
    -C, --concurrency <CONCURRENCY>                          Number of processing threads [env: HL_CONCURRENCY=]
        --color <COLOR>                                      Color output options [env: HL_COLOR=] [default: auto] [possible values: auto, always, never]
    -e, --hide-empty-fields                                  Hide empty fields, applies for null, string, object and array fields only [env: HL_HIDE_EMPTY_FIELDS=]
    -E, --show-empty-fields                                  Show empty fields, overrides --hide-empty-fields option [env: HL_SHOW_EMPTY_FIELDS=]
    -f, --filter <FILTER>                                    Filtering by field values in one of forms [<key>=<value>, <key>~=<value>, <key>~~=<value>, <key>!=<value>, <key>!~=<value>,
                                                             <key>!~~=<value>] where ~ denotes substring match and ~~ denotes regular expression match
    -h, --hide <HIDE>                                        Hide or unhide fields with the specified keys, prefix with ! to unhide, specify !* to unhide all
        --help                                               Print help information
        --interrupt-ignore-count <INTERRUPT_IGNORE_COUNT>    Number of interrupts to ignore, i.e. Ctrl-C (SIGINT) [env: HL_INTERRUPT_IGNORE_COUNT=] [default: 3]
    -l, --level <LEVEL>                                      Filtering by level [env: HL_LEVEL=] [possible values: error, warning, info, debug]
    -L, --local                                              Use local time zone, overrides --time-zone option
        --list-themes                                        List available themes and exit
        --max-message-size <MAX_MESSAGE_SIZE>                Maximum message size [env: HL_MAX_MESSAGE_SIZE=] [default: "64 MiB"]
    -P                                                       Handful alias for --paging=never, overrides --paging option
        --paging <PAGING>                                    Output paging options [env: HL_PAGING=] [default: auto] [possible values: auto, always, never]
    -r, --raw-fields                                         Disable unescaping and prettifying of field values
        --since <SINCE>                                      Filtering by timestamp >= the value (--time-zone and --local options are honored)
    -t, --time-format <TIME_FORMAT>                          Time format, see https://man7.org/linux/man-pages/man1/date.1.html [env: HL_TIME_FORMAT=] [default: "%b %d %T.%3N"]
        --theme <THEME>                                      Color theme [env: HL_THEME=] [default: one-dark-green]
        --until <UNTIL>                                      Filtering by timestamp <= the value (--time-zone and --local options are honored)
    -V, --version                                            Print version information
    -Z, --time-zone <TIME_ZONE>                              Time zone name, see column "TZ database name" at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones [env: HL_TIME_ZONE=]
                                                             [default: Europe/Moscow]
~ # 

 

hl_0.14.0-1_mipsel-3.4.ipk

  • Thanks 2
Link to comment
Share on other sites

  • 0
1 час назад, gaaronk сказал:

Можно же просто

Можно! Можно отправлять лог на внешнее устройство, прям "искаропки", "в морде" (Использовать Syslog). Можно "воткнуть" пакет syslog-ng и в нём ковыряться. Можно... )))

Link to comment
Share on other sites

  • 0
1 час назад, TheBB сказал:

Можно! Можно отправлять лог на внешнее устройство, прям "искаропки", "в морде" (Использовать Syslog). Можно "воткнуть" пакет syslog-ng и в нём ковыряться. Можно... )))

Зачем мне внешнее устройство? У меня куча кинетиков в разных местах? Зачем мне городить лог сервер где-то в датацентре с белой IP,  для того, чтоб посмотреть логи в удобоваримом формате, как реализовано у 90% других производителей?

1 час назад, TheBB сказал:

Можно "воткнуть" пакет syslog-ng и в нём ковыряться

Можно купить самый дешёвый роутер, сгородить опен-врт, скриптами написать все самому. Тогда зачем мне кинетик?

Можно купить Ruijie c их Cloud, развернуть там VPN или Некротик с теми ж функциями. 

Можно просто купить другого хорошего производителя руотеров, посмотреть как у него сделаны лог и сделать точно так же. Там не нужно 1000000$ и 5 лет работы.

Edited by SySOPik
  • Upvote 1
Link to comment
Share on other sites

  • 0
18 часов назад, SySOPik сказал:

Можно купить самый дешёвый роутер, сгородить опен-врт

Можно ))) KN-2110

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

screen_2023-05-20_10:51:34-owrt.png

screen_2023-05-20_10:53:22-slog.png

screen_2023-05-20_10:54:34-dmesg.png

ток там нет ни фильтров, ни красненько-зелёненькой раскраски )))

А, вот, фильтры смотрелись бы неплохо, типа:

D - debug (по умолчанию всё, как оно и есть), I - info (только информационные), W - warning (только предупреждения), E - error (только ошибки), C - critical (фих знает, м.б. опционально), с отключением "Обновлять в реальном времени" (чтоб ресурсы не жрало) и блокированием выбора неиспользуемых (защита от ССЗБ и шаловливых ручонок)

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

screen_2023-05-20_10:06:32-sl.png

 

  • Upvote 1
Link to comment
Share on other sites

  • 0
2 часа назад, TheBB сказал:

Можно ))) KN-2110

Ну так в Опен логи по удобоваримости как в кинете. Только за опен врт не надо платить, а за кинет надо. Если уж платить, так за нормальное решение?

2 часа назад, TheBB сказал:

фильтры смотрелись бы неплохо

Ну хотя б фильтры для начала.

Link to comment
Share on other sites

  • 0
В 20.05.2023 в 11:20, TheBB сказал:

Можно ))) KN-2110

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

screen_2023-05-20_10:51:34-owrt.png

screen_2023-05-20_10:53:22-slog.png

screen_2023-05-20_10:54:34-dmesg.png

ток там нет ни фильтров, ни красненько-зелёненькой раскраски )))

А, вот, фильтры смотрелись бы неплохо, типа:

D - debug (по умолчанию всё, как оно и есть), I - info (только информационные), W - warning (только предупреждения), E - error (только ошибки), C - critical (фих знает, м.б. опционально), с отключением "Обновлять в реальном времени" (чтоб ресурсы не жрало) и блокированием выбора неиспользуемых (защита от ССЗБ и шаловливых ручонок)

  Скрыть содержимое

screen_2023-05-20_10:06:32-sl.png

 

Фильтровать, это хорошо... но ещё лучше бы было если только нужная (заранее выбранная служба) записывала бы сообщения в лог ... места в файле лога совсем мало, перезаписываются события. Вот не интересно допустим как работает Wi-Fi...снимаем галочку, и инфа в лог не пишется😁

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

Edited by MDP
Link to comment
Share on other sites

  • 0
4 часа назад, MDP сказал:

но ещё лучше бы было если только нужная (заранее выбранная служба) записывала бы сообщения в лог

))) служба?

~ # ndmc -c show log | cut -d' ' -f5 | grep -E '[a-z]' | cut -d: -f1 | cut -d'[' -f1 | sort -u
avahi-daemon
cron
crond
dropbear
kernel
mini_snmpd
ndhcpc
ndm
root
sshd
telnetd
~ # 

если выкинуть Entware, остаётся не так уж и много.

4 часа назад, MDP сказал:

места в файле лога совсем мало

ну, в файле места полно, сгрузите и посмотрите

[C] May  8 04:07:47 ndm: Mutex:   Cloud::UhpService::Impl_::DoControlListener_()+0x408 
[C] May  8 04:07:47 ndm: Mutex:   Cloud::UhpService::Impl_::DoActive_()+0x250 
[C] May  8 04:07:47 ndm: Mutex:   Cloud::UhpService::Impl_::Run()+0x368 
[C] May  8 04:07:47 ndm: Mutex:   Thread::StartRoutine_(void*)+0x420
...
[E] May 30 13:15:43 ndm: Core::Ndss: [23271] cannot connect to the server. 
[E] May 30 13:16:42 ndm: Core::Ndss: [23276] HTTP error: 504 (Gateway Time-out). 
[I] May 30 13:48:59 ndm: Network::Interface::Mtk::WifiMonitor: "WifiMaster0/AccessPoint0": STA(00:11:22:33:44:55) GTK rekey done, group cipher AES. 
[I] May 30 14:45:01 ndhcpc: Bridge0: received ACK for 123.456.789.0 from 098.765.432.1 lease 25200 sec.

а в журнале, видимо, ограничение на кол-во отображаемых строк.

Link to comment
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
Answer this question...

×   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...