filebeat作为数据源接入DBus

系统架构:

系统架构

总体说明:

​ DBus可以接入三种数据源:logstash、flume、filebeat,下面以使用filebeat为数据抽取端,抽取DBus自身产生的监控和报警日志数据为例进行说明。

​ DBus监控和报警模块部署在 dbus-n2和dbus-n3 上,路径为:/app/dbus/heartbeat/dbus-heartbeat-0.5.0/logs/heartbeat/heartbeat.log。因此,filebeat的日志数据抽取端也要部署在dbus-n2和dbus-n3 上。

​ 另外与logtash不同,filebeat需要一个额外的产生心跳数据的shell脚本,输出的日志在解压包的相对路径:./dbus-agent-heartbeat/logs/agent-heartbeat.log,用于监测整条链路是否正常工作。因此,产生心跳数据的shell脚本也要部署在dbus-n2和dbus-n3 上。

​ filebeat抽取程序同时监控DBus自身的监控和报警日志(路径:/app/dbus/heartbeat/dbus-heartbeat-0.5.0/logs/heartbeat/heartbeat.log) 和shell脚本产生的心跳数据(相对路径:./dbus-agent-heartbeat/logs/agent-heartbeat.log),这样,filebeat既可以抽取监控和报警日志,也可以抽取自身产生的心跳日志。

No 域名 是否有监控和报警日志? 是否部署filebeat? 是否部署心跳shell脚本? 抽取日志 输出topic
1 dbus-n1
2 dbus-n2 1.DBus自身产生的监控和报警日志 2. shell脚本产生的心跳数据 monitor_log_filebeat
3 dbus-n3 1.DBus自身产生的监控和报警日志 2. shell脚本产生的心跳数据 monitor_log_filebeat

主要配置步骤:

1 配置和安装filebeat源相关

2 一键加线和配置

3 检验结果

1 配置和安装filebeat源相关

监控和报警日志在dbus-n2和dbus-n3上,因此 filebeat的日志数据抽取端也要部署在dbus-n2和dbus-n3 上。

1.1 dbus-filebeat下载

​ 执行下面命令,自动替换配置项flume配置项,并检测相关资源连通性:

./checkDeploy.sh

​ 注:用户也可手动更改flume配置文件,完成flume配置。

1.2 dbus-filebeat启动

  1. 修改通用配置: 修改conf目录下的log-conf.properties文件,对于filebeat,只需要修改kafka地址、日志类型及filebeat相关配置即可。

    filebeat目录

  2. 自动检测部署:

    执行命令:./checkDeploy.sh 
    

    执行checkDeploy.sh脚本,可以自动检测kafka是否正常连接,若kafka连接正常,部署脚本将会把conf目录下的修改项替换到filebeat.yml文件中,用户可在控制台看到相关配置项是否替换成功,也可以查看reports目录下的检测和部署报告,确认通过后,进行后续步骤。

    控制台信息输出如下所示(检测及部署成功的信息):

    filebeat目录

    控制台信息输出如下所示(检测及部署失败的信息):

    filebeat目录

  3. 启动方式:

    执行命令:./start.sh
    

    启动脚本,该脚本会启动filebeat程序及定时心跳程序。如果没有报错,则会提示filebeat和心跳程序启动成功。如果有错误,会提示相应错误信息及包含详细错误信息的startup.log文件,请根据错误信息进行修改。

    filebeat目录

  4. 停止方式:

    执行命令:./stop.sh
    

    停止脚本,停止filebeat及定时心跳程序。

1.3 验证filebeat配置成功

读取kafka的topic:monitor_log_filebeat,确认是否有数据:

bin/kafka-console-consumer.sh --zookeeper dbus-n1:2181,dbus-n2:2181,dbus-n3:2181/kafka --topic monitor_log_filebeat

{
	"@timestamp": "2018-08-17T03:00:21.768Z",
	"@metadata": {
		"beat": "filebeat",
		"type": "doc",
		"version": "6.2.4",
		"topic": "monitor_log_filebeat"
	},
	"source": "/app/dbus/dbus-filebeat/dbus-agent-heartbeat/logs/agent-heartbeat.log",
	"offset": 7513,
	"message": "{\"host\": \"dbus-n2\", \"@version\": \"1\", \"clock\": 1534474821, \"@timestamp\": \"2018-08-17 11:00:21.654\", \"type\": \"dbus-heartbeat\"}",
	"prospector": {
		"type": "log"
	},
	"type": "dat",
	"beat": {
		"name": "dbus-n2",
		"hostname": "dbus-n2",
		"version": "6.2.4"
	}
}
{
	"@timestamp": "2018-08-17T03:00:21.768Z",
	"@metadata": {
		"beat": "filebeat",
		"type": "doc",
		"version": "6.2.4",
		"topic": "monitor_log_filebeat"
	},
	"source": "/app/dbus/heartbeat/dbus-heartbeat-0.5.0/logs/heartbeat/heartbeat.log",
	"offset": 7513,
	"message": "monitor started!",
	"prospector": {
		"type": "log"
	},
	"type": "data-log",
	"beat": {
		"name": "dbus-n2",
		"hostname": "dbus-n2",
		"version": "6.2.4"
	}
}

2 DBus 一键加线和配置

2.1 DBus一键加线

filebeat将数据抽取到Kafka topic后,DBus程序就可以对该topic数据进行处理了,在DBus web进行数据源和table的配置工作。

2.2 数据源配置修改

因为我们在dbus-n1和dbus-n2两台机器中分别配置了filebeat程序,用于对数据进行抽取,而DBus监控和报警模块会对来自这两台机器的数据流进行监控,因此,我们需要在数据源配置信息中,将多台主机的host信息填入dsPartition选项中,供dbus监控和报警模块使用,注意:如果主机的hostname是ip,请将”.”转换为”_“,例如:127.0.0.1应该要转换为127_0_0_1。

2.3. 配置规则

3 验证数据

我们可以在grafana配置一下,看看实际流量情况。