1.ELK是什么?
ELK 其實並不是一款軟件,而是一整套解決方案,是三個軟件產品的首字母縮寫
Elasticsearch:負責日志檢索和儲存
Logstash:負責日志的收集和分析、處理
Kibana:負責日志的可視化
這三款軟件都是開源軟件,通常是配合使用,而且又先后歸於 Elastic.co 公司名下,故被簡稱為 ELK
2.ELK能做什么?
ELK組件在海量日志系統的運維中,可用於解決:
分布式日志數據集中式查詢和管理
系統監控,包含系統硬件和應用各個組件的監控
故障排查
安全信息和事件管理
報表功能
3.簡要概述Elasticsearch?
ElasticSearch 是一個基於 Lucene 的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基於 RESTful API 的 web 接口。
Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便
Elasticsearch的特點?
4.elasticsearch主要特點
1.實時分析
2.分布式實時文件存儲,並將每一個字段都編入索引
3.文檔導向,所有的對象全部是文檔
4.高可用性,易擴展,支持集群(Cluster)、分片和復制(Shards 和 Replicas)
接口友好,支持 JSON
5.ES 沒有什么?
Elasticsearch 沒有典型意義的事務.
Elasticsearch 是一種面向文檔的數據庫。
Elasticsearch 沒有提供授權和認證特性
6.ES相關概念
Node: 裝有一個 ES 服務器的節點。
Cluster: 有多個Node組成的集群
Document: 一個可被搜素的基礎信息單元
Index: 擁有相似特征的文檔的集合
Type: 一個索引中可以定義一種或多種類型
Filed: 是 ES 的最小單位,相當於數據的某一列
Shards: 索引的分片,每一個分片就是一個 Shard
Replicas: 索引的拷貝
7.ES與關系數據庫對比
ES 與關系型數據庫的對比
在 ES 中,文檔歸屬於一種 類型 (type) ,而這些類型存在於索引 (index) 中,類比傳統關系型數據庫
DB -> Databases -> Tables -> Rows -> Columns
關系型 數據庫 表 行 列
ES -> Indices -> Types -> Documents -> Fields
ES 索引 類型 文檔 域(字段)
8.搭建ES流程安裝第一台 ES 服務器
1.設置主機名稱和 ip 對應關系 192.168.4.11 node1
2.解決依賴關系 openjdk1.8
3.安裝軟件包 elasticsearch
4.修改配置文件 elasticsearch.yml
5.啟動服務
6.檢查服務 netstat -lutunp (9200 9300)
curl:htttp://192.168.4.1:9200/
9.ES集群配置
只需要對配置文件做少量修改,其他配置一樣
ES 集群配置
集群中的所有節點要相互能夠 ping 通,要在所有集群機器上配置 /etc/hosts 中的主機名與 ip 對應關系
集群中所有機器都要安裝 java 環境
cluster.name 集群名稱配置要求完全一致
node.name 為當前節點標識,應配置本機的主機名
discovery 為集群節點機器,不需要全部配置
配置完成以后啟動所有節點服務(有可能會有一定的延時,需要等待幾十秒)
10.ES集群配置驗證
curl http://192.168.4.11:9200/_cluster/health?
11.ES 常用插件
head 插件:
它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作
它提供一組針對集群的查詢API,並將結果以json和表格形式返回
它提供一些快捷菜單,用以展現集群的各種狀態
ES 常用插件
kopf 插件
是一個ElasticSearch的管理工具
它提供了對ES集群操作的API
bigdesk 插件
是elasticsearch的一個集群監控工具
可以通過它來查看es集群的各種狀態,如:cpu、內存使用情況,索引數據、搜索情況,http連接數等
11.
Elasticsearch提供了一系列RESTful的API
檢查集群、節點、索引的健康度、狀態和統計
管理集群、節點、索引的數據及元數據
對索引進行CRUD操作及查詢操作
執行其他高級操作如分頁、排序、過濾等
POST 或 PUT 數據使用 json 格式
json
JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式。
json 傳輸的就是一個字符串
python 中對應的 字符串,列表,字典都可以轉換成對應的 json 格式
Rest API 的簡單使用
_cat API 查詢集群狀態,節點信息
v 參數顯示詳細信息
http://192.168.4.15:9200/_cat/health?v
help 顯示幫助 信息
http://192.168.4.15:9200/_cat/health?help
Rest API 的簡單使用
nodes 查詢節點狀態信息
http://192.168.4.15:9200/_cat/nodes?v
索引信息
http://192.168.4.15:9200/_cat/indices?v
HTTP Methods 和 RESTful API 設計
HTTP Methods 也叫 HTTP Verbs, 它們是 HTTP 協議的一部分, 主要規定了 HTTP 如何請求和操作服務器上的資源,常見的有GET, POST等
HTTP Methods 一共有九個,分別是 GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,CONNECT,PATCH
HTTP Methods
在RESTful API 設計中,常用的有POST,GET,PUT,PATCH 和 DELETE。分別對應對資源的創建,獲取,修改,部分修改和刪除操作。
我們默認訪問 ES API 的方法是 GET,如果要對數據庫增加、刪除、修改數據我們還要使用對應的方法
GET 查詢
POST 增加
PUT 更改
DELETE 刪除
12.kibana是什么
數據可視化平台工具
特點:
靈活的分析和可視化平台
實時總結和流數據的圖表
為不同的用戶顯示直觀的界面
即時分享和嵌入的儀表板
13.
elk-(elasticsearch---kibana----logstash)
kibanna(批量導入數據---批量查詢--在kibana里展示)
logstash(input模塊file---tcp&udp----syslog)
(output模塊rubydebug---elasticsearch)
(filter模塊grok)
(codec)
(filebeat)
15logstash 是什么
logstash是一個數據采集、加工處理以及傳輸的工具
16.logstash 特點:
所有類型的數據集中處理
不同模式和格式數據的正常化
自定義日志格式的迅速擴展
為自定義數據源輕松添加插件
17.logstash 工作結構
{ 數據源 } ==>
input { } ==>
filter { } ==>
output { } ==>
{ ES }
17.logstash 里面的類型
布爾值類型: ssl_enable => true
字節類型: bytes => "1MiB"
字符串類型: name => "xkops"
數值類型: port => 22
數組: match => ["datetime","UNIX"]
哈希: options => {k => "v",k2 => "v2"}
編碼解碼: codec => "json"
路徑: file_path => "/tmp/filename"
注釋: #
18.logstash 條件判斷
等於: ==
不等於: !=
小於: <
大於: >
小於等於: <=
大於等於: >=
匹配正則: =~
不匹配正則: !~
logstash 條件判斷
包含: in
不包含: not in
與: and
或: or
非與: nand
非或: xor
復合表達式: ()
取反符合: !()