日志主要包括系统日志、应用程序日志和安全日志等。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及故障发生的原因。分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误,因此日志的重要性不言而喻。
但是,在系统分布式后,日志通常被分散的储存不同的设备上。比如当系统为数十上百台服务器,必须依次登录每台机器的传统方法查阅日志,这样很繁琐和效率低下。因此日志的集中化管理是随着系统架构分布式演进,其矛盾越来越明显,而开源实时日志分析ELK平台完美的解决上述矛盾。
ELK由ElasticSearch(ES)、Logstash和Kiabana三个开源工具组成。
- ES是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash是一个完全开源的工具,可以对日志进行收集、分析、并将其存储供以后使用。
- kibana也是一个开源和免费的工具,他Kibana可以为Logstash和ES提供的日志分析友好的Web界面,可以帮助您汇总、分析和搜索重要数据日志。
本文用于指导ELK在windows10环境下单机版使用,版本选择:
- logstash-7.3.1
- elasticsearch-7.3.2
- kibana-7.3.2-windows-x86
由于是单机版,这里采用最简单的架构构建:
读者可以在ELK官网 https://www.elastic.co/下载最新版本的工具安装包,Windows环境选择后缀为zip格式的下载。
1.1 准备并安装Java环境
Java是ELK三软件依赖的运行环境,读者可以在Oracle官网获取最新版的Java版本,由于只是运行不是开发,所以也可以只下载JRE。安装完成后配置安装完成后,配置JAVA_HOME和JRE_HOME环境变量。执行如下命令成功:
C:Users45014>java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
由于Logstash服务依赖ES服务,Kibana服务依赖Logstash和ES,所以这里建议ELK的服务启动顺序为:ES->Logstash->Kibana,为了配合服务启动顺序,我们安装顺序和启动顺序保持一致。
1.2 Elasticsearch安装并使用
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
1、编辑ES配置文件:
进入目录:
D:Studycodeprojectelasticsearch-5.4.3configelasticsearch.yml,修改如下配置:
cluster.name: my-application
node.name: node-1
http.port: 9200
network.host: 192.168.86.99
cluster.initial_master_nodes: ["node-1"]
action.auto_create_index: true
node.max_local_storage_nodes: 256
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
2、启动ES
进入目录D:Studycodeprojectelasticsearch-5.4.3in执行elasticsearch.bat
打开浏览器访问,展现如下信息表
3、elasticsearch-head安装
elasticsearch-head是一个用于管理Elasticsearch的web前端插件
elasticsearch-head是一个用于管理Elasticsearch的web前端插件
https://github.com/mobz/elasticsearch-head
运行环境准备NodeJS,Grunt
npm install -g grunt-cli
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
修改elasticsearch.yml,增加跨域的配置(需要重启es才能生效)
http.cors.enabled: true
http.cors.allow-origin: "*"
编辑elasticsearch-head/Gruntfile.js,修改服务器监听地址,connect节点增加hostname属性,将其值设置为*
connect: {
server: {
options: {
hostname:'*',
port: 9100,
base: '.',
keepalive: true
}
}
}
编辑elasticsearch-head/_site/app.js, 修改默认es地址为http://192.168.1.102:9200/, 也可以不修改。
启动
npm run start
浏览器打开http://192.168.86.99:9100/
注意下列信息需要在Logstash连接ES上后才可以展现。
查看数据是否已经同步到ES。
ES数据默认存储位置:
D:Studycodeprojectelasticsearch-7.3.2data
1.3 Logstash安装并使用
Logstash是一个接收,处理,转发日志的工具。支持各种类型的日志。
进入 D:Studycodeprojectlogstash-7.3.1config,然后新建Logstash日志分析配置文件logstash.conf,内容如下:
input {
file {
type => "nginx_access"
path => "D:/nginx/logs/nginx.log"#这里注意斜杠的方向
start_position => "beginning" #从文件开始处读写
}
}
output {
elasticsearch {
hosts => ["192.168.86.99:9200"]
index => "nginx-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}
2、启动Logstash
.inlogstash -f .configlogstash.conf
并在D: ginxlogs ginx.log文件中添加如下数据。
请转到ES查看数据同步情况。
1.4 Kibana安装并使用
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
1、编辑Kibana配置文件:
D:Studycodeprojectkibana-7.3.2-windows-x86configkibana.yml 修改如下配置
server.port: 5601 #本机的端口
elasticsearch.hosts: ["http://192.168.86.99:9200"]
server.host: 192.168.86.99 #本机IP地址
i18n.locale: "zh-CN"
2、启动Kibana
D:Studycodeprojectkibana-5.4.3-windows-x86in 执行
kibana.bat
3、浏览Kibana数据
kibana: http://192.168.1.102:5601/
刚才在写入数据的时候已经创建了access开头的索引,因此这里需要创建access-*
输入access-*,然后点击create
点击discover,页面展现获取的数据
本文参考自 https://www.cnblogs.com/taoweizhong/p/10462194.html 经作者本人亲手实践成功