Friday, April 26, 2024

BuriBuriNekoManma

Team Fortress 2 Server Powered by Noob93

プログラム異常終了時にメールで知らせる

Posted by noob93 On 5 月 - 21 - 2011

【2011/06/04追記】

先日の大幅アップデート以降SRCDSが頻繁に異常終了するようになってしまいました。そこでSRCDSの異常終了を検知してメールで知らせるようにしたいと思います。Windowsの場合はタスクスケジューラーのイベントビューワータスクで、異常終了のイベントをトリガーにメールを送る機能が元々ついてるのですが、SMTPサーバーも同時に稼動してる事が前提なのか、サブミッションポートやSMTP認証に対応していません。これでは現在一般的なプロバイダが提供するSMTPサーバーを使用する事ができませんので、コマンドラインでメールを送信できるSMAILを使用します。

下記のSMAIL作者のサイトからプログラムをダウンロードし適当なフォルダに展開します。
http://dip.picolix.jp/disp2.html

まず展開したフォルダの中の「smail.exe」を起動します。SMTPサーバーの設定にプロバイダの指定する値を入力します。POPサーバーは使用しませんのでdummyのままにして「保存」ボタンを押します。

smail

展開したフォルダ(smail.exeと同じ階層)に「body.txt」というファイル名のテキストファイルを作成し、そこにメール本文を記入します。

次はイベントビューワータスクの設定です。「管理ツール」から「イベントビューワー」を開きます。

e382a4e38399e383b3e38388e38393e383a5e383bce382a2e383bc

「Windowsログ」の「アプリケーションログ」一覧のApplication Errorでsrcds.exeの項目を右クリックし「このイベントにタスクを設定」を選択。

名前はなんでもいいです。

そのまま「次へ」

「プログラムの開始」を選択して「次へ」

「プログラム/スクリプト」にsmail.exeの場所を入力。
引数の追加 「-d -h<SMTPサーバー名> -f<送信元メールアドレス> -s”<件名>” -F”<body.txtの場所>” <送信先アドレス>」
hオプションとSMTPサーバー名の間や、-fオプションと送信メールアドレスの間にスペースなどは入りません。続けて入力してください。

 

【以下2011/06/04追記】

このままでは全ての異常終了に反応してしまうので、SRCDSの異常終了のみ反応するようにします。

トリガーの編集で「カスタム」にチェックを付け「イベントフィルターの編集」ボタンを押します。

XMLタブで「手動でクエリを編集する」にチェックを付け入力欄に下記のように記述します。SRCDSのパスは適時読み替えてください。

<QueryList>
  <Query Id=”0″ Path=”Application”>
    <Select Path=”Application”>*[System[(Level=2) and (EventID=1000)] and EventData[(Data="F:\SRCDS\tf2\orangebox\srcds.exe")]]</Select>
  </Query>
</QueryList>

 

これでSRCDSの異常終了にのみ反応するようになります。

BeroBeroNekoManmaでは異常終了を検知したら、アラーとメールを管理人に送信→SRCDSを起動→ツイッターで告知。という流れにしています。ツイッターへの告知はTweetConsoleを利用しています。

 

 

 

 

 

 

 

SRCDSアップデートバッチ

Posted by noob93 On 12 月 - 20 - 2010

TF2などのSRCDSをアップデートした際に、勝手にマップサイクルが書き変わってしまうことがあり不便なのでバッチプログラムで「SRCDSアップデート」→「あらかじめバックアップしておいたマップサイクルなどのファイルの復元」→「SRCDS起動」という一連の操作を自動化したいと思います。

mapcycle.txt、maplist.txt、motd.txtをそれぞれbackup_mapcycle.txt、backup_maplist.txt、backup_motd.txtと別名で同じフォルダにコピーします。 メモ帳を開き下記プログラムをコピペし保存します。 その後、ファイル名の拡張子を.txtから.batに変更してください。 あとはSRCDS終了後、その.batファイルをダブルクリックで起動します。

 

echo update
start /wait F:\SRCDS\HldsUpdateTool.exe -command update -game tf -retry -verify_all -dir F:\SRCDS\

echo copy
copy /Y F:\SRCDS\orangebox\tf\backup_mapcycle.txt F:\SRCDS\orangebox\tf\mapcycle.txt
copy /Y F:\SRCDS\orangebox\tf\backup_maplist.txt F:\SRCDS\orangebox\tf\maplist.txt
copy /Y F:\SRCDS\orangebox\tf\backup_motd.txt F:\SRCDS\orangebox\tf\motd.txt

echo sart srcds
start F:\SRCDS\orangebox\srcds.exe -game tf -console -secure -port 27015 -command +map koth_nucleus +maxplayers 26 +sv_lan 0 +servercfgfile server_bot.cfg

 

各種パスや設定は適時読み替えてください。2行目の-dirの指定はドットだと、batファイルのある場所にDLしてしまうのでフルパスで指定してください。

 

 

 

 

CentOSでSRCDSのパフォーマンスを上げる

Posted by noob93 On 2 月 - 18 - 2010

CentOSでSRCDSを使う場合、リアルタイムカーネルを使うとパフォーマンスが上がります。

http://people.centos.org/hughesjr/kernel-rt/
ここのサイトのレポジトリ(kernel-rt.repo)を /etc/yum.repos.d/ にDLしてからyumします。

# yum –enablerepo=kernel-rt install rt-setup

SRCDSのコンソール上でstatsと打つと、FPSがインストールの前よりずいぶん上がってるのが確認できると思います。