文档文档

MySQL 输入插件

此插件从 MySQL 服务器实例收集统计信息。

要从性能模式收集指标,必须首先在 MySQL 中启用它。有关详细信息,请参阅性能模式快速入门

引入于: Telegraf v0.1.1 标签: datastore 操作系统支持: all

全局配置选项

插件支持其他全局和插件配置设置,用于修改指标、标签和字段,创建别名以及配置插件顺序等任务。更多详情请参阅 CONFIGURATION.md

配置

# Read metrics from one or many mysql servers
[[inputs.mysql]]
  ## specify servers via a url matching:
  ##  [username[:password]@][protocol[(address)]]/[?tls=[true|false|skip-verify|custom]]
  ##  see https://github.com/go-sql-driver/mysql#dsn-data-source-name
  ##  e.g.
  ##    servers = ["user:passwd@tcp(127.0.0.1:3306)/?tls=false"]
  ##    servers = ["user@tcp(127.0.0.1:3306)/?tls=false"]
  #
  ## If no servers are specified, then localhost is used as the host.
  servers = ["tcp(127.0.0.1:3306)/"]

  ## Selects the metric output format.
  ##
  ## This option exists to maintain backwards compatibility, if you have
  ## existing metrics do not set or change this value until you are ready to
  ## migrate to the new format.
  ##
  ## If you do not have existing metrics from this plugin set to the latest
  ## version.
  ##
  ## Telegraf >=1.6: metric_version = 2
  ##           <1.6: metric_version = 1 (or unset)
  metric_version = 2

  ## if the list is empty, then metrics are gathered from all database tables
  # table_schema_databases = []

  ## gather metrics from INFORMATION_SCHEMA.TABLES for databases provided
  ## in the list above
  # gather_table_schema = false

  ## gather thread state counts from INFORMATION_SCHEMA.PROCESSLIST
  # gather_process_list = false

  ## gather user statistics from INFORMATION_SCHEMA.USER_STATISTICS
  # gather_user_statistics = false

  ## gather auto_increment columns and max values from information schema
  # gather_info_schema_auto_inc = false

  ## gather metrics from INFORMATION_SCHEMA.INNODB_METRICS
  # gather_innodb_metrics = false

  ## gather metrics from all channels from SHOW SLAVE STATUS command output
  # gather_all_slave_channels = false

  ## gather metrics from SHOW SLAVE STATUS command output
  # gather_slave_status = false

  ## gather metrics from SHOW REPLICA STATUS command output
  # gather_replica_status = false

  ## use SHOW ALL SLAVES STATUS command output for MariaDB
  ## use SHOW ALL REPLICAS STATUS command if enable gather replica status
  # mariadb_dialect = false

  ## gather metrics from SHOW BINARY LOGS command output
  # gather_binary_logs = false

  ## gather metrics from SHOW GLOBAL VARIABLES command output
  # gather_global_variables = true

  ## gather metrics from PERFORMANCE_SCHEMA.TABLE_IO_WAITS_SUMMARY_BY_TABLE
  # gather_table_io_waits = false

  ## gather metrics from PERFORMANCE_SCHEMA.TABLE_LOCK_WAITS
  # gather_table_lock_waits = false

  ## gather metrics from PERFORMANCE_SCHEMA.TABLE_IO_WAITS_SUMMARY_BY_INDEX_USAGE
  # gather_index_io_waits = false

  ## gather metrics from PERFORMANCE_SCHEMA.EVENT_WAITS
  # gather_event_waits = false

  ## gather metrics from PERFORMANCE_SCHEMA.FILE_SUMMARY_BY_EVENT_NAME
  # gather_file_events_stats = false

  ## gather metrics from PERFORMANCE_SCHEMA.EVENTS_STATEMENTS_SUMMARY_BY_DIGEST
  # gather_perf_events_statements             = false
  #
  ## gather metrics from PERFORMANCE_SCHEMA.EVENTS_STATEMENTS_SUMMARY_BY_ACCOUNT_BY_EVENT_NAME
  # gather_perf_sum_per_acc_per_event         = false
  #
  ## list of events to be gathered for gather_perf_sum_per_acc_per_event
  ## in case of empty list all events will be gathered
  # perf_summary_events                       = []

  ## the limits for metrics form perf_events_statements
  # perf_events_statements_digest_text_limit = 120
  # perf_events_statements_limit = 250
  # perf_events_statements_time_limit = 86400

  ## Some queries we may want to run less often (such as SHOW GLOBAL VARIABLES)
  ##   example: interval_slow = "30m"
  # interval_slow = ""

  ## Optional TLS Config (used if tls=custom parameter specified in server uri)
  # tls_ca = "/etc/telegraf/ca.pem"
  # tls_cert = "/etc/telegraf/cert.pem"
  # tls_key = "/etc/telegraf/key.pem"
  ## Use TLS but skip chain & host verification
  # insecure_skip_verify = false

字符串数据

某些字段可能会返回字符串数据。这对于需要数字数据的某些输出(例如 Prometheus)来说是没有用的。在这些情况下,用户可以使用 enum 处理器将字符串值转换为数字值。下面是一个使用 slave_slave_io_running 字段的示例,该字段可以有多种字符串值。

[[processors.enum]]
  namepass = "mysql"
  [[processors.enum.mapping]]
    field = "slave_slave_io_running"
    dest = "slave_slave_io_running_int"
    default = 4
    [processors.enum.mapping.value_mappings]
      Yes = 0
      No = 1
      Preparing = 2
      Connecting = 3

指标版本

metric_version = 2 时,各种字段类型问题以及命名不一致都会得到纠正。如果您在原始版本上有现有数据,启用此功能会在插入 InfluxDB 时由于类型更改而导致 字段类型错误。因此,您应该将 metric_version 保持未设置状态,直到您准备好迁移到新格式。

如果不需要保留旧数据,您可能希望删除冲突的测量值。

DROP SERIES from mysql
DROP SERIES from mysql_variables
DROP SERIES from mysql_innodb

否则,可以使用以下步骤进行迁移:

  1. 复制您的 mysql 插件配置,并添加 name_suffixmetric_version = 2,这将导致同时使用旧样式和新样式进行收集。

    [[inputs.mysql]]
      servers = ["tcp(127.0.0.1:3306)/"]
    
    [[inputs.mysql]]
      name_suffix = "_v2"
      metric_version = 2
    
      servers = ["tcp(127.0.0.1:3306)/"]
  2. 将所有受影响的 Telegraf 客户端升级到版本 >=1.6。

    将使用 name_suffix 创建新的测量值,例如:

    • mysql_v2
    • mysql_variables_v2
  3. 将图表、警报和其他支持代码更新为新格式。

  4. 现在您可以删除旧的 mysql 插件配置并删除旧的测量值。

如果您希望删除 name_suffix,可以使用 Kapacitor 将历史数据复制到默认名称。仅在停用旧的测量值名称后执行此操作。

  1. 使用上述技术写入多个位置。

    [[inputs.mysql]]
      servers = ["tcp(127.0.0.1:3306)/"]
      metric_version = 2
    
    [[inputs.mysql]]
      name_suffix = "_v2"
      metric_version = 2
    
      servers = ["tcp(127.0.0.1:3306)/"]
  2. 创建一个 TICKScript 来复制历史数据。

    dbrp "telegraf"."autogen"
    
    batch
        |query('''
            SELECT * FROM "telegraf"."autogen"."mysql_v2"
        ''')
            .period(5m)
            .every(5m)
            |influxDBOut()
                    .database('telegraf')
                    .retentionPolicy('autogen')
                    .measurement('mysql')
  3. 为您的脚本定义一个任务。

    kapacitor define copy-measurement -tick copy-measurement.task
  4. 运行任务处理您想要迁移的数据。

    kapacitor replay-live batch -start 2018-03-30T20:00:00Z -stop 2018-04-01T12:00:00Z -rec-time -task copy-measurement
  5. 验证复制的数据并对其他测量值重复此操作。

Metrics

  • 全局状态 - SHOW GLOBAL STATUSES 的所有数值和布尔值。
  • 全局变量 - SHOW GLOBAL VARIABLES 的所有数值和布尔值。
  • 从属状态 - SHOW SLAVE STATUS 的指标,当单源复制开启时收集指标。如果设置了多源复制,则一切都会有所不同,此指标不适用于多源复制,除非您设置了 gather_all_slave_channels = true。对于 MariaDB,应设置 mariadb_dialect = true 来处理字段名称和命令差异。如果启用了 gather_replica_status,则从 SHOW REPLICA STATUS 命令收集指标,对于 MariaDB 将是 SHOW ALL REPLICAS STATUS
    • slave_[列名]
  • 二进制日志 - 包括所有二进制文件的尺寸和数量的所有指标。需要在配置中启用。
    • binary_size_bytes(int, number)
    • binary_files_count(int, number)
  • 进程列表 - 来自每个用户的 processlist 的连接指标。它具有以下标签:
    • connections(int, number)
  • 用户统计 - 来自每个用户的 user statistics 的连接指标。它具有以下字段:
    • access_denied
    • binlog_bytes_written
    • busy_time
    • bytes_received
    • bytes_sent
    • commit_transactions
    • concurrent_connections
    • connected_time
    • cpu_time
    • denied_connections
    • empty_queries
    • hostlost_connections
    • other_commands
    • rollback_transactions
    • rows_fetched
    • rows_updated
    • select_commands
    • 服务器
    • table_rows_read
    • total_connections
    • total_ssl_connections
    • update_commands
    • user
  • Perf Table IO waits - 每个表和进程的 I/O 等待事件的总数和时间。它具有以下字段:
    • table_io_waits_total_fetch(float, number)
    • table_io_waits_total_insert(float, number)
    • table_io_waits_total_update(float, number)
    • table_io_waits_total_delete(float, number)
    • table_io_waits_seconds_total_fetch(float, milliseconds)
    • table_io_waits_seconds_total_insert(float, milliseconds)
    • table_io_waits_seconds_total_update(float, milliseconds)
    • table_io_waits_seconds_total_delete(float, milliseconds)
  • Perf index IO waits - 每个索引和进程的 I/O 等待事件的总数和时间。它具有以下字段:
    • index_io_waits_total_fetch(float, number)
    • index_io_waits_seconds_total_fetch(float, milliseconds)
    • index_io_waits_total_insert(float, number)
    • index_io_waits_total_update(float, number)
    • index_io_waits_total_delete(float, number)
    • index_io_waits_seconds_total_insert(float, milliseconds)
    • index_io_waits_seconds_total_update(float, milliseconds)
    • index_io_waits_seconds_total_delete(float, milliseconds)
  • Info schema autoincrement statuses - autoincrement 字段及其最大值。它具有以下字段:
    • auto_increment_column(int, number)
    • auto_increment_column_max(int, number)
  • InnoDB metrics - information_schema.INNODB_METRICS 中所有状态为“enabled”的指标。对于 MariaDB,请设置 mariadb_dialect = true 来使用 ENABLED=1
  • Perf table lock waits - 收集每个表和操作的 SQL 和外部锁等待事件的总数和时间。它具有以下字段。字段的单位因标签而异。
    • read_normal(float, number/milliseconds)
    • read_with_shared_locks(float, number/milliseconds)
    • read_high_priority(float, number/milliseconds)
    • read_no_insert(float, number/milliseconds)
    • write_normal(float, number/milliseconds)
    • write_allow_write(float, number/milliseconds)
    • write_concurrent_insert(float, number/milliseconds)
    • write_low_priority(float, number/milliseconds)
    • read(float, number/milliseconds)
    • write(float, number/milliseconds)
  • Perf events waits - 收集事件等待的总时间和数量。
    • events_waits_total(float, number)
    • events_waits_seconds_total(float, milliseconds)
  • Perf file events statuses - 收集文件事件状态。
    • file_events_total(float,number)
    • file_events_seconds_total(float, milliseconds)
    • file_events_bytes_total(float, bytes)
  • Perf events statements - 收集每个事件的属性。
    • events_statements_total(float, number)
    • events_statements_seconds_total(float, millieconds)
    • events_statements_errors_total(float, number)
    • events_statements_warnings_total(float, number)
    • events_statements_rows_affected_total(float, number)
    • events_statements_rows_sent_total(float, number)
    • events_statements_rows_examined_total(float, number)
    • events_statements_tmp_tables_total(float, number)
    • events_statements_tmp_disk_tables_total(float, number)
    • events_statements_sort_merge_passes_totals(float, number)
    • events_statements_sort_rows_total(float, number)
    • events_statements_no_index_used_total(float, number)
  • Table schema - 收集每个 schema 的统计信息。它具有以下测量值:
    • info_schema_table_rows(float, number)
    • info_schema_table_size_data_length(float, number)
    • info_schema_table_size_index_length(float, number)
    • info_schema_table_size_data_free(float, number)
    • info_schema_table_version(float, number)

标签

  • 所有测量值都具有以下标签:
    • server (收集指标的主机名)
  • Process list 测量值具有以下标签:
    • user (收集指标的用户名)
  • User Statistics 测量值具有以下标签:
    • user (收集指标的用户名)
  • Perf table IO waits 测量值具有以下标签:
    • schema
    • name (事件或进程的对象名称)
  • Perf index IO waits 具有以下标签:
    • schema
    • name
    • index
  • Info schema autoincrement statuses 具有以下标签:
    • schema
    • table
    • column
  • Perf table lock waits 具有以下标签:
    • schema
    • table
    • sql_lock_waits_total (包含此标签的字段为数字单位)
    • external_lock_waits_total (包含此标签的字段为数字单位)
    • sql_lock_waits_seconds_total (包含此标签的字段为毫秒单位)
    • external_lock_waits_seconds_total (包含此标签的字段为毫秒单位)
  • Perf events statements 具有以下标签:
    • event_name
  • Perf file events statuses 具有以下标签:
    • event_name
    • mode
  • Perf file events statements 具有以下标签:
    • schema
    • digest
    • digest_text
  • Table schema 具有以下标签:
    • schema
    • table
    • component
    • type
    • engine
    • row_format
    • create_options

示例输出


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2