1. 程式人生 > 實用技巧 >回到頂部功能(元件)

回到頂部功能(元件)

  E(elasticsearch,資料庫)

  L(logstash,收集web日誌資料)

  K(Kibana,用web的形式展示elasticsearch的資料)

一、1. 安裝elasticsearch叢集

    配置java環境 下載elasticsearch

  2. vim /etc/elasticsearch/elasticsearch.yml 檔案中 修改(前面的數字代表行數,修改配置檔案時 把前面的#刪除之後 後面的文字必須定格)

    17 cluster.name: myelk//配置叢集名字

    23 node.name: es1//當前主機名稱

    54 network.host: 0.0.0.0 // 0.0.0.0(監聽所有地址)

    68 discovery.zen.ping.unicast.hosts: ["es1", "es2", "es3"]

       //宣告叢集裡的主機成員有誰,不需要全部寫進去 但是在啟動主機的時候先啟動這幾臺,

       啟動其他的話其他的會自動組成叢集

    叢集配置完成之後,可以直接訪問 http://任意一臺:9200/_cluster/health?pretty 檢視叢集資訊

    ?pretty 這個是把資料豎著顯示能更好的 看清資訊

  3. 外掛使用(裝在那臺上只能在那臺機器上使用 ./plugin install file:///外掛的絕對路徑)

    訪問這些外掛 http://ip:9200/_plugin/外掛名

    (1)head

      展現幾區的拓撲結構,通過這個外掛可以進行 索引 和 節點 級別的操作

      提供一組針對叢集的查詢API

    (2)kopf

      elasticsearch的 管理工具

    (3)bigbesk   

      ES叢集的監控工具

      可以通過他跨檢視ES叢集的各種狀態,如:CPU 、記憶體

      提供對ES叢集操作API

    外掛 head 建立索引

    

    

    命令列建立索引,插入資料(json 格式)

              curl -X PUT "http://192.168.1.55:9200/index" -d '

              > {

              >   "settings":{

              >   "index":{

              >   "number_of_shards":5,//分片數

              >   "number_of_replicas":1//副本數

              > }

              > }

              > }'

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

              "職業":"詩人",

              "名字":"李白",

              "稱號":"詩仙",

              "年代":"唐"}'

      tedu是索引名字 teacher為表名 1為id(第一行的意思)

  4. 匯入資料(匯入資料的時候如果裡面沒有索引,表名在_bulk 前面加上 索引,表名)

    curl -X POST "http://ip:9200/_bulk" --data-binary @logs.jsonl(匯入的資料必須是json格式的)

二、安裝kibana

  資料視覺化平臺工具

  vim /opt/kibana/config/kibana.yml

  

  指定叢集中的機器任意一臺都可以 其他的需要把註釋去掉就行

  訪問地址 http://ip:5601開啟之後

    

    

    全綠說明安裝成功

    

    

    discover 檢視資料資訊 visualize中可以做餅圖

    

    例子訪問量排名

      

三、logstash

 安裝logstash

    1.安裝Java環境

    2. logstash 沒有配置檔案需要自己手寫

    3.

    4.logstash工作結構

   

    (1)資料來源(web日誌)

    (2)input(收集資料)

     (3)filter(把資料轉換,過濾)

     (4)output(把資料輸出,給elasticsearch)

     (5)測試

      

      rubydebug輸出內容的時候 會豎著顯示 比較友好

      

    5.https://github.com/logstash-plugins (logstash的外掛地址)

      (1)使用input裡面的file外掛

        

        最後一項是否 必須填寫(NO 可以不填)

        我們往下拉找 最後一項是yes的

        

        

        陣列中可以填寫多個路徑

       

       建立 兩個log檔案 並開啟 logstash 程式

       logstash 在每次讀取檔案的時候 都會做一個記錄(記錄讀到日誌檔案的什麼位置)

       

    

        我們可以自己設定記錄檔案的位置(生產環境中如果有2個以上的使用者維護logstrash,這個記錄檔案在root下 那麼維護起來比較麻煩)

        

        sincedb_path 指定讀取記錄檔案的位置

        start_position 有兩個引數 beginning 和 end 預設是end,在重啟logstash的時候 如果有記錄檔案那麼會從記錄檔案的位置開始繼續讀取,如果沒有beginning是從檔案的開頭讀取,end是從檔案的結尾讀取最新的資料(如果是end那麼原來的資料會讀不到)

        type 標籤 可以隨便寫

      (2)使用 filter grok外掛 我們可以自己編寫正則表示式 或者 用巨集表示式(自己有的)

        

        正則表示式有匿名分組和命名分組

        

        命名正則(?<正則的名字>匹配的內容)固定格式

        上面的是手動寫的 ,logstash 中有提前準備好的表示式

       

       這個文件裡寫的是 提前準備好的巨集表示式

        

       該文件分為兩列 第一列為巨集的名字 第二列為正則表示式匹配的方法

        呼叫的話%{巨集的名字:自己的命名} (也可以不用自己命名 只寫巨集的名字呼叫)

       

   直接呼叫 上面的巨集和手寫的是一樣的

       (3)使用putput中的elasticsearch外掛 

        

        下面 fiush_size是 當大小達到2000位元組之後 就像elasticsearch 中寫入 資料

           idle_flush_time是 10秒 寫入一次 防止還沒到達2000位元組 不向elasticsearch中寫入資料

        指定 elasticsearch的機器 和 指定建立的庫的庫名(其實可以不用寫 hosts,index(庫名) 引數都是預設有引數 hosts 預設的是 127.0.0.1 本機 index預設的是 logshtash-yyy-mmm-ddd 如果elasticsearch和logstash安裝在同一臺機器那麼 hosts 就不用修改)

    6. 企業中web伺服器多 每臺都配置logstash 比較麻煩。 可以用filebeat + logstash,filebeat負責把日誌資料傳輸給logstash中 

       

       在logstash配置檔案中只需要加上一個埠號,在啟動時,logstash會自動檢測5044埠

      (1)在web伺服器安裝filebeat

        yum -y install filebeat

      (2)修改 filebeat的配置檔案(/etc/filebeat/filebeat.yaml)

        

        預設的是logstash是註釋的 elasticsearch 沒有註釋 我們把elasticsearch的行給註釋了 把logstash的行註釋去掉

        需要標籤(分辨是什麼服務的日誌)的話可以再 filebeat配置檔案中

        

        大約在72行 標記型別

        配置完filebeat之後可以在logstash配置檔案中 加上 if 判斷