最近在翻<<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掉
其他的坑,後期遇到了再補充...本文簡單介紹,下文分開說.