大型架構ELK

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

• ELK竟然重複了三遍,是個什麼鬼?
ELK 其實並不是一款軟件,而是一整套解決方案,是三個軟件產品的首字母縮寫
– Elasticsearch:負責日誌檢索和儲存
– Logstash:負責日誌的收集和分析、處理
– Kibana:負責日誌的可視化
– 這三款軟件都是開源軟件,通常是配合使用,而且又
先後歸於 Elastic.co 公司名下,故被簡稱爲 ELK

ELK 能做什麼?
• ELK組件在海量日誌系統的運維中,可用於解決:
– 分佈式日誌數據集中式查詢和管理
– 系統監控,包含系統硬件和應用各個組件的監控
– 故障排查
– 安全信息和事件管理
– 報表功能

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

Elasticsearch部分
• 主要特點
– 實時分析
– 分佈式實時文件存儲,並將每一個字段都編入索引
– 文檔導向,所有的對象全部是文檔
– 高可用性,易擴展,支持集羣(Cluster)、分片和複製(Shards 和 Replicas)
– 接口友好,支持 JSON

• ES 沒有什麼?
• Elasticsearch 沒有典型意義的事務.
• Elasticsearch 是一種面向文檔的數據庫。
• Elasticsearch 沒有提供授權和認證特性

• 相關概念:
– Node: 裝有一個 ES 服務器的節點。
– Cluster: 有多個Node組成的集羣
– Document: 一個可被搜素的基礎信息單元
– Index: 擁有相似特徵的文檔的集合
– Type: 一個索引中可以定義一種或多種類型
– Filed: 是 ES 的最小單位,相當於數據的某一列
– Shards: 索引的分片,每一個分片就是一個 Shard
– Replicas: 索引的拷貝

SQL 與 NOSQL
• ES 與關係型數據庫的對比
– 在 ES 中,文檔歸屬於一種 類型 (type) ,而這些類型
存在於索引 (index) 中,類比傳統關係型數據庫
– DB -> Databases -> Tables -> Rows -> Columns
– 關係型 數據庫 表 行 列
– ES -> Indices -> Types -> Documents -> Fields
– ES 索引 類型 文檔 域(字段)

ELK 搭建

Elasticsearch 重點,存儲空間 分佈式集羣
Logstash 根據壓力負載情況,多節點
Kibana 單節點

Elasticsearch 組建
1 禁用 selinux, 卸載 firewalld (所有主機都要做)
[root@room9pc19 doc]# cat /etc/selinux/config
SELINUX=disabled

禁用防火牆 (所有主機都要做)
systemctl stop firewalld
systemctl mask firewalld

2 配置 /etc/hosts (所有主機都要做)
192.168.1.10 klog
192.168.1.11 es1
192.168.1.12 es2
192.168.1.13 es3
192.168.1.14 es4
192.168.1.15 es5

3 安裝 java 運行環境 java-1.8.0-openjdk (所有主機都要做)
yum install java-1.8.0-openjdk -y

4 安裝 elasticsearch (所有主機都要做yum install elasticsearch-2.3.4.rpm

5 修改配置文件 /etc/elasticsearch/elasticsearch.yml (所有主機都要做)
cluster.name: nsd1711
node.name: 當前主機名稱
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["es1", "es2", "es3"]

啓動並驗證 (所有主機都要做)
systemctl start elasticsearch

瀏覽器訪問
http://192.168.1.ip:9200/
http://192.168.1.ip:9200/_cluster/health?pretty

集羣插件
/usr/share/elasticsearch/bin
下載插件文件到本地,必須使用 file:// 絕對路徑安裝
./plugin install file:///usr/share/elasticsearch/bin/bigdesk-master.zip
使用遠程 uri 路徑可以直接安裝
./plugin install ftp://192.168.1.254/elk/elasticsearch-head-master.zip
./plugin install ftp://192.168.1.254/elk/elasticsearch-kopf-master.zip

安裝完成以後使用 ./plugin list 查看

http://192.168.1.15:9200/_plugin/插件名字

集羣 api 查詢地址
http://192.168.1.15:9200/_cat
http://192.168.1.15:9200/_cat/nodes?v 顯示詳細信息
http://192.168.1.15:9200/_cat/nodes?help 顯示幫助信息

ES 數據庫基本操作,使用 curl 命令
創建索引
curl -XPUT 'http://192.168.1.13:9200/tarena/' -d '{
"settings":{
"index":{
"number_of_shards": 5,
"number_of_replicas": 1
}
}
}'


curl -XPUT 'http://192.168.1.11:9200/tarena/teacher/1' -d '{
"title": "階段1",
"name":{"first": "小逗比", "last": "牛犇"},
"age": 25
}'
curl -XPUT 'http://192.168.1.11:9200/tarena/teacher/2' -d '{
"title": "階段2",
"name":{"first": "老逗比", "last": "丁丁"},
"age": 52
}'
curl -XPUT 'http://192.168.1.11:9200/tarena/teacher/3' -d '{
"title": "階段3",
"name":{"first": "漂亮姐", "last": "靜靜"},
"age": 20
}'
curl -XPUT 'http://192.168.1.11:9200/tarena/teacher/4' -d '{
"title": "階段4",
"name":{"first": "老司機", "last": "欣欣"},
"age": 35
}'


curl -XPOST 'http://192.168.1.11:9200/tarena/teacher/3/_update' -d '{
"doc":{
"age": 18
}
}'


curl -XGET 'http://192.168.1.14:9200/tarena/teacher/1'


curl -XDELETE 'http://192.168.1.14:9200/tarena/teacher/1'

kibana 安裝配置
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.1.11:9200"
kibana.index: ".kibana"
kibana.defaultAppId: "discover"
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
elasticsearch.startupTimeout: 5000

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章