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)
  1. 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 系统监测专家。

关于 TDengine

TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐