Elastic Stack入門與實踐

來源:互聯網
上載者:User

Elastic Stack 產品簡介

  • 安裝jdk1.8
  • 下載安裝es
  • 運行: bin/elasticsearch

下載tar包 & 解壓 & 運行

基本的資訊,叢集名,Lucene版本。

Elasticsearch配置說明:

設定檔位於config目錄中:
- elasticsearch.yml es的相關設定
- jvm.options jvm的相關參數
- log4j2.properties 日誌相關配置

記憶體大小,一些參數。日誌輸出。

-Xms2g-Xms2g

記憶體不是很大可以改小。

mark

yml關鍵配置說明:

  • cluster.name 叢集名稱,以此作為是否同一叢集的判斷條件
  • node.name 節點名稱,以此作為叢集中不同節點的區分條件
  • network.host/http.port 網路地址和連接埠。用於http和transport服務使用
  • path.data 資料存放區地址
  • path.log 日誌儲存地址

Elasticsearch 配置說明:

Development 與 Production 模式說明

  • 以transport的地址是否綁定在localhost為判斷標準 network.host
  • Development 模式下載啟動時會以warning的方式提示配置檢查異常
  • Production模式在啟動時會以error的方式提示配置異常並退出

啟動之前會進行檢查。如果改在了真實的ip上,就會進行這些檢查

參數修改的第二種方式;

bin/elasticsearch -Ehttp.port=19200

通過-E參數名稱來修改配置

Elasticsearch 本地啟動叢集。

bin\elasticsearchbin\elasticsearch -E http.port=8200 -E path.data=node2bin\elasticsearch -E http.port=7200 -E path.data=node3

通過介面查看是否是叢集

8200/_cat/nodes?v
mark

*代表主節點.

8200/_cluster/stats

可以看到叢集的很多詳細資料。

Kibana安裝與運行

下載安裝 Kibana

運行;

bin/kibana

下載與es相同的版本。Kibana 是nodejs開發的,所以要下載對應版本的。

前往config目錄修改kibana.yml中es.url的說明。

預設使用連接埠5601

Kibana配置詳解

  • 配置位於config檔案夾中

Kibana.yml 關鍵配置說明

  • server.host/server.port 訪問Kibana用的地址和連接埠。

如果希望外網可以訪問需要修改一下, 你需要修改為指定的連接埠。

  • elasticSearch.url 待訪問 elasticSearch的地址

Kibana常用功能說明

  • Discover 資料搜尋查看
  • Visualize 圖表製作
  • Dashboard 儀錶盤製作 將圖表進行綜合展示
  • Timelion 時序資料的進階可視化分析(寫一些查詢語言)
  • Devtools 開發人員工具
  • management 組態管理

Elasticsearch 常用術語

  • Document 文檔資料
  • Index索引 (Nysql中資料庫)
  • Type 索引中的資料類型
  • Field 欄位,文檔的屬性。
  • Query DSL 查詢文法

Elasticsearch CRUD

  • Create 建立文檔
  • Read 讀取文檔
  • Update 更新文檔
  • delete 刪除文檔
mark

在index accounts 中的type person中建立了id為1的文檔。

文檔內容為下面json格式的定義。 裡面的name等都是文檔的欄位 ,實體的屬性。

mark

點擊左下角collapse可以讓介面更簡約一點。

mark

擷取文檔通過文檔的id

使用 post /accounts/person/1/_update

刪除文檔

DELETE /accounts/person/1DELETE /accounts

Es查詢簡介

mark
  1. 直接在查詢的url後面跟上q 跟上查詢文法
  2. Query DSL 通過json格式查詢
mark
GET /account/person/_search?q=johnGET accounts/person/_search{    "query": {        "term": {            "name":{                "value": "alfred"            }        }    }}

以body形式發起請求。

es官網的reference docs中有關於Query DSL的說明。

Beats 入門

Lightweight Data Shipper 輕量級的資料傳送者

  • Filebeat 記錄檔
  • Metricbeat 度量資料 cpu nginx 記憶體的度量資訊(可視化的展示分析報告)
  • Packetbeat主要是對網路資料。
  • winlogbeat windows 資料
  • Heartbeat 健全狀態檢查

Filebeat簡介

  • 處理流程:
    • 輸入input
    • 處理filter
    • 輸出output
mark

filebeat可以輸出到多種地方,es, logstach, kafka, redis

由prospector (觀察者勘探者) & Harvester (收割者)組成

一個監聽一個收割。會針對每一個檔案啟動一個harvest。

filebeat Input配置簡介

yaml 文法;

mark

yaml對於不止一個prospector 也就是數組是通過- 實現的。

輸入類型:log paths 用於指定日誌的路徑。

可以配置多個日誌路徑。input有兩個類型: 一個是log 一個是stdin

Filebeat Output 配置簡介

  • Console & elasticSearch & logstash & kafka & redis & file
mark

輸出到elasticSearch中。如果你對於es加了許可權認證,你要加入使用者名稱和密碼。

mark

開發的時候經常輸出到控制台。pretty 做json的格式化

Filebeat Filter配置簡介

  • Input時處理: Include_lines & exclude_lines & exclude_files

達到條件我就讀入或者不讀入這一行。當檔案名稱不符合時被排除

  • Output前處理 processer

drop_event 滿足某一個條件不輸出而是直接扔掉。
drop_fields 扔掉某一個欄位
decode_json_fields 符合欄位中的json格式做一個解析
Include_fields 加入一些欄位,或只想取一些欄位。

mark

當我們匹配到一個Regex。message欄位是以dbg開頭。就把他drop掉。

mark

Inner欄位裡面是一個json。但是內部做了一個字串處理。通過processors的處理

mark

Filebeat + Elasticsearch Ingest Node

Filebeat缺乏資料轉換的能力

5.0 Elasticsearch新增ingest node

  • 新增的node類型
  • 在資料寫入es前對資料進行處理轉換。
  • pipeline api

如果想快速的儲存進es中

寫合適的Filebeat的設定檔,配置pipeline。對於Kibana進行配置、

官方推出Filebeat Module 實現開箱即用

mark

指定nginx路徑。使用nginx的module。匯入Kibana。

最佳實務的參考。

Filebeat 收集nginx log

  • 通過stdin 收集日誌
  • 通過console 輸出結果

demo 實踐

beats 下載。 filebeat golang開發。下載對應平台的。

data存讀取收集到的日誌,執行檔案,最全的配置。

module是我們上面介紹的模組。

head -n 2 ~/Downloads/nginx_logs/nginx.log

設定filebea的輸入輸出

mark

輸出:

mark
head -n 2 ~/Downloads/nginx_logs/nginx.log|./filebeat -e -c nginx.yml

使用Filebeat來接收日誌

輸入了兩條,Filebeat輸出了兩條。nginx日誌的每一條變成了一個json

Packetbeat簡介

即時抓取網路包,自動解析應用程式層協議

ICMP (v4 and v6) DNS HTTP MYSQL Redis

wireshark 輕量級的。

packetbeat 解析http請求

解析 elasticSearch http 請求

mark

interfaces.device 是指定監聽哪一個網卡

linux下可以指定成 any 但是mac只能指定為本地 lo0、

協議指定抓取 http協議的包。連接埠9200。

send_request 預設false 記錄http請求的body資訊。不開的話抓取的資訊比較簡單。

將body中json格式的資料記錄下來。

output.console:    pretty: true

Packetbeat 運行

sudo ./packerbeat -e -c es.yml -strict.perms=false

抓包是需要有一定許可權,設定檔的使用權限設定false就不會被檢查

Beats入門

Packetbeat 運行

點擊beats 下載packetbeat。解壓。

整體結構非常類似。es跑起來,

sudo ./packerbeat -e -c es.yml -strict.perms=false

es.yml

markmark

配置input 和 output

Logstash入門

Data Shipper
- ETL
- Extract
- Transform
- Load

提取轉換和載入。 開源的服務端的資料處理流。同時從多個資料來源去提取資料,
轉換資料最後把資料發送到你要儲存的地方。

Filter 是 logstash 遠強於 beats的地方。

grok 是一種基於正則的將非格式化資料轉換為格式化資料的文法的。
mutate 對結構化之後的資料進行增刪改查。
drop date等常見的對於資料的處理。

output :可以輸出到多種地方。

Logstash 配置

處理流程 -- Input 和 Output 配置

mark

可以用上面命令進行本地的快速調試、

Grok

基於Regex提供了豐富可重用的模式(pattern)
基於此可以將非結構化的資料做結構化的處理。

Date

將字串類型的時間欄位轉換為時間戳記類型,方便後續資料處理。
後續通過時間進行查詢,基於時間進行分組。

Mutate

進行增加刪除修改替換等欄位相關的處理

Filter配置 Grok樣本

mark

grok將非結構化資料轉換為結構化資料。

%{IP:client} IP是一個已存在的Regex模式。後面的client是結構化之後的欄位名。

mark

grok將非結構化的資料轉化為結構化的資料。

Logstash 示範

Logstash基於jvm。下載解壓

Logstash三大配置 date將字串轉換成時間戳記 地理位置的處理 使用者代理程式的處理

  • input
  • Filter
  • output
head -n 2 ~/nginx_logs/nginx.log|bin/logstash -f nginx_logstatsh.conf

實戰: 分析Elasticsearch 查詢語句。

目標:

- 收集Elasticsearch叢集的查詢語句- 分析查詢語句的常用語句、響應時間長度等

方案:

- 應用 Packetbeat + Logstash 完成資料收集工作- 使用 Kibana + Elasticsearch 完成資料分析工作
mark

監控的叢集; production cluster 業務叢集es查詢語句情況

packetbeat 監聽 es的連接埠。將搜尋查詢語句統計

發送到Logstash,Logstash做一些處理,儲存到監控叢集。
通過監控叢集的Kibana進行可視化。

方案:
- Production Cluster
Elasticsearch 9200
Kibana 5601
- Monitoring Cluster
Elasticsearch 8200

bin/elasticsearch -Ecluster.name=sniff_search -Ehttp.port=8200-Epath.data=sniff

kibana 8601

bin /kibana -e http://127.0.0.0.1:8200 -p 8601

產生叢集和監控叢集不能是同一個,會造成壓力過大,陷入死迴圈。

mark

在5044 連接埠接收beats 的輸入。如果在request中有search這個關鍵詞才進行處理。
從request中提取查詢語句。以及是對哪一個index做出的查詢。

做的一些補全操作。output只做查詢語句。

mark

packetbeat 將輸出輸出到5044

筆者實踐:

我的機器上已經跑著es + kibana 的一套搜尋引擎業務叢集。

markmark

分別運行在5601和9200連接埠。

此時啟動監控日誌叢集和Kibana

markmark

因為懶以及怕記憶體不夠用,上面的監控叢集只運行了一個master節點。

修改Kibana設定檔中

markmark

此時Kibana 5602 es 9201

mark

首先啟動logstash 使用檔案 sniff_search.conf

設定 beats 監聽連接埠5044 & 將檔案輸出到監控叢集 9201

bin/logstash -f sniff_search.conf
mark

我用的windows使用命令如上。

準備packctbeat

markmark
./packerbeat -e -c es.yml -strict.perms=falsepackerbeat.bat -e -c sniff_search.yml -strict.perms=false

運行報錯,找不到wpcap、安裝。https://www.winpcap.org/install/default.htm
一旦通過management 加入了索引,就可以根據discover查看資料。

visualize 建立餅圖等。

Kibana使用。

總結與建議

mark

學會查閱和搜尋官方文檔

學會在社區正確地提問題

學會開拓視野的方法 - Elastic 日報

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.