目录
1.使用API监视Logstash
1.1.用于监视Logstash的API
1.1.2.常用选项
1.1.2.1.格式化结果
1.1.2.2.人类可读的输出(Human-Readable)
1.2.Node Info API
1.2.1.管道信息(Pipeline Info)
1.2.2.操作系统信息(OS Info)
1.2.3.JVM信息
1.3.Plugins Info API
1.4.节点统计API(Node Stats API)
1.4.1.JVM统计信息(JVM Stats)
1.4.2.流程统计(Process Stats)
1.4.3.活动统计(Event Stats)
1.4.4.管道统计(Pipeline Stats)
1.4.5.重新加载统计(Reload Stats)
1.4.6.操作系统统计(OS Stats)
1.5.Hot Threads API
运行Logstash时,它将自动捕获运行时指标,可用于监视Logstash部署的运行状况和性能。
Logstash收集的指标包括:
您可以使用Logstash提供的监视API来检索这些指标。 这些API默认情况下可用,无需任何额外配置。
或者,您可以配置X-Pack监视(configure X-Pack monitoring )以将数据发送到监视群集。
X-Pack监视是基本许可证下的一项功能,因此可以免费使用。
Logstash提供了监视API,用于检索有关Logstash的运行时指标:
您可以使用根资源来检索有关Logstash实例的常规信息,包括主机和版本。
curl -XGET 'localhost:9600/?pretty'
比如响应内容如下:
{
"host": "skywalker",
"version": "7.4.1",
"http_address": "127.0.0.1:9600"
}
默认情况下,监视API尝试绑定到tcp:9600。 如果此端口已被另一个Logstash实例使用,则需要使用指定的--http.port标志启动Logstash以绑定到其他端口。 有关更多信息,请参见 Command-Line Flags。
以下选项可以应用于所有Logstash监视API。
将 ?pretty=true 附加到发出的任何请求时,返回的JSON将采用漂亮的格式(仅用于调试!)。
对于Logstash 7.4.1,仅 Hot Threads API支持人员选项。 当您指定human=true时,结果以纯文本而不是JSON格式返回。 默认值为false。
以适合人类的格式(例如,"exists_time": "1h"
or "size": "1kb"
)和计算机(例如,"exists_time_in_millis": 3600000
or "size_in_bytes": 1024
)返回统计信息。 可以通过在查询字符串中添加?human=false来关闭人类可读的值。 当统计结果被监视工具消耗而不是供人类消耗时,这才有意义。 人工标记的默认值为false。
节点信息API检索有关该节点的信息
curl -XGET 'localhost:9600/_node/'
其中
您可以通过将以下任意一种类型组合在以逗号分隔的列表中来限制返回的信息:
pipelines 获取有关操作系统的节点级信息。
os
获取有关操作系统的节点级信息。jvm 获取节点级JVM信息,包括有关线程的信息。
有关可应用于所有Logstash监视API的选项列表,请参阅“Common Options”。
以下请求返回一个JSON文档,其中显示了管道信息,例如工作程序数量,批处理大小和批处理延迟:
curl -XGET 'localhost:9600/_node/pipelines?pretty'
如果要查看有关管道的其他信息,例如每个已配置的输入,过滤器或输出阶段的统计信息,请参阅Node Stats API下的“Pipeline Stats”部分。
响应示例:
{
"pipelines" : {
"test" : {
"workers" : 1,
"batch_size" : 1,
"batch_delay" : 5,
"config_reload_automatic" : false,
"config_reload_interval" : 3
},
"test2" : {
"workers" : 8,
"batch_size" : 125,
"batch_delay" : 5,
"config_reload_automatic" : false,
"config_reload_interval" : 3
}
}
您可以通过包含管道ID来查看特定管道的信息。 在以下示例中,管道的ID为test:
curl -XGET 'localhost:9600/_node/pipelines/test?pretty'
响应示例:
{
"pipelines" : {
"test" : {
"workers" : 1,
"batch_size" : 1,
"batch_delay" : 5,
"config_reload_automatic" : false,
"config_reload_interval" : 3
}
}
如果您指定了无效的管道ID,则请求将返回404 Not Found错误。
以下请求返回一个JSON文档,其中显示了操作系统名称,体系结构,版本和可用处理器:
curl -XGET 'localhost:9600/_node/os?pretty'
响应示例:
{
"os": {
"name": "Mac OS X",
"arch": "x86_64",
"version": "10.12.4",
"available_processors": 8
}
以下请求返回一个JSON文档,该文档显示节点级别的JVM统计信息,例如JVM进程ID,版本,VM信息,内存使用情况以及有关垃圾收集器的信息:
curl -XGET 'localhost:9600/_node/jvm?pretty'
响应示例:
{
"jvm": {
"pid": 59616,
"version": "1.8.0_65",
"vm_name": "Java HotSpot(TM) 64-Bit Server VM",
"vm_version": "1.8.0_65",
"vm_vendor": "Oracle Corporation",
"start_time_in_millis": 1484251185878,
"mem": {
"heap_init_in_bytes": 268435456,
"heap_max_in_bytes": 1037959168,
"non_heap_init_in_bytes": 2555904,
"non_heap_max_in_bytes": 0
},
"gc_collectors": [
"ParNew",
"ConcurrentMarkSweep"
]
}
}
插件信息API获取有关当前安装的所有Logstash插件的信息。 该API基本上返回运行 bin/logstash-plugin list --verbose 命令的输出。
有关可应用于所有Logstash监视API的选项列表,请参阅“Common Options”。
输出是JSON文档。
响应示例:
{
"total": 93,
"plugins": [
{
"name": "logstash-codec-cef",
"version": "4.1.2"
},
{
"name": "logstash-codec-collectd",
"version": "3.0.3"
},
{
"name": "logstash-codec-dots",
"version": "3.0.2"
},
{
"name": "logstash-codec-edn",
"version": "3.0.2"
},
.
.
.
]
Node Stats API 检索有关Logstash的运行时统计信息。
curl -XGET 'localhost:9600/_node/stats/'
其中
默认情况下,将返回所有统计信息。 您可以通过将以下任意一种类型组合在以逗号分隔的列表中来限制返回的信息:
jvm 获取JVM统计信息,包括有关线程,内存使用率,垃圾收集器和正常运行时间的统计信息。
process
获取进程统计信息,包括有关文件描述符,内存消耗和CPU使用率的统计信息。
events 获取Logstash实例的事件相关统计信息(无论创建和销毁了多少个管道)。
pipelines 获取有关每个Logstash管道的运行时统计信息。
reloads
获取有关配置重新加载成功和失败的运行时统计信息。
os
当Logstash在容器中运行时,获取有关cgroup的运行时统计信息。
有关可应用于所有Logstash监视API的选项列表,请参阅“ Common Options”。
以下请求返回包含JVM统计信息的JSON文档:
curl -XGET 'localhost:9600/_node/stats/jvm?pretty'
响应示例:
{
"jvm" : {
"threads" : {
"count" : 49,
"peak_count" : 50
},
"mem" : {
"heap_used_percent" : 14,
"heap_committed_in_bytes" : 309866496,
"heap_max_in_bytes" : 1037959168,
"heap_used_in_bytes" : 151686096,
"non_heap_used_in_bytes" : 122486176,
"non_heap_committed_in_bytes" : 133222400,
"pools" : {
"survivor" : {
"peak_used_in_bytes" : 8912896,
"used_in_bytes" : 288776,
"peak_max_in_bytes" : 35782656,
"max_in_bytes" : 35782656,
"committed_in_bytes" : 8912896
},
"old" : {
"peak_used_in_bytes" : 148656848,
"used_in_bytes" : 148656848,
"peak_max_in_bytes" : 715849728,
"max_in_bytes" : 715849728,
"committed_in_bytes" : 229322752
},
"young" : {
"peak_used_in_bytes" : 71630848,
"used_in_bytes" : 2740472,
"peak_max_in_bytes" : 286326784,
"max_in_bytes" : 286326784,
"committed_in_bytes" : 71630848
}
}
},
"gc" : {
"collectors" : {
"old" : {
"collection_time_in_millis" : 607,
"collection_count" : 12
},
"young" : {
"collection_time_in_millis" : 4904,
"collection_count" : 1033
}
}
},
"uptime_in_millis" : 1809643
}
以下请求返回包含流程状态的JSON文档:
curl -XGET 'localhost:9600/_node/stats/process?pretty'
响应示例:
{
"process" : {
"open_file_descriptors" : 184,
"peak_open_file_descriptors" : 185,
"max_file_descriptors" : 10240,
"mem" : {
"total_virtual_in_bytes" : 5486125056
},
"cpu" : {
"total_in_millis" : 657136,
"percent" : 2,
"load_average" : {
"1m" : 2.38134765625
}
}
}
以下请求返回一个JSON文档,其中包含Logstash实例的事件相关统计信息:
curl -XGET 'localhost:9600/_node/stats/events?pretty'
响应示例:
{
"events" : {
"in" : 293658,
"filtered" : 293658,
"out" : 293658,
"duration_in_millis" : 2324391,
"queue_push_duration_in_millis" : 343816
}
以下请求返回一个JSON文档,其中包含管道统计信息,包括:
curl -XGET 'localhost:9600/_node/stats/pipelines?pretty'
响应示例:
{
"pipelines" : {
"test" : {
"events" : {
"duration_in_millis" : 365495,
"in" : 216485,
"filtered" : 216485,
"out" : 216485,
"queue_push_duration_in_millis" : 342466
},
"plugins" : {
"inputs" : [ {
"id" : "35131f351e2dc5ed13ee04265a8a5a1f95292165-1",
"events" : {
"out" : 216485,
"queue_push_duration_in_millis" : 342466
},
"name" : "beats"
} ],
"filters" : [ {
"id" : "35131f351e2dc5ed13ee04265a8a5a1f95292165-2",
"events" : {
"duration_in_millis" : 55969,
"in" : 216485,
"out" : 216485
},
"failures" : 216485,
"patterns_per_field" : {
"message" : 1
},
"name" : "grok"
}, {
"id" : "35131f351e2dc5ed13ee04265a8a5a1f95292165-3",
"events" : {
"duration_in_millis" : 3326,
"in" : 216485,
"out" : 216485
},
"name" : "geoip"
} ],
"outputs" : [ {
"id" : "35131f351e2dc5ed13ee04265a8a5a1f95292165-4",
"events" : {
"duration_in_millis" : 278557,
"in" : 216485,
"out" : 216485
},
"name" : "elasticsearch"
} ]
},
"reloads" : {
"last_error" : null,
"successes" : 0,
"last_success_timestamp" : null,
"last_failure_timestamp" : null,
"failures" : 0
},
"queue" : {
"type" : "memory"
}
},
"test2" : {
"events" : {
"duration_in_millis" : 2222229,
"in" : 87247,
"filtered" : 87247,
"out" : 87247,
"queue_push_duration_in_millis" : 1532
},
"plugins" : {
"inputs" : [ {
"id" : "d7ea8941c0fc48ac58f89c84a9da482107472b82-1",
"events" : {
"out" : 87247,
"queue_push_duration_in_millis" : 1532
},
"name" : "twitter"
} ],
"filters" : [ ],
"outputs" : [ {
"id" : "d7ea8941c0fc48ac58f89c84a9da482107472b82-2",
"events" : {
"duration_in_millis" : 139545,
"in" : 87247,
"out" : 87247
},
"name" : "elasticsearch"
} ]
},
"reloads" : {
"last_error" : null,
"successes" : 0,
"last_success_timestamp" : null,
"last_failure_timestamp" : null,
"failures" : 0
},
"queue" : {
"type" : "memory"
}
}
}
您可以通过包含管道ID来查看特定管道的统计信息。 在以下示例中,管道的ID为test:
curl -XGET 'localhost:9600/_node/stats/pipelines/test?pretty'
响应示例:
{
"test" : {
"events" : {
"duration_in_millis" : 365495,
"in" : 216485,
"filtered" : 216485,
"out" : 216485,
"queue_push_duration_in_millis" : 342466
},
"plugins" : {
"inputs" : [ {
"id" : "35131f351e2dc5ed13ee04265a8a5a1f95292165-1",
"events" : {
"out" : 216485,
"queue_push_duration_in_millis" : 342466
},
"name" : "beats"
} ],
"filters" : [ {
"id" : "35131f351e2dc5ed13ee04265a8a5a1f95292165-2",
"events" : {
"duration_in_millis" : 55969,
"in" : 216485,
"out" : 216485
},
"failures" : 216485,
"patterns_per_field" : {
"message" : 1
},
"name" : "grok"
}, {
"id" : "35131f351e2dc5ed13ee04265a8a5a1f95292165-3",
"events" : {
"duration_in_millis" : 3326,
"in" : 216485,
"out" : 216485
},
"name" : "geoip"
} ],
"outputs" : [ {
"id" : "35131f351e2dc5ed13ee04265a8a5a1f95292165-4",
"events" : {
"duration_in_millis" : 278557,
"in" : 216485,
"out" : 216485
},
"name" : "elasticsearch"
} ]
},
"reloads" : {
"last_error" : null,
"successes" : 0,
"last_success_timestamp" : null,
"last_failure_timestamp" : null,
"failures" : 0
},
"queue" : {
"type" : "memory"
}
}
}
}
以下请求返回一个JSON文档,该文档显示有关配置重新加载成功和失败的信息。
curl -XGET 'localhost:9600/_node/stats/reloads?pretty'
响应示例:
{
"reloads": {
"successes": 0,
"failures": 0
}
}
当Logstash在容器中运行时,以下请求将返回一个包含cgroup信息的JSON文档,以便为您提供CPU负载的更准确视图,包括是否对容器进行了限制。
curl -XGET 'localhost:9600/_node/stats/os?pretty'
响应示例:
{
"os" : {
"cgroup" : {
"cpuacct" : {
"control_group" : "/elastic1",
"usage_nanos" : 378477588075
},
"cpu" : {
"control_group" : "/elastic1",
"cfs_period_micros" : 1000000,
"cfs_quota_micros" : 800000,
"stat" : {
"number_of_elapsed_periods" : 4157,
"number_of_times_throttled" : 460,
"time_throttled_nanos" : 581617440755
}
}
}
}
Hot Threads API 获取Logstash的当前热线程。 热线程是Java线程,具有很高的CPU使用率,并且执行时间比正常时间长。
curl -XGET 'localhost:9600/_node/hot_threads?pretty'
输出是一个JSON文档,其中包含Logstash的热门热门线程的细目分类。
响应示例:
{
"hot_threads" : {
"time" : "2017-06-06T18:25:28-07:00",
"busiest_threads" : 3,
"threads" : [ {
"name" : "Ruby-0-Thread-7",
"percent_of_cpu_time" : 0.0,
"state" : "timed_waiting",
"path" : "/path/to/logstash-7.4.1/vendor/bundle/jruby/1.9/gems/puma-2.16.0-java/lib/puma/thread_pool.rb:187",
"traces" : [ "java.lang.Object.wait(Native Method)", "org.jruby.RubyThread.sleep(RubyThread.java:1002)", "org.jruby.RubyKernel.sleep(RubyKernel.java:803)" ]
}, {
"name" : "[test2]>worker3",
"percent_of_cpu_time" : 0.85,
"state" : "waiting",
"traces" : [ "sun.misc.Unsafe.park(Native Method)", "java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)", "java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)" ]
}, {
"name" : "[test2]>worker2",
"percent_of_cpu_time" : 0.85,
"state" : "runnable",
"traces" : [ "org.jruby.RubyClass.allocate(RubyClass.java:225)", "org.jruby.RubyClass.newInstance(RubyClass.java:856)", "org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen)" ]
} ]
}
}
允许的参数为:
有关可应用于所有Logstash监视API的选项列表,请参阅“Common Options”。
您可以使用?human参数以人类可读的格式返回文档。
curl -XGET 'localhost:9600/_node/hot_threads?human=true'
人类可读(human-readable)的响应示例:
::: {}
Hot threads at 2017-06-06T18:31:17-07:00, busiestThreads=3:
================================================================================
0.0 % of cpu usage, state: timed_waiting, thread name: 'Ruby-0-Thread-7'
/path/to/logstash-7.4.1/vendor/bundle/jruby/1.9/gems/puma-2.16.0-java/lib/puma/thread_pool.rb:187
java.lang.Object.wait(Native Method)
org.jruby.RubyThread.sleep(RubyThread.java:1002)
org.jruby.RubyKernel.sleep(RubyKernel.java:803)
--------------------------------------------------------------------------------
0.0 % of cpu usage, state: waiting, thread name: 'defaultEventExecutorGroup-5-4'
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
--------------------------------------------------------------------------------
0.05 % of cpu usage, state: timed_waiting, thread name: '[test]-pipeline-manager'
java.lang.Object.wait(Native Method)
java.lang.Thread.join(Thread.java:1253)
org.jruby.internal.runtime.NativeThread.join(NativeThread.java:75)