ELK 是什麼?

                                                                     ELK 是什麼?java

20180704月  09:37:46node

內容和簡介python

Sina、餓了麼、攜程、華爲、美團、freewheel、暢捷通 、新浪微博、大講臺、魅族、IBM...... 這些公司都在使用 ELK!ELK!ELK!linux

ELK居然重複了三遍,是個什麼鬼?web

ELK 是什麼?數據庫

ELK 其實並非一款軟件,而是一整套解決方案,是三個軟件產品的首字母縮寫json

Elasticsearch:負責日誌檢索和儲存vim

Logstash:負責日誌的收集和分析、處理api

Kibana:負責日誌的可視化瀏覽器

– 這三款軟件都是開源軟件,一般是配合使用,並且又前後歸於 Elastic.co 公司名下,故被簡稱爲 ELK

ELK 能作什麼?

ELK組件在海量日誌系統的運維中,可用於解決:

– 分佈式日誌數據集中式查詢和管理

– 系統監控,包含系統硬件和應用各個組件的監控

– 故障排查

– 安全信息和事件管理

– 報表功能

Elasticsearch部分

ElasticSearch 是一個基於 Lucene 的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於 RESTful API web 接口。

Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便

Elasticsearch部分

• 主要特色

– 實時分析

– 分佈式實時文件存儲,並將每個字段都編入索引

– 文檔導向,全部的對象所有是文檔

– 高可用性,易擴展,支持集羣(Cluster)、分片和複製(Shards Replicas)

– 接口友好,支持 JSON

Elasticsearch部分 2續》

ES 沒有什麼?

Elasticsearch 沒有典型意義的事務.

Elasticsearch 是一種面向文檔的數據庫。

Elasticsearch 沒有提供受權和認證特性

Elasticsearch部分 3續》

• 相關概念:

Node: 裝有一個 ES 服務器的節點。

Cluster: 有多個Node組成的集羣

Document: 一個可被搜素的基礎信息單元

Index: 擁有類似特徵的文檔的集合

Type: 一個索引中能夠定義一種或多種類型

Filed: ES 的最小單位,至關於數據的某一列

Shards: 索引的分片,每個分片就是一個 Shard

Replicas: 索引的拷貝

SQL NOSQL

 

ES 與關係型數據庫的對比

 

Elasticsearch架構圖

 

 

ES集羣安裝

• 安裝第一臺 ES 服務器

– 設置主機名稱和 ip 對應關係

– 解決依賴關係

– 安裝軟件包

– 修改配置文件

– 啓動服務

步驟 1

設置 ip 與主機名稱對應關係

– 配置 /etc/hosts

192.168.4.11 node1

步驟 2

1.安裝 JDK

Elasticsearch 要求至少 Java 7

– 通常推薦使用 OpenJDK 1.8

– 配置好安裝源之後,咱們先解決依賴關係

yum install -y java-1.8.0-openjdk

2.驗證

[root@esk01 ~]# java -version

openjdk version "1.8.0_131"

步驟 3

– 安裝 ES

rpm ivh elasticsearch-2.3.4-1.noarch

步驟 4

– 修改配置文件

elasticsearch.yml

[root@esk01 ~]# vim /etc/elasticsearch/elasticsearch.yml

network.host: 0.0.0.0

步驟 5

1.修改本地解析hosts文件

192.168.1.11  esk01

192.168.1.32  esk02

192.168.1.33  esk03

192.168.1.34  esk04

192.168.1.35  esk05

拷貝

[root@esk01 ~]# scp /etc/hosts  192.168.1.35:/etc/hosts

2.啓動服務,設置自啓動

systemctl enable elasticsearch

systemctl start elasticsearch

– 驗證:

[root@esk01 ~]# netstat -lnput | grep :9[2..3]00

– 可以看到 9200,9300 被監聽

步驟 6

• 經過瀏覽器或 curl 訪問 9200 端口

curl http://192.168.4.11:9200/

{

"name" : "node1",

"cluster_name" : "my-es",

"version" : {

"number" : "2.3.4",

...... ...... ......

"build_snapshot" : false,

"lucene_version" : "5.5.0"

},

"tagline" : "You Know, for Search

}

步驟7

ES 集羣配置

ES 集羣配置也很簡單,只須要對配置文件作少許的修

改便可,其餘步驟和單機徹底一致

ES 集羣配置文件

1.修改配置文件

[root@esk01 ~]# vim /etc/elasticsearch/elasticsearch.yml

cluster.name: my-es   //隨便命名主機名

node.name: node1    //更改自已主機ip

network.host: 0.0.0.0  //全部ip匹配

discovery.zen.ping.unicast.hosts: ["node1", "node2",

"node3"]

2.拷貝配置文件模板到其餘主機上

[root@esk01 ~]# scp /etc/elasticsearch/elasticsearch.yml  

192.168.1.35:/etc/elasticsearch/elasticsearch.yml

3.重啓服務

[root@esk01 ~]# systemctl start elasticsearch

[root@esk01 ~]# systemctl enable  elasticsearch  //先啓動esk01/02/03

4.測試

http://192.168.1.33:9200/

http://192.168.1.35:9200/_cluster/health?pretty

ES集羣安裝

ES 集羣配置

– 驗證集羣,使用 ES 內置字段 _cluster/health

curl http://192.168.4.11:9200/_cluster/health?pretty

{

"cluster_name" : "my-es",

"status" : "green",

...... ...... ......

"number_of_nodes" : 5,

"number_of_data_nodes" : 5,

...... ...... ......

"task_max_waiting_in_queue_millis" : 0,

"active_shards_percent_as_number" : 100.0

}ES集羣安裝

ES 集羣驗證

– 返回字段解析

status: green「 集羣狀態,綠色爲正常,黃色表

示有問題但不是很嚴重,紅色表示嚴重故障

– 「number_of_nodes: 5, 表示集羣中節點的數量

"number_of_data_nodes" : 5,

...... ...... ......

"task_max_waiting_in_queue_millis" : 0,

"active_shards_percent_as_number" : 100.0

}

ES 集羣驗證

– 返回字段解析

status: green「 集羣狀態,綠色爲正常,黃色表

ES插件的使用

ES 經常使用插件

head 插件:

– 它展示ES集羣的拓撲結構,而且能夠經過它來進行索引(Index)和節點(Node)級別的操做

– 它提供一組針對集羣的查詢API,並將結果以json和表格形式返回

– 它提供一些快捷菜單,用以展示集羣的各類狀態

 

 http請求由三部分組成

– 分別是:請求行、消息報頭、請求正文

– 請求行以一個方法符號開頭,以空格分開,後面跟着請求的URI和協議的版本,格式以下:

Method Request-URI HTTP-Version CRLF

HTTP 協議簡介

http請求方法

– 經常使用方法 GET, POST, HEAD

– 其餘方法 OPTIONS, PUT, DELETE, TRACE

CONNECT

ES 經常使用

PUT

---

DELETE ---

POST ---

GET ---

 

                  

 系統命令 curl

• 在linuxcurl是一個利用URL規則在命令行下工做的文件傳輸工具,能夠說是一款很強大的http命令行工具。它支持多種請求模式,自定義請求 頭等強大功能,是一款綜合工具

curl 經常使用參數介紹

-A 修改請求 agent

-X 設置請求方法

-i 顯示返回頭信息

ES插件的使用

ES 經常使用插件

head 插件:

– 它展示ES集羣的拓撲結構,而且能夠經過它來進行索引(Index)和節點(Node)級別的操做

– 它提供一組針對集羣的查詢API,並將結果以json和表格形式返回

– 它提供一些快捷菜單,用以展示集羣的各類狀態ES插件的使用

ES 經常使用插件

kopf 插件

– 是一個ElasticSearch的管理工具

– 它提供了對ES集羣操做的API

bigdesk 插件

– 是elasticsearch的一個集羣監控工具

– 能夠經過它來查看es集羣的各類狀態,:cpu、內存使用狀況,索引數據、搜索狀況,htt鏈接數等ES插件的使用

 ES 插件安裝、查看

1.查看安裝的插件

/usr/share/elasticsearch/bin/plugin list

2.安裝插件

/usr/share/elasticsearch/bin/plugin install

ftp://192.168.4.254/

/usr/share/elasticsearch/bin/plugin install

file:///tmp/kopf.zip

/usr/share/elasticsearch/bin/plugin install  

ftp://192.168.1.254/share/bigdesk-master.zip

– 這裏必須使用 url 的方式進行安裝,若是文件在本地,咱們也須要使用 file:// 的方式指定路徑,例如文件在/tmp/xxx 下面,咱們要寫成 file:///tmp/xxx 刪除使用 remove 指令

3.訪問

http://192.168.1.11:9200/_plugin/head/

http://192.168.1.11:9200/_plugin/kopf/

http://192.168.1.11:9200/_plugin/bigdesk/

4.查看集羣api查詢地址

curl http://192.168.1.11:9200/_cat

curl http://192.168.1.11:9200/_cat/nodes?v

curl http://192.168.1.11:9200/_cat/nodes?help

 

RESTful API 調用

 Elasticsearch提供了一系列RESTfulAPI

– 檢查集羣、節點、索引的健康度、狀態和統計

– 管理集羣、節點、索引的數據及元數據

– 對索引進行CRUD操做及查詢操做

– 執行其餘高級操做如分頁、排序、過濾等

POST PUT 數據使用 json 格式RESTful API 調用

json

JSON的全稱是」JavaScript Object Notation,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式。

json 傳輸的就是一個字符串

python 中對應的 字符串,列表,字典均可以轉換成對應的 json 格式RESTful API 調用

Rest API 的簡單使用

_cat API 查詢集羣狀態,節點信息

v 參數顯示詳細信息

http://192.168.4.15:9200/_cat/health?v

help 顯示幫助信息

http://192.168.4.15:9200/_cat/health?helpRESTful API 調用

Rest API 的簡單使用

nodes 查詢節點狀態信息

http://192.168.4.15:9200/_cat/nodes?v

– 索引信息

http://192.168.4.15:9200/_cat/indices?v

 

RESTful API 調用

• RESTful API 增長

建立一個索引,並設置分片數量與副本數量

[root@esk01 ~]# curl -X "PUT" 'http://192.168.1.11:9200/tedu' -d '{

 "settings":{

  "index":{

"number_of_shards": 5,

"number_of_replicas":1

}                     

}

}'

RESTful API 插入數據

 curl -X "PUT"  'http://192.168.1.11:9200/tedu/teacher/1' -d '{

  "title": "階段1",

 "name":{"first": "小逗比", "last": "牛犇"},

 "age": 25

 }'

 curl -X "PUT" 'http://192.168.1.11:9200/tedu/teacher/2' -d '{

 "title": "階段2",

"name":{"first": "老逗比", "last": "丁丁"},

"age": 52

}'

 

RESTful API 調用

• 靜靜達內一枝花,今年20明年18

curl -X "POST" 'http://192.168.1.11:9200/tedu/teacher/3/_update' -d '{

"doc":{

"age": 18

}

}'

 

Kibana 安裝

kibana是什麼

– 數據可視化平臺工

• 特色:

– 靈活的分析和可視化平臺

– 實時總結和流數據的圖表

– 爲不一樣的用戶顯示直觀的界面

– 即時分享和嵌入的儀表板

Kibana 安裝

kibana安裝

kibana 的安裝很是簡單,咱們使用 rpm 方式安裝

rpm -ivh  kibana-4.5.2-1.x86_64.rpm

kibana 默認安裝在 /opt/kibana 下面,配置文件在/opt/kibana/config/kibana.yml

– 咱們只須要修改少許的配置就能夠啓動

Kibana 安裝

kibana.yml 的配置

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://192.168.4.13:9200"

kibana.index: ".kibana"

kibana.defaultAppId: "discover"

elasticsearch.pingTimeout: 1500

elasticsearch.requestTimeout: 30000

elasticsearch.startupTimeout: 5000

Kibana 安裝

kibana.yml 的配置

– 除 elasticsearch.url 須要配置爲咱們 ES 集羣的地址以外,其餘保持默認值就能夠了

– 設置開機啓動

systemctl enable kibana

– 啓動服務

systemctl start kibana

web 訪問 kibana

http://192.168.4.20:5601/

Kibana 安裝

kibana是什麼

– 數據可視化平臺工具

• 特色:

– 靈活的分析和可視化平臺

– 實時總結和流數據的圖表

– 爲不一樣的用戶顯示直觀的界面

– 即時分享和嵌入的儀表板Kibana 安裝

kibana安裝

kibana 的安裝很是簡單,咱們使用 rpm 方式安裝

rpm ivh kibana-4.5.2-1.x86_64.rpm

kibana 默認安裝在 /opt/kibana 下面,配置文件在/opt/kibana/config/kibana.yml

– 咱們只須要修改少許的配置就能夠啓動Kibana 安裝

kibana.yml 的配置

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://192.168.4.13:9200"

kibana.index: ".kibana"

kibana.defaultAppId: "discover"

elasticsearch.pingTimeout: 1500

elasticsearch.requestTimeout: 30000

elasticsearch.startupTimeout: 5000Kibana 安裝

kibana.yml 的配置

– 除 elasticsearch.url 須要配置爲咱們 ES 集羣的地址以外,其餘保持默認值就能夠了

– 設置開機啓動

systemctl enable kibana

– 啓動服務

systemctl start kibana

web 訪問 kibana

http://192.168.4.20:5601/課堂練習

相關文章
相關標籤/搜索