Beats工具
Beats是elastic公司的一款轻量级数据采集产品,它是从packetbeat发展出来的数据收集器系统,它包含了几个子产品:
- Packetbeat(用于监控网络流量)
- Filebeat(用于监听日志数据)
- Metricbeat(用于搜集CPU、内存、磁盘的信息以及Nginx、Redis等服务的数据)
- Winlogbeat(用于搜集windows事件日志)
- Heartbeat(用于监控服务的可用性)
Beats可以直接把数据发送给Elasticsearch或者发送给Logstash,然后Logstash发送给Elasticsearch,然后进行后续的数据分析活动。
由于他们都是基于libbeat写出来的,提供了统一的数据发送方法,输入配置解析,日志记录框架等功能。所有的beat工具,在配置上基本相同,只是input输入的地方各有差异。
如果有其他特殊需求,可以使用Go语言借助libbeat库方便地开发自己的Beat工具,社区中有很多工具可以参考。
Logstash和Filebeat
上一篇文章中介绍过,Logstash是跑在JVM上的,需要消耗较多的系统资源,而Filebeat则是一个轻量级的日志采集工具,占用资源更少。我们完全可以在每台机器上安装启动个Filebeat,由Filebeat来采集日志,将数据传输给Redis或者Kafka,然后logstash去获取,利用filter功能过滤分析,然后存储到elasticsearch中。架构图如下:
环境信息
主机名 | 操作系统版本 | IP地址 | 安装软件 |
---|---|---|---|
hadoop16 | CentOS 7.0 | 172.16.206.16 | elasticsearch-5.6.3.zip、kibana-5.6.3-linux-x86_64.tar.gz |
spark32 | CentOS 7.0 | 172.16.206.32 | logstash-5.6.3.tar.gz、filebeat-5.6.3-linux-x86_64.tar.gz、Nginx |
osb30 | Redhat 6.5 | 172.16.206.30 | redis-3.2.2.tar.gz |
安装配置Redis
安装Redis
# yum install readline-devel pcre-devel openssl-devel -y
# cd /usr/local/
# tar zxf redis-3.2.2.tar.gz
# cd redis-3.2.2/
# make
# make install
配置Redis
# cd /usr/local/redis-3.2.2/
# cp redis.conf /etc/
# vim /etc/redis.conf
1.打开/etc/redis.conf,将daemonize处修改为yes。
2.配置Redis持久化策略
使用RDB和AOF双持久化策略:其中默认开启了RDB持久化,我们只需要开启AOF持久化。
3.配置redis日志文件
4.配置数据文件存放路径,在/目录下面创建/RedisData目录
# mkdir /RedisData
5.修改Redis监听地址
6.修改Redis监听端口
7.在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redis的时候还是报错,所以要如下设置
启动/停止Redis
启动:
# /usr/local/bin/redis-server /etc/redis.conf
停止:
# /usr/local/redis-3.2.2/src/redis-cli -p 6400 shutdown
安装配置Filebeat
filebeat的工作流程:当开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点(Elasticsearch、Logstash、Kafka或者Redis)。
安装Filebeat
[root@spark32 opt]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.3-linux-x86_64.tar.gz
[root@spark32 opt]# ln -sv filebeat-5.6.3-linux-x86_64 filebeat
‘filebeat’ -> ‘filebeat-5.6.3-linux-x86_64’
[root@spark32 opt]# cd filebeat
配置Filebeat
1.定义你的日志文件的路径(一个或多个)
对于大多数的基本filebeat配置,可以定义一个单一探测器针对一个单一的路径,例如:
filebeat.prospectors:
- input_type: log
paths:
- /usr/local/openresty/nginx/logs/host.access.log
#json.keys_under_root: true 若收取日志格式为json的log,请开启此配置
2.定义输出日志,我这里输出到redis中
output.redis:
hosts: ["172.16.206.30:6400"]
#password: "my_password"
key: "filebeat"
db: 0
timeout: 5
启动Filebeat
测试配置文件语法:
# cd /opt/filebeat/
# ./filebeat -configtest -e
启动:
# ./filebeat &
查看数据是否进入redis:
[root@osb30 src]# ./redis-cli -p 6400
127.0.0.1:6400> help @LIST
127.0.0.1:6400> LLEN filebeat
(integer) 15
127.0.0.1:6400> LINDEX filebeat 1
"{\"@timestamp\":\"2017-10-23T07:13:37.551Z\",\"beat\":{\"hostname\":\"spark32\",\"name\":\"spark32\",\"version\":\"5.6.3\"},\"input_type\":\"log\",\"message\":\"172.16.4.81 - - [19/Oct/2017:09:47:17 +0800] \\\"GET /favicon.ico HTTP/1.1\\\" 404 576 \\\"http://172.16.206.32:808/\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36\\\" \\\"-\\\"\",\"offset\":439,\"source\":\"/usr/local/openresty/nginx/logs/host.access.log\",\"type\":\"log\"}"
浏览器访问下nginx,再次查看redis数据:
127.0.0.1:6400> LLEN filebeat
(integer) 16
安装配置Elasticsearch
关于Elasticsearch的安装部署详见上一篇博客《ELK实战》。
安装配置Logstash
Logstash从redis中取数据,输出结果到Elasticsearch中。关于Logstash的安装部署详见上一篇博客《ELK实战》。
配置Logstash
# cd /opt/logstash-5.6.3/conf
# vim logstash_redis.conf
input {
redis {
host => "172.16.206.30"
port => "6400"
data_type => "list"
key => "filebeat"
}
}
filter {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
}
output {
elasticsearch {
hosts => ["172.16.206.16:9200"]
action => "index"
index => "filebeat-%{+YYYY.MM.dd}"
}
}
启动Logstash
[root@spark32 logstash-5.6.3]# bin/logstash -f /opt/logstash-5.6.3/conf/logstash_redis.conf &
查看redis中的数据,发现已经全部被消费了:
127.0.0.1:6400> LLEN filebeat
(integer) 0
查看Elasticsearch中的索引:
# curl -XGET '172.16.206.16:9200/_cat/indices'
yellow open filebeat-2017.10.23 PQe6qyVfSSG7GHQJUOPWtA 5 1 18 0 92.8kb 92.8kb
安装配置Kibana
关于Kibana的安装部署详见上一篇博客《ELK实战》。
浏览器访问:http://172.16.206.16:5601/
1.左侧菜单点击“Management”,点击“Index Patterns”。
2.点击“Create Index Pattern”。
3.输入索引名字,点击“Create”
4.点击Discover,选择上一步创建的索引。