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包是额外下载下来的,否则会启动失败

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,107评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,804评论 18 399
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,993评论 6 342
  • 一. Java基础部分.................................................
    wy_sure阅读 3,854评论 0 11
  • 自律,向痛苦宣战 这次课程,几乎每一句都是我需要的,所以文章没有结构(现阶段也不...
    982827c14b4a阅读 419评论 2 0