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

原文地址,转载请注明出处: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: true
  paths:
   #收集日志路径,多个往下继续写就可以了
   - /var/log/messages
  fields:
   #自定义属性,用来区分不通服务器上的日志
   log_source: 172.20.1.186-system
- type: log
  enabled: true
  paths:
   - /usr/local/elk/elasticsearch/logs/es6.2.log
  fields:
   log_source: 172.20.1.186-es
  #下面三个属性配置根据[ 将java异常堆栈收集为一条消息,也可以logstash中配置
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after
  #该属性可以配置只收集error级别和warn级别的日志,如果有配置多行收集,一定要将这个配置放在多行的后面
  include_lines: ['ERROR','WARN']
  #该属性配置不收集DEBUG级别的日志,如果配置多行 这个配置也要放在多行的后面
  exclude_lines: ['DEBUG']
output.logstash:
  #如果是多个logstash将下面三条属性打开
  #hosts: ["localhost:5044", "localhost:5045"]
  #loadbalance: true
  #worker: 3
  hosts: ["172.20.1.187:5044"]
  #这个index的值也可以自定义,用来修改@metadata[beat]值,默认是filebeat
  index: "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异常多行收集为同一个日志时间:


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是ELK+filebeat+sentinl的源码安装步骤: 1. 安装Java ELK需要Java运行环境,所以首先需要安装Java。可以在Oracle官网上下载适合自己系统的Java安装包,然后按照提示进行安装。 2. 安装Elasticsearch 在Elasticsearch官网上下载对应系统的安装包,解压后进入bin目录,执行以下命令启动Elasticsearch: ``` ./elasticsearch ``` 3. 安装Kibana 在Kibana官网上下载对应系统的安装包,解压后进入bin目录,执行以下命令启动Kibana: ``` ./kibana ``` 4. 安装Logstash 在Logstash官网上下载对应系统的安装包,解压后进入bin目录,执行以下命令启动Logstash: ``` ./logstash -f logstash.conf ``` 其中,logstash.conf是Logstash的配置文件。 5. 安装FilebeatFilebeat官网上下载对应系统的安装包,解压后进入bin目录,编辑filebeat.yml配置文件,配置日志收集的路径和输出到Logstash的地址,然后执行以下命令启动Filebeat: ``` ./filebeat -e -c filebeat.yml ``` 6. 安装Sentinl Sentinl是一个基于Kibana的插件,用于实现告警功能。首先需要安装Kibana插件管理工具elasticsearch-plugin,执行以下命令进行安装: ``` ./kibana-plugin install elasticsearch-plugin ``` 然后再安装Sentinl插件,执行以下命令进行安装: ``` ./kibana-plugin install https://github.com/sirensolutions/sentinl/releases/download/tag-6.4.2-0/sentinl-v6.4.2.zip ``` 7. 配置Sentinl 编辑Kibana的配置文件kibana.yml,修改以下配置: ``` sentinl:admin_email: admin@example.com ``` 其中,admin@example.com是管理员邮箱。 8. 启动ELK+filebeat+sentinl 依次启动Elasticsearch、Kibana、Logstash和Filebeat。然后在Kibana中打开Sentinl插件,配置告警规则即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值