Top View


Author Yuhei Okazaki

ISUCON予選で散った私が心ときめいたグラフィカルな監視ツール

2018/12/10

Table of Contents

netdata

公式サイトの手順通りコマンドを叩いてインストールします。

$ bash \<(curl -Ss https://my-netdata.io/kickstart.sh)
 $ sudo systemctl start netdata

ファイアウォールの設定を変えてポート番号19999を開けます。

$ sudo firewall-cmd --add-port=19999/tcp --zone=public --permanent
 $ sudo firewall-cmd --reload

ブラウザで http://{ホスト名}:19999/ へアクセスするとCPU, Memory, Disk, Networkリソースの使用状況を監視できます。

特にISUCONに役立ちそうなのはApplications。各アプリケーション/ミドルウェア毎のリソースの使用状況を監視できます。

ベンチマークを実行するとこんな感じ。SQLがボトルネックになっていることがひと目で分かります。

Moloch

$ sudo yum install perl-libwww-perl perl-JSON
 $ wget https://files.molo.ch/builds/centos-7/moloch-1.6.2-1.x86\_64.rpm
 $ sudo rpm -i ./moloch-1.6.2-1.x86\_64.rpm
$ wget https://artifacts.elastic.co/GPG-KEY-elasticsearch
 $ gpg --with-fingerprint GPG-KEY-elasticsearch
 $ rpm --import GPG-KEY-elasticsearch
 $ sudo vi /etc/yum.repos.d/elasticsearch.repo
 
 以下を記載
 [elasticsearch-6.x]
 name=Elasticsearch repository for 6.x packages
 baseurl=https://artifacts.elastic.co/packages/6.x/yum
 gpgcheck=1
 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
 enabled=1
 autorefresh=1
 type=rpm-md
 
 $ sudo yum install java elasticsearch 
 $ sudo vi /etc/elasticsearch/elasticsearch.yml
 
 以下を追記
 network.host: {ホスト名}
 
 $ sudo firewall-cmd --add-port=9200/tcp --zone=public --permanent
 $ sudo firewall-cmd --add-port=24224/tcp --zone=public --permanent
 $ sudo firewall-cmd --add-port=24224/udp --zone=public --permanent
 $ sudo firewall-cmd --reload
 $ sudo systemctl start elasticsearch
$ /data/moloch/bin/Configure
 
 Semicolon ';' seperated list of interfaces to monitor [eth1] eth0
 Elasticsearch server URL [http://localhost:9200] http://{ホスト名}:9200
 その他はデフォルトでOK
 
 $ /data/moloch/db/db.pl http://150.95.216.132:9200 init
 $ /data/moloch/bin/moloch\_add\_user.sh admin "admin user" password --admin
 $ sudo systemctl start molochcapture
 $ sudo systemctl start molochviewer
 $ sudo firewall-cmd --add-port=8005/tcp --zone=public --permanent
 $ sudo firewall-cmd --reload

ブラウザで http://{ホスト名}:8005/ へアクセスするとセッションやパケットをモニタできます。

ただ、この状態でベンチマークを実行すると

[info] [isu8q-bench] 2018/12/09 23:32:50.278463 bench.go:116: preTest: CheckTopPage 1.556265753s
 [info] [isu8q-bench] 2018/12/09 23:33:00.328698 bench.go:116: preTest: CheckAdminTopPage 10.03700407s
 [info] [isu8q-bench] 2018/12/09 23:33:00.332393 bench.go:604: {"job\_id":"","ip\_addrs":"localhost","pass":false,"score":0,"message":"負荷走行前のバリデーションに失敗しました。2018-12-09 23:33:00.315486632 +0900 JST m=+18.813961004 リクエストがタイムアウトしました (GET /admin/ )","error":["2018-12-09 23:33:00.315486632 +0900 JST m=+18.813961004 リクエストがタイムアウトしました (GET /admin/ )"],"log":null,"load\_level":0,"start\_time":"2018-12-09T23:32:41.775652559+09:00","end\_time":"2018-12-09T23:33:00.331129164+09:00"}
 [isucon@150-95-216-132 ~]$ sudo systemctl stop molochcapture

残念ながらタイムアウトしてしまいました。パケットキャプチャすることでレスポンスを返すのに時間がかかるようになってしまっているようですね。

というわけで実戦投入にはまだまだ様子見といったところです。

まとめ

今年の悔しさは今年のうちに忘れて、来年こそは本戦に進出します!

Yuhei Okazaki

Yuhei Okazaki

Twitter X

2018年の年明けに組込み畑からやってきた、2児の父 兼 Webエンジニアです。 mockmockの開発・運用を担当しており、組込みエンジニア時代の経験を活かしてデバイスをプログラミングしたり、簡易的なIoTシステムを作ったりしています。主な開発言語はRuby、時々Go。