ELK5.0日志收集平台搭建指南
来源:互联网 发布:淘宝女装自拍教程 编辑:程序博客网 时间:2024/06/10 11:47
开源实时日志收集平台ELK由ElasticSearch、Logstash、Kibana三个开源工具组成,官方网址为:https://www.elastic.co/products
在Elastic 5.0版本之后,官方又加入了Beats套件,然后把他们统称为Elastic Stack。
ElasticSearch:是一个开源的分布式搜索引擎,其特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,Rest风格接口,多数据源,自动搜索负载等。
Logstash:是一个开源的日志收集和分析工具,能够将日志进行分析后,提供给ElasticSearch进行使用。
Kibana:可以为ElasticSearch和Logstash提供一个进行日志分析的友好Web界面,帮助汇总、分析、搜索重要日志。
Filebeat:是一个开源的文件收集器,最初是基于Logstash-forward源码的日志数据shipper,适合用于日志文件的收集。把Filebeat安装在服务器上,作为代理来监视日志目录或特定的日志文件,然后把日志数据转发到Logstash中进行分析,或者是直接转发到ElasticSearch中进行搜索。
ELK Stack的部署示意图如下。
整个ELK Stack由5个部分组成:JDK 8,ElasticSearch,Logstash,Filebeat,Kibana。文中所用的ELK Stack组件都是5.0以上版本。
1、JDK8
因为整个ELK Stack都需要依赖于JDK 8环境,所以在搭建环境之前,需要先进行JDK的安装和环境变量配置。
1.1 判断JDK是否安装
执行java -version命令,如果打印出下图中的文字,说明JDK已经成功安装,并且配置了环境变量。
1.2 下载JDK
如果没有安装JDK,可以登录Oracle官网进行JDK 8的下载,下载地址为:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html。
完成下载后,把JDK放到搭建ELK的环境里,执行tar -zxf jdk-8u111-linux-x64.tar.gz -C /usr/local命令,对JDK进行解压。
1.3 配置JDK环境变量
使用vim /etc/profile命令,对profile文件进行编辑。然后在文件末尾,添加以下内容。
export INSTALL4J_JAVA_HOME=/usr/local/java/jdk1.8.0_111
export JAVA_HOME=/usr/local/java/jdk1.8.0_111
export PATH=$JAVA_HOME/bin:$PATH
然后退出当前用户,重新登录系统。
1.4 验证安装
完成JDK环境变量配置之后,可以通过java -version命令来检查JDK是否安装成功。
2、ElasticSearch
2.1 下载并解压
通过执行wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.1.tar.gz命令,可以进行ElasticSearch的压缩包下载。
下载完成后执行tar -zxf elasticsearch-5.0.1.tar.gz -C /usr/local命令,把ElasticSearch解压到/usr/local目录下。
2.2 修改配置文件
ElasticSearch的配置文件位于/usr/local/elasticsearch-5.0.1/config目录下。执行vim elasticsearch.yml修改配置文件,在配置文件中添加以下配置。
path.data: /var/lib/elasticsearch
path.logs: /var/logs/elasticsearch
network.host: 0.0.0.0
path.data和path.logs两个变量是对ElasticSearch数据存储目录和日志目录的配置。
Network.host变量,需要配置成0.0.0.0,是为了能让除了本机以外的机器,能通过浏览器成功访问ElasticSearch的地址(http://192.168.2.72:9200/)。
2.3 启动服务
完成配置文件修改后,在ElasticSearch的安装目录下,执行./bin/elsasticserach命令,进行服务器的启动。
ElasticSearch服务在linux系统中,不能直接使用root用户进行启动,需要创建一个非root用户,并且把ElasticSearch相关文件的所有者都修改为这个非root,然后使用该用户进行ElasticSearch的启动。
用户可以通过以下命令进行用户组、用户创建,和修改文件的所有者。
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
chown -R elsearch elasticSearch.log
服务启动的时候,可能会出现下面截图中的异常信息出现。
这个异常不影响ElasticSearch的使用,只要对linux内核进行升级,异常信息就不会再出现。
2.4 验证安装
可以通过访问http://IP:9200,来验证ElasticSearch是否启动成功。在浏览器中进行访问时,会在页面里返回以下信息。
3、Logstash
3.1 下载并解压
通过执行wget https://artifacts.elastic.co/downloads/logstash/logstash-5.0.1.tar.gz命令来进行Logstash的下载。
下载完成后执行tar -zxf logstash-5.0.1.tar.gz -C /usr/local命令,把Logstash解压到/usr/local目录下。
3.2 测试Logstash
解压完成后,在Logstash的目录下执行./bin/logstash -e 'input { stdin { } } output { stdout {} }'命令,启动Logstash。
启动完成后,直接在控制台中输入HelloWorld,然后回车,将会在控制台中打印出刚才输入的Helloworld。
3.3 创建配置文件
在Logstash的目录下,通过vim logstash-test.cnof命令,创建Logstash的配置文件。配置文件内容如下。
input {
file {
path =>["/home/test/test.log"]
add_field => {"appName" => "test"}
type =>"test"
}
beats {
port => 5044
}
}
filter{
grok {
match => {"message" => "\[%{TIMESTAMP_ISO8601:time}\]\[%{LOGLEVEL:level}\]\[%{JAVACLASS:class}:%{NUMBER}\]" }
}
}
output {
elasticsearch { hosts => ["192.168.2.72:9200"] }
stdout { codec => rubydebug }
Input中的file,是用来从指定文件中读取文件数据,beats是配置了一个给Filebeat使用的端口号。
在filter里面,配置了一个grok插件,这个插件的作用是通过正则表达式,对收取到的日志数据进行解析。
在output中配置了两个数据输出方式,elasticsearch是向指定的ElasticSearch进行数据推送,stdout是把收到的数据在控制台进行输出。
3.4 使用配置文件启动
完成配置文件的编写后,在Logstash目录下,执行./bin/logstash -f logstash-test.conf命令,Logstash将会按照配置文件中的配置进行服务启动。
因为在配置文件中配置了file input,所以当服务启动起来后,可以通过执行echo "[2016-12-07 13:41:36,243][INFO][Test.SpringConfigFileLoader:94] Spring Config FileLoader load end.(17)" >>/home/test/test.log命令,向配置的文件里面写数据,模拟日志记录来测试Logstash。
4、Filebeat
4.1 下载并解压
通过执行wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.0.2-linux-x86_64.tar.gz命令,进行Filebeat的下载。
下载完成后执行tar -zxf filebeat-5.0.2-linux-x86_64.tar.gz -C /usr/local命令,把Filebeat解压到/usr/local目录下。
4.2 配置文件修改
Filebeat的配置文件就在解压后的目录下,通过执行vim filebeat.yml命令,来进行配置文件的修改。可参照下面的内容进行修改。
filebeat.prospectors:
- input_type: "log"
paths:
- /home/Test/default/work_temp/logs/trace.log
fields:
appName: default
logType: trace
- input_type: "log"
paths:
- /home/Test/default/work_temp/logs/system.log
fields:
appName: default
logType: system
- input_type: "log"
paths:
- /home/Test/default/work_temp/logs/engine.log
fields:
appName: default
logType: engine
- input_type: "log"
paths:
- /home/Test/default/work_temp/logs/deploy.log
fields:
appName: default
logType: deploy
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
output.logstash:
# The Logstash hosts
hosts: ["192.168.2.72:5044"]
在配置文件中配置了4个input_type用来对4个日志文件进行监控,同时还对监控到的日志数据增加了appName和logType两个参数。
配置文件中的multiline参数,是用来进行数据多行读取,以实现一次能读取全部异常堆栈的目的。
然后在文件中配置了output.logstash,这是把收集到的日志数据发送到Logstash中进行解析,这里配置的端口需要与Logstash中beats插件配置的端口相对应。
4.3 服务启动
在Filebeat所在目录下,执行./filebeat -e -c filebeat.yml命令,就能完成Filebeat的启动。
5、Kibana
5.1 下载并解压
通过执行wget https://artifacts.elastic.co/downloads/kibana/kibana-5.0.1-linux-x86_64.tar.gz命令,进行Kibana的下载。
下载完成后执行tar -zxf kibana-5.0.1-linux-x86_64.tar.gz -C /usr/local命令,把Filebeat解压到/usr/local目录下。
5.2 配置文件修改
Kibana的配置文件位于解压后的conf目录下,执行vim kibana.yml命令进行配置文件的修改。
在配置文件中增加以下配置。
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.2.72:9200"
5.3 启动服务
在Kibana目录下,执行./bin/kibana命令,启动服务。
完成启动之后可以在浏览器中进行页面访问,地址为http://192.168.2.72:5601/。
首次登陆的时候,需要先配置索引,默认使用的索引是logstash-*,并且是基于时间的。建议把基于时间的选项取消,然后点击创建。
完成索引配置后,切换到Discover页面就可以开始进行日志数据的检索。
- ELK5.0日志收集平台搭建指南
- ELK5.0日志分析平台搭建+Beats
- 【Python】windows10搭建ELK5日志收集系统
- ELK5.5日志系统-RPM搭建文档(服务端单机部署)
- ELK5.x搭建全纪录
- ELK日志收集存储分析-----logstash+elasticsearch+kibana快速搭建日志平台
- Android平台日志收集系统
- OMAP3530平台搭建日志
- logstash日志平台搭建
- FLUME日志收集系统搭建
- flume日志收集系统搭建
- ELK5.1搭建过程(ElasticSearch, Logstash, Kibana)
- win7下搭建ELK5.6.3环境
- ELK+Kafka 企业日志收集平台(一)
- ELK+Kafka 企业日志收集平台(二)
- ELKstack 搭建日志管理平台
- [笔记]快速搭建日志平台
- ELK 日志分析平台搭建
- 大学两年的一点感想
- Huion手绘板驱动丢了怎么办
- Tensorflow学习笔记(1)
- 两个,三个Activity之间的相互跳转
- python re相关函数的用法代码
- ELK5.0日志收集平台搭建指南
- Oracle分组函数
- 启动hive时 mysql报错
- 深入讲解android的启动流程
- hive标的三种创建方式
- alias 永久生效
- 二进制补码记数法和余码记数法
- JS学习进程(三)
- VS调试出现错误提示 无法将“obj\Debug\*.*”复制到“bin\Debug\*.*”,文件正在由另一个进程使用,因此该进程无法访问此文件