目录

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


1.使用API监视Logstash

运行Logstash时,它将自动捕获运行时指标,可用于监视Logstash部署的运行状况和性能。

Logstash收集的指标包括:

  • Logstash节点信息,例如管道设置,操作系统信息和JVM信息。
  • 插件信息,包括已安装插件的列表。
  • 节点统计信息,例如JVM统计信息,进程统计信息,与事件相关的统计信息和管道运行时统计信息。
  • 热线(Hot threads)。

您可以使用Logstash提供的监视API来检索这些指标。 这些API默认情况下可用,无需任何额外配置。

或者,您可以配置X-Pack监视(configure X-Pack monitoring )以将数据发送到监视群集。

X-Pack监视是基本许可证下的一项功能,因此可以免费使用。

 

1.1.用于监视Logstash的API

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

1.1.2.常用选项

以下选项可以应用于所有Logstash监视API。

1.1.2.1.格式化结果

?pretty=true 附加到发出的任何请求时,返回的JSON将采用漂亮的格式(仅用于调试!)。

1.1.2.2.人类可读的输出(Human-Readable)

对于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。

 

1.2.Node Info API

节点信息API检索有关该节点的信息

curl -XGET 'localhost:9600/_node/<types>'

其中<types>是可选的,并指定要返回的节点信息的类型。

您可以通过将以下任意一种类型组合在以逗号分隔的列表中来限制返回的信息:

  • pipelines 获取有关操作系统的节点级信息。
  • os                获取有关操作系统的节点级信息。
  • jvm     获取节点级JVM信息,包括有关线程的信息。

有关可应用于所有Logstash监视API的选项列表,请参阅“Common Options”。

 

1.2.1.管道信息(Pipeline Info)

以下请求返回一个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错误。

 

1.2.2.操作系统信息(OS Info)

以下请求返回一个JSON文档,其中显示了操作系统名称,体系结构,版本和可用处理器:

curl -XGET 'localhost:9600/_node/os?pretty'

响应示例:

{
  "os": {
    "name": "Mac OS X",
    "arch": "x86_64",
    "version": "10.12.4",
    "available_processors": 8
  }

 

1.2.3.JVM信息

以下请求返回一个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"
    ]
  }
}

 

1.3.Plugins Info API

插件信息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"
    },
    .
    .
    .
  ]

 

1.4.节点统计API(Node Stats API)

Node Stats API 检索有关Logstash的运行时统计信息。

curl -XGET 'localhost:9600/_node/stats/<types>'

其中<types>是可选的,它指定要返回的统计信息的类型。

默认情况下,将返回所有统计信息。 您可以通过将以下任意一种类型组合在以逗号分隔的列表中来限制返回的信息:

  • jvm     获取JVM统计信息,包括有关线程,内存使用率,垃圾收集器和正常运行时间的统计信息。
  • process       获取进程统计信息,包括有关文件描述符,内存消耗和CPU使用率的统计信息。
  • events   获取Logstash实例的事件相关统计信息(无论创建和销毁了多少个管道)。 
  • pipelines   获取有关每个Logstash管道的运行时统计信息。
  • reloads       获取有关配置重新加载成功和失败的运行时统计信息。
  • os                当Logstash在容器中运行时,获取有关cgroup的运行时统计信息。

有关可应用于所有Logstash监视API的选项列表,请参阅“ Common Options”。

 

1.4.1.JVM统计信息(JVM Stats)

以下请求返回包含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
  }

 

1.4.2.流程统计(Process Stats)

以下请求返回包含流程状态的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
      }
    }
  }

 

1.4.3.活动统计(Event Stats)

以下请求返回一个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
  }

 

1.4.4.管道统计(Pipeline Stats)

以下请求返回一个JSON文档,其中包含管道统计信息,包括:

  • 每个管道输入,过滤或输出的事件数
  • 每个已配置的滤波器或输出级的统计信息
  • 有关配置重新加载成功和失败的信息(启用配置重新加载时)
  • 关于持久队列的信息(启用持久队列persistent queues时) 
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"
      }
    }
  }
}

 

1.4.5.重新加载统计(Reload Stats)

以下请求返回一个JSON文档,该文档显示有关配置重新加载成功和失败的信息。

curl -XGET 'localhost:9600/_node/stats/reloads?pretty'

响应示例:

{
  "reloads": {
    "successes": 0,
    "failures": 0
  }
}

 

1.4.6.操作系统统计(OS Stats)

当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
        }
      }
    }
  }

 

1.5.Hot Threads API

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)" ]
    } ]
  }
}

允许的参数为:

  • threads                    返回的热线程数。 预设值为10。
  • stacktrace_size       要为每个线程报告的堆栈跟踪的深度。 默认值为50。
  • human                     如果为true,则返回纯文本而不是JSON格式。 默认值为false。
  • ignore_idle_threads 如果为true,则不返回中断线程。默认值为true。

有关可应用于所有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)

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐