欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

filebeat+ELK收集日志安装使用指南

时间:2023-04-19

ELK应用简介

为什么要用ELK
工作中经常会遇到一些问题,我们可以通过日志排除,发现问题根源解决问题
如果1台或者几台服务器,我们可以通过 linux命令,tail、cat,通过grep、awk等过滤去查询定位日志查问题
但是如果几十台、甚至几百台。通过这种方式肯定不现实。

ELK简介
ELK Stack是软件集合Elasticsearch、Logstash、Kibana的简称,由这三个软件及其相关的组件可以打造日志实时处理系统。
Elasticsearch 是一个基于 Lucene 的、支持全文索引的分布式存储和索引引擎,主要负责将日志索引并存储起来,方便业务方检索查询。
Logstash是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。
Kibana是一个可视化工具,主要负责查询 Elasticsearch 的数据并以可视化的方式展现给业务方,比如各类饼图、直方图、区域图等。

为什么要用Filebeat+logstash的组合
因为Filebeat同样作为日志收集的中间件,比logstash更加轻量级,占用空间更小,运行效率更快,所以用filebeat收集各个服务器的日志更为方便。
但是filebeat由于是搭建在各个服务器上,如果有统一的配置需求需要变动,虽然有些笨重但对代码无侵入影响。
所以我们决定用logstash来收集filebeatd的日志并转发给Elasticsearch ,这样即使有配置变动需求,只需要改动logstash即可

如果服务器性能不佳或者日志两大需要缓存,典型的替代方案是将redis或kafka作为中心缓存池:

ElasticSearch安装
安装版本ElasticSearch7.9.3
1.1 安装
先去ElasticSearch官网下载一个7.9.3版本的包,然后把包放到指定的目录使用tar -zxvf命令解压。
1.2 配置
找到config目录下的elasticsearch.yml文件,修改配置:

cluster.initial_master_nodes: [“node-1”]
cluster.name: es-application
node.name: node-1
#对所有IP开放
network.host: 0.0.0.0
#HTTP端口号
http.port: 9200
#elasticsearch数据文件存放目录
path.data: /usr/local/elasticsearch-7.9.3/data
#elasticsearch日志文件存放目录
path.logs: /usr/local/elasticsearch-7.9.3/logs

1.3 启动
因为ElasticSearch不能使用root用户启动,所以需要创建一个用户

创建用户

useradd es

设置密码

passwd es

赋予用户权限

chown -R es:es /usr/local/elasticsearch-7.9.3/

切换用户

su es

进入bin目录启动 -d表示后台启动

./elasticsearch -d
访问部署IP的9200端口号,如果可以看到elasticsearch信息则部署成功
1.4 问题解决方案
云管部署elasticSearch的时候有两个个异常,记录了一下

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
解决方法:
切换到root用户修改配置/etc/security/limits.conf添加下面配置:

soft nproc 65536hard nproc 65536soft nofile 65536hard nofile 65536

2.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方法:
切换到root用户修改配置etc/sysctl.conf添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p

Logstash安装
安装版本Logstash7.9.3
2.1 安装
还是先去Logstash官网下载logstash7.9.3的安装包然后到指定目录tar -zxvf解压
2.2 配置
找到/config目录下的logstash-sample.conf文件,修改配置:
input {# 输入源,接收日志的端口号
beats {
port => 5044
}
}
filter {# 过滤器,把elasticSearch的timestamp改为日志时间,根据需求配置过滤规则,下面是云管日志的规则
grok {
match => { “message” => “(?%{TIMESTAMP_ISO8601})” }
}
date {
match => [ “timestamp”, “ISO8601” ]
}
mutate {
remove_field => [ “ts_tmp”,“date”, “time”, “end_time_tmp”, “end_time_tmp1” ]
}
}

output {# 输出源,host是发送日志的目标地址,index配置的是索引名,filetype是由filebeat传来的变量
elasticsearch {
hosts => [“10.1.3.5:9200”]
index => “%{[filetype]}-%{+YYYY.MM.dd}”
}
}

2.3 启动

进入bin目录启动

./logstash -f /usr/local/logstash-7.9.3/config/logstash-sample.conf &

2.4 问题解决方案
logstash运行依赖JDK,测试环境没有安装JDK,所以需要手动安装一下,并且配置JAVA_HOME
下载JDK包,放入指定目录解压,解压完成后修改/etc/profile配置文件,配置环境变量:
export JAVA_HOME=/usr/local/java
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAH​OME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre

让配置生效命令:
source /etc/profile(只能在一个终端生效)

重启命令:
init 6
reboot

Kibana安装
安装版本Kibana7.9.3

3.1 安装
还是去Kibana官网下载一个安装包,然后到指定目录tar -zxvf解压
3.2 配置
找到/config目录下的kibana.yml文件,修改配置:

server.port: 5601
server.host: “10.1.3.5”
elasticsearch.hosts: [“http://10.1.3.5:9200”]

3.3 启动
和elasticSearch一样,不能使用root用户启动,需要创建一个用户:

赋予用户权限

chown -R kibana:kibana /usr/local/kibana-7.9.3/
进入bin目录后启动命令

切换用户

su kibana

非后台启动,关闭shell窗口即退出

./kibana

后台启动

./kibana &

启动成功之后打开5601端口,看见KIBANA交互界面则部署成功,云管安装KIBANA一次就部署好了,没遇见问题

FileBeat安装
安装版本FileBeat7.9.3
4.1 安装
依然先去FileBeat官网下载安装包,下载完成后解压
4.2 配置
然后修改filebeat.yml配置文件: 输入源

filebeat.inputs:

type: log # 同一台服务器上多个容器要收集日志只需把- type下的内容配置多个
enabled: true
backoff: “1s”
tail_files: false
paths:

/logs/account-portal/*.log # filebeat收集日志的地址,对应的是存放服务器日志的地址
fields:
filetype: cmp-account-portal # filetype是一个自定义的变量,logstash可以接收到
fields_under_root: true
multiline.pattern: ‘[0-9]{4}-[0-9]{2}-[0-9]{2}’ # 通过正则合并日志,根据项目需求写对应正则
multiline.negate: true
multiline.match: after 输出,Logstash的服务器地址

output.logstash:
enabled: true
hosts: [“10.1.3.5:5044”]
#输出,如果直接输出到ElasticSearch则填写这个
#output.elasticsearch:
#hosts: [“localhost:9200”]
#protocol: “https”

添加如上配置的时候需要把原来的inputs和output相关的配置删掉或者注解掉,否则启动会失败
4.3 启动

后台启动命令

./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
ps -ef|grep filebeat 查看是否启动成功

5、ELK使用
5.1 Kibana索引配置
下图的Index Management里可以看到已经收集到的日志索引

点击Index Patterns 可以生成索引目录,比如test-*的索引目录就是把所有以test开头的索引都拿出来生成一个目录

最后,就可以到Discover栏进行选择,选择相关的Index Pattern,然后搜索关键字,就找到相关的日志了!

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。