在之前的文章 “Logstash: 启动监控及集中管理” ,我详细地描述了如果使用 Elasticsearch 自监控 Logstash。在今天的练习中,我们演习以前的文章:

我将使用 Metricbeat 来对 Logstash 进行监控。我将使用 “Logstash: 启动监控及集中管理” 文章中的例子来进行展示。在进行 Logstash 的监视之前,我们必须按照之前文章 “Elastic:监控 Elasticsearch 及 Kibana” 来启动对 Elasticsearch 的监控。

如何监控 Logstash?

关于监控 Logstash,我们有两种方法:

使用 Logstash 提供的监控 APIs 来进行监控

通过监控 APIs 的使用,它们可以提供 Logstash 的指标。我们无需做任何的配置,在默认的情况下就已经工作。

Node Info API

 这个 API  可以得到 Logstash node 的详细信息:

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

Plugins info API

通过这个 API 可以得到所有已经被安装的插件:

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

Node Stats API

通过这个 API 可以得到 Logstash node 的运行时状态:

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

Hot Threads API

通过这个 API 可以得到 Logstash 当前的 hot threads:

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

使用 Elastic 的监控功能

使用这种方法,我们就像之前文章介绍监控 Beats, Elasticsearch 及 Kibana 一样,我们可以直接把数据发送到监控的 Elasticsearch 集群。我们可以使用 Kibana 对数据进行可视化。在这个方式下,我们必须借助 Metricbeat 来对所需要的指标进行采集。

在今天的文章中,我主要来介绍如何使用 Elastic 的监控功能来对 Logstash 进行监控。

启动 Logstash

我们首先按照  “Logstash: 启动监控及集中管理” 文章中介绍的例子来启动 Logstash:

apache.conf

input {
  file {
    path => "/Users/liuxg/data/multi-pipeline/apache.log"
  	start_position => "beginning"
    sincedb_path => "/dev/null"
    # ignore_older => 100000
    type => "apache"
  }
}
 
filter {
  	grok {
    	match => {
      		"message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}'
    	}
  	}
}
 
 
output {
	stdout {
		codec => rubydebug
	}
 
  	elasticsearch {
        hosts => ["localhost:9200"]
        user => "elastic"
        password => "password"
    	index => "apache_log"
    	template => "/Users/liuxg/data/multi-pipeline/apache_template.json"
    	template_name => "apache_elastic_example"
    	template_overwrite => true
  }	
}

我们使用如下的命令来启动 Logstash:

sudo ./bin/logstash -f apache.conf 

启动 logstash-xpack 模块

我们使用如下的命令来启动 logstash-xpack 模块:

./metricbeat modules enable logstash-xpack
$ ./metricbeat modules enable logstash-xpack
Enabled logstash-xpack

我们可以通过如下的命令来检查模块是否已经启动:

 ./metricbeat modules list

从上面可以看出来 logstash-xpack 模块已经被成功地启动了。

我们接下来配置 modules.d/logstash.yml 文件。

modules.d/logstash-xpack.yml

# Module: logstash
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/7.x/metricbeat-module-logstash.html

- module: logstash
  xpack.enabled: true
  period: 10s
  hosts: ["localhost:9600"]
  #username: "user"
  #password: "secret"

我们需要根据你的 Logstash 的地址进行配置。

我们接下来启动 Metricbeat:

./metricbeat -e

监控 Logstash

我们可以退出设置模式。点击上面的 Exit setup mode:

我们可以看到有一个 Pipeline。点击 Pipeline:

我们在上面可以看到一些统计的数字显示。因为我们已经把所有的文档处理完了了之后,再启动的 Metricbeat,所有我们看到的数据都是零。我们使用如下的命令来对 apache-daily-access.log 追加一个文档:

$ cat << EOF >> apache.log 
> 84.149.9.216 - - [17/May/2015:10:05:57 +0000] "GET /presentations/logstash-monitorama-2013/css/fonts/Roboto-Bold.ttf HTTP/1.1" 200 38720 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
> EOF

我们再重新进行查看:

我们再次点击 Logstash:

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐