我們在內(nèi)容分發(fā)系統(tǒng)的數(shù)據(jù)表里面,經(jīng)常會有閱讀次數(shù)、分享次數(shù)這樣的字段,而如果是c/s系統(tǒng)巨税,這樣的統(tǒng)計是需要客戶端傳上來的,以往這樣的需求我們會在后臺系統(tǒng)中提供一個readCount的接口粉臊,每當客戶端閱讀一次的時候草添,就會調(diào)用接口一次,然后數(shù)據(jù)表的readCount字段就+1扼仲。
上文我們已經(jīng)介紹了如何用elk快速搭建日志收集系統(tǒng)远寸,其中的logstash除了收集數(shù)據(jù)到elasticsearch抄淑,還有其他的作用,這里就介紹如何用logstash更新數(shù)據(jù)庫驰后。
安裝jdbc插件
要完成這個需求肆资,首先就是要安裝jdbc的插件,讓logstash能訪問mysql灶芝,安裝的命令很簡單:
$ bin/logstash-plugin install logstash-output-jdbc
執(zhí)行命令之后如果控制臺輸出Install success
則表示安裝成功郑原。
配置config文件
logstash的配置文件我們首先要做的是將傳上來的數(shù)據(jù)轉(zhuǎn)換為json,那就需要配置filter任務(wù)夜涕,配置如下:
filter {
json {
source => "message"
}
}
然后犯犁,logstash的配置文件其實是很聰明的,除了基本配置之外女器,他還支持if判斷等邏輯語句酸役,在這里我們配置output的時候就可以這樣寫:
output {
if [action] == 'read' {
jdbc {
driver_jar_path => "/opt/logstash/lib/mysql-connector-java-5.1.36.jar"
driver_class => "com.mysql.jdbc.Driver"
connection_string => "jdbc:mysql://localhost:3306/test?user=test&password=test123"
statement => [ "update content set read_count = read_count + 1 where id = ?", "[id]" ]
}
} else if [action] == 'share' {
jdbc {
driver_jar_path => "/opt/logstash/lib/mysql-connector-java-5.1.36.jar"
driver_class => "com.mysql.jdbc.Driver"
connection_string => "jdbc:mysql://localhost:3306/test?user=test&password=test123"
statement => [ "update content set share_count = share_count + 1 where id = ?", "[id]" ]
}
}
}
這里MySQL的jar包是額外下載下來的,否則會啟動失敗
以上就是本文介紹的全部內(nèi)容晓避,希望能幫到您簇捍。