ELKStack 實戰之 Elasticsearch [一]

ELKStack 實戰之 Elasticsearch [一]

ELKStack 實戰之 Elasticsearch [一]

ELKStack html

ELKStack簡介

ELK Stack 是 Elasticsearch、Logstash、Kibana 三個開源軟件的組合。在實時數據檢索和分析場合,三者一般是配合共用,並且又都前後歸於 Elastic.co 公司名下,故有此簡稱。 前端

ELK Stack 在最近兩年迅速崛起,成爲機器數據分析,或者說實時日誌處理領域,開源界的第一選擇。和傳統的日誌處理方案相比,ELK Stack 具備以下幾個優勢: java

處理方式靈活。Elasticsearch 是實時全文索引,不須要像 storm 那樣預先編程才能使用;  
  配置簡易上手。Elasticsearch 所有采用 JSON 接口,Logstash 是 Ruby DSL 設計,都是目前業界最通用的配置語法設計;  
  檢索性能高效。雖然每次查詢都是實時計算,可是優秀的設計和實現基本能夠達到全天數據查詢的秒級響應;  
  集羣線性擴展。不論是 Elasticsearch 集羣仍是 Logstash 集羣都是能夠線性擴展的;  
  前端操做炫麗。Kibana 界面上,只須要點擊鼠標,就能夠完成搜索、聚合功能,生成炫麗的儀表板。 node

ELK地址:https://www.elastic.co/
Logstash 最佳實踐:http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html
Elasticsearch 權威指南:http://www.learnes.net/index.html
ELKStack中文社區:https://kibana.logstash.es/content/ linux

  對於日誌來講,最多見的需求就是收集、存儲、查詢、展現,開源社區正好有相對應的開源項目:logstash(收集)、elasticsearch(存儲+搜索)、kibana(展現),咱們將這三個組合起來的技術稱之爲ELKStack,因此說ELKStack指的是Elasticsearch(java)、Logstash(jruby)、Kibana技術棧的結合,一個通 用的架構以下圖所示:
p_w_picpath_1bb3edvi17us1nkvaokvi5arv9.png-142.1kB
圖片解釋:elk 前面主要靠logstash來進行收集日誌,logstash將日誌上傳到broker上,後面還有一個logstash用來讀取broker中的日誌,在將日誌存儲到es裏面,最後用kibana練到es上進行展現 git

提示:咱們能夠將Elasticsearch簡稱爲es github

Elasticsearch介紹

ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是第二流行的企業搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。 web

Elasticsearch部署

  Elasticsearch首先須要Java環境,因此須要提早安裝好JDK,能夠直接使用yum安裝。也能夠從Oracle官網下載JDK進行安裝。開始以前要確保JDK正常安裝而且環境變量也配置正確: docker

環境介紹 編程

[root@abcdocker ~]# 
[root@abcdocker ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/sda1        20G  2.4G   18G  12% /devtmpfs        903M     0  903M   0% /devtmpfs           912M     0  912M   0% /dev/shmtmpfs           912M  8.6M  904M   1% /runtmpfs           912M     0  912M   0% /sys/fs/cgrouptmpfs           183M     0  183M   0% /run/user/0
[root@abcdocker ~]# free -m              total        used        free      shared  buff/cache   availableMem:           1823         328        1113           8         381        1322Swap:             0           0           0[root@abcdocker ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 本次使用2臺服務器來進行模擬集羣,因此請準備2臺服務器

安裝JDK

[root@linux-node1 ~]# yum install -y java
[root@linux-node1 ~]# java -versionopenjdk version "1.8.0_65"OpenJDK Runtime Environment (build 1.8.0_65-b17)OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

源碼安裝JDK

下載安裝http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html配置Java環境# tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/local/# ln –s /usr/local/jdk1.8.0_91 /usr/local/jdk# vim /etc/profileexport JAVA_HOME=/usr/local/jdkexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin# source /etc/profile看到以下信息,java環境配置成功# java -versionjava version "1.8.0_91"Java(TM) SE Runtime Environment (build 1.8.0_91-b14)Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

配置安裝ElasticSearch

可使用源碼,或者yum
1、yum安裝

1.下載並安裝GPG key[root@linux-node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch2.添加yum倉庫[root@linux-node1 ~]# cat /etc/yum.repos.d/elasticsearch.repo[elasticsearch-2.x]name=Elasticsearch repository for 2.x packagesbaseurl=http://packages.elastic.co/elasticsearch/2.x/centosgpgcheck=1gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearchenabled=13.安裝elasticsearch[root@hadoop-node1 ~]# yum install -y elasticsearch

2、源碼安裝

[root@CentOS6 home]# wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.tar.gz   #下載elasticsearch[root@CentOS6 home]# tar xf elasticsearch-1.7.2.tar.gz -C /usr/local/    #解壓elasticsearch[root@CentOS6 home]# ln -s /usr/local/elasticsearch-1.7.2 /usr/local/elasticsearch    #建立軟鏈接

3、配置elasticsearch

修改配置文件[root@abcdocker ~]# vim /etc/elasticsearch/elasticsearch.ymlcluster.name: myes             #ES集羣名稱node.name: abcdocker-node-1   #節點名稱path.data: /data/es-date       #數據存儲的目錄(多個目錄使用逗號分隔)path.logs: /var/log/elasticsearch #日誌格式bootstrap.memory_lock: true   #鎖住es內存,保證內存不分配至交換分區network.host: 192.168.56.11   #設置本機IP地址http.port: 9200            #端口默認9200

4、設置數據目錄權限

[root@abcdocker ~]# chown -R elasticsearch:elasticsearch /data/es-date/#這個是咱們存放數據的目錄,手動建立

es默認發現有組播和單播,組播就是都加入到一個組裏面,單播就是一對一通訊

提示: yum安裝時會少了許多配置,若是編譯安裝就會產生不少。

5、啓動

啓動es[root@abcdocker ~]# systemctl start elasticsearch.service[root@abcdocker ~]# netstat -lntupActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      532/sshd            tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      724/master          tcp6       0      0 192.168.56.11:9200      :::*                    LISTEN      2125/java           tcp6       0      0 192.168.56.11:9300      :::*                    LISTEN      2125/java           tcp6       0      0 :::22                   :::*                    LISTEN      532/sshd            tcp6       0      0 ::1:25                  :::*                    LISTEN      724/master   端口默認:9200

本次環境咱們使用2臺服務器,這2臺服務器的服務搭建能夠跟上面的步驟相同便可

訪問測試:http://IP:9200
p_w_picpath_1bb3et6fe649jq01520iad1deum.png-43.7kB

Elasticsearch提供了很是多的插件,還可使用curl進行通信

咱們可使用curl來查看es裏面有什麼內容

[root@abcdocker ~]# curl  -i -XGET 'http://192.168.56.11:9200/_count?'HTTP/1.1 200 OKContent-Type: application/json; charset=UTF-8Content-Length: 59{"count":0,"_shards":{"total":0,"successful":0,"failed":0}}[解釋:返回頭部200,執行成功0個,返回0個

Elasticsearch有不少插件,可是有的插件好用可是收費

Elasticsearch插件介紹

1、Haed插件
插件做用:主要是作es集羣管理的插件
Github下載地址:https://github.com/mobz/elasticsearch-head

下載方式:[root@abcdocker ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head-> Installing mobz/elasticsearch-head...Trying https://github.com/mobz/elasticsearch-head/archive/master.zip ...Downloading ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONEVerifying https://github.com/mobz/elasticsearch-head/archive/master.zip checksums if available ...NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)Installed head into /usr/share/elasticsearch/plugins/head下載完會在/usr/share/elasticsearch/plugins/目錄下產生插件目錄

訪問:http://ip地址:9200/_plugin/head/
p_w_picpath_1bb3f1s51128mt2hhk41ip51gdq13.png-45.7kB

2、Bigdesk插件
插件做用:性能監控
Github下載:https://github.com/lukas-vlcek/bigdesk

提示:由於咱們使用yum安裝的最新版本,bigdesk暫時不支持最新版本

[root@abcdocker ~]# /usr/share/elasticsearch/bin/elasticsearch -VOpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=NVersion: 2.4.4, Build: fcbb46d/2017-01-03T11:33:16Z, JVM: 1.8.0_121

p_w_picpath_1bb3f3q6h1vo217aa5vkbgu2rr1g.png-21.6kB

正常訪問地址:http://localhost:9200/_plugin/bigdesk/

Bigdesk 1.x
p_w_picpath_1bb3f4gl21t6i5th1lr8it21mv1t.png-151.1kB

Bigdesk 2.X
p_w_picpath_1bb3f4qkpofg1rli17eq1tu4100j2a.png-147.1kB

3、Kopf插件
插件做用:kopf是一個簡單的網絡管理工具
Kopf再也不維護。已經開發了替代品(cerebro),目前維護在https://github.com/lmenezes/cerebro。在這一點上,cerebro應該有至關於kopf的功能,頂部有一些新的功能。

Github地址:https://github.com/lmenezes/elasticsearch-kopf

安裝[root@abcdocker ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf-> Installing lmenezes/elasticsearch-kopf...Trying https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip ...Downloading ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONEVerifying https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip checksums if available ...NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)Installed kopf into /usr/share/elasticsearch/plugins/kopf

訪問地址:http://192.168.56.11:9200/_plugin/kopf/
p_w_picpath_1bb3fm4pn10s960c1gaoajcfg62n.png-26.4kB

插件使用

一、Head插件使用介紹
如今咱們已經將插件安裝完成,這時候裏面尚未數據。咱們如今往裏面寫一些數據
p_w_picpath_1bb3fnf4r1249aaa7qs1b731akn34.png-62kB
點擊提交

p_w_picpath_1bb3fnnu11948d611p4v2q3ptg3h.png-40kB
_index:建立了一個索引index-demo
_type:建立了一個類型test
total:分片2個
Successful:成功1個
Failed:失敗0個
Created:狀態成功

咱們點擊概覽,點擊鏈接
p_w_picpath_1bb3fo72lpkl58qib5b9k1e483u.png-47.7kB
咱們寫一篇文檔會幫咱們分紅5片(0-4,能夠修改爲多個),粗線表明主分片細線表明副本分片(能夠理解爲一主一備)正常狀況下會將主分片和副本分片放在2臺機器上

集羣健康值介紹:
×××表明沒有主分片數據丟失,可是如今不是健康的狀態(警告)應該有10個分片,如今只有5個。
紅色表明有數據丟失
綠色表明正常

提示:es支持一個相似於快照的功能,方便咱們用於數據備份

Es索引信息
p_w_picpath_1bb3fpc8vt6jjpjo3ssoiu274b.png-57.7kB

這裏索引信息是open表明咱們能夠將它給關閉掉,這樣就不會繼續使用這個索引進行搜索
p_w_picpath_1bb3fpmi3sv1p3r1rlq1kft1s6g4o.png-42.6kB
關閉索引
p_w_picpath_1bb3fpu4e14ucj2bsn311471uss55.png-36.1kB
p_w_picpath_1bb3fq30112ukudi77kiii1ad05i.png-34.4kB

除了支持關閉和開啓索引,一樣也支持刪除
p_w_picpath_1bb3fqdvp8h51p7f2441vtj6df5v.png-56.5kB
提示:刪除以後索引數據是沒法恢復的

Head插件小缺點: 當咱們索引特別多的時候,打開head至少須要五分鐘。由於它要把全部的索引都掃描一遍進行展現,這時候打開使用的帶寬也會特別大(不會出現超時,一直等待就能夠)

二、kopf插件使用介紹
訪問地址:http://192.168.56.11:9200/_plugin/kopf/
p_w_picpath_1bb3frrl31ltrl1c1d5g1mm71ot56c.png-21.4kB
咱們能夠看到索引、分片、文檔數量、大小以及jvm使用狀況、disk、cpu、load等
p_w_picpath_1bb3fs3bqjqf82m1h9j1v9s1d3l6p.png-13kB
咱們點擊節點,就能夠看到更詳細的硬件信息(實時變化)
p_w_picpath_1bb3fsbd31ipaf781ksk1e662dn76.png-24.6kB

一樣kopf也支持head的插件,支持請求
(生產場景這個信息主要給開發使用)
p_w_picpath_1bb3fspfir7v141i1frnf9r19g67j.png-18.3kB
提示:es是有本身的查詢語言,能夠寫的很複雜。

其餘功能
p_w_picpath_1bb3fte4ooub13n8eci1k0crc80.png-48.3kB

▲ Create index:   建立索引:  
 ▲ Cluster settings: 集羣設置:  
 ▲ Aliases:          別名:
 ▲ Analysis:     分析:  
 ▲ Percolator:       過濾器:  
 ▲ Snapshot:         快照
 ▲ Index templates:  索引模板:  
 ▲ Cat apis:             api  
 ▲ Hot threads:      熱線程:

ES介紹完成

本文參考:趙班長,趙夢夢,吳依相關文章

相關文章
相關標籤/搜索