1.Beats是什么?
Beats是elasticsearch公司开源的一款采集系统监控数据的代理agent,它可以发送不同类型的数据到elasticsearch中,也可以行将采集完的数据发送到logstash中转,然后在推送到elasticsearch中,目前还在发展中,与成熟的监控系统zabbix和ganglia相比就界面看起来爽了点,系统功能还是有点弱,不过与elasticsearch全文搜索框架集成后,数据查询过滤功能非常强悍,还是非常有前途
的,在ELKB中,各个框架角色如下:
Beats:负责收集系统数据,可以直接发送到es中,也可以通过logstash中转
logstash:收集日志,为beats提供中转功能
Elasticsearch:提供数据存储,服务端聚合计算功能
Kibana:提供炫丽的可视化图形展示并且作为elasticsearch的搜索的小清新客户端
2.Beats的组成:
到目前elasticsearch已经提供的有:
(1)Packetbeat(搜集网络流量数据)
(2)Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
(3)Filebeat(搜集文件数据)
(4)Winlogbeat(搜集 Windows 事件日志数据)
(5)自定义beat ,如果上面的指标不能满足需求,elasticsarch公司鼓励开发者
使用go语言,扩展实现自定义的beats指标,只需要按照模板,实现监控的输入,日志,输出等即可
3.Beats 基本拓扑:
4.Beats 安装使用
本篇只介绍一种beats的安装方法,其他几种大同小异,需要监控多少台机器,就安装多少台机器即可
4.1 安装初始化包
(1)安装依赖库 sudo yum install libpcap
(2)wget https://download.elastic.co/beats/packetbeat/packetbeat-1.1.2-x86_64.rpm
(3)sudo rpm -vi packetbeat-1.1.2-x86_64.rpm
4.2 配置elasticsearch地址或者Logstash(可选)采集的beats指标
sudo vi /etc/packetbeat/packetbeat.yml
或者,配置logstash作为中转不直接写入elasticsearch
4.3 配置elasticsearch模板
curl -XPUT 'http://192.168.1.187:9200/_template/packetbeat' -d@/etc/packetbeat/packetbeat.template.json
4.4 启动 Packetbeat 指标收集进程
//启动beats
sudo /etc/init.d/packetbeat start
//关闭
sudo /etc/init.d/packetbeat stop
//测试:
curl http://www.elastic.co/ > /dev/null
curl -XGET 'http://localhost:9200/topbeat-*/_search?pretty'
4.5 安装 kibana dashboards 的模板数据
1, 下载 wget http://download.elastic.co/beats/dashboards/beats-dashboards-1.1.1.zip
2, 解压 unzip beats-dashboards-1.1.1.zip
3, 进入 cd beats-dashboards-1.1.1/
4, 执行 ./load.sh 或者 ./load.sh -url http://192.168.33.60:9200
将dashboard的模板配置数据存进elasticsarch里面
4.6 配置kibana dashboards
1, 选择索引模块
2,选择仪表盘
3,选择Packetbeat Dashboard 添加监控指标,就可以看见监控的走势图了,最上面有个搜索框,可以任意搜索你监控的机器节点,最后晒几张比较炫的图,也不算华而不实
5.Filebeat 简单介绍
5.1 概述
Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。
5.2 工作流程
以下是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。(个人理解,filebeat是一个轻量级的logstash,当你需要收集信息的机器配置或资源并不是特别多时,使用filebeat来收集日志。日常使用中,filebeat十分稳定,笔者没遇到过宕机。)
5.3 相关链接
下载地址:https://www.elastic.co/downloads/beats/filebeat
官方文档:https://www.elastic.co/guide/en/beats/filebeat/current/index.html
6.packetbeat
6.1 Packetbeat简介
packbeat已经被elastic整合在beats项目中。packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP、MySQL、Redis等。在实际使用中,通常和Elasticsearch以及kibana联合使用,用于数据搜索和分析以及数据展示。
(1)实时抓取网络包
(2)自动解析应用层协议(抓包)DNS、Http、Redis、Mysql等
6.2 Packetbeat抓取elasticserach请求数据
(1)进入packetbeat目录,创建es.yml文件
(2)编辑es.yml文件
packetbeat.interfaces.device: ens33#网卡
packetbeat.protocols.http:
ports: [9200]#es端口
send_request: true#抓取请求信息
include_body_for: ["application/json", "x-www-form-urlencoded"]#包含内容
output.console:
pretty: true#控制台输出
(3)启动packetbeat
sudo ./packetbeat -e -c es.yml -strict.perms=false