ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

流程说明:

日志流向:Client_data--->filebeat-redis-logstash---elasticsearch---kibana

client通过filebeat或者logstash收集日志,发送到redis缓存,redis输出到logstash,通过logstash做一些过滤和修改之后传送到es数据库,kibana读取es数据库做分析


server安装

      Jdk1.8

       Elasticsearch

       elasticsearch-head

       nodejs

       Logstash

       Redis

       Kibana

       下载地址:https://www.elastic.co/downloads

       新版filebeat logstash有不少变化,网络文章很多配置并不太适用

       请参考官方文档:https://www.elastic.co/guide/index.html


        本实例中

        所有组件安装目录/app/elk

        Serverip:192.168.59.128

1.jdk1.8安装(略)

 

2.Elasticsearch安装:

新建用户elk,es需要非root用户启动

Wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.0.tar.gz

tarzxvf elasticsearch-6.1.0.tar.gz

cdelasticsearch-6.1.0/config

jvm.options配置文件,适当调增jvm运行参数

elasticsearch.yml主配置(此处使用了单机模式)

修改:

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

在末尾增加,是es-head能远程访问es库:

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

启动服务:

Su –elk

/app/elk/elasticsearch-6.1.0/bin/elasticsearch&


3.elasticsearch-head安装,用于web界面查看和编排es数据库

先安装nodejs,经测试,在系统上yum安装的nodejs使用会报错,版本不符

wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz

tarzxvf node-v4.4.7-linux-x64.tar.gz

cdnode-v4.4.7-linux-x64

设置环境变量;

exportNODE_HOME=/app/elk/node-v4.4.7-linux-x64

exportPATH=$PATH:$NODE_HOME/bin

exportNODE_PATH=$NODE_HOME/lib/node_modules

执行 source /etc/profile

 

grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动

wget https://github.com/mobz/elasticsearch-head/archive/master.zip

unzipmaster.zip

cdelasticsearch-head-master/

npminstall -g grunt-cli

检查是否安装成功:

grunt-version

修改head插件源码:

vimGruntfile.js

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

修改连接地址:

vim_site/app.js

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

运行head:

在elasticsearch-head-master目录下

npminstall //安装

gruntserver //运行

即本地9100端口启动

访问http://ip:9100查看es库,浏览数据,删除等操作,便于后期es库维护

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

4. redis使用yum安装,修改bind地址,优化下参数如maxmemory等启动即可

 

5. logstash安装

下载包即可,主要是配置文件cd /app/elk/logstash-6.1.0/config

新建配置文件logstash.conf

Vim logstash.conf

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

此配置作用是从redis内取出数据以json的格式输入到es库,过程中对字段进行了修改,其他配置参加百度

 

此处对nginx access日志字段做修改的原因是,将nginx访问日志的的字段拆分,用于后期kibana对nginx每个字段的分析统计。

其他如代码错误日志等不需要调整的会以字符串的格式进行收集,如果仅仅只是以字符串的形式收集日志内容,去掉filter段即可。

启动logstash:

/app/elk/logstash-6.1.0/bin/logstash-f /app/elk/logstash-6.1.0/config/logstash.conf

6.kibana安装

下载安装包,解压进目录修改两个配置即可:

vimconfig/kibana.yml

server.host:"0.0.0.0"

elasticsearch.url:http://192.168.59.128:9200

启动:

./bin/kibana

访问:http://ip:5601默认端口可修改

此时server端即安装完成


client安装

下载filebeat:

Wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.1.0-linux-x86_64.tar.gz

 

解压,进入目录

cd/app/filebeat

mkdirconf

 

cpfilebeat.reference.yml conf/

如果要上传多个日志,则将配置文件复制多分,如下,分为ulearning的nginx日志和其他app日志

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

app-ulearning.yml修改如下两处,用于上传111.log日志:


ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

同理nginx-ulearning.yml修改两处,

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

分别启动两个进程:-e为debug模式可去掉

../filebeat-e -c nginx-ulearning.yml

../filebeat-e -c app-ulearning.yml

 

如果是多个文件,则每个日志文件启动一个进程,不影响其他,这个是新版和老版本的不同,网络上暂时没有找到这方面资料,如果如同老版本配置到同一个主配置文件里多个路径,则出现fields自定义的字段只能传递第一个日志设置的。若每个文件没用自定义字段的区分,则收集到es中的所有日志会是同一个index文件,不便于区分和kibana搜索查询。

Es存储效果如下,

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

这里提一下另外一种日志收集方式,client端也用logstash收集日志,对日志格式的控制是更加灵活,但是需要装jdk而且耗费系统资源更多。Filebeat轻量级。如将abc.log 和 def.log均收集到redis

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)


日志格式调整及其他

Access日志如果需要做字段分析,需要对日志格式进行更改配置,如nginx配置日志为json格式:

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

则经过filter处理后日志到logstash存入ES库为:

ELKF搭建详细步骤(Elasticsearch+logstash+kibana+filebeat)

否则日志中所有内容为一个字符串

 

Kibana基本使用:更多详细实用见网络。