日志流向: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主配置(此处使用了单机模式)
修改:
在末尾增加,是es-head能远程访问es库:
启动服务:
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
修改连接地址:
vim_site/app.js
运行head:
在elasticsearch-head-master目录下
npminstall //安装
gruntserver //运行
即本地9100端口启动
访问http://ip:9100查看es库,浏览数据,删除等操作,便于后期es库维护
4. redis使用yum安装,修改bind地址,优化下参数如maxmemory等启动即可
5. logstash安装
下载包即可,主要是配置文件cd /app/elk/logstash-6.1.0/config
新建配置文件logstash.conf
Vim logstash.conf
此配置作用是从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日志
app-ulearning.yml修改如下两处,用于上传111.log日志:
同理nginx-ulearning.yml修改两处,
分别启动两个进程:-e为debug模式可去掉
../filebeat-e -c nginx-ulearning.yml
../filebeat-e -c app-ulearning.yml
如果是多个文件,则每个日志文件启动一个进程,不影响其他,这个是新版和老版本的不同,网络上暂时没有找到这方面资料,如果如同老版本配置到同一个主配置文件里多个路径,则出现fields自定义的字段只能传递第一个日志设置的。若每个文件没用自定义字段的区分,则收集到es中的所有日志会是同一个index文件,不便于区分和kibana搜索查询。
Es存储效果如下,
这里提一下另外一种日志收集方式,client端也用logstash收集日志,对日志格式的控制是更加灵活,但是需要装jdk而且耗费系统资源更多。Filebeat轻量级。如将abc.log 和 def.log均收集到redis
日志格式调整及其他
Access日志如果需要做字段分析,需要对日志格式进行更改配置,如nginx配置日志为json格式:
则经过filter处理后日志到logstash存入ES库为:
否则日志中所有内容为一个字符串
Kibana基本使用:更多详细实用见网络。