Skip to content

y-ken/fluent-plugin-mysql-query

Repository files navigation

fluent-plugin-mysql-query Build Status

Fluentd Input plugin to execute mysql query and fetch rows. It is useful for stationary interval metrics measurement.

Requirements

fluent-plugin-mysql fluentd ruby
>= 0.4.0 >= v0.14.0 >= 2.1
< 0.4.0 >= v0.12.0 >= 1.9

Installation

install with gem or fluent-gem command as:

# for fluentd
$ gem install fluent-plugin-mysql-query

# for td-agent
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-mysql-query

Configuration

Config Sample

<source>
  @type            mysql_query
  host            localhost           # Optional (default: localhost)
  port            3306                # Optional (default: 3306)
  socket          /tmp/mysql.sock     # Optional (default: the host's MySQL library default)
  username        nagios              # Optional (default: root)
  password        passw0rd            # Optional (default nopassword)
  interval        30s                 # Optional (default: 1m)
  tag             input.mysql         # Required
  query           SHOW VARIABLES LIKE 'Thread_%' # Required
  # record hostname into message.
  record_hostname yes                 # Optional (default: no)
  # multi row results into nested record or separated message.
  nest_result     yes                 # Optional (default: no)
  nest_key        data                # Optional (default: result)
  # record the number of lines of a query result
  row_count       yes                 # Optional (default: no)
  row_count_key   row_count           # Optional (default: row_count)
</source>

<match input.mysql>
  @type stdout
</match>

Output Sample

record_hostname: yes, nest_result: no

input.mysql: {"hostname":"myhost.example.com","Variable_name":"thread_cache_size","Value":"16"}
input.mysql: {"hostname":"myhost.example.com","Variable_name":"thread_stack","Value":"262144"}

record_hostname: yes, nest_result: yes, nest_key: data

input.mysql: {"hostname":"myhost.example.com","data":[{"Variable_name":"thread_cache_size","Value":"16"},{"Variable_name":"thread_stack","Value":"262144"}]}

record_hostname: yes, nest_result: yes, nest_key: data, row_count: yes, row_count_key: row_count

input.mysql: {"hostname":"myhost.example.com","row_count":2,"data":[{"Variable_name":"thread_cache_size","Value":"16"},{"Variable_name":"thread_stack","Value":"262144"}]}

Example Query

  • SHOW VARIABLES LIKE 'Thread_%';
  • SELECT MAX(id) AS max_foo_id FROM foo_table;
  • SHOW FULL PROCESSLIST;
  • INSERT INTO log (data, created_at) VALUES((SELECT MAX(id) FROM foo_table), NOW());
  • SHOW SLAVE STATUS;
  • SHOW INNODB STATUS; -- MySQL 5.0
  • SHOW ENGINE INNODB STATUS; -- MySQL 5.5 or later

Tips

  • Fetching query from multiple mysql host
    #2

TODO

patches welcome!

  • support result_key_downcase option

Copyright

Copyright © 2012- Kentaro Yoshida (@yoshi_ken)

License

Apache License, Version 2.0

About

Fluentd Input plugin to execute mysql query and fetch rows. It is useful for stationary interval metrics measurement.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages