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部署的结构图如下:

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,成功会显示如下内容。

ELK日志系统搭建实战

【遇到问题:

ELK日志系统搭建实战

解决方法

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。

ELK日志系统搭建实战

  • 启动logstash进行数据的传递

 nohup ./bin/logstash -f  first.conf  –config.reload.automatic &

--config.reload.automatic自动重新加载配置文件,无需重启logstash

  • 验证是否启动成功

ELK日志系统搭建实战

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的格式比较严格,有时候少个空格多个空格配置文件都会报错!

ELK日志系统搭建实战

ELK日志系统搭建实战

  • 启动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参数指定配置文件路径

  • 验证

若是成功启动,可以看到加载的日子文件,并且没有报错。

ELK日志系统搭建实战

4、安装Kibana

  • 下载kibana

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-x86_64.tar.gz

  • 启动

nohup  ./kibana > /nohub.out &

  • 验证

成功启动会显示如下信息

ELK日志系统搭建实战

【最后】

4个组件都搭建完成后,可以进一步确认进程。

ELK日志系统搭建实战


成功搭建完成后,可以在kibana页面上查看

http://47.97.28.223:5601

首先需要在kibana上创建一个index,如何就可以可以显示正确的日志信息。

ELK日志系统搭建实战

ELK日志系统搭建实战

另外,可以根据字段过滤想查看的内容,譬如过滤error字段

ELK日志系统搭建实战



附: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搭建日志采集分析系统(教程详情)

2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(目录)

ELK日志分析系统(实战!)

ELK日志分析系统实战安装和部署

ELK日志分析系统搭建配置