Stream Pulse | Monitor Flash Streams | RTMP FLV Nagios Plugin

 

StreamPulse serves as a modular plugin for existing monitoring software solutions to monitor Flash Media Streams. Existing monitoring infrastructures literally treats StreamPulse as another 'web server', and tries to test streams by 'requesting a web page'. The URL format for a work task is:
 


If the stream requires 'fcsubscribe', simply append "&fcsubscribe=y" to the request URL above.

 

StreamPulse is able to test various flash media protocols: rtmp, rtmpe and http. StreamPulse runs on a Windows environment that binds to an HTTP socket to wait for check requests.  Response code are as follows:

 

Response Code Description

200

Stream is functioning as expected.  Flash Player is still playing the content at the end of the test duration (as expected).

 

Sample Response:
[
200] OK - Flash media playback completed,
BufferLength:BufferTime: [0.267];

BytesLoaded: [0];

BytesTotal: [0];

CanSeek: [false];

Duration: [NaN];

DynamicStreamSwitching: [false];

HasAudio: [true];

HasDRM: [false];

IsDynamicStream: [false];

Loop: [false];

MediaHeight: [240];

MediaWidth: [320];

NumDynamicStreams: [0];

State: [playing];

404

URL or parameters are invalid, or sent improperly.

405

Method not supported.  StreamPulse currently supports HTTP-GET method only.

500

Stream or network error occurred.  Flash Video Player was not playing at the end of the test duration.

 

Sample responses:

500 SERVER ERROR - Not playing. Player state: Connection Error.
500 SERVER ERROR - Not playing. Player state: loading.

 

 

 

Frequently Asked Questions

 

1. Why does StreamPulse need to run as a desktop application, and not as service?

Flash Media Player requires that the output stream be directed to a visual display.  Unfortunately, this 'visual display' is not available when it is ran as an Adobe Air App or NT service.  Hence, it is necessary to run StreamPulse as a desktop application.

 

 

2. What is the HTTP port that StreamPulse listens on, and how can I change it?

The default port number for StreamPulse is 5052.  To change this, simply edit the file config.xml and change the settings. 

 

 

3. It is not possible to connect to port 5052, do I need to configure anything?

Please make sure to open the firewall port (Default: 5052) on the StreamPulse host.

 

 

4. The monitoring infrastructure that we use times out even before StreamPulse completes it's test, how do we go about this?

Configure the monitoring solution to have a longer timeout period than the duration defined in the test request (http).

Example: setup nagios to have a 40 second timeout when requesting StreamPulse to test for 30 seconds (For Nagios, check parameter service_check_timeout).

 

6. How many concurrent streams can be tested at the same time?
The application can handle testing
20 concurrent streams at any given time.  Once the number of test windows/forms are in use, StreamPulse returns HTTP 503 "Server Temporarily Unvailable" until another form is available.  This should be considered when configuring Nagios or any monitoring infrastructure's check interval frequency.

 

This can be configured in the file [config.xml for AIR] or [StreamPulse.exe.config for Windows] (make sure you have enough RAM to test).

 

 

<!-- Number of Test Forms -->
<config>

  <numberOfPlayer>20</numberOfPlayer>

</config>
 

 

 

7. How can I configure the plugin for nagios?

Here is a barebones example on how to configure Nagios.  Please download the StreamPulse Nagios Plugin here.

 

###############
### COMMAND ###
###############

define command {
    command_name check_streampulse
    command_line $USER1$/check_streampulse -h $HOSTADDRESS$

        -p $ARG1$ -testurl $ARG2$ -testtime $ARG3$ -fcsubscribe $ARG4$
}

############
### HOST ###
############

define host{
    use generic-host
    host_name streampulse
    address REPLACE_STREAMPULSE_IP
    contacts nagiosadmin
    max_check_attempts 5
    check_command check_tcp!5052
}

################
### SERVICES ###
################

define service{
    name streampulse
    use generic-service
    host streampulse
    normal_check_interval 10
    register 0
}
 

define service{
    name stream-1
    service_description stream-1
    use streampulse
    check_command check_streampulse!5052!
        rtmp://REPLACE_STREAMING_SERVER/vod/sample.flv!20!n
}
 

 

8. Does StreamPulse work with PRTG?

 

Check out this forum link from Laurie Collins: http://www.paessler.com/knowledgebase/en/topic/8733-how-do-i-monitor-a-video-stream-rtmp-via-wowza

 

 

9. How come my streaming URL doesn't play?

 

StreamPulse internally uses the OSMF (open source media framework) library from Adobe.  There are some tricks on playing certain URLs:

 

For FLV streams (remove .flv extension on the filename):

http://127.0.0.1:5052/check?url=rtmpe://domain.com:1935/folder1/folder2/test.flv&time=30

 

For MP4 streams (add mp4: as a prefix to the filename):

http://127.0.0.1:5052/check?time=45&url=rtmp://127.0.0.1/vod/mp4:sample.mp4'