一、引
小白以前监控log文件用的是Flume,但是仅仅用Flume来做日志监控显得有点“重”,而且Flume对windows的支持并不是太好,所以小白使用FileBeat+Logstash替代了Flume,使用Filebeat监控并采集日志,用Logstash做汇总中转。
本小节先对FileBeat和LogStash进行简单的介绍和安装,再进行简单的链接测试,最后介绍一下Beat家族其余的组件。
二、FileBeat
Filebeat是用于转发和集中日志数据的轻量级传送程序。作为代理安装在服务器上,Filebeat监视您指定的日志文件或位置,收集日志事件,并将其转发到ElasticSearch或 Logstash进行索引。
Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收割机都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件并将聚集的数据发送到为Filebeat配置的输出。
三、LogStash
Logstash是具有实时流水线功能的开源数据收集引擎。Logstash可以动态统一来自不同来源的数据,并将数据标准化到您选择的目标位置。清除所有数据并使其民主化,以用于各种高级下游分析和可视化用例。
虽然Logstash最初推动了日志收集方面的创新,但其功能远远超出了该用例。任何类型的事件都可以通过各种各样的输入,过滤器和输出插件来丰富和转换,许多本机编解码器进一步简化了提取过程。Logstash通过利用更大数量和更多种类的数据来加快您的见解。
四、安装测试
注:为了方便,小白把ES、Kibana、Filebeat、Logstash装在了一台机器上,别忘了还有IK分词器。
1、安装
FileBeat和Logstash的安装就是解压一下。
su root
tar -zxvf /opt/software/filebeat-6.3.1-linux-x86_64.tar.gz -C /opt/elk/
chown -R elk:elk /opt/elk/filebeat-6.3.1-linux-x86_64/
tar -zxvf /opt/software/logstash-6.3.1.tar.gz -C /opt/elk/
chown -R elk:elk /opt/elk/logstash-6.3.1/
2、编写任务
Filebeat和Logstash启动任务之前需要有相应的配置文件,安装目录下有默认的模板供参考,小白这边直接新建了。
Filebeat任务配置:
su root
cd /opt/elk/filebeat-6.3.1-linux-x86_64/
mkdir jobs
vi ./jobs/log2logstash.yml 输入以下内容
filebeat.inputs:
- type: log
paths:
- /root/*.log
output.logstash:
hosts: ["localhost:5044"]
注:这个配置文件只能被beat用户或者root用户所拥有,为了能够监控到其他用户下的log文件,小白为了方便,直接用root用户去创建,后面也用root用户去执行启动命令
Logstash任务配置:
su root
cd /opt/elk/logstash-6.3.1/
mkdir jobs
vi ./jobs/filebeats2es.conf 输入以下内容
input {
beats {
port => "5044"
# client_inactivity_timeout => 36000
}
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => [ "localhost:9200" ]
}
# kafka {
# codec => json
# bootstrap_servers => "localhost:9092"
# topic_id => "logstash_topic"
# codec => plain {
# format => "%{message}"
# }
# }
}
3、启动测试
注:为了方便查看,此处小白采用前台启动,打开四个终端,以elk用户(第二节中配置的用户)启动ES和Kibana,以root用户启动Logstash和FileBeat,启动命令如下:
① /opt/elk/elasticsearch-6.3.1/bin/elasticsearch
② /opt/elk/kibana-6.3.1-linux-x86_64/bin/kibana
③ 先 cd /opt/elk/logstash-6.3.1
./bin/logstash -f ./jobs/filebeats2es.conf --config.reload.automatic
④ 先 cd /opt/elk/filebeat-6.3.1-linux-x86_64
./filebeat -e -c jobs/log2logstash.yml -d "publish"
log2logstash.yml中监控的日志路径是/root/*.log,所以我们执行下列插入语句试试:
echo "hello world" >> /root/test.log
① 先看看控制台打印的信息:
② 再看看ES中数据索引情况:
③ 在Kibana中Create index pattern:
注意:Kibana在创建index pattern时,可能会报错,是关于index只读的原因,执行下列命令即可:
PUT .kibana/_settings{ "index.blocks.read_only_allow_delete": "false"}
五、其他Beat
1、Auditbeat
Auditbeat是一种轻量级的托运人,您可以将其安装在服务器上,以审核系统上用户和进程的活动。例如,您可以使用Auditbeat从Linux Audit Framework收集和集中审核事件。您还可以使用Auditbeat检测对关键文件(如二进制文件和配置文件)的更改,并识别潜在的安全策略违规。
2、Functionbeat
Functionbeat是一种Elastic Beat,可作为功能部署在无服务器环境中,以从云服务收集数据并将其发送到Elastic Stack。
7.6.2版支持将Functionbeat部署为AWS Lambda服务或Google Cloud Function。它响应为以下事件源定义的触发器:
● Amazon CloudWatch Logs
● Amazon Simple Queue Service (SQS)
● Amazon Kinesis
● Google Cloud Pub/Sub
● Google Cloud Storage
3、Heartbeat
Heartbeat是一个轻量级守护程序,您将其安装在远程服务器上以定期检查服务的状态并确定它们是否可用。与Metricbeat(仅告诉您服务器是关闭还是关闭)不同,Heartbeat会告诉您服务是否可以访问。
当您需要验证自己是否满足服务级别协议以延长服务正常运行时间时,心跳很有用。当需要验证外部没有人可以访问私有企业服务器上的服务时,它对于其他情况(例如安全用例)也很有用。
您可以将心跳配置为对指定的主机名ping所有DNS可解析的IP地址。这样,您可以检查所有负载均衡的服务,以查看它们是否可用。
配置心跳时,可以指定监视器,这些监视器标识要检查的主机名。每个监视器都根据您指定的时间表运行。例如,您可以将一台监视器配置为每10分钟运行一次,将另一台监视器配置为在9:00至17:00之间运行。
心跳目前支持通过以下方式检查主机的监视器:
● ICMP(v4和v6)回显请求。icmp当您仅想检查服务是否可用时,请使用监视器。此监视器需要root用户访问权限。
● TCP。使用tcp监视器通过TCP连接。您可以选择配置此监视器,以通过发送和/或接收自定义有效负载来验证端点。
● HTTP。使用http监视器通过HTTP连接。您可以选择配置此监视器,以验证服务是否返回了预期的响应,例如特定的状态代码,响应标头或内容。
在tcp和http显示器都支持SSL / TLS和一些代理设置。
4、Journalbeat
Journalbeat是从systemd journals转发和集中日志数据的轻量级托运人,作为代理安装在服务器上,Journalbeat监视您指定的日志位置,收集日志事件,并将其转发到 Elasticsearch或 Logstash。
在Centos系统中有两个日志服务 rsyslog和systemd-journal。
rsyslog是传统的系统日志服务,它会把所有日志都记录到/var/log/目录下的各个日志文件中,永久性的保存。
systemd-journal是syslog 的补充,收集来自内核、启动过程早期阶段、标准输出、系统日志、守护进程启动和运行期间错误的信息,它会默认把日志记录到/run/log/journal中,仅保留一个月的日志,且系统重启后也会消失。但是当新建 /var/log/journal 目录后,它又会把日志记录到这个目录中,永久保存。
5、Metricbeat
Metricbeat是一种轻量级的托运人,您可以将其安装在服务器上,以定期从操作系统和服务器上运行的服务收集指标。Metricbeat会收集它收集的度量标准和统计信息,并将其运送到您指定的输出,例如Elasticsearch或Logstash。
Metricbeat通过从服务器上运行的系统和服务收集指标来帮助您监视服务器,例如:
● Apache
● HAProxy
● MongoDB
● MySQL
● Nginx
● PostgreSQL
● Redis
● System
● Zookeeper
6、Packetbeat
Packetbeat是一个实时网络数据包分析器,您可以将其与Elasticsearch一起使用,以提供应用程序监视和性能分析系统。Packetbeat 通过提供网络服务器之间的可见性来完善Beats平台。
Packetbeat的工作原理是捕获应用程序服务器之间的网络流量,解码应用程序层协议(HTTP,MySQL,Redis等),将请求与响应相关联,并记录每个事务的重要字段。
Packetbeat可以帮助您轻松发现后端应用程序中的问题(例如错误或性能问题),并且可以更快地对它们进行故障排除-因此可以对其进行修复。
Packetbeat会嗅探服务器之间的流量,动态分析应用程序级协议,并将消息关联到事务中。当前,Packetbeat支持以下协议:
● ICMP (v4 and v6)
● DHCP (v4)
● DNS
● HTTP
● AMQP 0.9.1
● Cassandra
● Mysql
● PostgreSQL
● Redis
● Thrift-RPC
● MongoDB
● Memcache
● NFS
● TLS
7、Winlogbeat
Winlogbeat将Windows事件日志发送到Elasticsearch或Logstash。您可以将其安装为Windows服务。
Winlogbeat使用Windows API从一个或多个事件日志读取,根据用户配置的条件过滤事件,然后将事件数据发送到配置的输出(Elasticsearch或Logstash)。Winlogbeat监视事件日志,以便及时发送新的事件数据。每个事件日志的读取位置都保留在磁盘上,以允许Winlogbeat在重新启动后恢复。
Winlogbeat可以从系统上运行的任何事件日志中捕获事件数据。例如,您可以捕获以下事件:
● application events
● hardware events
● security events
● system events
六、总结
以上只是Filebeat和logstash组合的最简单的测试,都没涉及filter,更多详情点击官网:
https://www.elastic.co/guide/en/beats/filebeat/6.3/filebeat-overview.html
https://www.elastic.co/guide/en/logstash/6.3/introduction.html
ES(三) Kibana 安装—Linux单机 ES(五) ElasticSearch+Kibana+IK 安装—ES集群