全部产品
云市场

使用Logstash实时采集日志数据

更新时间:2019-11-25 11:21:21

Logstash是一个开源的服务器端数据处理管道,起初用于将日志类数据写入ES中。随着开源社区的不断发展,现在Logstash可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到您需要的“存储端”。

以日志数据为例,由于AnalyticDB for MySQL支持原生JDBC方式访问,您可以通过开源logstash output插件logstash-output-jdbc将log数据导入AnalyticDB for MySQL中进行进一步分析。但经过测试发现,在日志量非常大的情况下,通过jdbc方式将数据写入AnalyticDB for MySQL的性能较低,并且非常消耗CPU的资源(因为jdbc是单条记录写入的方式)。为此,我们优化了一个基于jdbc的Logstash output plugin插件——logstash-ouput-analyticdb,专门用于以聚合方式向AnalyticDB for MySQL写入日志数据。

通过logstash-output-analyticdb将数据写入AnalyticDB for MySQL时的性能,相较于logstash-output-jdbc有5倍提升,并且对CPU的消耗也明显降低。

安装

Logstash的安装流程请参见Installing Logstash,以下介绍安装logstash-output-analyticdb的流程。

  1. 进入logstash根目录:cd logstash

  2. 安装logstash-output-analyticdb:bin/logstash-plugin install logstash-output-analyticdb

  3. 在logstash目录下创建vendor/jar/jdbc目录:mkdir -p vendor/jar/jdbc

  4. 将jdbc jar拷贝到vendor/jar/jdbc中:cd vendor/jar/jdbc; wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar

至此,成功安装logstash-output-analyticdb。

使用方式

您需要在config目录下创建一个logstash-analyticdb.conf(名字可以自行定义)的配置文件,logstash-analyticdb.conf文件的内容如下所示。

  1. input
  2. {
  3. stdin { }
  4. }
  5. output {
  6. analyticdb {
  7. driver_class => "com.mysql.jdbc.Driver"
  8. connection_string => "jdbc:mysql://HOSTNAME:PORT/DATABASE?user=USER&password=PASSWORD"
  9. statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
  10. commit_size => 4194304
  11. }
  12. }
  • connection_string:连接AnalyticDB for MySQL的jdbc url。

  • statement:insert SQL的声明数组。

其他参数配置:

  • max_flush_exceptions:当写入数据出现异常时,设置最大重试次数,默认值100。

  • skip_exception:设置是否跳过异常,默认为false,表示出现异常时将重试直到到达最大重试次数max_flush_exceptions,如果仍然失败,则同步程序抛异常终止。设置为true时,如果达到重试次数后仍是失败,则跳过异常,异常的数据会写入日志。

  • flush_size:一次最多攒批数量,和commit_size参数搭配使用。

  • commit_size:一次最多攒批数据量大小,和flush_size参数搭配使用,达到限定值即提交写入任务。

上述配置文件只是一个示例,您需要根据实际业务来配置logstash-analyticdb.conf文件。与AnalyticDB for MySQL相关的其他配置项请参见README。更多logstash配置和使用规则,请参见logstash文档。

至此,配置任务已全部完成,接下来将启动任务。

启动任务

在logstash的安装目录执行:bin/logstash -f config/logstash-analyticdb.conf`启动任务。

注意事项

建议您将logstash升级至最新版本后,再进行数据写入。

  1. bin/logstash-plugin update logstash-output-analyticdb