Jump to content
Cesbo Community
  • Announcements

    • RadioSintetica

      Information   10/21/18

      Registration on the forum temporarily closed! For support requests, please contacat us: https://cesbo.com/help
      Our community in Telegram: @cesbo_en (English language) , @cesbo_ru (Russian language) , @cesbo_es (Spanish Language)
Blackcat

Получение данных мониторинга

Recommended Posts

Пробую получить данные мониторинга, включил на тестовом сервере поддержку json, сделал пустой файл который в дальнейшем будет обрабатывать полученную инфу, запускаю астру в логах ошибки:

Aug 28 17:27:02 iptvz T12054[26865]: ERROR: [event.lua] send_json() failed 500:Internal Server Error
Aug 28 17:27:02 iptvz T12054[26865]: ERROR: [event.lua] send_json() failed 500:Internal Server Error
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=92
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=93
Aug 28 17:27:02 iptvz T12054[26865]: ERROR: [event.lua] send_json() failed 500:Internal Server Error
Aug 28 17:27:02 iptvz T12054[26865]: last message repeated 6 times
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=94
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=95
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=96
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=97
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=98
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=99
Aug 28 17:27:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=100

Share this post


Link to post
Share on other sites

Тормознул сам ошибка в приемном скрипте. теперь осталось разобраться как обрабатывать данные.

Share this post


Link to post
Share on other sites

Сейчас в логах следующая инфа по кругу:

Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=85
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=86
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=87
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=88
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=89
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=90
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=91
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=92
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=93
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=94
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=95
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=97
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=98
Aug 28 18:20:02 iptvz T12054[26865]: DEBUG: [core/event epoll] detach fd=99

 

Это нормально?

Share this post


Link to post
Share on other sites

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

109.229.33.87 - - [30/Aug/2012:17:14:44 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"
109.229.33.87 - - [30/Aug/2012:17:14:44 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"
109.229.33.87 - - [30/Aug/2012:17:14:44 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"
109.229.33.87 - - [30/Aug/2012:17:14:44 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"
109.229.33.87 - - [30/Aug/2012:17:14:45 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"
109.229.33.87 - - [30/Aug/2012:17:14:45 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"
109.229.33.87 - - [30/Aug/2012:17:14:45 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"
109.229.33.87 - - [30/Aug/2012:17:14:45 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"
109.229.33.87 - - [30/Aug/2012:17:14:45 +0400] "POST /stat.php HTTP/1.1" 200 0 "-" "Astra v.1 dev:45"

Share this post


Link to post
Share on other sites

Да работает.

 

Сделал простой сервер:

function cb(self, data)
   if type(data) == 'table' then
       if data.message then
           printf("Error: " .. data.message)
           self:close()
       else
           print(("Request: %s %s"):format(data.method, data.uri))
       end
   elseif type(data) == 'string' then
       print(data)
       self:send({
           code = 200,
           message = "Ok",
           headers = { "Server: Astra", }
       })
       self:close()
   end
end

http_server({
   addr = "127.0.0.1",
   port = 8000,
   callback = cb
})

 

Запустил один канал:

package.path = "/Volumes/Projects/Astra/helpers/?.lua"
event_request = { host = "127.0.0.1", port = 8000, uri = "/stat" }

require "base"

make_stream({
   input = {
       "udp",
       addr = "239.255.2.122",
       port = 1234
   }
}, {
   {
       name = "Channel 1",
       event = true,
       output = {
           "udp://@127.0.0.1:10000"
       }
   }
})

 

Вывод сервера:

Request: POST /stat
{"cc_error":0,"onair":true,"scrambled":false,"pes_error":0,"type":"channel","bitrate":4687872,"channel":"udp://@127.0.0.1:10000","server":"AND-MacBook-Air.local"}

Share this post


Link to post
Share on other sites

Такой варинат может, астра отправляет запрос двумя TCP пакетам (заголовки и тело запроса). Может серверу это не нравится... хотя Content-Length в заголовках есть, должен обработать.

Share this post


Link to post
Share on other sites

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

Request: POST /stat
{"type":"decrypt","server":"iptvz","cam":true,"keys":true,"channel":"udp://@239.1.1.129"}
Request: POST /stat
{"type":"decrypt","server":"iptvz","cam":true,"keys":true,"channel":"udp://@239.1.1.111"}
Request: POST /stat
{"type":"decrypt","server":"iptvz","cam":true,"keys":true,"channel":"udp://@239.1.1.112"}
Request: POST /stat
{"type":"decrypt","server":"iptvz","cam":true,"keys":true,"channel":"udp://@239.1.1.113"}
Request: POST /stat
{"type":"decrypt","server":"iptvz","cam":true,"keys":true,"channel":"udp://@239.1.1.114"}
Request: POST /stat
{"snr":100,"ber":0,"type":"dvb","server":"iptvz","unc":0,"adapter":5,"lock":true,"bitrate":3454976}
Ошибка сегментирования

 

при этом после отвала сервера падает процесс стримера...

Share this post


Link to post
Share on other sites

как то так

# gdb ./astra /tmp/core.astra.1346402024.4455
GNU gdb (GDB) Fedora (6.8.50.20090302-40.fc11)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...

warning: Can't read pathname for load map: Ошибка ввода/вывода.
Reading symbols from /lib/libpthread.so.0...done.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /usr/lib/libcrypto.so.8...done.
Loaded symbols for /usr/lib/libcrypto.so.8
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libz.so.1...done.
Loaded symbols for /lib/libz.so.1
Core was generated by `./astra monitor'.
Program terminated with signal 11, Segmentation fault.
#0  0x080643e3 in luaH_getint (t=0x8458b08, key=9) at /usr/src/astra/lua/ltable.c:454
454          if (ttisnumber(gkey(n)) && luai_numeq(nvalue(gkey(n)), nk))
Missing separate debuginfos, use: debuginfo-install glibc-2.10.2-1.i686 openssl-0.9.8n-2.fc11.i686 zlib-1.2.3-22.fc11.i586
(gdb) bt
#0  0x080643e3 in luaH_getint (t=0x8458b08, key=9) at /usr/src/astra/lua/ltable.c:454
#1  0x0804e602 in lua_rawgeti (L=0x83b61a8, idx=-1001000, n=9) at /usr/src/astra/lua/lapi.c:647
#2  0x08078827 in client_callback (arg=0x83df1fc, event=1) at /usr/src/astra/modules/http/client.c:61
#3  0x0804aa46 in event_action () at /usr/src/astra/core/event.c:278
#4  0x080736e3 in main (argc=2, argv=0xbf8fc714) at /usr/src/astra/main.c:134
Current language:  auto; currently minimal

Share this post


Link to post
Share on other sites

что-то странно как-то данные отсылаются запускаю мониторинг, включаю отправку инфы в конфиге перезапускаю стриемер получаю:

Request: POST /stat
{"server":"iptvz","channel":"udp://@239.1.1.127","cam":true,"keys":true,"type":"decrypt"}
Request: POST /stat
{"server":"iptvz","channel":"udp://@239.1.1.128","cam":true,"keys":true,"type":"decrypt"}
Request: POST /stat
{"server":"iptvz","bitrate":3542016,"type":"dvb","snr":100,"adapter":5,"ber":0,"lock":true,"unc":0}
Ошибка сегментирования (core dumped)

снова запускаю мониторинг не трогая стример получаю:

 

Request: POST /stat
{"keys":true,"type":"decrypt","server":"iptvz","channel":"udp://@239.1.1.118","cam":true}
Request: POST /stat
{"keys":true,"type":"decrypt","server":"iptvz","channel":"udp://@239.1.1.121","cam":true}
Request: POST /stat
{"adapter":5,"type":"dvb","snr":100,"ber":0,"server":"iptvz","unc":0,"bitrate":3352576,"lock":true}
Ошибка сегментирования (core dumped)

 

т.е. нарушается последовательность выдачи информации, в обоих случаях взял данные из выхлопа сервера о двух последних каналах.

Share this post


Link to post
Share on other sites

[uSER=25]Blackcat[/uSER] а у тебя какая система стоит 32 бита? ( пытаюсь понять, что происходит )

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

 

Edit: нашёл баг, пока не придумал как лучше пофиксить, как временное решение - можно собрать с ./configure.sh CFLAGS="-DEVENT_STEP=1000"

Share this post


Link to post
Share on other sites

В соседней ветке меня просили подумать. Решил подумать и над этим вопросом.

Проактивный мониторинг, когда astra по событию отправляет репорт в систему мониторинга это очень хорошо, но вот

выбор для этого HTTP (TCP) транспорта спорен. Ибо если "коллектор" статистики будет в ауте, это лишняя нагрузка на движок astra.

IMHO более верным был бы путь snmptrap и/или syslog. Или кольцевой event буффер к которому уже по HTTP(TCP) можно подключиться

и получить список событий(опционально) и сами события.

Share this post


Link to post
Share on other sites

астра работает с сокетами асинхронно, т.е. проблемы на стороне сервера не повлияют на работу.

я понимаю, что система не идеальна. Моё видение будущей реинкарнации системы мониторинга - это вынос части логики на стример. Анализатор по списку состояний определяет текущее состояние канала работает/глючит/лежит. И передаёт на сервер-мониторинга только статус.

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

Как-то так (это поток мыслей, нуждающийся в редактировании)

Share this post


Link to post
Share on other sites

ну в syslog данные и так отправляются, все ошибки происходящие. более детальную информацию выводить туда нет смысла, будет трудно анализировать. в следующем году планирую запустить расширенную систему мониторинга за стримерами.

Share this post


Link to post
Share on other sites

Кто-нибудь пытался подружить мониторинг с zabbix? Или может есть скриптик, который сможет переделать данные для траппера, или через zabbix_sender. Нету заний, чтоб написать систему мониторинга)

Share this post


Link to post
Share on other sites

Подскажите, что я не правильно делаю. Пытаюсь писать в файл на удаленном сервере статистику. Пишется такое:

)
Array
(
)
Array
(
)
Array
(
)
Array
(
)
Array
(
)
Array
(
)
Array
(
)
Array
(
)
Array
(
)
Array

Все пустые. Часть конфига:

 

event_request = { host = "stat.iptv.by", uri = "/iptv/stat_stream.php", interval = "10"}
require "base"
...
{ name = "TV1000 Ru Kino", pnr = 7080, event = true, cam = cam_1, output = { "udp://10.0.16.7@239.0.1.193:1234", { ttl = 16, socket_size = 200000 }, }},

 

И можо ли ещё добавить в лог и в мониторинг, если канал перестает вещаться на спутнике. В логе чисто. Идет инициализация канала, дальше ни слова про него. Удобно было бы видеть, что что-то перестало идти на стороне спутника.

Share this post


Link to post
Share on other sites

В мониторинге параметр onair (скоро переименую в ready).

В лог добавлю (на этой неделе)

 

Про пустую запись - скорей всего неправильно обрабатывается получаемый json

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×