热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELK6.2+FileBeat6.2(单节点)入门

原文地址,转载请注明出处:https:blog.csdn.netqq_34021712articledetails79502672©王赛超谈到ELK&

原文地址,转载请注明出处:https://blog.csdn.net/qq_34021712/article/details/79502672   ©王赛超

谈到ELK,说起日志传输,首先想到的就是Logstash,Logstash主要的优点就是它的灵活性,这还主要因为它有很多插件。丰富的输入插件可以采集各种样式、大小和来源的数据。丰富的过滤插件可以实时解析和转换数据,能够动态地转换和解析数据,不受格式或复杂度的影响,Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用。

Logstash致命的问题是它的性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已经有很大提升,与它的替代者们相比还是要慢很多的。如果服务器性能较差,并不推荐为每个服务器安装 Logstash ,这样就需要一个轻量的日志传输工具,将数据从服务器端经由一个或多个 Logstash 中心服务器传输到 Elasticsearch。

FileBeat介绍

Filebeat是一个轻量级的日志传输工具,它的存在正弥补了,Logstash的缺点:Filebeat作为一个轻量级的日志传输工具可以将日志推送到Logstash 或者缓冲池中。

详细参考官网介绍:https://www.elastic.co/cn/products/beats/filebeat  

FileBeat的配置文件官网地址

下载


https://www.elastic.co/downloads/beats/filebeat

点击LINUX 64-BIT下载,linux64位tar包。

安装


①解压

tar -zxvf filebeat-6.2.2-linux-x86_64.tar.gz
②重命名

mv filebeat-6.2.2-linux-x86_64 filebeat

环境介绍


主机 安装软件收集日志
172.20.1.186filebeat,Kibana系统日志和es日志
172.20.1.187Logstash,Elasticsearch+head插件收集各个节点filebeat日志

使用的软件版本为:Elasticsearch6.2+Logstash6.2+Kibana6.2+FileBeat6.2


ElasticSearch6.2单机安装


Elasticsearch-head插件安装


Logstash6.2单机安装

Kibana6.2安装使用

FileBeat+Logstash配置过程

①为什么通过使用SSL 编辑保护与Logstash的通信?

数据在远程传输过程中,可能被劫持和获取,继而造成的后果是数据信息泄露,那么如何有效的进行数据传输呢,您可以使用SSL相互身份验证来保护Filebeat和Logstash之间的连接。这可确保Filebeat仅将加密数据发送到受信任的Logstash服务器,并确保Logstash服务器仅从受信任的Filebeat客户端接收数据。

②生成密钥


在172.20.1.186(Filebeat所在服务器)上执行下面命令生成秘钥,为了区分,生成文件后面加个186来区分服务器:

openssl req -subj '/CN=172.20.1.186/' -x509 -days $((100 * 365)) -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/filebeat186.key -out /etc/pki/tls/certs/filebeat186.crt
在172.20.1.187(Logstash所在的服务器)上执行下面命令生成秘钥:

openssl req -subj '/CN=172.20.1.187/' -x509 -days $((100 * 365)) -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash.key -out /etc/pki/tls/certs/logstash.crt

使用以下命令将172.20.1.186上生成的FileBeat秘钥拷贝到Logstash所在的服务器上:

scp /etc/pki/tls/certs/filebeat186.crt root@172.20.1.187:/etc/pki/tls/certs/

使用以下命令将172.20.1.187上生成的Logstash秘钥拷贝到FileBeat所在的服务器上:

scp /etc/pki/tls/certs/logstash.crt root@172.20.1.186:/etc/pki/tls/certs/

③配置Filebeat

先使用 echo "" > filebeat.yml 将配置文件清空,因为里面有很多的注释,看起来很乱。


172.20.1.186(Filebeat)配置文件修改为:

filebeat.prospectors:
- type: log#设置为true使该配置生效enabled: truepaths:#收集日志路径,多个往下继续写就可以了- /var/log/messagesfields:#自定义属性,用来区分不通服务器上的日志log_source: 172.20.1.186-system
- type: logenabled: truepaths:- /usr/local/elk/elasticsearch/logs/es6.2.logfields:log_source: 172.20.1.186-es#下面三个属性配置根据[ 将java异常堆栈收集为一条消息,也可以logstash中配置multiline.pattern: '^\['multiline.negate: truemultiline.match: after#该属性可以配置只收集error级别和warn级别的日志,如果有配置多行收集,一定要将这个配置放在多行的后面include_lines: ['ERROR','WARN']#该属性配置不收集DEBUG级别的日志,如果配置多行 这个配置也要放在多行的后面exclude_lines: ['DEBUG']
output.logstash:#如果是多个logstash将下面三条属性打开#hosts: ["localhost:5044", "localhost:5045"]#loadbalance: true#worker: 3hosts: ["172.20.1.187:5044"]#这个index的值也可以自定义,用来修改@metadata[beat]值,默认是filebeatindex: "filebeat"ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash.crt"]ssl.certificate: "/etc/pki/tls/certs/filebeat186.crt"ssl.key: "/etc/pki/tls/private/filebeat186.key"

配置解释:


type: log 读取日志文件的每一行(默认)
enabled: true 该配置是否生效,如果改为false,将不收集该配置的日志
paths: 要抓取日志的全路径
fields: 自定义属性,可以定义多个,继续往下排就行
multiline.pattern: 正则表达式
multiline.negate: true 或 false;默认是false,匹配pattern的行合并到上一行;true,不匹配pattern的行合并到上一行
multiline.match: after 或 before,合并到上一行的末尾或开头
include_lines: ['ERROR','WARN'] 该属性可以配置只收集error级别和warn级别的日志,如果有配置多行收集,一定要将这个配置放在多行的后面
exclude_lines: ['DEBUG'] 该属性配置不收集DEBUG级别的日志,如果配置多行 这个配置也要放在多行的后面
hosts: Logstash所在的主机
loadbalance: 如果设置为TRUE和配置了多台logstash主机,输出插件将负载均衡的发布事件到所有logstash主机。如果设置为false,输出插件发送所有事件到随机的一台主机上,如果选择的不可达将切换到另一台主机。默认是false。
worker: 每个配置的主机发布事件到Logstash的工作者数量。这最适用于启用负载平衡模式。示例:如果您有2个主机和3个工作人员,则共有6个工作人员启动(每个主机3个)。
ssl.certificate_authorities: CA 证书,即用来签署证书的证书。这里表示配置 Filebeat 使其信任所有由该 CA 证书发行的证书。因为自签名证书的发行者和证书主体相同,所以这里直接使用 Logstash 证书使 Filebeat 信任使用该证书的 Logstash server

ssl.certificate & ssl.certificate_key: Filebeat 证书和 key 文件。Filebeat 将使用它们向 Logstash server 证明自己的可信身份。

④配置Logstash

172.20.1.189(Logstash)配置:vim logstash.conf 

input { beats { port => 5044 ssl => true #如果收集多个filebeat日志,用逗号隔开配置#["/etc/pki/tls/certs/filebeat186.crt","/etc/pki/tls/certs/filebeat181.crt"]ssl_certificate_authorities => ["/etc/pki/tls/certs/filebeat186.crt"] ssl_certificate => "/etc/pki/tls/certs/logstash.crt" ssl_key => "/etc/pki/tls/private/logstash.key" ssl_verify_mode => "force_peer" }
} output { elasticsearch { hosts => ["http://172.20.1.187:9200"] #默认使用[@metadata][beat]来区分不同的索引,也就是filebeat中配置的index字段 #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" #我使用自定义fields字段来区分不同的索引 index => "%{[fields][log_source]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } }

ssl_verify_mode: force_peer将使服务器要求客户提供证书。如果客户端没有提供证书,连接将被关闭

logstash中如何获取filebeat中添加的fields字段:

%{[fields][添加的字段名]}

⑤启动ELK+FileBeat

#FileBeat控制台启动方式
./filebeat -e -c filebeat.yml -d "publish"

控制台报以下异常:

ERROR pipeline/output.go:74 Failed to connect: x509: cannot validate certificate for 172.20.1.187 because it doesn't contain any IP SANs
解决办法:


删除之前的logstash证书,然后编辑logstash所在的服务器 vim /etc/pki/tls/openssl.cnf


找到 [ v3_ca ] 


加入下边一行:


subjectAltName = IP:172.20.1.187(前面的两个大写字母IP要带上,后面的地址为logstash所在的ip)

然后再将重新生成的logstash的证书,重新拷贝到filebeat所在的服务器。之前生成的Filebeat证书不用动。

⑥重新启动ELK+FileBeat

之后就可以在Elasticsearch-head插件中看到有两个新的索引创建了。




我们可以使用下面的命令往Elasticsearch的日志文件中输入一句话测试一下

echo "我是王赛超" > /usr/local/elk/elasticsearch/logs/es6.2.log

然后看FIleBeat的控制台打印

Kibana中也可以搜索到该日志信息:





测试FileBeat的java异常收集,为了方便测试直接修改FileBeat本机上安装的elasticsearch配置文件中的network.host: 0.0.0.0.0 然后日志中报以下异常


然后在Kibana中也可以搜索到该日志信息,FileBeat已将java异常多行收集为同一个日志时间:







推荐阅读
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 基于Linux开源VOIP系统LinPhone[四]
    ****************************************************************************************** ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 在2019年寒假强化训练中,我们深入探讨了二分算法的理论与实践应用。问题A聚焦于使用递归方法实现二分查找。具体而言,给定一个已按升序排列且无重复元素的数组,用户需从键盘输入一个数值X,通过二分查找法判断该数值是否存在于数组中。输入的第一行为一个正整数,表示数组的长度。这一训练不仅强化了对递归算法的理解,还提升了实际编程能力。 ... [详细]
  • 深入解析 OpenSSL 生成 SM2 证书:非对称加密技术与数字证书、数字签名的关联分析
    本文深入探讨了 OpenSSL 在生成 SM2 证书过程中的技术细节,重点分析了非对称加密技术在数字证书和数字签名中的应用。非对称加密通过使用公钥和私钥对数据进行加解密,确保了信息传输的安全性。公钥可以公开分发,用于加密数据或验证签名,而私钥则需严格保密,用于解密数据或生成签名。文章详细介绍了 OpenSSL 如何利用这些原理生成 SM2 证书,并讨论了其在实际应用中的安全性和有效性。 ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • Git应用技巧与实战经验分享
    在使用 Git 进行代码管理时,有时会遇到无法访问 `https://github.com` 仓库的问题,具体表现为 OpenSSL SSL_read 错误,连接被重置(errno 10054)。本文将深入探讨这一问题的成因,并分享多种解决方法,包括检查网络配置、更新 Git 版本以及调整 SSL 设置等,帮助开发者有效应对类似问题。此外,文章还将介绍一些实用的 Git 技巧和实战经验,提升代码管理和协作效率。 ... [详细]
  • 开发笔记:实现1353表达式中的括号匹配(栈的应用) ... [详细]
  • MSP430F5438 ADC12模块应用与学习心得
    在最近的实践中,我深入研究了MSP430F5438的ADC12模块。尽管该模块的功能相对简单,但通过实际操作,我对MSP430F5438A和MSP430F5438之间的差异有了更深刻的理解。本文将分享这些学习心得,并探讨如何更好地利用ADC12模块进行数据采集和处理。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
author-avatar
lao6345790
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有