一、概述
ELK是由Elastic公司開發的Elasticsearch、Logstash、Kibana三款開源軟件的縮寫(但不限於這三款軟件)。
為什么使用ELK?
在目前流行的微服務架構中,一個大型應用可能會被划分成幾十甚至上百個微服務,這些微服務產生的日志也會分布在不同的服務器不同的目錄下,按常規方式進行日志檢查你會頻繁登錄每台服務器查找日志,所以你可能需要一個集中化的日志管理平台。
如果要對這些日志進行數據分析,常規方式可采用hadoop或spark等大數據技術手段來進行數據分析,但終究這些方式需要編寫代碼和相關專業知識,時間、人力成本略高,所以你可能需要一個開箱即用的搜索、聚合、可視化的數據分析平台。
綜上所述,ELK首先是一個集中化日志管理平台,但同時也是一個快速的可視化數據分析平台。
架構選擇
ELK架構很靈活,不同的架構適合不同的場景。
在文章末尾提供了一個鏈接,可作為不同架構方式的參考。
二、服務架構
上圖中分為4層,含義如下:
1、filebeat日志采集端,采集日志並將日志發送到kafka;
2、kafka+zookeeper集群,用於中轉、緩沖海量日志;
3、logstash從kafka中拉取日志,並過濾、轉發到elasticsearch中;
4、elasticsearch集群,用於存儲日志;kibana將海量日志可視化展示、統計;
三、服務器\軟件准備
服務器ip | 192.168.1.101 | 192.168.1.102 | 192.168.1.103 | 192.168.1.104 | 192.168.1.105 | 192.168.1.106 | 192.168.1.107 | 192.168.1.108 |
安裝軟件 | filebeat | kafka+zookeeper | kafka+zookeeper | logstash | elasticsearch dataNode | elasticsearch dataNode | elasticsearch dataNode | elasticsearch masterNode+kibana |
一共涉及6個軟件包
四、軟件安裝
1、安裝zookeeper
192.168.1.102、192.168.1.103兩台服務器分別安裝配置zookeeper集群
#安裝目錄/usr/local/zookeeper-3.4.13 >tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/ >cd /usr/local/zookeeper-3.4.13/conf/ >cp zoo_sample.cfg zoo.cfg >vim zoo.cfg #修改以下配置 dataDir=/usr/local/zookeeper-3.4.13/zookeeper server.1=192.168.1.102:12888:13888 server.2=192.168.1.103:12888:13888 #server.1執行(重要) >echo 1 > /usr/local/zookeeper-3.4.13/zookeeper/myid #server.2執行(重要) >echo 2 > /usr/local/zookeeper-3.4.13/zookeeper/myid #兩台服務器分別啟動zookeeper >cd /usr/local/zookeeper-3.4.13/bin/ >./zkServer.sh start
>netstat -lntp |grep 2181
2、安裝kafka
192.168.1.102、192.168.1.103兩台服務器分別安裝配置kafka
#解壓到/usr/local/kafka_2.11-2.0.1 >tar -zxvf kafka_2.11-2.0.1.tgz -C /usr/local/kafka_2.11-2.0.1 >cd /usr/local/kafka_2.11-2.0.1/config/ #修改以下配置文件 #注:兩台服務器中broker.id、host.name需分別配置 >vim server.properties broker.id=1 port = 9092 host.name = 192.168.1.102 log.dirs=/var/log/kafka log.retention.hours=1 zookeeper.connect=192.168.1.102:2181,192.168.1.103:2181 default.replication.factor=2 #啟動kafka服務,兩台服務器中分別啟動 >cd /usr/local/kafka_2.11-2.0.1/config >./kafka-server-start.sh -daemon ../config/server.properties
驗證kafka隊列服務,正常情況下在生產者端輸入數據並發送,消費者端會收到並打印數據
#創建消息主題 >./kafka-topics.sh --create --zookeeper 192.168.1.102:2181 --replication-factor 1 --partitions 2 --topic logs #創建消息生產者 >./kafka-console-producer.sh --broker-list 192.168.1.102:9092 --topic logs #創建消息消費者 >./kafka-console-consumer.sh --bootstrap-server 192.168.1.102:9092 --topic logs
3、安裝logstash
192.168.1.104安裝配置logstash
#通過rpm安裝logstash >rpm -ivh logstash-6.0.0.rpm #配置數據的輸入輸出 >vim /etc/logstash/conf.d/syslog.conf input { kafka { bootstrap_servers => "localhost:9092" topics => ["logs"]#使用上文中創建的消息主題 } } output { elasticsearch { hosts => ["localhost:9200"] index => "logs-%{+YYYY.MM.dd}" } } #啟動服務 >systemctl start logstash
4、安裝elasticsearch
192.168.1.108安裝配置elasticsearch
#使用rpm方式安裝軟件 >rpm -ivh elasticsearch-6.0.0.rpm #編輯配置 >vim /etc/elasticsearch/elasticsearch.yml cluster.name: master-node # 集群中的名稱 node.name: master # 該節點名稱 node.master: true # 意思是該節點為主節點 node.data: false # 表示這不是數據節點 network.host: 0.0.0.0 # 監聽全部ip,在實際環境中應設置為一個安全的ip http.port: 9200 # es服務的端口號 discovery.zen.ping.unicast.hosts: ["192.168.1.105", "192.168.1.106", "192.168.1.107", "192.168.1.108"] # 配置自動發現 #啟動服務 >systemctl start elasticsearch #驗證 >ps aux |grep elasticsearch >curl 'localhost:9200/_cluster/health?pretty'
注:"192.168.1.105", "192.168.1.106", "192.168.1.107" 按照同樣方法安裝配置,但需要修改node.name、node.master改為false、node.data改為true
5、安裝kibana
192.168.1.108安裝配置kibana
>rpm -ivh kibana-6.0.0-x86_64.rpm #編輯配置 >vim /etc/kibana/kibana.yml elasticsearch.url: "http://192.168.1.108:9200" logging.dest: /var/log/kibana.log #創建日志文件 >touch /var/log/kibana.log >chmod 777 /var/log/kibana.log #啟動服務 >systemctl start kibana #驗證服務 >ps aux |grep kibana >netstat -lntp |grep 5601
至此,服務架構中第2、3、4層已安裝完畢
6、安裝filebeat(日志采集端)
192.168.1.101安裝配置filebeat
>rpm -ivh filebeat-6.0.0-x86_64.rpm #修改或增加以下配置文件 >vi /etc/filebeat/filebeat.yml filebeat.prospectors: - type: log enabled: true paths: - /opt/*.out #日志目錄 #日志數據輸出到kafka output.kafka: enabled: true hosts: ["172.17.224.159:9092"] topic: ecplogs #啟動並驗證服務 >systemctl start filebeat >ps axu |grep filebeat
五、驗證
用瀏覽器打開kibana:http://192.168.1.108:5601
安裝工作告一段落
參考博客: