logstash-input-jdbc配置說明


Logstash

Logstash由三個組件構造成,分別是input、filter以及output。我們可以吧Logstash三個組件的工作流理解為:input收集數據,filter處理數據,output輸出數據。

 

不同數據源:

1、文件類型:文件數據源,我們可以使用input組件的file插件來獲取數據。file{}插件有很多的屬性參數。具體內容在下面的代碼中展示:

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
    }           

}

2、數據庫類型:數據庫類型的數據源,使用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{}插件。 }

 

3.端口

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM