Download - Jvm operation casual talks
![Page 1: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/1.jpg)
JVM Operation Casual Talks
Cassandra監視で
やっていること
![Page 2: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/2.jpg)
自己紹介
id:oranie
@oranie
株式会社 Cyberagent 所属
![Page 3: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/3.jpg)
注意:Cassandraの項目などは
Ver1.1をベースにしています。
![Page 4: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/4.jpg)
運用しているシステムについて
![Page 5: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/5.jpg)
サイバーエージェント スマートフォンプラットフォーム
s.amebame.com
![Page 6: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/6.jpg)
SPOFの無いマルチマスタ
ノード追加でスケールする
処理能力とデータ保持量
スキーマレスで柔軟な
データ操作
![Page 7: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/7.jpg)
System Scale
Daily Peak Cluster Request
Read : about 45,000 qps
Write : about 40,000 qps
Total Data: about 35TB + snapshot
1 node avg: 350GB ※RF:3
![Page 8: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/8.jpg)
Latency
Read / avg 4ms.
Write / avg 0.1~0.7ms
![Page 9: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/9.jpg)
Cluster HW spec
CPU : 16 ~ 24 core (HT enable)
Memory : 64GB
Disk : SAS 600GB RAID 10 ※一部テスト的にSATAだったりSSD入れてみたりのレンジがあった。
![Page 10: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/10.jpg)
Daily Operation
![Page 11: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/11.jpg)
おおまかなまとめ
サイバーエージェント 公式エンジニアブログ
http://ameblo.jp/principia-ca/entry-11514557323.html
![Page 12: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/12.jpg)
Monitoring
監視
![Page 13: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/13.jpg)
運用担当当初
Cassandraの監視って何すればいいの?からスタート
![Page 14: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/14.jpg)
Cassandraにはクエリを投げてMySQLで言う
SHOW STATUS hogehoge
的な奴は無かった(ハズ)
![Page 15: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/15.jpg)
なにかあってもどこで
性能劣化したかどうかとか
分からない。
![Page 16: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/16.jpg)
とりあえず既存で使っていた
JavaアプリのCactiのテンプレ見る
![Page 17: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/17.jpg)
JVMの
GC頻度
ヒープメモリの使い方とか
グラフに取っている
![Page 18: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/18.jpg)
これどこに値とか
入っているんだろう?
![Page 19: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/19.jpg)
Mbeansという所に
色々入っていた。
見るのにVisualVMというのが
便利と教えてもらう。
![Page 20: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/20.jpg)
![Page 21: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/21.jpg)
見てみるとJVMで取れる値と
アプリケーション(Cassandra)特有の値など色々入っていた。
![Page 22: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/22.jpg)
JVMで取れる値 =
Linux OSで取れる様な物
アプリ固有の物 =
Apacheのmod_statusで取れる様な物
が入っているので、ひたすら必要そうな物探す。
![Page 23: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/23.jpg)
で、色々あるのは分かったけど
これ結局どうやって値
取っているの?
![Page 24: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/24.jpg)
CactiはSNMPでした。
![Page 25: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/25.jpg)
http://d.hatena.ne.jp/hogem/20121206/1354802392
hogemさんのブログより引用
![Page 26: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/26.jpg)
なんというか・・・
人類にやさしくない・・・。
![Page 27: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/27.jpg)
これから欲しい値取る時にSNMPで頑張るの・・・
oid調べるのとか面倒くせ。
![Page 28: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/28.jpg)
JMXという違う
インターフェイスが
ある事を知る
![Page 29: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/29.jpg)
JMX = Java Management Extensions (JMX)
![Page 30: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/30.jpg)
調べたらJavaで書かないと
無理ゲーくさい
![Page 31: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/31.jpg)
Java……..
ちょっとスクリプト的な奴作ってもNagiosで頻繁に叩くとかの時に
起動コスト高くね?
![Page 32: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/32.jpg)
つーかJavaって
「くるまクラスを作って見よう」
ぐらいしかやった事ねー
PerlとかRubyとかPython
とかでサラッと書きたい。
![Page 33: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/33.jpg)
そこで社内の人から
Jolokia使えば?
と教えて貰う。
![Page 34: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/34.jpg)
![Page 35: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/35.jpg)
簡単に言うとJMXを
REST APIインターフェイスに
プロキシしてくれるモジュール。
値をJSONで返してくれる。
![Page 36: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/36.jpg)
ex:)
http://localhost:8080/jolokia/read/java.lang:type=Memory/
HeapMemoryUsage
に対してGETする。
![Page 37: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/37.jpg)
ex:)
{ "committed" : 18292736, "used" : 15348352, "max" :
532742144, "init" : 0 }
こんな感じ。
![Page 38: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/38.jpg)
とても分かりやすい。
ちょっと整形すればbashでも簡単に書ける。
PerlならJMX::Jmx4PerlというCPANモジュールも出ている。
![Page 39: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/39.jpg)
簡単な使い方は同僚の@la_luna_azul が書いた
![Page 40: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/40.jpg)
死活・閾値監視
![Page 41: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/41.jpg)
Nagios + Jenkins + Perl Script
to mail & Push notification
![Page 42: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/42.jpg)
死活監視系概要
![Page 43: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/43.jpg)
閾値監視系概要
![Page 44: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/44.jpg)
トレンド監視
![Page 45: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/45.jpg)
![Page 46: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/46.jpg)
![Page 47: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/47.jpg)
OS monitor
・Cacti :
OS, JVM Resource graph
・Proteus-monitor : Real Time OS monitor
(cyberagent engineer OSS product)
https://github.com/ameba-proteus/proteus-monitor-agent
![Page 48: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/48.jpg)
Proteus-monitor : Real Time OS
![Page 49: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/49.jpg)
![Page 50: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/50.jpg)
Cassandra monitor
・Cassandra Resource graph
GrowthForecast(LINE Engineer OSS product) +
yohoushi (DeNA Engineer OSS product)
・opscenter :Datastax Cassandra cluster status monitor
・Pending Checker :
Real Time Cassandra pending monitor
(cyberagent engeneer OSS prodct)
![Page 51: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/51.jpg)
Opscenter
![Page 52: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/52.jpg)
GrowthForecast + yohoushi
![Page 53: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/53.jpg)
Pending Checker
「WebSocketで監視もリアルタイムに」 http://ameblo.jp/principia-ca/entry-11513826700.html
![Page 54: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/54.jpg)
Pending Checker
![Page 55: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/55.jpg)
こんな感じでとりあえず
Jolokiaで叩いて
値取ってゴニョる
![Page 56: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/56.jpg)
ただ、噂によると
一部の監視アプリでは初めからJMXを叩いて監視出来るらしい
Zabbixとか。
![Page 57: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/57.jpg)
それに切り替えればいいじゃん
![Page 58: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/58.jpg)
ちょっと宗教上の理由で・・・。
Zabbixを頑張るの大変そうで。
![Page 59: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/59.jpg)
とりあえずもう少しはCassandra監視はjolikia先生を使って Nagios + GrowthForecast
辺りで頑張ってみる。
![Page 60: Jvm operation casual talks](https://reader033.vdocuments.site/reader033/viewer/2022042602/55924e201a28abb3658b4642/html5/thumbnails/60.jpg)
以上です