1概要

このクイックチュートリアルでは、JMXデータをTomcatサーバーからElastic Stack(以前はELKと呼ばれていました)に送信する方法について説明します。

LogstashでJMXからデータを読み取ってElasticsearchに送信するように設定する方法について説明します。


2エラスティックスタックを取り付ける

まず、Elastic stackをインストールする必要があります(https://www.elastic.co/guide/en/elasticsearch/reference/current/__installation.html[Elastichsearch] –

Logstash



Kibana

次に、すべてが正しく接続され、正しく機能していることを確認するために、JMXデータをLogstashに送信し、それをKibanaで視覚化します。


2.1. ログスタッシュのテスト

最初に、オペレーティングシステムによって異なるLogstashインストールディレクトリに移動します(この場合はUbuntu)。

cd/opt/logstash

簡単な設定をLogstashにコマンドラインから設定できます。

bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts =>["localhost:9200"]} }'

その後、コンソールにサンプルデータを入力するだけで済みます。終了したら、CTRL-Dコマンドを使用してパイプラインを閉じます。


2.2. Elasticsearchをテストする

サンプルデータを追加した後、LogstashインデックスがElasticsearchで利用可能になるはずです。

curl -X GET 'http://localhost:9200/__cat/indices'

出力例:

yellow open logstash-2017.11.10 5 1 3531 0 506.3kb 506.3kb
yellow open .kibana             1 1    3 0   9.5kb   9.5kb
yellow open logstash-2017.11.11 5 1 8671 0   1.4mb   1.4mb


2.3. テストキバナ

Kibanaはデフォルトでポート5601で動作します – ホームページにアクセスすることができます:

http://localhost:5601/app/kibana

パターン「

logstash – **

」を使用して新しいインデックスを作成し、そこにサンプルデータを表示できるはずです。


3 Tomcatを設定する

次に、

CATALINA

OPTS__に以下を追加してJMXを有効にする必要があります。

-Dcom.sun.management.jmxremote
  -Dcom.sun.management.jmxremote.port=9000
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.authenticate=false

ご了承ください:


  • setenv.sh

    を変更して

    CATALINA

    OPTS__を設定できます。

  • Ubuntuユーザーの場合

    setenv.sh

    は、/usr/share/tomcat8/binにあります。


4 JMXとLogstash

を接続する

それでは、JMXメトリックをLogstashに接続しましょう。そのためには、JMX入力プラグインをインストールする必要があります(詳細は後で説明します)。


4.1. JMXメトリックを設定する

まず、隠したいJMXメトリックを設定する必要があります。設定はJSON形式で提供します。

これが私たちの

jmx

config.json__です。

{
  "host" : "localhost",
  "port" : 9000,
  "alias" : "reddit.jmx.elasticsearch",
  "queries" :[  {
    "object__name" : "java.lang:type=Memory",
    "object__alias" : "Memory"
  }, {
    "object__name" : "java.lang:type=Threading",
    "object__alias" : "Threading"
  }, {
    "object__name" : "java.lang:type=Runtime",
    "attributes" :["Uptime", "StartTime"],
    "object__alias" : "Runtime"
  }]}

ご了承ください:


  • CATALINA

    OPTS__からJMXに同じポートを使用しました

  • 必要なだけ設定ファイルを提供できますが、必要です。

それらを同じディレクトリに配置します(この例では、

jmx

config.json__を/monitor/jmx/に保存しました)。


4.2. JMX入力プラグイン

次に、Logstashインストールディレクトリで次のコマンドを実行してJMX入力プラグインをインストールしましょう。

bin/logstash-plugin install logstash-input-jmx

次に、Logstash構成ファイル(

jmx.conf

)を作成する必要があります。ここで、入力はJMXメトリックで、出力はElasticsearchに送信されます。

input {
  jmx {
    path => "/monitor/jmx"
    polling__frequency => 60
    type => "jmx"
    nb__thread => 3
  }
}

output {
    elasticsearch {
        hosts =>["localhost:9200"]    }
}

最後に、Logstashを実行して構成ファイルを指定する必要があります。

bin/logstash -f jmx.conf

Logstash構成ファイル

jmx.conf

はLogstashホームディレクトリ(この場合は

/opt/logstash

)に保存されています。


5 JMXメトリックを視覚化する

最後に、Kibanaを使って、JMXメトリクスデータの簡単な視覚化を作成しましょう。ヒープメモリの使用状況を監視するための簡単なチャートを作成します。


5.1. 新しい検索を作成する

まず、ヒープメモリの使用量に関連する指標を取得するための新しい検索を作成します。

  • 検索バーの「新規検索」アイコンをクリックしてください。

  • 次のように入力してください

metric__path:reddit.jmx.elasticsearch.Memory.HeapMemoryUsage.used

  • Enterを押す

  • [

    metric

    path

    ]フィールドと[

    metric

    value

    number__]フィールドを必ず追加してください。

サイドバーから
** 検索バーの[検索を保存]アイコンをクリックします

  • 検索に「使用メモリ」という名前を付けます。

サイドバーのフィールドにインデックスが付けられていないとマークされている場合は、[設定]タブに移動し、[

logstash – **

]インデックスのフィールドリストを更新します。


5.2. 折れ線グラフを作成

次に、ヒープメモリの使用状況を時系列で監視する簡単な折れ線グラフを作成します。

  • [視覚化]タブに移動します

  • [折れ線グラフ]を選択します

  • [保存した検索から]を選択します

  • 先ほど作成した「使用済みメモリ」検索を選択してください

Y軸の場合は、必ず選択してください。

  • 集計:平均

  • フィールド:

    metric

    value

    number

X軸の場合は、[日付ヒストグラム]を選択してから、視覚化を保存します。


5.3. スクリプトフィールドを使用する

メモリ使用量はバイト単位なので、あまり読みやすくありません。 Kibanaにスクリプトフィールドを追加して、メトリックの種類と値を変換できます。

  • [設定]からインデックスに移動し、[

    logstash – **

    ]を選択します。

  • [スクリプトフィールド]タブに移動し、[スクリプトフィールドを追加]をクリックします。

  • 名前:

    metric

    value

    formatted

  • フォーマット:バイト

  • スクリプトでは、単に「

    metric

    value

    number

    」の値を使います。

doc['metric__value__number'].value

これで、検索とビジュアライゼーションを「

metric

value

number

」の代わりにフィールド「

metric

value

formatted

」を使用するように変更でき、データが正しく表示されるようになります。

この非常に単純なダッシュボードは次のようになります。


6. 結論

これで終わりです。お分かりのように、設定は特に難しいことではありません。JMXデータをKibanaで表示できるようにすることで、素晴らしい生産監視ダッシュボードを作成するために多くの興味深い視覚化作業を行うことができます。