我們在內(nèi)容分發(fā)系統(tǒng)的數(shù)據(jù)表里面,經(jīng)常會(huì)有閱讀次數(shù)、分享次數(shù)這樣的字段,而如果是c/s系統(tǒng),這樣的統(tǒng)計(jì)是需要客戶端傳上來的,以往這樣的需求我們會(huì)在后臺系統(tǒng)中提供一個(gè)readCount的接口,每當(dāng)客戶端閱讀一次的時(shí)候,就會(huì)調(diào)用接口一次,然后數(shù)據(jù)表的readCount字段就+1。
上文我們已經(jīng)介紹了如何用elk快速搭建日志收集系統(tǒng),其中的logstash除了收集數(shù)據(jù)到elasticsearch,還有其他的作用,這里就介紹如何用logstash更新數(shù)據(jù)庫。
安裝jdbc插件
要完成這個(gè)需求,首先就是要安裝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的配置文件其實(shí)是很聰明的,除了基本配置之外,他還支持if判斷等邏輯語句,在這里我們配置output的時(shí)候就可以這樣寫:
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包是額外下載下來的,否則會(huì)啟動(dòng)失敗
以上就是本文介紹的全部內(nèi)容,希望能幫到您。