前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据传输 | 如何搭建 DTLE 的监控系统

数据传输 | 如何搭建 DTLE 的监控系统

作者头像
爱可生开源社区
发布2021-09-08 15:39:10
5080
发布2021-09-08 15:39:10
举报
文章被收录于专栏:爱可生开源社区

背景:

虽然在 DTLE 的文档里提供各种监控项的介绍,但是对于不熟悉 prometheus 和 grafana 配置的同学来说上手还是有些难度的。今天我就使用 DTLE 3.21.07.0 来搭建一个 DTLE 的监控系统。

一、搭建 DTLE 运行环境

  • 配置两个节点的 DTLE 集群来演示,其拓扑如下:

在修改 DTLE 配置文件的时候需要注意以下两点:

  1. 开启 DTLE 的监控,确保 publish_metrics 的值为 ture
  2. 开启 nomad 的监控,确保正确配置 telemetry (https://www.nomadproject.io/docs/configuration/telemetry)

这里以dtle-src-1的配置为例,具体配置参考节点配置(https://github.com/actiontech/dtle-docs-cn/blob/master/4/4.1_node_configuration.md):

代码语言:javascript
复制
# DTLE 3.21.07.0中nomad升级为1.1.2,需要添加如下配置使nomad提供监控数据
# 之前版本的DTLE无需添加此配置
telemetry {
  prometheus_metrics         = true
  collection_interval        = "15s"
}

plugin "dtle" {
  config {
    data_dir = "/opt/dtle/var/lib/nomad"
    nats_bind = "10.186.63.20:8193"
    nats_advertise = "10.186.63.20:8193"
    # Repeat the consul address above.
    consul = "10.186.63.76:8500"

    # By default, API compatibility layer is disabled.
    api_addr = "10.186.63.20:8190"   # for compatibility API
    nomad_addr = "10.186.63.20:4646" # compatibility API need to access a nomad server

    publish_metrics = true
    stats_collection_interval = 15
  }
}
  • 添加两个 job 模拟两个 MySQL 实例之间传输数据

二、部署prometheus

  • 准备 prometheus 配置文件同时接收 nomad 和 DTLE 的 metrics
  • DTLE 监控 labels:instance 的值建议设置为 DTLE 服务器的 hostname
代码语言:javascript
复制
shell> cat /path/to/prometheus.yml
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.

scrape_configs:
  - job_name: 'nomad'
    scrape_interval: 15s
    metrics_path: '/v1/metrics'
    params:
      format: ['prometheus']
    static_configs:
      - targets: ['10.186.63.20:4646']
        labels:
          instance: nomad-src-1
      - targets: ['10.186.63.76:4646']
        labels:
          instance: nomad-dest-1

  - job_name: 'dtle'
    scrape_interval: 15s
    metrics_path: '/metrics'
    static_configs:
      - targets: ['10.186.63.20:8190']
        labels:
          instance: dtle-src-1
      - targets: ['10.186.63.76:8190']
        labels:
          instance: dtle-dest-1
  • 利用 docker 部署 prometheus 服务
代码语言:javascript
复制
  shell> docker run -itd -p 9090:9090 --name=prometheus --hostname=prometheus --restart=always -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
  • 在浏览器上访问 prometheus 的页面 http://${prometheus_server_ip}:9090/targets 验证配置生效

三、部署 grafana

  • 利用 docker 部署 grafana 服务
代码语言:javascript
复制
  shell> docker run -d --name=grafana -p 3000:3000 grafana/grafana
  • 在浏览器上访问 grafana 的页面 http://${grafana_server_ip}:3000 ,使用默认用户 admin/admin登录
  • 配置添加数据源
  • 选择添加 promethues
  • 只需将 promethues 的访问地址添加到URL中,点击“sava & test”按钮
  • 添加 panel
  • 以添加一个CPU使用率监控为例配置一个 panel

四、常用的监控项

nomad 所有监控项:https://www.nomadproject.io/docs/operations/metrics

DTLE 所有监控项:https://actiontech.github.io/dtle-docs-cn/3/3.4_metrics.html

说明

公式示例

单位

CPU使用率(总计)

sum(rate(process_cpu_seconds_total{instance=~"nomad-src-1|dtle-src-1"}[60s])) * 100

Misc / Percent(0-100)

CPU使用率(DTLE )

rate(process_cpu_seconds_total{instance="dtle-src-1"}[60s]) * 100

Misc / Percent(0-100)

CPU使用率(nomad)

rate(process_cpu_seconds_total{instance="nomad-src-1"}[60s]) * 100

Misc /Percent(0-100)

内存使用(总计)

sum(process_resident_memory_bytes{instance=~"nomad-src-1|dtle-src-1"}) /1024 /1024

Data / mebibyte

内存使用(DTLE )

process_resident_memory_bytes{instance="dtle-src-1"} /1024 /1024

Data / mebibyte

内存使用(nomad)

process_resident_memory_bytes{instance="nomad-src-1"} /1024 /1024

Data / mebibyte

带宽(总计 - 源端发送)

sum(increase(dtle_network_out_bytes{host="dtle-src-1"}[30s]) /30 /1024) * 8

Data rate / kibibits/sec

带宽(按task分组 - 源端发送)

increase(dtle_network_out_bytes{host="dtle-src-1"}[30s]) /30 /1024 * 8

Data rate / kibibits/sec

带宽(总计 - 目标端接收)

sum(increase(dtle_network_in_bytes{host="dtle-dest-1"}[30s]) /30 /1024) * 8

Data rate / kibibits/sec

带宽(按task分组 - 目标端接收)

increase(dtle_network_in_bytes{host="dtle-dest-1"}[30s]) /30 /1024 * 8

Data rate / kibibits/sec

数据延迟(源端)

dtle_delay_time{host="dtle-src-1"}

Time / seconds(s)

数据延迟(目标端)

dtle_delay_time{host="dtle-dest-1"}

Time / seconds(s)

TPS(源端)

irate(dtle_src_extracted_incr_tx_count[30s])

Misc / none

TPS(目标端)

irate(dtle_dest_applied_incr_tx_count[30s])

Misc / none

Buffer(源端)

dtle_buffer_src_queue_size

Misc / none

Buffer(目标端)

dtle_buffer_dest_queue_size

Misc / none

五、最后创建多个panel同时展示


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景:
  • 一、搭建 DTLE 运行环境
  • 二、部署prometheus
  • 三、部署 grafana
  • 四、常用的监控项
  • 五、最后创建多个panel同时展示
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档