日志主要包括系统日志、应用程序日志和安全日志等。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及故障发生的原因。分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误,因此日志的重要性不言而喻。
但是,在系统分布式后,日志通常被分散的储存不同的设备上。比如当系统为数十上百台服务器,必须依次登录每台机器的传统方法查阅日志,这样很繁琐和效率低下。因此日志的集中化管理是随着系统架构分布式演进,其矛盾越来越明显,而开源实时日志分析ELK平台完美的解决上述矛盾。
ELK由ElasticSearch(ES)、Logstash和Kiabana三个开源工具组成。
本文用于指导ELK在windows10环境下单机版使用,版本选择:
由于是单机版,这里采用最简单的架构构建:
读者可以在ELK官网 https://www.elastic.co/下载最新版本的工具安装包,Windows环境选择后缀为zip格式的下载。
Java是ELK三软件依赖的运行环境,读者可以在Oracle官网获取最新版的Java版本,由于只是运行不是开发,所以也可以只下载JRE。安装完成后配置安装完成后,配置JAVA_HOME和JRE_HOME环境变量。执行如下命令成功:
C:\Users\45014>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,为了配合服务启动顺序,我们安装顺序和启动顺序保持一致。
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
1、编辑ES配置文件:
进入目录:
D:\Study\codeproject\elasticsearch-5.4.3\config\elasticsearch.yml,修改如下配置:
network.host:192.168.1.106 #ES的网络IP
http.port: 9200 #ES服务端口
2、启动ES
进入目录D:\Study\codeproject\elasticsearch-5.4.3\bin执行
elasticsearch.bat
打开浏览器访问,展现如下信息表示成功。
3、elasticsearch-head安装
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.1.106:9100/
注意下列信息需要在Logstash连接ES上后才可以展现。
查看数据是否已经同步到ES。
ES数据默认存储位置:
D:\Study\codeproject\elasticsearch-5.4.3\data
Logstash是一个接收,处理,转发日志的工具。支持各种类型的日志。
进入 D:\Study\codeproject\logstash-5.4.3\config,然后新建Logstash日志分析配置文件logstash.conf,内容如下:
input {
file {
type => "nginx_access"
path => "D:\nginx\logs\access.log"
}
}
output {
elasticsearch {
hosts => ["192.168.1.106:9200"]
index => "access-%{+YYYY.MM.dd}"
}
stdout {
codec => json_lines
}
}
2、启动Logstash
logstash.bat -f ../config/logstash.conf
并在D:\nginx\logs\access.log文件中添加如下数据。
请转到ES查看数据同步情况。
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
1、编辑Kibana配置文件:
D:\Study\codeproject\kibana-5.4.3-windows-x86\config\kibana.yml 修改如下配置
server.port: 5601 #本机的端口
server.host: 192.168.1.102 #本机IP地址
elasticsearch.url: http://192.168.1.102:9200 #ES的服务IP+端口
2、启动Kibana
D:\Study\codeproject\kibana-5.4.3-windows-x86\bin 执行
kibana.bat
3、浏览Kibana数据
kibana: http://192.168.1.102:5601/
刚才在写入数据的时候已经创建了access开头的索引,因此这里需要创建access-*
输入access-*,然后点击create
点击discover,页面展现获取的数据
1.5 总结