91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

logstash中input與codec插件的使用方法

發布時間:2020-05-23 15:59:29 來源:億速云 閱讀:452 作者:鴿子 欄目:系統運維

Logstash最強大的功能在于豐富的過濾器插件。此過濾器提供的并不單單是過濾的功能,還可以對進入過濾器的原始數據進行復雜的邏輯處理。甚至添加獨特的事件到后續流程中。

1、logstash基本語法組成

logstash主要由三部分組成:input、filter、output。而filter就是過濾器插件,這個組件可以不要,但是這樣子就不能體現出logtash的強大過濾功能了。

input{

  輸入插件

}

filter{

  過濾器插件

}

outer{

  輸出插件

}

下面我們依次對各個插件進行介紹

1.1、logstash輸入插件(input)

Logstash的輸入插件主要用來接收數據,Logstash支持多種數據源,常見的有讀取文件、標準輸入、讀取syslog日志、讀取網絡數據等,這里分別介紹下每種接收數據源的配置方法

我們先來看個例子:

input{
    file{
            path => ["/var/log/messages"]
        type => "system"
        start_position => "timestamp"
  }
}
output{
  stdout{
        codec => rubydebug
  }
}

這時我們有幾個小疑問:

1、logstash的input是怎么樣接收日志的呢?

  logstash使用一個名為filewatch的ruby gem庫來監聽文件變化,并通過一個叫.sincedb的數據庫文件來記錄被監聽的日志文件的讀取進度(時間戳)。這個sincedb數據文件的默認路徑在 <path.data>/plugins/inputs/file下面,文件名類似于.sincedb_452905a167cf4509fd08acb964fdb20c。而<path.data>表示logstash插件存儲目錄,默認是LOGSTASH_HOME/data。(rpm包安裝則是在/usr/share/logstash目錄下)。

 

2、logstash的input技術跟Linux的那個比較像呢?

  input就跟Linux的管道右側內容一樣,在Linux管道中,左側的輸出傳給管道的右側接收機制。而input就是如此,當他監聽一個文件時,會以tail -f命令的形式逐行獲取數據。不過input可以指定從哪個地方(某一時間戳)開始讀取,而start_position就是指定時間戳。如果不指定則從頭開始讀取。type則是用來標記時間類型。

下面舉個例子來看:

logstash中input與codec插件的使用方法

1.2、標準輸入

 stdin是從標準輸入獲取信息的。這里我們看一個稍微復雜一點的例子:

input {
        stdin {
                add_field => {"key"=>"apple"}
                tags => ["add1"]
                type => "test1"        }
}

output {
                stdout {
                        codec => rubydebug
                }
}

然后我們啟動一下終端,大家要注意,我這里沒有指定輸入文件,而指定的是stdin,表示標準輸入,意思就是交互式輸入數據。

[root@::172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.conf
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.propertieshello word                     #手動輸入此信息{
          "type" => "test1",
      "@version" => "1",
       "message" => "hello word",
    "@timestamp" => 2019-01-22T05:42:08.340Z,
          "tags" => [
        [0] "add1"
    ],
          "host" => "ip-172-31-22-29.ec2.internal",
           "key" => "apple"
}

type和tags是logstash的兩個特殊字段, type一般會放在input中標記事件類型, tags主要用于在事件中增加標簽,以便在后續的處理流程中使用,主要用于filter或output階段。

2、logstash編碼插件(Codec)

前面的例子中,其實我們就已經用過編碼插件codec了,就是這個rubydebug,它就是一種codec。

編碼插件(codec)可以在logstash輸入或輸出時處理不同類型的數據,同時,還可以更好更方便的與其他自定義格式的數據產品共存,比如:fluent、netflow、collectd等通用數據格式的其他產品。因此,logstash不只是一個input-->filter-->output的數據流,而且是一個input-->decode-->filter-->encode-->output的數據流。

codec支持的編碼格式常見有plain、json、json_lines等,下面依次介紹:

1、codec插件之plain

plain是最簡單的編碼插件,你輸入什么信息,就返回什么信息,諸如上面的例子中的timestamp、type等都不會帶有:

修改一下配置文件:

input {
        stdin {                       }
}

output {
                stdout {
                        codec => plain
                }
}

現在我們啟動一下:

[root@::172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.conf
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties2019-01-22T06:10:14.161Z ip-172-31-22-29.ec2.internal hello word      #在此輸入信息2019-01-22T06:10:19.382Z ip-172-31-22-29.ec2.internal hello word

2、codec插件之json、json_lines

有時候logstash采集的日志是JSON格式,那我們可以在input字段加入codec => json來進行解析,這樣就可以根據具體內容生成字段,方便分析和儲存。如果想讓logstash輸出為json格式,可以在output字段加入codec=>json。下面是一個包含json編碼的時間配置文件:

input {
        stdin {
        }
}

output {
                stdout {
                        codec => json
                }
}

啟動一下:

[root@:172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.conf
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.propertieshello word                #輸入此行信息{"host":"ip-172-31-22-29.ec2.internal","@version":"1","message":"hello word","@timestamp":"2019-01-22T06:27:27.191Z"}

你會發現插件是json的時候,。他會自帶一些信息,諸如host、@version、@timestamp。json的每個字段都是key:value格式,多個字段之間通過逗號分隔。這種輸出比較長,因此我們采用json_lines編碼格式稍微好一點。

2.1、我們演示一下在input里面設置json格式會怎么輸入呢?

input {
        stdin {
                codec => json
        }
}
output {
                stdout {
                }
}

接下來啟動一下服務:

[root@::172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.conf
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties{"message":"hello word","@version":"1","@timestamp":"2019-01-22T06:32:56.973Z","host":"ip-172-31-22-29.ec2.internal"}{
          "host" => "ip-172-31-22-29.ec2.internal",
    "@timestamp" => 2019-01-22T06:32:56.973Z,
      "@version" => "1",
       "message" => "hello word"
}

這里就是說當我輸入紅色方框里面的內容的時候,這里我輸入的是一行JSON格式,然后系統就會返回給我信息。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杂多县| 长兴县| 临高县| 平塘县| 普兰店市| 建昌县| 大同市| 微山县| 长宁区| 平潭县| 通化县| 平安县| 南澳县| 土默特左旗| 佛教| 府谷县| 新建县| 乌什县| 湘阴县| 博湖县| 麻城市| 台湾省| 铁力市| 永顺县| 南部县| 隆德县| 中西区| 山丹县| 台北市| 临潭县| 罗城| 宝鸡市| 岚皋县| 武功县| 博罗县| 象州县| 武义县| 闽侯县| 左云县| 玛纳斯县| 县级市|