万事开头难,花了2天的时间一直在忙这个,总算有点头绪,废话不多说,直接开整!
一基础知识
ELK一般由三部分组成:logstash(日志格式化) + elasticsearch(检索) + Kibana(前台报表展示)
这里因为自己也是在摸索阶段,就直接在自己的windows系统上操作(流下了没有服务器的泪水)
官网地址:https://www.elastic.co/
下载logstash,elasticsearch,Kibana,filebeat安装包(为啥要装这个一会说)
下载完了自己解压到一个文件夹里
启动顺序ES-KIBANA-LOGSTASH-FILEBEAT(可以有可以没)
二window下的启动方法
记住默认端口9300,也可以直接访问localhost:9300得到json字符串证明启动成功!
2Kibana启动也一样,直接访问http://localhost:5601可以进入控制台
3启动LOGSTASH,注意,需要配置默认的conf(在bin的目录下建立conf文件,如下图)
在bin目录下进入cmd模式输入logstash -f logstash_default.conf,通过logstash.bat文件启动(也可配置全局环境变量方式启动,这里只在bin目录下),窗口如下(这里我是启动了另外一个conf)
三对接springboot,可以有2种方式(直接使用logstask作为日志收集加处理方式(可能内存原因直接崩了,所以没试成功)),还有另外一种,采用filebeat读取文件的方式,将它直接传给ES服务(这里处理不好只能做为初学者使用),实际项目还是推荐采用filebeat+logstask+es+k的模式(官网推荐,filebeat读取文件占用内存比直接logstask获取小,适合每个单个系统部署)
4实战操作
找一个maven项目,添加
net.logstash.logback
logstash-logback-encoder
版本号
在resours里添加logback-spring.xml文件
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger [%file:%line] - %msg%n
${LOG_PATH}/${APP_NAME}/out_${APP_NAME}.log
${LOG_PATH}/${APP_NAME}/%d{yyyy-MM-dd HH}.%i.log
5MB
720
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger [%file:%line] - %msg%n
${LOG_PATH}/${APP_NAME}/error/%d{yyyy-MM-dd HH}.%i.log
5MB
720
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger [%file:%line] - %msg%n
ERROR
ACCEPT
DENY
localhost:9250
1048576
标黑就是配置,然后修改logstask的conf文件
input {
beats {
port => 9250
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
启动logstask
一会后,出现错误IO的socket通讯流错误(中文乱码不好分析啊)
幸亏还有logstask自带的日志,打开
会不会端口号配置错误呢,改成8020试试,结果还是读不出来(后来才知道:logback支持将日志数据通过提供IP地址、端口号,以Socket的方式远程发送),然后继续查看
官网发现filebeat(专门读取file文件的服务)
filebeat需要修改filebeat.yml文件,怕改错了另外修改文件试试,添加如下配置(其实自带的里面有,只需要改下file的目录)
可以添加多个,这里我只做一个测试用,其他不变
bin目录下启动fileBeat,然后观察Kibana(这里对logstask未对日志做任何处理,可关闭)
日志监控成功!
继续修改,将logstask加入其中
将filebeat输出端口(yml文件)改下
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
将logstask的input监听端口改成5044(conf文件中的input)
也是能找到日志文件更新的内容的
跌跌撞撞的终于弄了个雏形,后续继续完善!