logstash-input-jdbc配置說明

Logstash由三個組件構形成,分別是input、filter以及output。咱們能夠吧Logstash三個組件的工做流理解爲:input收集數據,filter處理數據,output輸出數據。至於怎麼收集、去哪收集、怎麼處理、處理什麼、怎麼發生以及發送到哪等等一些列的問題就是咱們接下啦要討論的一個重點。
咱們今天先討論input組件的功能和基本插件。前面咱們意見介紹過了,input組件是Logstash的眼睛和鼻子,負責收集數據的,那麼們就不得不思考兩個問題,第一個問題要清楚的就是,元數據在哪,固然,這就包含了元數據是什麼類型,屬於什麼業務;第二個問題要清楚怎麼去拿到元數據。只要搞明白了這兩個問題,那麼Logstash的input組件就算是弄明白了。
對於第一個問題,元數據的類型有不少,好比說你的元數據能夠是日誌、報表、能夠是數據庫的內容等等。元數據是什麼樣子的咱們不須要關心,咱們要關係的是元數據是什麼類型的,只要你知道元數據是什麼類型的,你才能給他分類,或者說給他一個type,這很重要,type對於你後面的工做處理是很是有幫助的。因此第一個問題的重心元數據在嗎,是什麼,如今已是清楚了。那麼進行第二個問題。
第二個問題的核心是怎麼拿到這些不一樣類型的原數據?這是一個真個input組件的核心內容了,咱們分門別類的來看待這和解決個問題。
首先,咱們確定須要認同的,什麼樣的數據源,就須要使用什麼樣的方式去獲取數據。
咱們列舉幾種:
一、文件類型:文件類型,顧名思義,文件數據源,咱們可使用input組件的file插件來獲取數據。file{}插件有不少的屬性參數,咱們能夠張開講解一下。具體內容在下面的代碼中展現:sql

input{
    file{
        #path屬性接受的參數是一個數組,其含義是標明須要讀取的文件位置
        path => [‘pathA’,‘pathB’]
        #表示多就去path路徑下查看是夠有新的文件產生。默認是15秒檢查一次。
        discover_interval => 15
        #排除那些文件,也就是不去讀取那些文件
        exclude => [‘fileName1’,‘fileNmae2’]
        #被監聽的文件多久沒更新後斷開鏈接不在監聽,默認是一個小時。
        close_older => 3600
        #在每次檢查文件列 表的時候, 若是一個文件的最後 修改時間 超過這個值, 就忽略這個文件。 默認一天。
        ignore_older => 86400
        #logstash 每隔多 久檢查一次被監聽文件狀態( 是否有更新) , 默認是 1 秒。
        stat_interval => 1
        #sincedb記錄數據上一次的讀取位置的一個index
        sincedb_path => ’$HOME/. sincedb‘
        #logstash 從什麼 位置開始讀取文件數據, 默認是結束位置 也能夠設置爲:beginning 從頭開始
        start_position => ‘beginning’
        #注意:這裏須要提醒你們的是,若是你須要每次都從同開始讀取文件的話,關設置start_position => beginning是沒有用的,你能夠選擇sincedb_path 定義爲 /dev/null
    }           

}

 

二、數據庫類型:數據庫類型的數據源,就意味着咱們須要去和數據庫打交道了是嗎?是的!那是必須的啊,否則怎麼獲取數據呢。input組件如何獲取數據庫類的數據呢?沒錯,下面即將隆重登場的是input組件的JDBC插件jdbc{}。一樣的,jdbc{}有不少的屬性,咱們在下面的代碼中做出說明;數據庫

input{
    jdbc{
    #jdbc sql server 驅動,各個數據庫都有對應的驅動,需本身下載
    jdbc_driver_library => "/etc/logstash/driver.d/sqljdbc_2.0/enu/sqljdbc4.jar"
    #jdbc class 不一樣數據庫有不一樣的 class 配置
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    #配置數據庫鏈接 ip 和端口,以及數據庫   
    jdbc_connection_string => "jdbc:sqlserver://200.200.0.18:1433;databaseName=test_db"
    #配置數據庫用戶名
    jdbc_user =>   
    #配置數據庫密碼
    jdbc_password =>
    #上面這些都不重要,要是這些都看不懂的話,你的老闆估計要考慮換人了。重要的是接下來的內容。
    # 定時器 多久執行一次SQL,默認是一分鐘
    # schedule => 分 時 天 月 年  
    # schedule =>  22     表示天天22點執行一次
    schedule => "  *"
    #是否清除 last_run_metadata_path 的記錄,若是爲真那麼每次都至關於從頭開始查詢全部的數據庫記錄
    clean_run => false
    #是否須要記錄某個column 的值,若是 record_last_run 爲真,能夠自定義咱們須要表的字段名稱,
    #此時該參數就要爲 true. 不然默認 track 的是 timestamp 的值.
    use_column_value => true
    #若是 use_column_value 爲真,需配置此參數. 這個參數就是數據庫給出的一個字段名稱。固然該字段必須是遞增的,能夠是 數據庫的數據時間這類的
    tracking_column => create_time
    #是否記錄上次執行結果, 若是爲真,將會把上次執行到的 tracking_column 字段的值記錄下來,保存到 last_run_metadata_path 指定的文件中
    record_last_run => true
    #們只須要在 SQL 語句中 WHERE MY_ID > :last_sql_value 便可. 其中 :sql_last_value 取得就是該文件中的值
    last_run_metadata_path => "/etc/logstash/run_metadata.d/my_info"
    #是否將字段名稱轉小寫。
    #這裏有個小的提示,若是你這前就處理過一次數據,而且在Kibana中有對應的搜索需求的話,仍是改成true,
    #由於默認是true,而且Kibana是大小寫區分的。準確的說應該是ES大小寫區分
    lowercase_column_names => false
    #你的SQL的位置,固然,你的SQL也能夠直接寫在這裏。
    #statement => SELECT * FROM tabeName t WHERE  t.creat_time > :sql_last_value
statement_filepath => "/etc/logstash/statement_file.d/my_info.sql" #數據類型,標明你屬於那一方勢力。單了ES哪裏好給你安排不一樣的山頭。 type => "my_info" } #注意:外載的SQL文件就是一個文本文件就能夠了,還有須要注意的是,一個jdbc{}插件就只能處理一個SQL語句, #若是你有多個SQL須要處理的話,只能在從新創建一個jdbc{}插件。 }

 

好了,廢話很少說了,接着第三種狀況:數組

input {
  beats {
    #接受數據端口
    port => 5044
    #數據類型
    type => "logs"
  }
  #這個插件須要和filebeat進行配很這裏不作多講,到時候結合起來一塊兒介紹。
}

 

如今咱們基本清楚的知道了input組件須要作的事情和如何去作,固然他還有不少的插件能夠進行數據的收集,好比說TCP這類的,還有能夠對數據進行encode,這些感興趣的朋友能夠本身去查看,我說的只是我本身使用的。通常狀況下我說的三種插件已經足夠了。
今天的ELK種的Logstash的input組件就到這。後面還會講述Logstash的另外另個組件filter和output。sqlserver

 

   注意:若是看到這樣的報錯信息 Logstash could not be started because there is already another instance using the configured data directory.  If you wish to run multiple instances, you must change the "path.data" setting. 請執行命令:service logstash stop 而後在執行就能夠了。spa

 

轉載自:https://yq.aliyun.com/articles/152043插件

logstash的output,查看https://yq.aliyun.com/articles/197785?spm=5176.8091938.0.0.pg7WLz日誌

相關文章
相關標籤/搜索