Windows Server+Photon...

Preview:

Citation preview

Windows Server+Photon Server 環境でもFluentd+Elasticsearch+Kibana を活用して各種情報を可視化する

Photon 運営事務局 山本昇平2016/09/13 @ Photon 勉強会

About Me

• 氏名 : 山本昇平 (Syohei Yamamoto)• 所属 : GMO クラウド株式会社• 役割 : 各種ソリューションの技術担当• 趣味 : ゲームと料理

– 好きなゲーム : スプラトゥーン• プレイ時間 2,000 時間、ウデマエは S+99( カンスト )

– 私にとって本日が Photon 最後の勉強会• 私事ですが 10 月からはクラウド全般の R&D 部門に異動となりました• お世話になった皆様、誠にありがとうございます!

イントロダクション

イントロダクション

• 今回利用するツール– Windows パフォーマンスモニター : 各種情報収集ツール– Fluentd: ログ収集ツール– Elasticsearch: 全文検索システム– Kibana: Elasticsearch をグラフで可視化

• 目的(ゴール)– これらツールを通して Photon Server の各種情報を可視化する

• 今回は CPU 使用率 / 同時接続数 (CCU) を可視化します

完成イメージ

・ Photon 同時接続数・ CPU 使用率      …など

可視化

完成イメージ

手順

• ざっくりとした手順1. Photon Server からパフォーマンスモニターに出力2. 可視化したい項目を Fluentd で収集3. Elasticsearch+Kibana で情報を表示

Photon Server からパフォーマンスモニターに出力

完成イメージ

可視化

この部分

・ Photon 同時接続数・ CPU 使用率      …など

パフォーマンスモニターとは

• Windows 標準で搭載されている、システムの状態や動作を計測するツール

• OS や個別のアプリケーションの情報を指定された時間間隔で現在の値を取得できる

• カスタマイズもできる(今回は行わない)

パフォーマンスモニターとは

Photon カウンター

• Photon Server では各種情報をパフォーマンスモニターに出力することができる

• パフォーマンスモニター以外に出力したい場合は、カスタムパフォーマンスカウンターを利用して出力可能– Graphite, InfluxDB, StatsD, NewRelic, AWS CloudWatch など– 詳細はドキュメントサイトの Photon カウンターの項目を参照ください– https

://doc.photonengine.com/ja-jp/onpremise/current/performance/photon-counters

Photonカウンターのインストール

• Photon Control 上からインストール可能– PerfMon Counters → Install Counters を選択– パフォーマンスモニターを起動する際は

Start PrefMon を選択する

パフォーマンスモニターを利用する

• パフォーマンスモニター– 上部の緑色の+ボタンから Photon カウンターが正しく

追加されているか確認します

Photon カウンターの確認

• Photon Socket Server カウンター– パフォーマンスモニター上に Photon カウンターが

追加されています– HTTP/TCP/UDP といったプロトコルごとに、ピア数、切断数、

メッセージ数などの情報をリアルタイムで取得することが可能– 項目の詳細については下記 URL を参照ください

• https://doc.photonengine.com/ja-jp/onpremise/v3/reference/server-performance-counters

コマンドからも取得可能

• コマンドラインから Photon Server のリアルタイムな情報を取得可能– パフォーマンスモニターを利用しなくても OK– ( 例 ) Photon の各種情報を Slack 上に Webhook するような

bot を作ることも可能

>typeperf "\Photon Socket Server: UDP(*)\UDP: Peers”"09/07/2016 14:32:38.203","0.000000","0.000000""09/07/2016 14:32:39.203","0.000000","0.000000""09/07/2016 14:32:40.203","0.000000","0.000000"

可視化したい項目を Fluentd で収集

完成イメージ

可視化

・ Photon 同時接続数・ CPU 使用率      …など

この部分

Fluentd を使って外部サーバに送信

• Fluentd から先述のコマンドを実行することで、外部サーバに Photon Server のステータスを送信できる

• 同時に Windows Server の CPU 使用率などの情報を送信すると良い

• 送信する情報は fluent.conf で設定

Windows ServerにFluentdをインストールする

• Ruby のインストール– Ruby 2.3.1 x64– DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe

1. ruby dk.rb init2. config.yml を編集する3. ruby dk.rb install

– http://rubyinstaller.org/downloads/

Windows ServerにFluentdをインストールする

• Git のインストール– Git for Windows 2.10.0

1. “Use Git from the Windows Command Prompt” を選択する2. “Checkout Windows-style, commit Unix-style line endings” を選択

する

– https://git-for-windows.github.io/

Windows ServerにFluentdをインストールする

• Fluentd のインストール

• Fluent-plugin-parser のインストール

• fluent.conf の設定

> git clone https://github.com/fluent/fluentd.git> cd fluentd> gem install bundler> bundle> bundle exec rake build> gem install pkg\fluentd-0.14.2.gem -N

> gem install fluent-plugin-parser --no-ri --no-rdoc

fluent.conf の設定例<source> type exec command typeperf -sc 1 "\Processor(_Total)\% Processor Time" "\Photon Socket Server: UDP(*)\UDP: Peers" keys msg run_interval 15s tag raw.winsvr.status</source>

<match raw.winsvr.status> type parser remove_prefix raw key_name msg format /\"(?<time>[\d:./ ]*)\",\"(?<processor__per_processor_time>[\d.]*)\",\"(?<photon__per_peers>[\d.]*)\"/ time_format %m/%d/%Y %H:%M:%S.%L log_level error</match>

<match winsvr.status> type copy <store> type forward <server> host xxx.xxx.xxx.xxx #ここに送信先のホスト名を指定する </server> flush_interval 15s </store></match>

Windows ServerにFluentdをインストールする

• 以上で Windows Server 側の設定は完了• Fluentd を起動する方法は

• Fluentd をサービスに登録する場合は

– コントロールパネル上から開始・停止が可能

> fluentd –c ./fluent.conf

> fluentd –reg-winsvc i

Elasticsearch+Kibana で情報を表示

完成イメージ

可視化

この部分

・ Photon 同時接続数・ CPU 使用率      …など

Fluentd の設定

• CentOS 上に下記をインストール– Fluentd– Elasticsearch– Kibana

• インストール方法については、ネットに沢山転がっているので割愛

• Fluentd の fluent.conf をin_forward と Elasticsearch に合わせて設定する

fluent.conf の設定例<source winsvr.status> type forward</source>

<match winsvr.status> type typecast item_types processor__per_processor_time:integer,photon__per_peers:integer prefix typed</match>

<match typed.winsvr.status> type elasticsearch type_name winsvr_status buffer_type memory logstash_format true include_tag_key true tag_key @log_name flush_interval 15s</match>

Fluentd の設定

• Fluentd, Elasticsearch, Kibana を起動する• Kibana のダッシュボードを設定する

– ダッシュボードの設定方法については、ネットに沢山転がっているので割愛

完成イメージ

まとめ

• Photon の各種情報を取得する場合は Photon カウンターを利用すると良い

• Fluentd を使えば簡単に外部サーバに送ることが可能• Elasticsearch+Kibana を使えば簡単に可視化できる

最後に

• Windows Server と Photon Server の環境でも、 Fluentd を使えば簡単に各種情報を可視化できることを理解頂けましたでしょうか?

• 今回は掴みの部分だけを説明しましたが、 Photon の各種情報を取得することに興味がある方はドキュメントを参考にして頂くか、 Photon のスタッフにお尋ねください!

• 他にもっと良い方法があれば教えてください!!

Photon 運営事務局からのおしらせ

今後のイベント予定

• 10/6(木 )-8(土 ) INVEN GAME CONFERENCE (韓国)

• 10/22(土 ) CEDEC九州(福岡)

• その他、弊社会場にて Photon のイベントを企画中!

ヘルプセンター

• ナレッジベース・コミニュティ ( フォーラム )機能• コンテンツは日々充実化を図っています• https://support.photonengine.jp/hc/ja

お問い合わせ

• メールアドレス– developer@photonengine.jp

• Web もご覧ください– https://photonengine.jp

• ヘルプセンター– https://support.photonengine.jp/hc/ja

最後に…

一緒に働ける仲間を大募集中!

詳細はこちら↓

参考URL

• Windowsオンリーの環境でサーバーステータスを fluentd + Elasticsearch + Kibana で収集・可視化する – Qiita– http://qiita.com/okahashi117/items/897e8e4f1f7c88642a61

• パフォーマンスモニタで Photon Server の状態を監視する – Qiita– http://qiita.com/ikejpcw/items/e9fe70030fad2a52999a

• fluentd for Windows を Ruby 2.2 で動かす – Qiita– http://qiita.com/nurse/items/b38a7f2c084cf2b56631