BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 08 июл 2025, 02:09

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 14 июл 2014, 15:41 
Не в сети

Зарегистрирован: 11 июл 2014, 17:55
Сообщения: 2
Карма: 0
Здравствуйте. Перед мной стоит задача создания BGBS скрипта, для оповещения по e-mail, в ситуации когда за некоторое время в модуль INET не поступают логи.

Я столкнулся с проблемой что, не могу найти класс для работы с логами модуля Inet.
Но я столкнулся с интерфейсом InetLogManagementService и методом в нём: inetLogExist(java.lang.Integer deviceId, java.util.Date month)

Мои понимания Java начальные и тут возникает загвоздка: как я понимаю, интерфейс InetLogManagementService не является классом, который можно реализовать для получения списка логов за месяц.
И я не могу найти класс, который реализует эту задачу.

В общем возникает вопрос: правильно ли я понимаю, что из данного интерфейса я ничего не могу взять и нет ли классов в BGBilling в которых реализовано получения списка логов за месяц?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 июл 2014, 16:03 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Есть InetLogManagementServiceImpl, но вам он не нужен, он спрятан для вас.

Вот тут пример получения сервиса.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 июл 2014, 17:12 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Логичнее нормальный мониторинг настроить имхо.
Zabbix + JMX например (если есть JMX для логов). Или внешними скриптами смотреть директорию с логами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 июл 2014, 17:20 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Cromeshnic писал(а):
(если есть JMX для логов).

пока нет, но можно добавить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 июл 2014, 23:14 
Не в сети

Зарегистрирован: 11 июл 2014, 17:55
Сообщения: 2
Карма: 0
Спасибо, stark.

Сервис создал, массив загруженных логов получил...

Странно, но у меня выводит следующее:
Код:
int []: {
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
2097151,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
}


Массив из 31-го элемента, как я понимаю это дни, то есть 0 элемент = 1 день месяца, 1 элемент = 2 день месяца и так далее...

А как быть, если нужно посмотреть: есть ли логи какого дня, в какое-то время часа?
То есть например узнать был ли загружен лог 14 дня месяца в 15 часов?

Или я не правильно работаю с массивом и надо переопределить возвращающее значение от метода "inetLogExist" ?..

Код который это всё выводит:
Код:
   // Получение текущей даты
   Calendar calendar = new GregorianCalendar();

   // Получение сервиса логов модуля INET
   InetLogManagementService InetLogManagement = ServerContext.get().getService( InetLogManagementService.class, INET_MODULE_ID );

   GregorianCalendar calendar_PrevDay = (Calendar) calendar.clone();
   calendar_PrevDay.add( GregorianCalendar.DAY_OF_MONTH, -1 );

   // Получение логов за месяц
   Result result = InetLogManagement.inetLogExist( INET_ROOT_DEVICE_ID, TimeUtils.convertCalendarToDate( calendar_PrevDay ) );

   print( result.getAttributes().get("logExists") );


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июл 2014, 10:26 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Setig писал(а):
Спасибо, stark.

Сервис создал, массив загруженных логов получил...

Странно, но у меня выводит следующее:
Код:
int []: {
16777215,
16777215,
16777215,



Каждое значение это битовая маска, где каждый бит данные для каждого часа(1 - логи есть за час, 0 - логов нет). Вот запись в двоичной системе
Код:
16777215 = 0000 0000 1111 1111 1111 1111 1111 1111

Это означает что в это день есть логи для всех 24 часов (всего 32 бита поэтому слева нули). Вам надо использовать операции сдвига чтобы проверить конкретный час. Что-то типа этого:

Код:
int logExists [] =  result.getAttributes().get("logExists")
for( int i =0; i < 31; i++)
{
     int value = logExists[i];
     for( int j =0; j < 24; i++)
     {
         //существует ли лог для j-го часа в i-ы день
         boolean isExists = value & (1 << j ) > 0;
     }
}


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.034s | 27 Queries | GZIP : On ]