我们在内容分发系统的数据表里面,经常会有阅读次数、分享次数这样的字段,而如果是c/s系统,这样的统计是需要客户端传上来的,以往这样的需求我们会在后台系统中提供一个readCount的接口,每当客户端阅读一次的时候,就会调用接口一次,然后数据表的readCount字段就+1。
上文我们已经介绍了如何用elk快速搭建日志收集系统,其中的logstash除了收集数据到elasticsearch,还有其他的作用,这里就介绍如何用logstash更新数据库。
安装jdbc插件
要完成这个需求,首先就是要安装jdbc的插件,让logstash能访问mysql,安装的命令很简单:
$ bin/logstash-plugin install logstash-output-jdbc
执行命令之后如果控制台输出Install success
则表示安装成功。
配置config文件
logstash的配置文件我们首先要做的是将传上来的数据转换为json,那就需要配置filter任务,配置如下:
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包是额外下载下来的,否则会启动失败
以上就是本文介绍的全部内容,希望能帮到您。