文章目录
Elastic Stack
什么是Elastic Stack?
Elastic Stack是由ELK演化而来,ELK是三种软件的简称,分别是Elasticsearch、logstash、kibana组成,在发展的过程中,又有新成员Beats的加入,形成了Elastic Stack。
也就是ELK在兼并Beats后形成的新联盟–ELKB是Elastic Stack。
什么是beats?
Beats是轻量级(资源高效,无依赖性,小型)和开放源代码日志发送程序的集合,这些日志发送程序充当安装在基础结构中不同服务器上的代理,用于收集日志或指标(metrics)。这些可以是日志文件(Filebeat),网络数据(Packetbeat),服务器指标(Metricbeat)或Elastic和社区开发的越来越多的Beats可以收集的任何其他类型的数据。 收集后,数据将直接发送到Elasticsearch或Logstash中进行其他处理。Beats建立在名为libbeat的Go框架之上,该框架用于数据转发,这意味着社区一直在开发和贡献新的Beats。
Filebeat
顾名思义,Filebeat用于收集和传送日志文件,它也是最常用的Beat。 Filebeat如此高效的事实之一就是它处理背压的方式-因此,如果Logstash繁忙,Filebeat会减慢其读取速率,并在减速结束后加快节奏。
Filebeat几乎可以安装在任何操作系统上,包括作为Docker容器安装,还随附用于特定平台(例如Apache,MySQL,Docker等)的内部模块,其中包含这些平台的默认配置和Kibana对象。
Packetbeat
网络数据包分析器Packetbeat是第一个引入的beat。 Packetbeat捕获服务器之间的网络流量,因此可用于应用程序和性能监视。
Packetbeat可以安装在受监视的服务器上,也可以安装在其专用服务器上。 Packetbeat跟踪网络流量,解码协议并记录每笔交易的数据。 Packetbeat支持的协议包括:DNS,HTTP,ICMP,Redis,MySQL,MongoDB,Cassandra等。
Metricbeat
Metricbeat是一种非常受欢迎的beat,它收集并报告各种系统和平台的各种系统级度量。 Metricbeat还支持用于从特定平台收集统计信息的内部模块。您可以使用这些模块和称为指标集的metricsets来配置Metricbeat收集指标的频率以及要收集哪些特定指标。
Heartbeat
Heartbeat是用于“uptime monitoring”的。本质上,Heartbeat是探测服务以检查它们是否可访问的功能,例如,它可以用来验证服务的正常运行时间是否符合您的SLA。 您要做的就是为Heartbeat提供URL和正常运行时间指标的列表,以直接发送到Elasticsearch或Logstash以便在建立索引之前发送到您的堆栈。
Auditbeat
Auditbeat可用于审核Linux服务器上的用户和进程活动。 与其他传统的系统审核工具(systemd,auditd)类似,Auditbeat可用于识别安全漏洞-文件更改,配置更改,恶意行为等。
Winlogbeat
Winlogbeat仅会引起Windows系统管理员或工程师的兴趣,因为它是专门为收集Windows事件日志而设计的节拍。 它可用于分析安全事件,已安装的更新等。
Functionbeat
Functionbeat被定义为“serverless”的发件人,可以将其部署为收集数据并将其发送到ELK堆栈的功能。 Functionbeat专为监视云环境而设计,目前已针对Amazon设置量身定制,可以部署为Amazon Lambda函数,以从Amazon CloudWatch,Kinesis和SQS收集数据。
一、filebeat介绍
Filebeat由两个主要组成部分组成:prospector(探勘者)和 harvesters(矿车)。这些组件一起工作来读取文件并将事件数据发送到指定的output。
- prospector: 负责找到所有需要进行读取的数据源
- harvesters:负责读取单个文件的内容,并将内容发送到output中,负责文件的打开和关闭。
二、Filebeat的工作方式
启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。
三、Filebeat工作原理
Filebeat可以保持每个文件的状态,并且频繁地把文件状态从注册表里更新到磁盘。这里所说的文件状态是用来记录上一次Harvster读取文件时读取到的位置,以保证能把全部的日志数据都读取出来,然后发送给output。如果在某一时刻,作为output的ElasticSearch或者Logstash变成了不可用,Filebeat将会把最后的文件读取位置保存下来,直到output重新可用的时候,快速地恢复文件数据的读取。在Filebaet运行过程中,每个Prospector的状态信息都会保存在内存里。如果Filebeat出行了重启,完成重启之后,会从注册表文件里恢复重启之前的状态信息,让FIlebeat继续从之前已知的位置开始进行数据读取。
四、Filebeat工作流程
Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。
注:Elastic 公司基于 Go 开发了一个公共组件——libbeat,该组件提供所有 Beats 使用的基础 API,通过这个 API 可以发送数据到 Elasticsearch、配置输入源(input)参数,实现日志打印等等功能,开发人员可以基于该组件开发符合自己需求的 Beat 数据采集器。
五、部署elk+filebeat
1、安装、解压安装包
cd /opt
tar zxf filebeat-6.5.4-linux-x86_64.tar.gz
mv filebeat-6.5.4-linux-x86_64 /usr/local/filebeat
2、修改filebeat.yml
grep -v "#\|^$" filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/httpd/access_log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
setup.kibana:
output.logstash:
hosts: ["192.168.10.11:5044"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
3、启动filebeat
./filebeat -c filebeat.yml &
4、配置logstash的.conf文件
vim apache.conf
input {
beats{
port =>5044
}
}
output {
elasticsearch {
hosts => ["192.168.10.13:9200"]
index => "httpd-%{+YYYY.MM.dd}"
}
stdout {codec => rubydebug}
}
5、启动logstash
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/apache.conf &
6、测试
http://192.168.10.12:9100/
http://192.168.10.12:5601/app/kibana
6、测试
http://192.168.10.12:9100/
http://192.168.10.12:5601/app/kibana