Автоматический мониторинг ошибок в терминале - какие есть решения? - страница 2

 
Roman:

А зачем костылить свой пинг понг? Когда можно обойтись штатными средствами.  

Это ненадежно. Для галочки так сделать можно, но будет работать только в тепличных условиях - как раз это костыль. Случаи зависания/падения терминала или MQL-программы, перезагрузки VPS (абсолютно надежных нет), когда коннект рапортуется нормально, а тиков в торговый день почему-то нет (баги разные бывают, МТ - многозвенная архитектура) и пр. остаются за кадром. Если требуется мониторить боевую торговлю, там нет мелочей. В соседней ветке недавно пролетало, как терминал забил диск логами до отказа, например, значит и диск надо мониторить. Для надежного мониторинга онлайн сервисов (коим и онлайн-торговля является) производится куча сложного специального софта. Не обязательно брать что-то из этого целиком, но можно хотя бы присмотреться и от этого свои решения строить.

PS. Прикладной ping работает по обратному принципу: терминал должен периодически (довольно часто) посылать во внешний мир пакеты со статусом основных подсистем (включая параметры роботов), а на внешнем сервере при неполучении очередного пакета нужно бить тревогу (отправлять оттуда sms-ы и пр.)

 
Stanislav Korotky:

Это ненадежно. Для галочки так сделать можно, но будет работать только в тепличных условиях - как раз это костыль. Случаи зависания/падения терминала или MQL-программы, перезагрузки VPS (абсолютно надежных нет), когда коннект рапортуется нормально, а тиков в торговый день почему-то нет (баги разные бывают, МТ - многозвенная архитектура) и пр. остаются за кадром. Если требуется мониторить боевую торговлю, там нет мелочей. В соседней ветке недавно пролетало, как терминал забил диск логами до отказа, например, значит и диск надо мониторить. Для надежного мониторинга онлайн сервисов (коим и онлайн-торговля является) производится куча сложного специального софта. Не обязательно брать что-то из этого целиком, но можно хотя бы присмотреться и от этого свои решения строить.

PS. Прикладной ping работает по обратному принципу: терминал должен периодически (довольно часто) посылать во внешний мир пакеты со статусом основных подсистем (включая параметры роботов), а на внешнем сервере при неполучении очередного пакета нужно бить тревогу (отправлять оттуда sms-ы и пр.)

Да, я понимаю проблематику, конечно соглашусь, что пинг понг надёжнее мониторинг, но это уже выходит за рамки текущих штатных возможностей терминала. Кроме клиента сокета и вебреквеста.
Так как действительно, если терминал упадёт, то не как мы это не узнаем, только сторонним софтом. Или через WinAPI можно попробовать мониторить процесс терминала, и куда то слать отчёт.
По этому в текущей ситуации можно комбинировать задачи. Какие то задачи поручить сервисам, а критичные задачи, в виде мониторинга падения, на сторонний софт, или WinAPI.
Ещё как вариант, можно подумать над облачными технологиями типа serverless. И туда слать пакет, со своим набором флагов. А там уже как хочешь так и обрабатывай.
Но это уже требует понимания работы с облачными сервисами, хотя бы на начальном уровне.

 

Мониторить внутреннее состояние терминала можно только изнутри терминала. Логи на диске будут с задержкой, а других данных для анализа нет.

Осталось определиться со списком "нештатных ситуаций", которые нужно отслеживать.

 

можно вот таким способом :

https://www.mql5.com/ru/blogs/post/729896

набросать робот/индикатор который публикует состояние на внешний (в примере дан локальный) MQTT сервер и время от времени посылает heat-beat

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

Мониторинг и управление множеством роботов
Мониторинг и управление множеством роботов
  • 2019.10.25
  • www.mql5.com
Понадобилось мне тут свести во едино управление счетами и роботами с разных VDS, да так чтобы и интегрировать со свяким было просто, и чтобы работало быстро и надёжно. И конечно доступ из любой точки
 
Andrey Khatimlianskii:

Мониторить внутреннее состояние терминала можно только изнутри терминала.

Ошибаетесь

Файлы:
 
Sergey Zhilinskiy:

Ошибаетесь

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

 
Edgar Akhmadeev:

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

когда нужно тик-в-тик то конечно надо писать сов/индикатор/сервис который это дело осуществляет

а когда скорость ответной реакции от 3-5- минут (быстрее на писк телефона ничего не сделаешь), то парсить логи самое то. Внешний софт, не требующий никаких вообще вмешательств в работу терминала

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

 
Сталкивался с ситуацией, когда при краше терминала - файлы лога с нулевым размером. т.е. он умудряется затирать то что было до этого, а не то что гарантировать запись в них.
 
Maxim Kuznetsov:

когда нужно тик-в-тик то конечно надо писать сов/индикатор/сервис который это дело осуществляет

а когда скорость ответной реакции от 3-5- минут (быстрее на писк телефона ничего не сделаешь), то парсить логи самое то. Внешний софт, не требующий никаких вообще вмешательств в работу терминала

Я ответил к тому, что:

Andrey Khatimlianskii:

Логи на диске будут с задержкой

Sergey Zhilinskiy:

Ошибаетесь


А по поводу

Maxim Kuznetsov:

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

Я, когда пишу свои логи, всегда использую FileFlush(). Ну, хотя бы...

 
Как мне кажется, функцию SendMail() можно доработать на прикладном уровне.
В принципе разработчикам терминала, не составит труда придумать реализацию.
Что бы функция слала как пользовательские сообщения, так и из списка всех не штатных ситуаций, даже в момент падения терминала.
Вот это круто было бы. Если разработчик читает, возьмите идею на подумать.