ELK6.5.0+Filebeat 日志系统部署
1. 引言
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。
Filebeat是本地文件的日志数据采集器。 作为服务器上的代理安装,Filebeat监视日志目录或特定日志文件,tail file,并将它们转发给Elasticsearch或Logstash进行索引、kafka 等。
1.1 编写目的
ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信息显示,ELK Stack 已经成为目前最流行的集中式日志解决方案。

2. 部署对象说明
2.1 程序名称
Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;
Logstash:数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;
Kibana:数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;
Filebeat:ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取数据,迅速5.Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。
如果您对 ELK Stack 还尚不了解,或是想了解更多,请点击集中式日志系统 ELK 协议栈详解,查看具体介绍。
2.2 程序功能
Elasticsearch:分布式的搜索引擎和数据分析引擎
Logstash:数据收集引擎
Kibana:数据分析和可视化平台
Filebeat:轻量型日志采集器
3. 部署操作
3.1 环境准备
ELK5.3以后依赖JDK,所以我们先在服务器安装依赖 (JDK版本1.8.0及以上)
OpenJDK下载网站:
OpenJDK安装文档网站:
检查一下JAVA环境及版本
关闭防火墙和配置SELinux
ELK官方下载网站:

Elasticsearch下载:
Logstash下载:
Kibana下载:
Filebeat下载:
3.2 安装步骤
安装elasticsearch
具体详细配置阅读官方文档了解更多:
修改sysctl内核参数
3.3 程序运行成功状态检查
ES插件的使用
head插件(查看,库级别的操作)
安装node
由于head插件本质上还是一个node.js的工程,因此需要安装node,使用npm来安装依赖的包。(npm可以理解为maven)
官网下载对应版本的node:
安装编译软件
然后解压node的安装包
源码编译安装
查看是否安装成功,-v查看版本

使用下面的命令取消ssl验证
如遇错误error-code-ELIFECYCLE,执行如下命令
下载elasticsearch-head插件
head下载地址:https://github.com/mobz/elasticsearch-head
修改启动文件
所有依赖包安装成功后,修改 elasticsearch-head 目录下的 Gruntfile.js 文件,在 options 属性内增加 hostname,设置为 0.0.0.0。

修改 Elasticsearch 配置文件 config/elasticsearch.yml支持跨域访问
具体配置参考官方文档

Elasticsearch自5版本之后,处于安全考虑,不允许使用root用户运行。
解决:创建一个普通用户,将elasticsearch 安装目录权限修改一下,切换至普通用户运行elasticsearch就可以了
切换用户启动服务
查看服务启动端口

访问 http://10.88.216.26:9100 地址,就可以看到当前 Elasticsearch 集群信息

Cerebo是kopf在es5上的替代者(集群操作)
Cerebro下载网站:


查看启动并访问节点

Bigdesk插件(集群状态查看)
启动web服务器
查看启动并访问节点

访问并连接节点查看
访问http://10.88.216.26:8900即可进入监控页面

Beats可以直接(或者通过Logstash)将数据发送到Elasticsearch,在那里你可以进一步处理和增强数据,然后在Kibana中将其可视化。
Filebeat安装部署
配置Filebeat
官方参考文档:
Logstash安装部署

Logstash的数据处理过程主要包括:输入,过滤器,输出三部分,另外在输入和输出中可以使用Codecs对数据格式进行处理。这四个部分均以插件形式存在,用户通过定义管道配置文件,设置需要使用的输入,过滤器,输出,编解码器插件,以实现特定的数据采集,数据处理,数据输出等功能
(1)输入:用于从数据源获取数据,常见的插件如file,syslog,redis,beats等[ 详细参考 ]
(2)过滤器:用于处理数据如格式转换,数据派生等,常见的插件如grok,mutate,drop,clone,geoip等[ 详细参考 ]
(3)输出:用于数据输出,常见的插件如elastcisearch,file,graphite,statsd等[ 详细参考 ]
(4)编解码器:编解码器不是一个单独的流程,而是在输入和输出等插件中用于数据转换的模块,用于对数据进行编码处理,常见的插件如json,multiline [ 详细参考 ]
Logstash下载:(需要预先安装JDK8)
logstash配置语句详解
logstash配置文件包含三个配置部分,分别为:input{}、filter{}、output{}。
{} 定义区域,区域内可以定义一个或多个插件,通过插件对数据进行收集,加工处理,输出。
logstash.yml
包含Logstash配置标志,你可以在这个文件中设置标志,而不是在命令行中传递标志,在命令行中设置的任何标志都覆盖logstash.yml文件中的相应设置,更多信息见logstash.yml官方参考文档。
Logstash没有默认的配置文件,需要手动配
数据类型:
布尔值类型: ssl_enable => true
字节类型: bytes => "1MiB"
字符串类型: name => "xkops"
数值类型: port => 22
数组: match => ["datetime","UNIX"]
哈希: options => {key1 => "value1",key2 => "value2"}
编码解码: codec => "json"
路径: file_path => "/tmp/filename"
注释: #
条件判断:
等于: ==
不等于: !=
小于: <
大于: >
小于等于: <=
大于等于: >=
匹配正则: =~
不匹配正则: !~
包含: in
不包含: not in
与: and
或: or
非与: nand
非或: xor
复合表达式: ()
取反符合: !()
创建logstash.conf配置文件:
检查配置并启动Logstash

logstash三种启动方式:
logstash常用插件
查看插件的方式
input插件,常用的插件:file、tcp、udp、syslog,beats
filter插件,常用的插件:json、grok
output插件,常用的插件:file; tcp/udp; redis/kfaka; elasticsearch
codec类插件,常用的插件:plain、json、json_lines、rubydebug、multiline等
启动filebeat和logstash
安装kibana
修改配置文件

汉化kibana插件下载地址:
汉化成功后启动kibana

浏览器访问:http://服务器IP:5601/
最后更新于
这有帮助吗?