You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 4.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. # mysql
  2. mysql 监控采集插件,核心原理就是连到 mysql 实例,执行一些 sql,解析输出内容,整理为监控数据上报。
  3. ## Configuration
  4. categraf 的 `conf/input.mysql/mysql.toml`
  5. ```toml
  6. [[instances]]
  7. # 要监控 MySQL,首先要给出要监控的MySQL的连接地址、用户名、密码
  8. address = "127.0.0.1:3306"
  9. username = "root"
  10. password = "1234"
  11. # # set tls=custom to enable tls
  12. # parameters = "tls=false"
  13. # 通过 show global status监控mysql,默认抓取一些基础指标,
  14. # 如果想抓取更多global status的指标,把下面的配置设置为true
  15. extra_status_metrics = true
  16. # 通过show global variables监控mysql的全局变量,默认抓取一些常规的
  17. # 常规的基本够用了,扩展的部分,默认不采集,下面的配置设置为false
  18. extra_innodb_metrics = false
  19. # 监控processlist,关注较少,默认不采集
  20. gather_processlist_processes_by_state = false
  21. gather_processlist_processes_by_user = false
  22. # 监控各个数据库的磁盘占用大小
  23. gather_schema_size = false
  24. # 监控所有的table的磁盘占用大小
  25. gather_table_size = false
  26. # 是否采集系统表的大小,通过不用,所以默认设置为false
  27. gather_system_table_size = false
  28. # 通过 show slave status监控slave的情况,比较关键,所以默认采集
  29. gather_slave_status = true
  30. # # timeout
  31. # timeout_seconds = 3
  32. # # interval = global.interval * interval_times
  33. # interval_times = 1
  34. # 为mysql实例附一个instance的标签,因为通过address=127.0.0.1:3306不好区分
  35. # important! use global unique string to specify instance
  36. # labels = { instance="n9e-10.2.3.4:3306" }
  37. ## Optional TLS Config
  38. # use_tls = false
  39. # tls_min_version = "1.2"
  40. # tls_ca = "/etc/categraf/ca.pem"
  41. # tls_cert = "/etc/categraf/cert.pem"
  42. # tls_key = "/etc/categraf/key.pem"
  43. ## Use TLS but skip chain & host verification
  44. # insecure_skip_verify = true
  45. # 自定义SQL,指定SQL、返回的各个列那些是作为metric,哪些是作为label
  46. # [[instances.queries]]
  47. # mesurement = "users"
  48. # metric_fields = [ "total" ]
  49. # label_fields = [ "service" ]
  50. # # field_to_append = ""
  51. # timeout = "3s"
  52. # request = '''
  53. # select 'n9e' as service, count(*) as total from n9e_v5.users
  54. # '''
  55. ```
  56. ## 监控多个实例
  57. 大家最常问的问题是如何监控多个mysql实例,实际大家对toml配置学习一下就了解了,`[[instances]]` 部分表示数组,是可以出现多个的,举例:
  58. ```toml
  59. [[instances]]
  60. address = "10.2.3.6:3306"
  61. username = "root"
  62. password = "1234"
  63. labels = { instance="n9e-10.2.3.6:3306" }
  64. [[instances]]
  65. address = "10.2.6.9:3306"
  66. username = "root"
  67. password = "1234"
  68. labels = { instance="zbx-10.2.6.9:3306" }
  69. [[instances]]
  70. address = "/tmp/mysql.sock"
  71. username = "root"
  72. password = "1234"
  73. labels = { instance="zbx-localhost:3306" }
  74. ```
  75. ## 监控大盘
  76. 夜莺内置了 mysql 相关的监控大盘,内置了至少 4 个仪表盘:
  77. ### mysql_by_categraf_instance
  78. 这个大盘是使用 categraf 作为采集器,使用 instance 作为大盘变量,所以上例采集配置中都有一个 instance 的标签,就是和这个大盘配合使用的。
  79. ### mysql_by_categraf_ident
  80. 这个大盘是使用 categraf 作为采集器,使用 ident 作为大盘变量,即在查看 mysql 监控指标的时候,先通过大盘选中宿主机器,再通过机器找到 mysql 实例。
  81. ### dashboard-by-aws-rds
  82. 这是网友贡献的大盘,采集的 aws 的 rds 相关的数据制作的大盘。欢迎各位网友贡献大盘,这是一个很好的共建社区的方式。把您做好的大盘导出为 JSON,提 PR 到 [这个目录](https://github.com/ccfos/nightingale/tree/main/integrations/MySQL/dashboards) 下即可。
  83. ### mysql_by_exporter
  84. 这是使用 mysqld_exporter 作为采集器制作的大盘。
  85. ## 告警规则
  86. 夜莺内置了 mysql 相关的告警规则,克隆到自己的业务组即可使用。也欢迎大家一起来通过 PR 完善修改这个内置的 [告警规则](https://github.com/ccfos/nightingale/tree/main/integrations/MySQL/alerts)。