最近在翻<<JAVA微服务实战>>这本书,书中有介绍一个微服务日志系统;
ELK是一个技术栈,包括Elasticsearch,Logstash和Kibana,ELK是三种技术首字母缩写.ELK主要用于日志收集.存储与查询..
为什么用ELK,就是简单的方便查询分析日志呗...
常用的ELK的架构为 logstash==>elasticsearch====>kibana...个人感觉kibana更多的功能在于操作查询使用,一种操作es的可视化工具,在ELK中扮演的作用并不大..
考虑到
- 并发日志量增加
- logstash将数据索引到ElasticSearch比较慢
- 索引失败,数据丢失
后来多引入一个组件:redis,作为缓冲框架;
应用服务===> logstash-shipper ===>redis ===>logstash-indexer ====>elasticSearch ====>kibana;
此时应用服务,shipper,redis,indexer都是用分布式来实现的...相应的组件就是:
本地微服务,logstash,redis,es,kibana;
然后es用的版本是:
其实版本用的挺杂的,自己用这几版本能真正用起来,其实就已经很不错了....
基础环境:
jdk 1.8
注意事项:
- 微服务引入logback的版本要一致,不能有冲突;
- es的安装需要切换用户;root用户是不能启动执行的
- redis的安装设置后台启动;修改redis.conf中daemonize为yes,bind参数最好也改一下,很多文章要求改为ip.我是改为0.0.0.0,感觉改成这样更好用...(也可以能是个大坑,至少我现在还没踩到...嘻嘻嘻...)
- logstash中的设置,注意input和output的插件类型,是file还是tcp;注意ip
- logstash中的配置文件的格式及 => 等符号...具体有错误时,请仔细查看启动日志(tail -f nohup)非常有用.
至少上面几点是我踩过的坑,真是有效.
各程序的启动命令(仅方便本人使用)
es:su es(切换es用户) 进入 /usr/local/elasticsearch下,./bin/elasticsearch -d 启动即可,jps -m -l查看进程 ip:9200
kibana:进入/home/soft/kibana-6.3.2-linux-x86_64..执行命令 nohup ./bin/kibana & 后台执行 node程序 ip:5601
查看进程 netstat -tlnp |grep 5601得到一个pid,ps aux | grep pid(上一个命令的pid值) 即可
ip:5601
redis安装目录:
/home/soft/redis-5.0.7
启动服务端:./src/redis-server redis.conf (bind 0.0.0.0)
启动客户端:./src/redis-cli (因为我已经改过bind了..所以没问题)
启动:logstash-indexer/shipper:
nohup ./bin/logstash -f conf/logstash.conf & 启动即可...tail -f nohup.out查看启动日志
关闭:ps -ef|grep logstash 看清楚,哪个是你的进程,再kill掉
其他的坑,后期遇到了再补充...本文简单介绍,下文分开说.