機雷がなんだ! 全速前進!

SEというかプログラマというか、日々のエンジニア生活の中で体験したことなどを中心に書き残しています。

RTMP接続を自前で死活監視する方法

新年あけましておめでとうございます。

年末年始の休暇で、執筆やプログラミングなど色々とやろうと思っていたのですが一家で病に伏していたためでコレしかできませんでした。ほぼ自分用の技メモです。

 

一般的なサーバの死活監視あれこれ

pingレベルのサーバ死活監視やWebサービスやURL死活監視については、無償/有償のサービスが世の中には沢山あります。例えば監視サービスだと「Site Alert(サイトアラート)」とか「Site Care FREE Ⅱ」とかありますし、最近だとやっぱりHatenaさんの「Mackerel」とかですかね。自前で監視サーバを建てるんなら「Hinemos」なんかもあります。

 

RTMP接続の死活監視サービスはないの?

現在ストリーミング配信サービスの開発に関わっているのですが、今回やりたかったのがストリーミングサーバの死活監視なので、監視対象のプロトコルrtmpやrtmpeやrtmptなどです。これらはもともとAdobe社が開発したTCPベースの通信プロトコルで、現在では仕様が「Real-Time Messaging Protocol (RTMP) specification | Adobe Developer Connection」として公開されています。一般的な死活監視サービスでは、この特殊な接続の死活監視をすることができません。

 

と思ってRTMPの死活監視サービスを探したら、「おっ!」ありました!!

こんなビンゴなの(↓)を発見しました。


Webサイト監視サービスで初!ストリーミング配信の監視が可能に! 『AEROALIVE(エアロアライブ)』に、RTMP監視機能を追加 | AEROALIVE | プレスリリースを無償で投稿・閲覧・配信:AEROPRES(エアロプレス)

 

が、情報が2年前から更新されておらず新規ユーザ登録もできなくなっていました…orz

う~ん、残念。。やはり自力でやるか…

 

自前でRTMP接続の死活監視するには?

仕方ないので「rtmpdump コマンド一覧と使い方 : ニコニコ動画研究所」を参考に自力で死活監視する方法を考えてみました。

 

まず下記のツールを入手します。

Linux版とWindows版があります。

今回はWindows版(EXE形式)をダウンロードしました。


RTMPDump 2.4 122213

 

次にダウンロードした実行ファイル一式を任意の場所に配置します。

パスを通す必要もなく、コピーのみでOKなのでとても簡単でした。

f:id:orinbou:20150106205922j:plain

Jenkinsで監視するプロトコル毎に下記コマンドを定期実行させるJobを作成します。ありがたいことにRTMPDumpはコマンドラインで実行でき、かつ、実行結果をEXIT STATUS(成功:0、失敗:1 or 2)として返してくれるので、実行(死活監視)に失敗した場合のみJenkinsでビルド失敗メールを簡単に飛ばせます。

 

         rtmpdump.exe -r rtmp://localhost/vod/mp4:sample1_500kbps.f4v -o rtmp.f4v

  • RTMPE

         rtmpdump.exe -r rtmpe://localhost/vod/mp4:sample1_500kbps.f4v -o rtmpe.f4v

  • RTMPT(※必ず失敗してしまうので監視対象外としました。Win版だからかな?

         rtmpdump.exe -r rtmpt://localhost/vod/mp4:sample1_500kbps.f4v -o rtmpt.f4v

 

念のためRTMPdumpの監視接続時に接続数が増えることも管理コンソールで確認しました。とりあえず、これでOKですね。

f:id:orinbou:20150106212633j:plain

そんな訳で、マニアックな記事で始まった2015年となりましたが、本年もどうぞよろしくお願いします。