TiDB集群数据监控

TiDB 监控框架概述

TiDB 使用开源时序数据库 Prometheus 作为监控和性能指标信息存储方案,使用 Grafana 作为可视化组件进行展示。

Prometheus 在 TiDB 中的应用

Prometheus 是一个拥有多维度数据模型的、灵活的查询语句的时序数据库。Prometheus 作为热门的开源项目,拥有活跃的社区及众多的成功案例。

Prometheus 提供了多个组件供用户使用。目前,TiDB 使用了以下组件:

  • Prometheus Server:用于收集和存储时间序列数据。
  • Client 代码库:用于定制程序中需要的 Metric。
  • Alertmanager:用于实现报警机制。

其结构如下图所示:
在这里插入图片描述

Grafana 在 TiDB 中的应用

Grafana 是一个开源的 metric 分析及可视化系统。TiDB 使用 Grafana 来展示 TiDB 的各项性能指标。如下图所示:
在这里插入图片描述

TiDB 集群监控

TiDB 提供了以下两种接口来监控集群状态:

  • 状态接口:通过 HTTP 接口对外汇报组件的信息。
  • Metrics 接口:使用 Prometheus 记录组件中各种操作的详细信息,使用 Grafana 进行可视化展示。

使用状态接口

状态接口用于监控组件的一些基本信息,并且可以作为 keepalive 的监测接口。另外,通过 PD 的状态接口可以看到整个 TiKV 集群的详细信息。

TiDB Server

  • TiDB API 地址:http:// h o s t : {host}: host:{port}
  • 默认端口:10080
  • 各类 api_name 详细信息:参见 TiDB API 文档
    以下示例中,通过访问 http:// h o s t : {host}: host:{port}/status 获取当前 TiDB Server 的状态,并判断该 TiDB Server 是否存活。结果以 JSON 格式返回:
curl http://127.0.0.1:10080/status
{
    connections: 0,  # 当前 TiDB Server 上的客户端连接数
    version: "5.7.25-TiDB-v3.0.0-beta-250-g778c3f4a5",  # TiDB 版本号
    git_hash: "778c3f4a5a716880bcd1d71b257c8165685f0d70"  # TiDB 当前代码的 Git Hash
}

PD Server

  • PD API 地址:http:// h o s t : {host}: host:{port}/pd/api/v1/${api_name}
  • 默认端口:2379
  • 各类 api_name 详细信息:参见 PD API Doc

通过该接口可以获取当前所有 TiKV 节点的状态以及负载均衡信息。下面以一个单节点的 TiKV 集群为例,说明用户需要了解的信息:

curl http://127.0.0.1:2379/pd/api/v1/stores
{
  "count": 1,  # TiKV 节点数量
  "stores": [  # TiKV 节点的列表
    # 集群中单个 TiKV 节点的信息
    {
      "store": {
        "id": 1,
        "address": "127.0.0.1:20160",
        "version": "3.0.0-beta",
        "state_name": "Up"
      },
      "status": {
        "capacity": "20 GiB",  # 存储总容量
        "available": "16 GiB",  # 存储剩余容量
        "leader_count": 17,
        "leader_weight": 1,
        "leader_score": 17,
        "leader_size": 17,
        "region_count": 17,
        "region_weight": 1,
        "region_score": 17,
        "region_size": 17,
        "start_ts": "2019-03-21T14:09:32+08:00",  # 启动时间
        "last_heartbeat_ts": "2019-03-21T14:14:22.961171958+08:00",  # 最后一次心跳的时间
        "uptime": "4m50.961171958s"
      }
    }
  ]

使用 metrics 接口

Metrics 接口用于监控整个集群的状态和性能。
如果使用 TiDB Ansible 部署 TiDB 集群,监控系统(Prometheus 和 Grafana)会同时部署。
如果使用其他方式部署 TiDB 集群,在使用 metrics 接口前,需先部署 Prometheus 和 Grafana
成功部署 Prometheus 和 Grafana 之后,配置 Grafana

部署 Prometheus 和 Grafana

假设 TiDB 的拓扑结构如下:

节点主机 IP服务
Node1192.168.199.113PD1, TiDB, node_export, Prometheus, Grafana
Node2192.168.199.114PD2, node_export
Node3192.168.199.115PD3, node_export
Node4192.168.199.116TiKV1, node_export
Node5192.168.199.117TiKV2, node_export
Node6192.168.199.118TiKV3, node_export

第 1 步:下载二进制包

下载二进制包:

wget https://github.com/prometheus/prometheus/releases/download/v2.2.1/prometheus-2.2.1.linux-amd64.tar.gz &&
wget https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.linux-amd64.tar.gz &&
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3.linux-x64.tar.gz

注意:

wget https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.linux-amd64.tar.gz可能下载不下来,可以下载wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.15.2.linux-amd64.tar.gz

解压二进制包:

tar -xzf prometheus-2.2.1.linux-amd64.tar.gz &&
tar -xzf node_exporter-0.15.2.linux-amd64.tar.gz &&  #要和上面保持一致
tar -xzf grafana-4.6.3.linux-x64.tar.gz

第 2 步:在 Node1,Node2,Node3,Node4 上启动 node_exporter

cd node_exporter-0.15.2.linux-amd64

启动 node_exporter 服务:

./node_exporter --web.listen-address=":9100" \
    --log.level="info" &

第 3 步:在 Node1 上启动 Prometheus

编辑 Prometheus 的配置文件:

cd prometheus-2.2.1.linux-amd64 &&
vi prometheus.yml
...

global:
  scrape_interval:     15s
  evaluation_interval: 15s
  # scrape_timeout 设置为全局默认值 (10s)
    external_labels:
      cluster: 'test-cluster'
      monitor: "prometheus"

scrape_configs:
  - job_name: 'overwritten-nodes'
    honor_labels: true  # 不要覆盖 job 和实例的 label
    static_configs:
    - targets:
      - '192.168.199.113:9100'  #记得更改成你的IP地址
      - '192.168.199.114:9100'
      - '192.168.199.115:9100'
      - '192.168.199.116:9100'
      - '192.168.199.117:9100'
      - '192.168.199.118:9100'

  - job_name: 'tidb'
    honor_labels: true  # 不要覆盖 job 和实例的 label
    static_configs:
    - targets:
      - '192.168.199.113:10080' #记得更改成你的IP地址

  - job_name: 'pd'
    honor_labels: true   # 不要覆盖 job 和实例的 label
    static_configs:
    - targets:
      - '192.168.199.113:2379'  #记得更改成你的IP地址
      - '192.168.199.114:2379'
      - '192.168.199.115:2379'

  - job_name: 'tikv'
    honor_labels: true  # 不要覆盖 job 和实例的 label
    static_configs:
    - targets:
      - '192.168.199.116:20180'  #记得更改成你的IP地址
      - '192.168.199.117:20180'
      - '192.168.199.118:20180'

...

启动 Grafana 服务:

./prometheus \
    --config.file="./prometheus.yml" \
    --web.listen-address=":9090" \
    --web.external-url="http://192.168.199.113:9090/" \
    --web.enable-admin-api \
    --log.level="info" \
    --storage.tsdb.path="./data.metrics" \
    --storage.tsdb.retention="15d" &

第 4 步:在 Node1 上启动 Grafana

编辑 Grafana 的配置文件:

cd grafana-4.6.3 &&
vi conf/grafana.ini
...

[paths]
data = ./data
logs = ./data/log
plugins = ./data/plugins
[server]
http_port = 3000
domain = 192.168.199.113  #记得更改成你的IP
[database]
[session]
[analytics]
check_for_updates = true
[security]
admin_user = admin  #初始用户名
admin_password = admin  #初始密码
[snapshots]
[users]
[auth.anonymous]
[auth.basic]
[auth.ldap]
[smtp]
[emails]
[log]
mode = file
[log.console]
[log.file]
level = info
format = text
[log.syslog]
[event_publisher]
[dashboards.json]
enabled = false
path = ./data/dashboards
[metrics]
[grafana_net]
url = https://grafana.net

...

启动 Grafana 服务:

./bin/grafana-server \
    --config="./conf/grafana.ini" &

配置 Grafana

第 1 步:添加 Prometheus 数据源

  1. 登录 Grafana 界面。
    1、默认地址:http://你的ip:3000
    2、默认账户:admin
    3、默认密码:admin
    

在这里插入图片描述

  1. 点击 Grafana 图标打开侧边栏。
    在这里插入图片描述
  2. 在侧边栏菜单中,点击 Data Source。
    在这里插入图片描述
  3. 点击 Add data source。
    在这里插入图片描述
  4. 指定数据源的相关信息:
    在这里插入图片描述
    1、在 Name 处,为数据源指定一个名称。
    2、在 Type 处,选择 Prometheus。
    3、在 URL 处,指定 Prometheus 的 IP 地址。
    4、根据需求指定其它字段。
  5. 点击 Add 保存新的数据源。

第 2 步:导入 Grafana 面板

执行以下步骤,为 PD Server、TiKV Server 和 TiDB Server 分别导入 Grafana 面板:

  1. 点击侧边栏的 Grafana 图标。
    在这里插入图片描述
  2. 在侧边栏菜单中,依次点击 Dashboards > Import 打开 Import Dashboard 窗口。
    在这里插入图片描述
    在这里插入图片描述
  3. 点击 Upload .json File 上传对应的 JSON 文件(下载 TiDB Grafana 配置文件)。
    在这里插入图片描述

注意:

TiKV、PD 和 TiDB 面板对应的 JSON 文件分别为 tikv_summary.jsontikv_details.jsontikv_trouble_shooting.jsonpd.jsontidb.jsontidb_summary.json

Grafana版本不一样,操作界面也不一样。

4. 选择文件

在这里插入图片描述
5. 点击 Import,Prometheus 面板即导入成功。

查看组件 metrics

在顶部菜单中,点击 New dashboard,选择要查看的面板。
在这里插入图片描述
可查看以下集群组件信息:

  • TiDB Server:

    • query 处理时间,可以看到延迟和吞吐
    • ddl 过程监控
    • TiKV client 相关的监控
    • PD client 相关的监控
  • PD Server:

    • 命令执行的总次数
    • 某个命令执行失败的总次数
    • 某个命令执行成功的耗时统计
    • 某个命令执行失败的耗时统计
    • 某个命令执行完成并返回结果的耗时统计
  • TiKV Server:

    • GC 监控
    • 执行 KV 命令的总次数
    • Scheduler 执行命令的耗时统计
    • Raft propose 命令的总次数
    • Raft 执行命令的耗时统计
    • Raft 执行命令失败的总次数
    • Raft 处理 ready 状态的总次数

MySql监控

数据源准备

在这里插入图片描述

登录点这里

添加数据源

  1. 点击侧边栏的 Grafana 图标,然后点击Data Sources。

在这里插入图片描述

  1. 点击Add data source图标。

在这里插入图片描述

  1. 在相应的地方填上相应的数据。
    在这里插入图片描述
    在这里插入图片描述
  2. 点击Add,添加成功。

回到首页,做监控

  1. 依次点击grafana图标、Dashboards、New。

在这里插入图片描述

  1. 点击Table创建表格。
    在这里插入图片描述

  2. 依次点击Panel Title、Edit。
    在这里插入图片描述

  3. 点击Metrics、然后点击Data Source选择你的数据库。

在这里插入图片描述

  1. 把之前写好的sql语句复制过来,然后点击右侧小眼睛,出现数据。
    在这里插入图片描述
  2. 点击General,在Title哪里起个名字。
    在这里插入图片描述
  3. 点击保存按钮,保存。在这里插入图片描述
  4. 在起个名字,点击Save保存。
    在这里插入图片描述
  5. 点击这里看一下。
    在这里插入图片描述
  6. 已经添加成功。
    在这里插入图片描述
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TiDB集群环境的部署可以通过使用TiUP来完成。TiUP是TiDB 4.0版本引入的集群运维工具,它提供了集群管理组件TiUP cluster,可以用于管理TiDB集群的部署、启动、关闭、销毁、弹性扩缩容、升级等工作。通过执行TiUP命令,可以输出当前通过TiUP cluster管理的所有集群信息,包括集群名称、部署用户、版本、密钥信息等。 具体的部署步骤如下: 1. 安装TiUP组件:执行TiUP命令进行组件安装。 2. 创建集群配置文件:使用TiUP cluster命令创建一个新的集群配置文件。 3. 配置集群参数:根据需求修改集群配置文件中的参数,例如副本数、节点数量等。 4. 部署TiDB集群:执行TiUP cluster命令进行集群的部署。 5. 检查部署情况:执行TiUP cluster命令检查部署的TiDB集群情况。 通过以上步骤,可以完成TiDB集群环境的部署和配置。使用TiUP作为集群管理工具,可以方便地进行TiDB生态下各个组件的管理和运维工作,极大地降低了管理难度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [使用 TiUP 部署 TiDB 集群](https://blog.csdn.net/weixin_42241611/article/details/125518329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [TIDB集群部署](https://blog.csdn.net/qq_21040559/article/details/127716535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值