ELK日志系统搭建实战
Posted 大话性能
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK日志系统搭建实战相关的知识,希望对你有一定的参考价值。
Elk日志系统搭建实战
一、ELK简介
ELK平由Filebeat,Logstash,ElasticSearch,Kibana构成,主要提供应用日志数据采集、转发、存储、查询、告警等功能。
Elasticsearch:能对大容量的数据进行接近实时的存储,搜索和分析操作。 本项目中主要通过Elasticsearch存储所有获取的日志。
Logstash:数据收集引擎,它支持动态的的从各种数据源获取数据,并对数据进行过滤,分析,丰富,统一格式等操作,然后存储到用户指定的位置。
Kibana:数据分析与可视化平台,对Elasticsearch存储的数据进行可视化分析,通过表格的形式展现出来。
Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装Filebeat,并指定目录与日志格式,Filebeat就能快速收集数据,并发送给logstash进行解析,或是直接发给Elasticsearch存储。
二、背景和目的
在测试过程中,有时候需要查看请求的处理错误信息具体是啥,正常情况下都需要登录到对应的服务器进行查看,比较麻烦,另外若是日志刷新的比较快,还不太方便观察。
搭建elk的好处和目的:
1、多台服务器上的多个日志可以集中化查看
2、登录浏览器可视化查看日志
3、可以在页面进行过滤查找
三、搭建过程
Elk部署的结构图如下:
搭建的系统环境CentOS Linux release 7.4.1708 (Core),具体的各个软件版本如下。
软件 |
版本 |
说明 |
ElasticSearch |
6.2.2 |
存储和索引数据 |
Logstash |
6.2.2 |
过滤器,转发 |
Filebeat |
6.2.2 |
采集日志数据 |
Kibana |
6.2.2 |
展示平台 |
备注:最好版本保持一致,而且不同版本的配置项可能会有不一样。
1、安装ElasticSearch
下载压缩包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz
解压
tar -xzf elasticsearch-6.2.2.tar.gz
进入文件
cd elasticsearch-6.2.2/
启动
./bin/elasticsearch
若想后台运行./bin/elasticsearch -d
验证是否安装成功
浏览器中输入ip:9200,成功会显示如下内容。
【遇到问题:】
解决方法
A、修改elasticsearch.yml配置文件,允许外网访问。
vim config/elasticsearch.yml
# 增加
network.host: 0.0.0.0
B、编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效
C、编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p
Session窗口重新关掉再打开,即可看到生效。
2、安装logstash
下载压缩包
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.2.tar.gz
新增一个配置文件first.conf
内容如下,此处未添加filter。
启动logstash进行数据的传递
nohup ./bin/logstash -f first.conf –config.reload.automatic &
--config.reload.automatic自动重新加载配置文件,无需重启logstash
验证是否启动成功
3、安装filebeat
下载filebeat
wget https://www.elastic.co/downloads/beats/filebeat/filebeat-6.2.2-linux-x86_64.tar.gz
修改Filebeat.yml文件。
主要是修改log的路径,并根据需要添加其他字段;另外修改output的方式为logstash。
【友情提示】:yaml的格式比较严格,有时候少个空格多个空格配置文件都会报错!
启动filebeat
# FileBeat 需要以 root 身份启动,因此先更改配置文件的权限
sudo chown root filebeat.yml
sudo ./filebeat -e -c filebeat.yml -d "publish"
若是需要后台启动
nohup ./filebeat -e -c filebeat.yml &
filebeat启动命令:-e参数指定输出日志到stderr,-c参数指定配置文件路径
验证
若是成功启动,可以看到加载的日子文件,并且没有报错。
4、安装Kibana
下载kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-x86_64.tar.gz
启动
nohup ./kibana > /nohub.out &
验证
成功启动会显示如下信息
【最后】
4个组件都搭建完成后,可以进一步确认进程。
成功搭建完成后,可以在kibana页面上查看
http://47.97.28.223:5601
首先需要在kibana上创建一个index,如何就可以可以显示正确的日志信息。
另外,可以根据字段过滤想查看的内容,譬如过滤error字段
附:filebeat常用配置字段说明
encoding:指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的。
input_type:指定文件的输入类型log(默认)或者stdin。
exclude_lines:在输入中排除符合正则表达式列表的那些行。
include_lines:包含输入中符合正则表达式列表的那些行(默认包含所有行),include_lines执行完毕之后会执行exclude_lines。
exclude_files:忽略掉符合正则表达式列表的文件(默认为每一个符合paths定义的文件都创建一个harvester)。
fields:向输出的每一条日志添加额外的信息,比如“level:debug”,方便后续对日志进行分组统计。
max_bytes:日志文件中增加一行算一个日志事件,max_bytes限制在一次日志事件中最多上传的字节数,多出的字节会被丢弃。
multiline:适用于日志中每一条日志占据多行的情况,比如各种语言的报错信息调用栈。这个配置的下面包含如下配置:
pattern:多行日志开始的那一行匹配的pattern。
negate:是否需要对pattern条件转置使用,不翻转设为true,反转设置为false。
match:匹配pattern后,与前面(before)还是后面(after)的内容合并为一条日志。
max_lines:合并的最多行数(包含匹配pattern的那一行)。
tail_files:如果设置为true,Filebeat从文件尾开始监控文件新增内容,把新增的每一行文件作为一个事件依次发送,而不是从文件开始处重新发送所有内容。
以上是关于ELK日志系统搭建实战的主要内容,如果未能解决你的问题,请参考以下文章
2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(目录)
2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(教程详情)