Edited at

LogstashのMonitoring API を使って、Logstashを可視化してみた。

More than 1 year has passed since last update.

この記事はElastic stack Advent Calendar 2017の12/14分の記事です。

みなさん、初めまして。

fujii(@ZooBonta) と申します。

今回は、Logstash 5.0から利用可能になった、

Monitoring API を使って、Logstashを可視化してみようと思います。


環境情報


  • OS


    • Windows 10



  • Elasticsearch/Logstash


    • Ver 6.0.1




目的

Logstash のMonitoring APIを使って、Logstashを可視化します。

Monitoring API を使ってみたかっただけので、

「そんなの、Metricbeats使えば、いいじゃん」とかは言わないでください。。。


Monitoring APIとは?

Ver5 系から入った、Logstashの監視用APIです。

大きく、以下の4つに分類されます。

1. Node Info API:Logstashのノードに関する情報を扱うAPI

2. Plugins Info API:Logstashにインストールしたプラグインを扱うAPI

3. Node Stats API:Logstashの統計情報を扱うAPI

4. Hot Threads API:Logstashの起動中スレッドの情報を扱うAPI

さっそく、使ってみましょう。

まずは、Node Stats Info APIを使って、jvmの値を見てみます。

curl -X GET http://localhost:9600/_node/stats/jvm?pretty

以下の値が返ってきました。

{

"host" : "my-host",
"version" : "6.0.1",
"http_address" : "127.0.0.1:9600",
"id" : "b780ef4e-d70f-4919-a841-6b15caeed834",
"name" : "my-host",
"jvm" : {
"threads" : {
"count" : 28,
"peak_count" : 32
},
"mem" : {
"heap_used_percent" : 28,
"heap_committed_in_bytes" : 1038876672,
"heap_max_in_bytes" : 1038876672,
"heap_used_in_bytes" : 299934992,
"non_heap_used_in_bytes" : 155144224,
"non_heap_committed_in_bytes" : 174878720,
"pools" : {
"survivor" : {
"peak_used_in_bytes" : 34865152,
"used_in_bytes" : 8099120,
"peak_max_in_bytes" : 34865152,
"max_in_bytes" : 34865152,
"committed_in_bytes" : 34865152
},
"old" : {
"peak_used_in_bytes" : 256622432,
"used_in_bytes" : 110373176,
"peak_max_in_bytes" : 724828160,
"max_in_bytes" : 724828160,
"committed_in_bytes" : 724828160
},
"young" : {
"peak_used_in_bytes" : 279183360,
"used_in_bytes" : 181462696,
"peak_max_in_bytes" : 279183360,
"max_in_bytes" : 279183360,
"committed_in_bytes" : 279183360
}
}
},
"gc" : {
"collectors" : {
"old" : {
"collection_time_in_millis" : 201,
"collection_count" : 2
},
"young" : {
"collection_time_in_millis" : 2295,
"collection_count" : 62
}
}
},
"uptime_in_millis" : 2429462
}
}

スレッド数、JVMのヒープ、GC実行回数などが見えますね。

それでは、別のLogstashを使って、このAPIの結果をLogstahに入れてみます。

今回は、http_poller プラグインを使いました。

input {

http_poller {
urls => {
host => "http://localhost:9600/_node/stats/jvm"
}
schedule => { cron => "* * * * * UTC"}
codec => "json"
metadata_target => "http_poller_metadata"
}
}
output {
elasticsearch {
hosts => ["localhost"]
index => "jvm-%{+YYYY.MM.dd}"
document_type => "monitoring"
}
}

Logstashで取り込んだ結果をKibanaで可視化してみます。

Logstash監視

ヒープ使用量、プロセスのスレッド数、GC実行回数、GC実行時間が取得できていることが確認できました。

これを使えば、Logstashの可視化ができますね。

どこかで見たような画面とか、言っちゃいけません。


最後に

LogstashのMonitoring APIでは、CPUやメモリといったリソース以外にも、

Logstashの全体イベント実行回数や、実行中のスレッド情報も取得可能です。

描画ライブラリと組み合わせると、Pipeline Viewer のような表現もできるようになっています。

是非、お試しください。