目前阿里云InfluxDB®已经集成TIG(Telegraf/InfluxDB/Grafana)生态,正在开展首月一元购活动。
MySQL采用TIG Stack监控架构如下,本文主要指导如何采集MySQL指标到阿里云InfluxDB®,通过Grafana仪表盘分析采集数据并展示。
数据采集
阿里云InfluxDB®的数据采集分为两种:阿里云InfluxDB®数据采集服务与自建Telegraf数据采集。
MySQL采集指标说明
Telegraf采集Mysql指标数据可以分为以下六类,在不同的MySQL服务器上所采集到的measurement或field会略有不同,具体可以参考官方文档。
measurement | 采集数据 |
mysql | 记录在MySQL上执行SHOW GLOBAL STATUSES和SHOW SLAVE STATUSES后所得到的状态信息,包括global status和slave status(如有)。每个状态信息是mysql中的一个field,各个状态的解释可查看文档。 |
mysql_variables | 记录在MySQL上执行SHOW GLOBAL VARIABLES后所得到的全局变量值。每个变量值是mysql_variables中的一个field,各个变量的解释可查看文档。 |
mysql_process_list | 根据MySQL中的表格INFORMATION_SCHEMA.PROCESSLIST,采集每个用户在不同状态下的线程数量。可查考MySQL文档。 |
mysql_users | 采集每个用户的连接数。 |
mysql_user_statistics | 采集每个用户的统计信息。 |
mysql_table_schema | 采集自增(auto-increment)列的值。 |
mysql_innodb | 采集MySQL的INFORMATION_SCHEMA.INNODB_METRICS表中状态为开启的计数器(counter)的值。INFORMATION_SCHEMA.INNODB_METRICS提供InnoDB的性能信息,该表包含很多计数器。 |
阿里云InfluxDB®采集服务
目前阿里云InfluxDB®的控制台提供了MySQL数据采集服务,用户提供采集源信息,根据提示安装相应插件,便可自动采集MySQL指标数据到阿里云InfluxDB®,详见文档。
添加采集配置
- 采集源连接串:格式是[protocol[(address)]]/[?tls=[true|false|skip-verify|custom],具体可以参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name。如某需要采集的对象是云上MySQL实例,对外访问地址是:xxxx.mysql.rds.aliyuncs.com,采用https协议,则采集源连接串为:tcp(xxxx.mysql.rds.aliyuncs.com:3306)/?tls=false;
- 采集源用户名/密码:采集工具连接MySQL实例的用户名与密码,填写时需要保证在采集工具所安装的机器上,采集用户名通过采集源填写的连接方式能成功连接MySQL实例;
- 授权帐号/密码:数据写入InfluxDB的用户名与密码;
- 数据写入DB/存储策略:数据写入InfluxDB库名,填写时必须保证授权帐号对写入InfluxDB数据库有读写权限,相关设置可以参考文档。
添加采集源
公网与专用网络的区别是采集工具向阿里云InfluxDB®发送数据数据走公网或者专有网络链路,在添加前需要在控制台网络白名单中添加采集工具安装工具机器出口IP,以确保采集工具能够成功与阿里云InfluxDB®建立连接。
选择机器执行上面命令安装采集工具,刷新后便可在采集源列表中看到该采集源,点击“选择采集配置”配置所要采集的对象:
最后点击“完成并启动采集”开启采集任务。
自建Telegraf采集
自建Telegraf采集需要下载Telegraf并配置相关采集信息,详见文档。
Telegraf安装
Telegraf官方介绍了各种下载安装的方法,根据自己的系统版本和配置,下载对应的安装包安装。
Telegraf input配置
Telegraf input配置主要是配置采集源相关配置信息,填写时需要保证Mysql用户在Telegraf安装机器上能连接server中填写的mysql实例。
[[inputs.mysql]]
servers = ["mysqlUser:mysqlPassword@tcp(xxxx.mysql.rds.aliyuncs.com:3306)/?tls=false"]
metric_version = 2
perf_events_statements_digest_text_limit = 120
perf_events_statements_limit = 250
perf_events_statements_time_limit = 86400
table_schema_databases = []
gather_table_schema = false
gather_process_list = true
gather_user_statistics = false
gather_info_schema_auto_inc = true
gather_innodb_metrics = true
gather_slave_status = true
gather_binary_logs = false
gather_table_io_waits = false
gather_table_lock_waits = false
gather_index_io_waits = false
gather_event_waits = false
gather_file_events_stats = false
gather_perf_events_statements = false
interval_slow = "30m"
Telegraf output配置
Telegraf output配置主要是配置写入阿里云InfluxDB®相关信息,填写时需要保证数据库已经创建,相应的用户对数据库有读、写权限。相关示例如下:
[[outputs.influxdb]]
urls = ["https://xxxx.influxdata.rds.aliyuncs.com:3242"]
database = "mysql"
skip_database_creation = true
retention_policy = "autogen"
username = "InfluxDBUserName"
password = "InfluxDBPassword"
数据展示
当前阿里云InfluxDB®的最新版本已经集成了TIG生态,用户可以在控制台添加Grafana用户和数据源。
以上面采集MySQL指标为例,建立下面所示仪表盘:
用户可以自建或者在Grafana官方社区导入仪表盘模板,这里选取导入的模板ID为 2765,选择对应的数据源,生成的报表如下所示:
总结
目前阿里云InfluxDB®已经商业化一段时间,我们在优化性能的同时也保证提供稳定的服务。阿里云InfluxDB®在DevOps监控、车联网、智慧交通、金融和IOT传感器数据采集分析方面有广泛的用途,相比于开源InfluxDB也具有不少优势,欢迎用户购买体验。