(一)logstash和beats的簡單介紹

一、logstash的一些名詞介紹

Pipeline

  • input-filter-output 的 3個階段的處理流程。
  • 隊列管理。
  • 插件生命週期管理。

Logstash Event

  • 他是logstash內部流轉的數據的表現形式。
  • 原始數據在input 階段被轉換成 Event,在 output階段 event 被轉換成目標格式數據。
  • 在配置文件中可以對 Event 中的屬性進行增刪改查。

架構圖如下:

在這裏插入圖片描述

二、queue

1、分類(2類)

In Memory:無法處理進程 crash、機器宕機等情況,會導致數據丟失

Persistent Queue In Disk

  • 可處理進程crash 等情況,保證數據不會丟失
  • 保證數據至少消費一次
  • 充當緩衝區,可以替代kafka等消息隊列的作用

2、Persistent Queue

在這裏插入圖片描述
流程如下:

  • 1->input將data傳給persistent queue
  • 2->persistent queue 將data 存儲一份到 disk
  • 3,4->disk告訴input已經接收到信息(此處目的是input可以隨時調整,避免數據進出過於不平衡的情況)
  • 5->persistent queue將data傳給output
  • 6->output傳送ack 信息給 persistent queue
  • 7->persistent queue將信息傳送給disk,如果正常,此時disk就可以刪除data 了

基本配置:

  • queue.type: persisted(默認是memory)
  • queue.max_bytes: 4gb(隊列存儲最大的數據量,默認是1gb)

三、啓動參數

注:Visual VM 工具可以查看jvm情況。

  • pipeline.workers:pipeline線程數,即 filter_output 的處理線程數,默認是cpu核數(啓動時 -w即可指定)
  • pipeline.batch.size:batcher 一次批量獲取的待處理文檔數,默認是125,可以根據輸出進行調整,越大會 佔用越多的heap 空間,可以通過 jvm.options 調整(啓動時 -b即可指定)
  • pipeline.batch.delay:batcher 等待的時長,單位是 ms(啓動時 -u即可指定)
  • config.string:指定pipeline 內容(啓動時 -e即可指定,指定conf配置文件的位置)
  • –path.data:持久化村塾數據的文件夾,默認是logstash根目錄下的data(persistent queue纔用到)
  • –debug:日誌等級
  • –config.test_and_exit:顧名思義,檢測conf文件內容是否正確並退出(啓動時 -t 即可指定)

四、pipeline的配置(conf文件的配置)

在配置中引用logstash event 的屬性(字段),主要有2中方式:直接引用字段值和在字符串中以sprintf方式應用

  • 直接引用字段值:使用[] 即可,嵌套字段寫多層 [] (中括號)即可。
  • 字符串中引用字段值(sprintf):使用%{} 來實現。

五、常見問題

1、查看已安裝插件

bin/logstash-plugin list --verbose

2、logstash 輸入 elasticsearch 時間的處理
Elasticsearch原生支持date類型,json格式通過字符來表示date類型。所以在用json提交日期至elasticsearch的時候,es會隱式轉換,把es認爲是date類型的字符串直接轉爲date類型。
date類型是包含時區信息的,如果我們沒有在json代表日期的字符串中顯式指定時區,對es來說沒什麼問題,但是如果通過kibana顯示es裏的數據時,就會出現問題,數據的時間會晚8個小時。因爲kibana從es裏讀取的date類型數據,沒有時區信息,kibana會默認當作0時區來解析,但是kibana在通過瀏覽器展示的時候,會通過js獲取當前客戶端機器所在的時區,也就是東八區,所以kibana會把從es得到的日期數據減去8小時。這裏就會導致kibana經常遇到的“數據時間延遲8小時”的問題。
所以最佳實踐方案就是:我們在往es提交日期數據的時候,直接提交帶有時區信息的日期字符串,如:“2016-07-15T12:58:17.136+0800”。
索引中定義的日期格式與提交數據的日期格式要一致,否則會報錯。
格式化時間有2種方法:
(1)存入 elasticsearch 前,將數據格式化好

創建索引是指定date format示例:
PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type":   "date",
          "format": "yyyy-MM-dd"
        }
      }
    }
  }
}

(2)使用 elasticsearch-sql 查詢時調用 date_format(date, param)函數
使用 elasticsearch-sql 查詢時調用 date_format(date, param)函數。
此方法只針對一對一的date類型,對於 nested(一對多)的內部的date 類型無效(無法格式化)

六、filebeat之module

filebeat 提供了衆多開箱即用的 module。

./filebeat modules list 查看 module列表

./filebeat modules enable nginx 啓用 nginx module

配置位於 module 文件夾中。

七、metricbeat介紹

1、module

metricbeat 收集指標的對象,比如linux、windows、mysql 等

2、metricset

  • metricbeat 收集指標的集合,該集合以減少收集指標調用次數爲劃分依據。
  • 1個module 可以有多個 metricset
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章