国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ELK部署及實操

IT那活兒 / 1920人閱讀
ELK部署及實操


一. ELK是什么

ELK是三個開源工具的縮寫——Elasticsearch、Logstash、Kibana。

Elasticsearch:
開源分布式搜索引擎,提供搜索、分析、存儲數據三大功能。特點包括分布式、零配置、自動發現、索引自動分片、索引副本機制、restful風格接口、多數據源、自動搜索負載等。

Logstash:
開源的日志搜集、分析、過濾工具,支持大量的數據獲取方式。一般工作方式為C/S架構,client端安裝在需要收集日志的主機上,server端負責將收到的各節點日志進行過濾、修改等操作后再發送到Elasticsearch上。

Kibana:
為Logstash和Elasticsearch提供友好的日志分析界面,幫助匯總、分析和搜索重要的數據日志。

Filebeat,新增的工具,輕量級的日志收集處理工具(Agent),filebeat占用資源少,適用于在服務器上搜集日志后傳輸到logstash。

補充:Beats輕量級數據采集器,目前包含四種工具:

  • Packetbeat——搜集網絡流量數據

  • Topbeat——搜集系統、進程、文件系統級別的CPU和內存使用情況

  • Filebeat——搜索文件數據

  • Winlogbeat——搜索windows事件日志數據


二. 為什么要使用ELK

一般情況下進行日志分析時,可以直接在日志文件中使用grep、awk就可以獲得想要的信息。但是,在規模較大的場景中此方法效率很低,面臨的問題包括:日志量太大如何歸檔、文本檢索太慢、如何多維度查詢,需要集中化的日志管理所有服務器上的日志收集匯總。常見解決思路是建立集中式的日志收集系統,將所有節點上的日志統一收集、管理、訪問。ELK提供了一整套解決方案,并且都開源,各組件相互配合使用,高效的滿足了很多場景的應用,是目前主流的日志分析系統。

完整的集中式日志收集系統應包含以下主要特點:

  • 收集——能夠采集多種來源的日志數據

  • 傳輸——能夠穩定的把日志數據傳輸到核心系統

  • 存儲——如何存儲日志數據

  • 分析——支持UI分析

  • 警告——提供監控機制及異常告警


三. 常用的ELK架構


1. logstash + elasticsearch + kibana

最簡單的ELK架構方式,此架構由logstash分布于各個節點上搜集相關日志、數據,并經過分析、過濾后發送到遠端服務器上的Elasticsearch進行存儲。Elasticsearch將數據以分片的形式壓縮存儲,并提供多種API供用戶查詢。也可更直觀的通過配置Kibana對日志進行查詢,并根據數據生成報表。

優點:搭建簡單、易于上手

缺點:logstash資源消耗大,運行時占用較高的CPU和內存,且沒有消息隊列緩存,存在數據丟失隱患。


2. logstashAgent + kafka
    redis + logstash + elasticsearch + kibana

此種架構引入了消息隊列機制,各個節點上的logstashAgent先將日志數據傳遞給kafka(或redis),并將kafka隊列中的消息或數據間接傳遞給logstash,logstash過濾、分析后將數據傳遞給elasticsearch進行存儲。最后由kabana將日志和數據呈現在界面。因為引入了kafka(或redis),所以即使遠端logstash server因故障停止運行,數據將會先被存儲下來,避免數據丟失。


3. beats(Packetbeat、Topbeat、Filebeat、...) + (logstash)elasticsearch + kibana

此種架構將收集端logstash替換為beats,更靈活、消耗資源更少、擴展性更強。同時可配置logstash和elasticsearch集群用于支持大集群系統的運維日志數據監控和查詢。


四. Filebeat原理

主要兩個組件Prospectors和Harvesters,協同工作將文件的變動發送到指定的輸出中。


Harvester(收割機):負責讀取單個文件內容

每個文件會啟動一個Harvester,Harvester會逐行讀取文件內容,并將文件內容發送到指定的輸出中。Harvester負責打開和關閉文件,即在Harvester運行時,文件描述符處于打開狀態。如果文件在收集時被重命名或刪除,Filebeat會繼續讀取此文件,所以在Harvester關閉之前磁盤不會被釋放。默認情況下,filebeat會保持文件的打開狀態,直到達到close_inactive。若close_inactive選項開啟,filebeat會在指定時間內將不再更新的文件句柄關閉,時間從Harvester讀取最后一行的時間開始計時。若文件句柄被關閉后,文件內容發生了變化,則會啟動一個新的Harvester。關閉文件句柄的時間不取決于文件的修改時間,而是由scan_frequency參數決定,默認10s,若配置不當,則可能發生日志不實時的情況。Harvester使用內部時間戳來記錄文件最后被收集的時間。如scan_frequency設置60s,則在Harvester讀取文件最后一行后,開始倒計時60s,若文件60s內無變化,則關閉文件句柄。


Prospector(勘測者):負責管理Harvester并搜尋所有讀取源

Prospector會搜尋到/apps/logs/下所有的info.log文件,并為每個文件啟動一個Harvester。Prospector會檢查每個文件的Harvester是否已經啟動、是否需要啟動、或者文件是否可以忽略。若文件的Harvester已關閉,在有文件大小發生變化時Prospector才會執行檢查,且Prospector只能檢測本地文件。

     


Filebeat如何記錄文件狀態

將文件狀態記錄在registry文件中(默認在filebeat的data目錄下),狀態中會記錄Harvester收集文件的偏移量。filebeat會記錄發送前的最后一行,并在可以連接的時候繼續發送。filebeat運行時,Prospector的狀態記錄在內存中。重啟filebeat時,利用registry記錄的狀態進行重建,用來還原到重啟之前的狀態。Prospector會為找到的每個文件記錄一個狀態,而對于每個文件,filebeat會存儲唯一標識符以檢測文件是否已經被收集。

{"source":"/usr/local/tomcat/apache-tomcat-7.0.29/logs/localhost_access_log.2019-03-26.txt","offset":11694,"timestamp":"2021-07-12T16:21:52.006333381+08:00","ttl":-1,"type":"log","meta":null,"FileStateOS":{"inode":262747,"device":64768}}]


Filebeat如何保證事件至少被傳遞一次

filebeat之所以能保證事件至少被傳遞一次而沒有數據丟失,是因為filebeat將每個事件的傳遞狀態保存在文件中。在未得到接收方確認時,filebeat會一直嘗試發送,直到得到回應。若filebeat在傳輸過程中被關閉,則不會在關閉前確認所有事件是否被傳遞。任何在filebeat關閉前未確認的事件,都會在filebeat重啟之后重新發送??纱_認至少發送一次,但用可能會重復??赏ㄟ^shutdown_timeout參數設置關閉前等待事件回應的時間。


五. Logstash原理

logstash是接收、處理、轉發日志的工具。支持系統日志、webserver日志、錯誤日志、應用日志,基本包括所有的日志類型。

logstash事件處理的三個階段:inputs → filters → outputs。


Input:輸入數據到logstash,一般常用的輸入為以下類型
  • file → 從文件系統中的文件讀取,類似于tail -f命令

  • syslog → 在514端口上監聽系統日志消息,并根據RFC3164標準進行解析

  • redis → 在redis server上讀取

  • beats → 在filebeat中讀取


Filters:數據中間處理,對數據進行操作,常用的過濾器為以下
  • grok → 解析任意文本數據,grok是logstash最重要的插件,主要作用是將文本格式的字符串轉換為具體的結構化的數據,配置正則表達式使用。

  • mutate → 對字段進行轉換,例如對字段進行刪除、替換、重命名、修改等。

  • drop → 丟棄一部分events不進行處理

  • clone → 復制事件,該過程中也可以添加或移除字段

  • geoip → 添加地理信息(為前臺kibana圖形化展示使用)


Outputs:是logstash處理管道的最末端組件

一個事件可以在處理過程中經過多重輸出,但是一旦所有的outputs都執行結束,該事件就完成生命周期。常用的outputs為以下

  • elasticsearch → 可高效的保存數據,并且能夠簡單的進行查詢

  • file → 將事件數據保存到文件中

  • graphite → 將事件數據發送到圖形化組件中,很流行的開源存儲圖形化展示的組件


Codecs:基于數據流的過濾器,可以作為inputs、outputs的一部分配置。

codecs可以輕松的分割已經序列化的數據。常見的codecs如下

  • json → 使用json格式對數據進行編碼/解碼。

  • multiline → 多個事件中數據匯總為一個單一的行。比如:java異常信息和堆棧信息


六. ELK配置


Elasticsearch配置

Master節點編輯elasticsearch.yml配置文件:

Slave1節點編輯elasticsearch.yml配置文件:

Slave2節點編輯elasticsearch.yml配置文件:

Logstash配置:

可以在任一節點部署logstash,默認不修改配置文件也可以運行。

Kibana配置:

可以在任一節點部署Kibana,修改kibana.yml配置文件

啟動ELK:

后臺啟動ES: ./elasticsearch -d

后臺啟動kibana: nohup ./kibana &

后臺啟動logstash:nohup ./logstash &

logstash -e input { stdin{} } output { stdout{} } --  -e參數允許在命令行中直接輸入配置

logstash -f file_std.conf  --  -f參數指定配置文件


七. 日志采集及輸出


1. logstash簡單測試

進入到logstash安裝目錄,執行以下命令:

./logstash -e input { stdin{} } output { stdout{} }

-e參數允許在命令行中直接輸入配置,而不同通過-f參數指定配置文件。

如果出現Pipeline main started則logstash已經啟動成功,在命令行輸入一些文字后,logstash會加上日期和主機名(IP)輸出到終端。這就是Logstash最基本的工作模式,接受標準輸入,然后將信息加工后放入到標準輸出。


2. logstash接收filebeat輸出

在filebeat安裝目錄中filebeat.yml文件修改如下:

在logstash安裝目錄中新建配置文件filebeat.conf,使logstash接收filebeat的輸入,并輸出到終端。

   

測試配置文件的準確性,返回OK則配置文件沒有問題

啟動命令./logstash -f ../test/filebeat.conf,輸出以下內容則成功

啟動命令./filebeat -e -c filebeat.yml -d "public"

查看logstash終端輸出


3. logstash本地日志采集配置

新建配置文件logfile.conf,配置內容如下

驗證配置文件logfile.conf準確性

啟動命令./logstash -f ../test/logfile.conf


4.LogStash輸出到elasticsearch配置

新建配置文件logfileIntoES.conf

啟動命令./logstash -f ../test/logfileIntoES.conf,elasticsearch上查看結果如下


八. Elasticsearch-head插件和健康檢查


1. 安裝Elasticsearch-head插件

需在Chrome雙核瀏覽器上安裝Elasticsearch-head插件

安裝成功后可點擊插件圖標使用Elasticsearch-head,輸入ES地址和端口即可查看集群中的節點信息、索引信息等。


2. 健康檢查

通過Kibana提供的Dev Tools工具可以查看集群的健康狀態,在Dev Tools的Console中運行“GET /_cat/health?v”查看集群狀態,返回green和100%則集群狀態良好

在Elasticsearch中也可查看集群節點的狀態,瀏覽器訪問節點IP:9200即可

在Elasticsearch-head同樣可以查看集群的健康狀態

  • 綠色——健康狀態,所有主分片和副本分片都可用

  • 黃色——所有主分片可用,部分副本分片不可用

  • 紅色——部分主分片可用


END


更多精彩干貨分享

點擊下方名片關注

IT那活兒

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129774.html

相關文章

  • 一個從基礎到實戰的學習機會:Go & Rust、分布式數據庫系統 | PingCAP Tal

    摘要:每年設有三期線下課程,分別在月份,月份以及月份,所有線下課程將在北京總部進行。當大家完成了線下課程和全部課程考核,我們會舉辦一個充滿儀式感的結業答辯,并為順利結業的小伙伴授予專屬的結業證書。 TiDB 每一次微小進步都離不開廣大社區小伙伴們的支持,但也有很多同學反映 TiDB 是一個非常復雜的分布式數據庫系統,如果沒有相關知識和經驗積累,在參與之初難免會遇到各種問題。因此我們決定全面升...

    TNFE 評論0 收藏0
  • Docker容器可視化監控中心搭建

    showImg(https://segmentfault.com/img/remote/1460000014421849); 概述 一個宿主機上可以運行多個容器化應用,容器化應用運行于宿主機上,我們需要知道該容器的運行情況,包括 CPU使用率、內存占用、網絡狀況以及磁盤空間等等一系列信息,而且這些信息隨時間變化,我們稱其為時序數據,本文將實操 如何搭建一個可視化的監控中心 來收集這些承載著具體應...

    yunhao 評論0 收藏0
  • 你離ELK只有一句docker-compose的距離

    摘要:但有一個問題就是對于一個初學者如此潔凈的環境,我完全不知道從何入手,也弄不清這個框架的優勢是什么連個樣本都沒有。還有的配置,的接入都踩過不少坑,才部署成一個像樣的學習環境。之后在寫腳本的時候又是各種踩雷,終于實現了快速一鍵部署。 引言 剛接觸Elk的時候,我用https://github.com/deviantony/docker-elk,部署了第一個測試環境,這是一個很優秀的項目,幾...

    red_bricks 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<