LoginSignup
3
3

More than 5 years have passed since last update.

intra-mart(resin)のjmx情報をモニタリングする。logstashで。

Last updated at Posted at 2016-06-22

概要

intra-martが動いているResinのjmx情報をモニタリングしたい。

resin-adminやJConsoleがあるじゃないか、という意見を振り切って、敢えてLogstashでやる例。

試した環境は以下の通り。

アプリケーション バージョン
Resin 4.0.48
Logstash 2.3.3

Logstashの準備

Logstashをelastic社のサイトからダウンロードしておく。インストールそのものの手順は簡単なので割愛。

logstash-input-jmxのインストール

標準では入っていないようなので、jmxを取得するプラグインをインストールします。

logstash-plugin install logstash-input-jmx

jmxを取得する用の設定ファイルの準備

任意の場所にフォルダを作って、適当にファイルを作ります。

面倒なので、binフォルダ以下にjmx というフォルダを作り、server_a.jmx としました。
hostやport、usernameなどは適当に読み替えてください。

もし、複数台のサーバを監視するのであれば、server_b.jmx, server_c.jmx・・・server_x.jmxなどと複数のファイルを設定したフォルダの下においてください。

portの値は後述するresin.propertiesの中で指定した値になります。
今回はメモリとRuntimeの値を取ってみることにします。
取得できる値の種類は、resin-adminなどで、java.langの下を見ながらやると良いと思います。OperatingSystemとかを見るとCPUの値もとれます。(それは、metricbeatでいいじゃん、という話もあります)

{
  "host" : "192.168.1.1",
  "port" : 9999,
  "username" : "",
  "password": "",
  "alias" : "innova-20x",
  "queries" : [
  {
    "object_name" : "java.lang:type=Memory",
    "object_alias" : "Memory"
  }, {
    "object_name" : "java.lang:type=Runtime",
    "attributes" : [ "Uptime", "StartTime" ],
    "object_alias" : "Runtime"
  }]
}

logstash用設定ファイルの準備

logstash用の設定ファイルを作成します。
ここは、シンプルに標準出力に取得した値を出すようにしてみます。

jmxの中でpathを指定していますが、ここに先に用意したjmxを取得する用の設定ファイルがあるフォルダを指定します。
ファイルパスを直接指定するとエラーとなるので注意してください。

input {
    jmx {
    path => "./jmx"
    polling_frequency => 15
    type => "jmx"
    nb_thread => 1
    }
}

output {
    stdout { codec => "rubydebug" }
}

resinの準備

resin.propertiesの編集

resin.propertiesに外からjmxの値を取れるように穴をあけます。
開発用途として、認証もsslも外しています。

設定
com.sun.management.jmxremote
com.sun.management.jmxremote.port 9999 (jmxの設定ファイルで使用する)
com.sun.management.jmxremote.local.only false (外部からつなぐので)
com.sun.management.jmxremote.authenticate false (今回は認証をつけていない)
com.sun.management.jmxremote.ssl false

記載例はこちら。

# Arg passed directly to the JVM
jvm_args  : -Xmx6144m -XX:MaxPermSize=1536m -Xloggc:log/gc.log -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
jvm_mode    : -server
# jvm_args  : -Dfile.encoding=UTF-8

resin.propertiesの編集後は、resinを再起動しておきます。

logstashの起動

logstashを起動して、jmxの値をコンソールに出してみます。指定間隔(今回は15秒間隔)でコンソールが流れていれば成功!

logstash -f <作成したlogstashの設定ファイル>

logstash.png

おまけ

outputにelasticsearchを入れて、kibanaで見てやると、ダッシュボードもすぐ作れる予感。

Kibana.png

Heapのサイズをグラフにしてみる例。

jmx   Kibana.png

jmxの数値と、ユーザのアクションログを組みあわせて可視化すると、夢が広がりんぐ。

お後がよろしいようで。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3