TDengine IDMP 应用场景:IT 系统监控

TDengine IDMP 应用场景:IT 系统监控

1. 简介

本文以一个数据中心的服务器监控为例,详细介绍通过开源的轻量级的工具 Telegraf ,轻松采集系统 CPU、内存、磁盘、网络等系统监控指标,将数据写入 TDengine TSDB 时序数据库,然后通过 TDengine IDMP,利用 AI 自动生成可视化面板和实时分析,帮助您几分钟就构建一套稳定、高效的服务器监控解决方案。

在这个方案中,TDengine TSDB + TDengine IDMP 的组合能够为您带来四大好处:

  1. 轻松完成数据导入:TDengine IDMP 与 TDengine TSDB 无缝集成,当监控数据写入 TSDB 后,能够快速导入 IDMP 并以树形结构的方式展现被监控的物理机和虚拟机,IT 资产一目了然。
  2. 无问智推,数据自己说话:不用在 TDengine 侧做任何配置,不用脚本,不用提问,IDMP 会基于采集的数据,自动判断为 IT 监测场景,自动为您推荐面板和实时预警,服务器的运行状态尽在掌控之中。
  3. 智能问数,随问随答:不用 SQL,不用任何脚本语言,你只要用自然语言说出感兴趣的数据分析或监测面板,IDMP 将会自动帮您创建,把数据可视化与分析的使用门槛降为 0;
  4. 如果添加新的被监测的服务器,只要配置好 Telegraf, 在 TDengine 侧不用做任何设置和操作,服务器就被自动的加入到监测的对象中,最大程度节省人力。

2. 前提条件

  • TDengine 云服务实例,如果您没有可用的 TDengine 云服务实例,可以免费注册
  • 一个被监控的服务器,假设其具如下物理信息:
    • 所在位置:IDC01
    • 机架号:RACK02
    • 机架上的槽位号:SLOT03
    • IP 地址:192.168.1.123

3. 配置指南

3.1 创建 IDMP 云服务实例

  1. 使用您的账号,登录 TDengine Cloud,在弹出的 TDengine 实例选择框中,选择“IDMP(工业数据管理平台)”。
  2. 在实例配置页面,分别配置 IDMP 实例和 TSDB 实例的信息和计费方案:
    • IDMP(工业数据管理平台):
      • 实例名称:telegraf-idmp
      • 计费方案:IDMP-入门版
    • TSDB(时序数据库)
      • 实例名称:telegraf-tsdb
      • 计费方案:入门版
  3. 等待 IDMP 实例启动后,选择加载一个场景的示例数据,即可进入 IDMP 云服务的主页面。

说明:TDengine IDMP 服务默认使用 TDengine TSDB 作为其数据源,在 IDMP 云服务实例创建过程中,会自动创建到上述 TSDB 的连接。

3.2 在 TSDB 云服务实例创建 DB

  1. 进入 IDMP 云服务实例的主页面后,点击右上角下拉菜单中的【管理后台】。
  2. 在管理后台页面点击【云资源管理】,进入云资源管理页面。
  3. 在实例列表中,请记录访问 TDengine TSDB 实例的 Gateway URL 和令牌 (token),以备稍后配置 Telegraf 时使用。
  4. 在实例列表中找到 telegraf-tsdb 实例,点击【TSDB 云服务】,进入 TSDB 云服务页面。
  5. 在左侧点击【数据浏览器】,在数据浏览器页面点击【创建数据库】。
  6. 设置数据库名称为 telegraf,完成 DB 创建。

3.3 在被监控服务器上安装 Telegraf

在被监控的服务其上,通过以下命令,即可安装 Telegraf:

curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update
sudo apt-get install telegraf

3.4 配置 Telegraf

执行以下命令,生成 Telegraf 的配置文件:

cat << EOF | sudo tee /etc/telegraf/telegraf.conf
[global_tags]
  location = "IDC01"
  rack_num = "RACK02"
  slot_num = "SLOT03"
  ip_address = "192_168_1_123"
  servers = "IDC01.RACK02"



[agent]
  # 所有输入的默认数据收集间隔
  interval = "10s"
  # Telegraf将指标发送到大多数metric_batch_size指标的批量输出
  metric_batch_size = 1000
  # Telegraf将缓存metric_buffer_limit每个输出的指标,并在成功写入时刷新此缓冲区。这应该是倍数 metric_batch_size不能少于2倍metric_batch_size
  metric_buffer_limit = 10000
  # 集合抖动用于随机抖动集合。插件在收集之前将在抖动内随机休眠一段时间。可以用来避免许多插件同时查询sysfs之类的东西,这会对系统产生可测量的影响。
  collection_jitter = "0s"
  # 所有输出的默认数据刷新间隔。您不应将此设置为以下间隔。最大值flush_interval为flush_interval+flush_jitter
  flush_interval = "10s"
  # 将刷新间隔抖动一个随机量。主要是为了避免运行大量Telegraf实例的用户出现大量写入峰值。
  flush_jitter = "0s"

[[inputs.cpu]]
  name_override = "server_cpu"
  percpu = false
  totalcpu = true
  [inputs.cpu.tags]
    metric_tag = "SLOT03_cpu"

[[inputs.mem]]
  name_override = "server_memory"
  fieldpass = ["used_percent", "available", "total", "used", "cached", "free"]
  [inputs.mem.tags]
    metric_tag = "SLOT03_memory"

[[inputs.disk]]
  name_override = "server_disk"
  fieldpass = ["used_percent", "available", "total", "used", "cached", "free"]
  [inputs.disk.tags]
    metric_tag = "SLOT03_disk"

[[inputs.nstat]]
  name_override = "server_network"
  fieldpass = ["TcpInSegs", "TcpOutSegs", "TcpRetransSegs", "UdpInDatagrams", "UdpOutDatagrams"]
  [inputs.nstat.tags]
    metric_tag = "SLOT03_network"

[[inputs.processes]]
  name_override = "server_processes"
  fieldpass = ["total", "running", "sleeping", "stopped", "zombies"]
  [inputs.processes.tags]
    metric_tag = "SLOT03_processes"

[[inputs.system]]
  name_override = "server_system"
  fieldpass = ["load1", "load5", "load15", "uptime", "n_cpus", "n_users"]
  [inputs.system.tags]
    metric_tag = "SLOT03_system"

[[outputs.http]]
  url = "https://<gateway-url>/influxdb/v1/write?db=telegraf&token=<gateway-token>&table_name_key=metric_tag"
  method = "POST"
  timeout = "5s"
  data_format = "influx"
  [outputs.http.headers]
    Content-Type = "application/x-www-form-urlencoded"
EOF

说明:

  • 在 global_tags 小节,配置了服务器的基本信息,其中 path 标签用来标识元素的路径,例如这里设置的 IDC01.RACK02,导入 TDengine IDMP 后,在元素浏览器中,将以树形结构展开为 IDC01 -> RACK02
  • 在 agent 小节,配置了 Telegraf 的采集频率等信息。
  • 在输入插件小节,开启了对 CPU, 内存,磁盘等的监控,每个指标均配置了 metric_tag 标签,其应具有唯一性,这里选用了 slot number + metric name 的形式,结合 global_tags 小节的 path, 即可唯一确定某个服务器的一个监控指标;
  • 在输出插件小节,配置将监控指标通过 taosadapter 写入 TDengine TSDB
    • 每种类型的输入指标,在写入 TSDB 时,都会写入一个超级表 (stable)
    • url 中的 db 为在 3.2 小节创建的 DB 的 telegraf
    • url 中的 <gateway-url> 和 <gateway-token> 为访问 TDengine TSDB 实例时所需的 Gateway 信息,请替换为 3.2 小节记录的 TDengine TSDB 实例 Gateway 的 URL 和 Token
    • 参数 table_name_key=metric_tag 将把 metric_tag 作为子表名,写入 TSDB 时将不再包含这个标签

3.5 启动 Telegraf

完成配置后,使用以下命令启动 Telegraf:

sudo systemctl start telegraf

使用以下命令,查看 Telegraf 服务状态:

sudo systemctl status telegraf

如果服务的状态为 active (running), 则说明 Telegraf 服务已启动成功。

如果期望监控多个物理机或虚拟机,仅需重复以上步骤即可。

3.6 在 IDMP 中加载 Metrics 数据

通过以下步骤,将 TDengine TSDB 的数据加载至 TDengine IDMP 以创建面板和分析:

  • 登录 IDMP 实例,在管理后台找到 telegraf-tsdb 连接。
  • 在 telegraf-tsdb 连接页面上方的导航栏中,选择【数据导入】。
  • 在数据导入配置页面,选择 telegraf 数据库。
  • 检查所有超级表的 Tags 配置项,选择 path 列做为每个超级表的 Tree。
  • 点击【完成】,等待数据导入任务完成。

3.7 查看元素信息

导入至 TDengine IDMP 的服务器监控指标,会以树形结构的方式展示,可以根据其物理信息一层层展开,便于查看:

  • 看到导入完成的提示后,点击主菜单【元素浏览器】,跳转至元素浏览器页面。
  • 在左侧资源浏览器中,IDMP 会自动根据服务器的物理信息,以树形结构的方式展示服务器的监控指标。在这里,依次展开 path -> IDC01 -> RACK02 -> SLOT03_cpu,通过上方路径导航菜单选择【属性】,查看 TDengine TSDB 中存储的 SLOT03 物理机 CPU 资源指标。

3.8 体验 AI 生成面板

  • 在左侧资源浏览器中,点击 path -> IDC01 -> RACK02 -> SLOT03_cpu 元素,跳转至该元素的 AI 推荐面板页面。
  • 等待 AI 生成面板推荐后,您可根据需求进行选择,例如:“过去一小时 CPU 空闲利用率(usage_idle)每分钟的变化趋势,折线图”,在您感兴趣的面板右上方的菜单中,点击【生成】按钮。
  • 等待面板生成后,在面板右下角点击【保存】,即可在下方面板列表中查看 SLOT03_cpu 元素下对应的面板。
  • 面板生成后,您还可以在该面板的详情页面中,查看 AI 创建面板时,使用的 SQL 语句:
SELECT _wstart,AVG(`usage_idle`) AS `usage_idle`
FROM `idmp`.`vt_SLOT03_cpu_573105`
WHERE  _c0 >= now-1h and _c0 <= now INTERVAL(1m) SLIDING(1m) 

3.9 体验 AI 分析

  • 在左侧资源浏览器中,点击 path -> IDC01 -> RACK02 -> SLOT03_cpu 元素,通过上方路径导航菜单选择【分析】,跳转至该元素的 AI 推荐分析页面。
  • 等待 AI 生成分析问题推荐后,您可以根据需求进行选择,例如:“physical_cpu:SLOT03_cpu 的实时 usage_system 超过 80%持续超过 10 分钟时,常规告警,计算平均 usage_system,事件窗口”,点击您感兴趣的问题链接,以进入分析编辑页面,点击页面最下方的【保存】。
  • 退回到分析列表中,即可查看对应的分析。

4. 更多

除了使用云服务以外,TDengine 还支持以私有化部署。为了简化部署,我们提供了 Ansible, Docker/Dcoker Compose, Helm 等多种部署方式,详见:https://github.com/taosdata/tdengine-idmp-deployment

5. 配置 Telegraf 小技巧

  • 与正常配置 Telegraf 不一样的是,需要把给监测的对象(服务器、虚拟机、应用等) 配置一个路径标签 (path),把资源的层次结构在标签里描述出来,中间用 “.” 进行分割,比如 “IDC01.RACK02.SLOT01″, 这样就可以对每一级的资源进行统计监测。而且还可以配置多个层次结构标签,便于从不同维度进行管理,比如”OS.Linux.Ubuntu”, 从 OS 维度进行统计监测。
  • 在 Telegraf 的配置里,还需要配置好参数 metric_tag, 建议用一个有可读性并具有唯一性的名字,它是被监测对象的名字。

6. 小结

本文以 Step by Step 的方式,介绍了如何使用 Telegraf + TDengine TSDB + TDengine IDMP 快速搭建一个 IT 监控系统。以往需要几个小时、甚至几天,并进行繁琐的配置、调试才能搭建起来的系统,使用 TDengine IDMP 后,仅需要几分钟即可搞定。日后,如果有新的物理机、虚拟机需要被纳入到监控系统中,只需在被监控系统部署 Telegraf 即可。

搭建整个监测系统的工作全部在 Telegraf 的配置上了,无需编写复杂的 SQL 语句,无需脚本和其他配置,无需学习 Grafana, 无需了解多少 IT 运维知识,即可轻松掌握 IT 系统的运行状态,成为 IT 系统监测专家。