一、 介绍
Elasticsearch :开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash: 对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
Kibana: 以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
二、 安装过程
首先装好jdk,配置好环境变量
ELK下载地址:https://www.elastic.co/downloads
1、启动Elasticsearch: Elasticsearch的bin目录,双击elasticsearch.bat,浏览器访问http://localhost:9200/,有返回信息表示成功
2、启动Logstash: logstash的bin目录下,新建文件logstash.conf
内容: input {
tcp { //输入,诸如插件有 tcp、log4j、beats、redis等等
host => "localhost"
port => 4560
codec => json
}
stdin {
}
}
filter { } //过滤器
output { //输出
stdout {
codec => rubydebug
}
elasticsearch {
action => "index"
codec => rubydebug
hosts => "127.0.0.1:9200"
index => "logstash-%{+YYYY.MM.dd}"
}
}
启动方式: D:\ELK\logstash-5.4.3\bin>logstash -f logstash.conf
若只需要收集显示nginx的访问日志,则可以建立一个名为nginx+时间的索引
若是需要收集一个服务器下的多个服务日志,则可以在一个conf下添加多个input并根据type来区分和实现
手动设置索引:filebeat 添加document_type配置 设置标识号,
Logstash配置对应的Type, if else输出不同的索引
且在kibana上也建立上述索引即可查看
3、启动kibana:进入kibana的config目录,修改kibana.yml文件,修改配置为:
elasticsearch.url: "http://127.0.0.1:9200"
server.port: 5601
然后进入bin目录下,双击kibana.bat,启动成功后 访问http://localhost:5601/
注:以上启动方式为cmd窗口启动,当cmd窗口关闭服务也关闭,可以使用注册为windows服务
使用教程:https://blog.csdn.net/zinger198208/article/details/71630238
为Elasticsearch安装head插件
安装node和grunt
下载地址:https://nodejs.org/en/download/
安装到elasticsearch目录下
同一目录下执行 npm install -g grunt-cli
注:出现xxx不是内部指令 自行修改你的环境变量
安装head
修改elasticsearch.yml文件
在文件最后加入
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
放开network.host: 192.168.0.1的注释并改为network.host: 0.0.0.0
放开cluster.name;node.name;http.port的注释
双击elasticsearch.bat重启es
Head下载地址:https://github.com/mobz/elasticsearch-head
解压然后修改:E:\elasticsearch-5.4.1\elasticsearch-head-master\Gruntfile.js
cmd进入E:\elasticsearch-5.4.1\elasticsearch-head-master文件夹
执行 npm install
安装完成执行grunt server 或者npm run start(以后每次)
安装完成查看结果127.0.0.1:9100
复制文件
修改相应的conf/elasticsearch.yml
再启动相应的elasticsearch.bat,即可
Lo4j到ELK
方式一、利用filebeat中转
注:由于logstash逐渐不支持log4j插件 可以考虑使用filebeat做中间件,获取log4j的数据再传到logstash
修改 filebeat.yml 配置文件内容如下:
filebeat.prospectors:
- type: log
enabled: true
paths:
- E:\myCat_log\*
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
setup.kibana:
output.logstash:
hosts: ["localhost:5544"]
注:path为读取文件路径,host对应logstash的input的IP端口
filebeat启动 在安装目录中启动cmd,执行 filebeat -c filebeat.yml -e
logstash新文件建logstash_filebeat.conf
内容
input {
beats {
port => 5544
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "log4j2-%{+YYYY.MM}"
}
}
logstash启动方法:在bin目录中启动cmd,执行 logstash -f logstash_filebeat.conf
方式二、利用tcp
logstash.conf文件
input {
tcp{
host =>"127.0.0.1"
port => 4560
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
}
}
项目配置文件
#Appender to logstash
log4j.rootLogger=DEBUG,socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.RemoteHost=localhost
log4j.appender.socket.port=4560
log4j.appender.socket.Encoding=UTF-8
log4j.appender.socket.application=localclient
log4j.appender.server.ReconnectionDelay=10000
关键
主要关键在于收集日志这个层面,也就是log4j到logstash这个过程,在5.xx版本的logstash的input中使用lo4j插件无法成功接收信息,logstash返回(This plugin is deprecated. Please use filebeat instead to collect logs from log4j applications.)只有2.xx版本才能使用,而且使用过会有乱码现象,而且elasticsearch也要求版本统一5.xx。
那么使用5.xx版本logstash里面tcp插件去接收log4j的信息,但是由于tcp的序列化读信息会造成乱码(需要相应的配置或者无法配置?),同时信息之多无法直观查看日志。所以可以考虑使用logstash推荐使用的filebeat.
Filebeat的好处:、轻量级传输转发,用logstash直接获取会很占用内存
、反压力敏感协议,高负荷数据量时放慢读取速度。压力解除,恢复
个人预想ELK使用情况
Phone----占用2台服务器(server1、server2)
Portal-----占用2台服务器(server3、server4)
为每个server配置一个filebeat(filebeat、filebeat2、filebeat3、filebeat4)
为每个server配置一个logstash(logstash1、logstash2、logstash3、logstash4)
每个server同时开启n套程序
filebeat1读取server1所有套程序的日志(filebeat2->server2如此类推)存放到logstash1, 大方向:logstash根据source路径区分出每套程序的日志,小方向:logstash利用(filter)再细分过滤出信息里面(message)的重要信息或者说你想要的信息,再建立相关索引如(server1-msg-%{+YYYY.MM.dd}")放到elasticserach集群上面,且在kibana上也建立上述索引即可查看,kiana上也可检索。
kiana使用
{
"query": {
"match": {
"source": {
"query": "D:\\GoXML\\readme.txt",
"type": "phrase"
}
}
}
}
关键信息查找直接在search输入即可
标签:ELK,filebeat,windows,kibana,log4j,elasticsearch,日志,logstash,搭建 From: https://www.cnblogs.com/zhuoneng/p/17678093.html