图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)

bashendan
发布于 2023-11-30 10:32
浏览
0收藏

三、使用Grafana

1. 添加Prometheus数据源

我们可以进入Grafana对监控的内容做一个图形的展示,登入​​http://172.17.137.104:3000/​

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

输入默认用户名​admin​,默认密码​admin​,之后会提示你修改密码,然后就成功登入Grafana

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

进入后添加Prometheus的数据源,在​Connections​里有​Data sources​,总之找到​Data sources​即可

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

点击​Add data source​选择​Prometheus​,进入配置

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

在红框处填写Prometheus地址,因为本文部署在本机,所以是localhost,填写完成后滑动页面到最下方,点击​​Save & test​​保存和测试

2.导入Grafana仪表盘

下载Grafana仪表盘➥ ​https://grafana.com/grafana/dashboards/

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

红框框起来的就是我们需要下载的Node Exporter Full,如果首页没有展示的话,可以直接搜索

点击进去,选择​​Copy ID to clipboard​​复制ID

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

进入​http://172.17.137.104:3000/​到Grafana上,选择​Dashboards​,点击​New​

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

选择​Import​

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

在红框处粘贴刚刚复制的,其实也就是​1860​,接着点击​LOAD​加载

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

可以修改一下名字,在选择下​Prometheus​点击​Import​导入即可

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

这样就完成了Grafana对Prometheus数据的展示

四、监控GreatSQL

不建议采用GreatSQL的root用户监控,因为root的权限非常大,所以我们进入GreatSQL先创建一个用于监控的用户

greatsql> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'GreatSQL@666';
greatsql> GRANT PROCESS,REPLICATION CLIENT,SELECT ON *.* TO 'exporter'@'localhost';

接下来需要安装​​mysqld_exporter​​,本文依旧采用二进制方式安装

在​https://prometheus.io/download/​​中找到​​mysqld_exporter​​,下载即可

$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz
#验证一下是否下载完整
$ sha256sum mysqld_exporter-0.15.0.linux-amd64.tar.gz
$ tar -xvf mysqld_exporter-0.15.0.linux-amd64.tar.gz

创建一个连接数据库的文件​​.mysqld_exporter.cnf​

$ vi /usr/local/prometheus/mysqld_exporter-0.15.0.linux-amd64/.mysqld_exporter.cnf
#填入以下内容即可
[client]
user=exporter
password=GreatSQL@666
host=localhost
port=3306

创建 Systemd 服务

$ vi /lib/systemd/system/mysqld_exporter.service
[Unit]
Description=Prometheus GreatSQL
After=network.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/usr/local/prometheus/mysqld_exporter-0.15.0.linux-amd64/mysqld_exporter \
  --config.my-cnf=/usr/local/prometheus/mysqld_exporter-0.15.0.linux-amd64/.mysqld_exporter.cnf \
  --collect.global_status \
  --collect.auto_increment.columns \
  --collect.info_schema.processlist \
  --collect.binlog_size \
  --collect.info_schema.tablestats \
  --collect.global_variables \
  --collect.info_schema.innodb_metrics \
  --collect.info_schema.query_response_time \
  --collect.info_schema.userstats \
  --collect.info_schema.tables \
  --collect.perf_schema.tablelocks \
  --collect.perf_schema.file_events \
  --collect.perf_schema.eventswaits \
  --collect.perf_schema.indexiowaits \
  --collect.perf_schema.tableiowaits \
  --collect.slave_status \
  --collect.perf_schema.replication_group_members \
  --collect.perf_schema.replication_group_member_stats \
  --web.listen-address=0.0.0.0:9104

[Install]
WantedBy=multi-user.target

通知 Systemd 重新加载配置文件

$ systemctl daemon-reload

启动​​alertmanager.service​

$ systemctl start mysqld_exporter.service

若启动失败可自行排查​​journalctl -u mysqld_exporter.service -f​

访问一下看看能否成功​​http://172.17.137.104:9104​

1.添加Prometheus配置

安装完成后还需要添加Prometheus配置,为避免大家打错,这里采用追加写入

$ cat >> /usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus.yml <<"EOF"
# mysqld-exporter配置
  - job_name: "mysqld-exporter"
    static_configs:
      - targets: ["localhost:9104"]
        labels:
          instance: prometheus服务器
EOF

重载Prometheus配置

$ curl -X POST http://localhost:9090/-/reload

Prometheus web上检查一下​​ http://172.17.137.104:9090/​​​,点击​​Status​​​->​​Targets​

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

2.增加触发器配置文件

编辑​​prometheus.yml​​​在​​rule_files:​​​添加​​- "alert.yml"​​,前面缩进只需保留两格!

$ vi /usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus.yml

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "alert.yml"
  - "rules/*.yml"  <-添加这里,注意缩进2格即可
  # - "first_rules.yml"
  # - "second_rules.yml"

表示把rules文件夹下的所有yml文件都导入进来

$ mkdir /usr/local/prometheus/prometheus-2.45.0.linux-amd64/rules
$ vi /usr/local/prometheus/prometheus-2.45.0.linux-amd64/rules/mysqld.yml
groups:
- name: GreatSQL
  rules:
  # 任何实例超过30s无法联系的情况发出告警
  - alert: GreatSQLDown
    expr: mysql_up == 0
    for: 30s
    labels:
      severity: critical
    annotations:
      summary: "GreatSQL Down,实例:{{ $labels.instance }}"
      description: "连接不上GreatSQL了,当前状态为:{{ $value }}"

类似的告警信息都可以自行编写

检查一下配置文件,出现​​SUCCESS: prometheus.yml is valid prometheus config file syntax​​即为成功

$ cd /usr/local/prometheus/prometheus-2.45.0.linux-amd64
$ ./promtool check config prometheus.yml
Checking prometheus.yml
  SUCCESS: 2 rule files found
 SUCCESS: prometheus.yml is valid prometheus config file syntax
Checking alert.yml
  SUCCESS: 1 rules found
Checking rules/mysqld.yml
  SUCCESS: 1 rules found

接下来重启一下 Prometheus 或重新加载配置文件

$ systemctl restart prometheus
# 二选一即可
$ curl -X POST http://localhost:9090/-/reload

再次访问​​http://172.17.137.104:9093/​​​,并检查​​Status​​,确认没有问题

3.导入Grafana仪表盘

展示 Prometheus 从 mysql_exporter 收集到的数据,添加仪表盘ID​​7362​

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

修改名称后点击​Import​即可

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

可以看到页面中已经展示了许多内容,例如GreatSQL数据库运行的时间,QPS值,InnoDB Buffer Pool Size,Buffer Poll of Total RAM等

这里​​Buffer Poll of Total RAM​​值有些低,说明设置的InnoDB buffer pool大小不对,应该设置约占用总内存的50%到75%,这样可以合理利用内存,提高缓存命中率。

来简单看几个监控项目的意义和内容

  • ​MySQL Connections​​,监控GreatSQL的连接数,有最大连接数及最大使用连接数
  • ​MySQL Client Thread Activity​​,监控GreatSQL的活动线程数,有连接线程数(Threads Connected)和运行线程数(Threads Running)
  • ​MySQL Table Locks​​,监控GreatSQL的表锁,我们可以看到GreatSQL从存储引擎请求了多少表级锁。在InnoDB的情况下,很多时候锁实际上可能是行锁,因为它只在少数特定情况下使用表级锁。比较“立即锁定”和“等待锁定”最有用。如果等待的锁数正在上升,则表示存在锁争用。否则,锁立即上升和下降是正常活动。

查看下QPS是如何监控的,鼠标移动到内容的右上角,会出现三个点,点击​​Edit​​,进入编辑

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

可以看到如下内容

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

这段监控规则中使用了rate()和irate()函数来计算GreatSQL queries状态计数器的速率。

  • mysql_global_status_queries{instance="$host"} 表示提取实例host的queries全局状态计数器。
  • rate()函数计算该计数器在$interval时间段内的每秒速率。
  • irate()函数计算该计数器在最近5分钟的每个瞬时速率。
  • 或运算符表示取这两者中的较大值。

如果觉得你想监控的内容没有你想要的,可以点击右上角​​Add​​​,点击​​Visualization​​添加监控内容

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

例如我想添加一个​group_replication_flow_control_count​MGR累计触发流控的次数,在​Select metric​中搜索想监控的状态,

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

label标签

Label filters用于过滤和选择时间序列数据。它可以针对特定的标签值来选择显示哪些时间序列。

例如​​instance="192.168.1.1:9090"​​表示只选择instance标签值为"192.168.1.1:9090"的时间序列。

可以在Grafana的面板中使用Label filters字段来指定过滤条件,其作用主要包括:

  • 选择特定实例的数据:如​​instance="A"​​ 只看实例A的数据
  • 查看特定模式匹配的实例:如​​instance=~"10\\.8\\..*"​​选取符合模式的实例
  • 查看某个状态的序列:​​state="200"​​ 只看状态码为200的
  • 组合多个标签进行过滤:​​instance=~"1\\d\\.8\\..*"​​​,​​state!="500"​
  • 也可以直接输入PromQL进行各种复杂过滤

Operations

Operations选项允许对查询结果进行各种操作,常用的操作及含义如下:

  • Rate:计算计数器的增长速率,常用于计数器指标的速率转换,如QPS。
  • Delta:计算时间序列的增量变化值。
  • Derivative:计算时间序列的一阶导数,表示瞬时变化率。
  • Integral:对时间序列求积分,计算面积图。
  • Aggregation:对结果series做聚合,如平均,最大最小值等。
  • Transform:进行数学变换,如log等。
  • Aliasing:结果串进行重命名。
  • Group by:分组归类。

我们可以选中Metric后,在Operations下拉列表中选择所需要的计算操作。这些操作无需修改PromQL查询语句,在结果集上进行,可以方便地衍生出新的时间序列。例如可以将 COUNTER 计数器转换为 QPS 速率等。这为Grafana提供了灵活的统计和分析能力。

添加完成参数后点击​​Apply​​应用即可,回到界面上就可以看到刚刚添加的监控项了

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

记得要对整个仪表盘也保存,点击右上角图标如下所示,保存即可

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

也可以对表的情况进行监控,只需导入仪表盘ID​9625​

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)-鸿蒙开发者社区

至此,通过Prometheus监控GreatSQL到此结束,下部文章将介绍如何使用告警功能

使用Prometheus并不太好监控GreatSQL的MGR,推荐还是使用PMM来监控

欢迎阅读《使用PMM图形化监控MySQL MGR动态》​https://mp.weixin.qq.com/s/8v94kxczl5m0MFcp_Dm87w

相关文章:


Enjoy GreatSQL :)


文章转载自公众号:GreatSQL社区

分类
标签
已于2023-11-30 10:32:34修改
收藏
回复
举报
回复
    相关推荐