• 使用 prometheus 监控 MySQL


    1. 下载 

    1. https://prometheus.io/download/
    2. wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz

    2.安装 mysqld_exporter

    1. tar -xvf mysqld_exporter-0.14.0.linux-amd64.tar.gz -C /usr/local
    2. cd /usr/local
    3. mv mysqld_exporter-0.14.0.linux-amd64 mysqld_exporter

    3. 创建mysql 监控账号

    1. CREATE USER 'prometheus'@'%' IDENTIFIED BY 'root' WITH MAX_USER_CONNECTIONS 10;
    2. GRANT PROCESS, REPLICATION CLIENT, REPLICATION SLAVE, SELECT ON *.* TO 'prometheus';

    4.创建 mysqld_exporter 用的mysql登录文件

    1. vi /usr/local/mysqld_exporter/my.cnf
    2. [client]
    3. host=127.0.0.1
    4. port=3306
    5. user=prometheus
    6. password=root

    5.启动 mysqld_exporter 进程

      

    1. ./mysqld_exporter --help
    2. nohup ./mysqld_exporter \
    3. --collect.info_schema.processlist.processes_by_user \
    4. --collect.info_schema.processlist.processes_by_host \
    5. --collect.mysql.user.privileges \
    6. --collect.info_schema.processlist \
    7. --collect.mysql.user \
    8. --collect.info_schema.tables \
    9. --collect.info_schema.innodb_tablespaces \
    10. --collect.info_schema.innodb_metrics \
    11. --collect.global_status \
    12. --collect.global_variables \
    13. --collect.slave_status \
    14. --collect.perf_schema.indexiowaits \
    15. --collect.perf_schema.tablelocks \
    16. --collect.perf_schema.eventsstatements \
    17. --collect.perf_schema.eventsstatementssum \
    18. --collect.perf_schema.eventswaits \
    19. --collect.auto_increment.columns \
    20. --collect.binlog_size \
    21. --collect.perf_schema.tableiowaits \
    22. --collect.perf_schema.replication_group_members \
    23. --collect.perf_schema.replication_group_member_stats \
    24. --collect.perf_schema.replication_applier_status_by_worker \
    25. --collect.info_schema.userstats \
    26. --collect.info_schema.clientstats \
    27. --collect.perf_schema.file_events \
    28. --collect.perf_schema.file_instances \
    29. --collect.perf_schema.memory_events \
    30. --collect.info_schema.innodb_cmpmem \
    31. --collect.info_schema.query_response_time \
    32. --collect.engine_innodb_status \
    33. --collect.info_schema.tablestats \
    34. --collect.info_schema.schemastats \
    35. --collect.info_schema.innodb_cmp \
    36. --collect.slave_hosts \
    37. --collect.info_schema.replica_host \
    38. --config.my-cnf=/usr/local/mysqld_exporter/my.cnf &
    39. #注意 \ 前后不能多空格

    6.检查是否有监控数据

    http://119.8.238.94:9104/metrics

     7. prometheus 中添加mysql监控

    1)创建MySQL监控动态配置文件

    1. 创建 prd_mysql.json vi /usr/local/prometheus/sd_config/prd_mysql.json ,添加如下内容
    2. [
    3. {
    4. "targets": [ "119.8.238.94:9104" ],
    5. "labels": {
    6. "env": "订单库",
    7. "job": "mysqld"
    8. }
    9. }
    10. ]

    2)修改 prometheus 配置文件

    1. 修改 prometheus 配置文件 prometheus.yml scrape_configs: 部分添加如下内容
    2. - job_name: "prd_mysql"
    3. file_sd_configs:
    4. - files: ['/usr/local/prometheus/sd_config/prd_mysql.json']
    5. refresh_interval: 120s

    3)检查 prometheus 配置文件是否能正常读取

    1. ./promtool check config prometheus.yml
    2. Checking prometheus.yml
    3. SUCCESS: prometheus.yml is valid prometheus config file syntax

    4)动态调整 prometheus 配置

    1. ##启动时加上 --web.enable-lifecycle 参数,后期可以通过如下方式动态调整prometheus配置,动态调整方式如下:
    2. curl -v --request POST 'http://localhost:9090/-/reload'
    3. curl -X POST http://localhost:9090/-/reload
    4. #如果启动时没有使用--web.enable-lifecycle,可以使用 kill -HUP pid 方案热加载

    8.查看 prometheus 中是否成功添加了该 instance

    9. grafana 中查看刚刚添加的mysql  

    1)在 grafana 中添加相应prometheus 数据源(如果该数据源也添加过忽略该步)

    grafana 添加 prometheus 数据源方法请见

    (7条消息) 通过 Grafana 对prometheus 监控做可视化_渔夫数据库笔记的博客-CSDN博客

    2)给该数据源添加 dashboard(如果已添加则忽略该步)

    采集配置好,正常采集有了数据之后,还需要为 Grafana 添加监控面板进行展示,如果只是看 MySQL 或 MariaDB 的一些概览情况,可以导入grafana.com
    的这个面板:https://grafana.com/grafana/dashboards/7362
    如果需要更丰富的面板,可以导入 percona 开源的一些面板,地址: https://github.com/percona/grafana-dashboards/tree/master/dashboards (导入 MySQL_
    开头的 json 文件中的内容即可)。

  • 相关阅读:
    elment-ui中el-table刷新
    关于Java代码如何项目部署
    浏览器不能访问阿里云ECS
    普冉PY32系列(六) 通过I2C接口驱动PCF8574扩展的1602LCD
    VEX —— Functions|Volume
    为什么新的5G标准将为技术栈带来更低的TCO
    MATLAB算法实战应用案例精讲-【集成算法】集成学习模型Boosting(附MATLAB、R语言和Python代码实现)
    记录一些Linux的指令(持续更新)
    Skywalking全部
    【软件工程】三、形式化说明技术 & 总体设计 & 详细设计
  • 原文地址:https://blog.csdn.net/shaochenshuo/article/details/126494537