Giter Club home page Giter Club logo

proxysql_tools's Introduction

Ref: http://seanlook.com/2017/07/16/mysql-proxysql-monitor/

ProxySQL能监控的信息不多,而且大部分是统计信息,不是性能数据。

mysql> show tables from stats;
+--------------------------------+
| tables                         |
+--------------------------------+
| global_variables               |
| stats_mysql_commands_counters  |
| stats_mysql_connection_pool    |
| stats_mysql_global             |
| stats_mysql_processlist        |
| stats_mysql_query_digest       |
| stats_mysql_query_digest_reset |
| stats_mysql_query_rules        |
+--------------------------------+

主要关心的指标都在表 stats_mysql_global 里面,源代码 diamond 目录下有个 proxysqlstat.py 脚本,是通过SHOW MYSQL STATUS命令,由diamond收集进程将指标上报到Graphite。有以下几个Metrics:

  • 并发数
    • Active_Transactions
    • Questions
  • 连接相关
    • Client_Connections_connected
    • Server_Connections_connected
    • Server_Connections_aborted
  • 内存相关
    • Query_Cache_Entries
    • Query_Cache_Memory_bytes
    • SQLite3_memory_bytes
    • ConnPool_memory_bytes
  • 流量相关
    • mysql_backend_buffers_bytes
    • mysql_frontend_buffers_bytes
    • mysql_session_internal_bytes
  • 其它
    • MySQL_Monitor_Workers
    • MySQL_Thread_Workers

但是这些远远不够,还有以下更值得关心的指标: 表 stats_mysql_connection_pool:

  • 对后端DB请求的网络延时 Latency
  • 对后端各个DB的请求数 Queries
  • 后端各个DB的当前活跃连接数 ConnUsed
  • 后端DB的状态 status

stats_mysql_processlist:

  • 每个用户的当前的连接数

stats_mysql_query_digest:

  • 各个类型的sql请求量比例、趋势

在我们的环境下使用的是 InfluxDB + Grafana,通过telegraf收集上报。上述所有的监控脚本见本仓库。

  • proxysql_stats.py:

    • 收集 stats_mysql_global 和 stats_mysql_connection_pool 中的信息,打印出 influxdb 数据上报格式
  • proxysql_stats_digest.py:

    • 收集 sql digest,收集的信息用于展示每类sql的执行趋势。 因为数据是累计值,所以这里做了增量计算,然后一方面上报给influxdb,一方面存入mysql,可以做更多用途。mysql的表结构 proxysql_stats_digest.sql 。 建议收集频率不要过高,比如10分钟一次。
  • grafana_proxysql_stats.json:

    • Grafana Dashboard,直接导入可用 。

除此外,还需要对proxysql进程的监控,如内存占用、CPU使用,这部分通过telegraf的 procstat 插件去做:

[[inputs.procstat]]
    exe = "proxysql"

[[inputs.exec]]

  # the command to run
  command = "/etc/telegraf/telegraf.d/proxysql_stats.py"

  ## Timeout for each command to complete.
  timeout = "10s"

  data_format = "influx"

对后端DB status和proxysql端口存活,设置告警。这样就有一个相对完整的ProxySQL监控方案了。

proxysql_tools's People

Contributors

seanlook avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.