Logstash对接mysql笔记

我们在内容分发系统的数据表里面,经常会有阅读次数、分享次数这样的字段,而如果是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包是额外下载下来的,否则会启动失败

以上就是本文介绍的全部内容,希望能帮到您。

你可能感兴趣的:(Logstash对接mysql笔记)