TDinsight for 2.x
使用警报监控 TDengine 数据库
TDinsight - 一个用于 TDengine 的零依赖监控解决方案,集成 Grafana
语言:英语 简体中文
TDinsight v2.x 使用 TDengine 内置数据库(log
)和 Grafana 来监控 TDengine 本身。
TDengine 启动后,会自动创建一个名为 log
的数据库,并定期记录服务器的 CPU、内存、磁盘使用情况、网络带宽、请求数、磁盘读写吞吐量、慢查询以及其他用于监控的信息。它还会记录重要的系统操作(例如登录、创建或删除数据库等)和错误。TDinsight 将通过 Grafana 和 TDengine 数据源插件将 TDengine 集群状态、节点信息、插入和查询请求、资源使用情况等进行可视化。它还支持 vnode、dnode 和 mnode 等节点的异常状态告警,方便运维人员实时监控 TDengine 集群的运行状态。本文将指导用户安装 Grafana 服务器,然后通过 TDinsight.sh
脚本自动或手动安装 TDengine 数据源插件并部署 TDinsight 可视化仪表盘。
要求
至少,您必须拥有一个单节点的 TDengine 服务器或一个多节点的 TDengine 集群,以及一个用于 Grafana 的服务器主机。此仪表盘需要新的日志数据库(自 v2.3.3.0 起),包括 cluster_info
、dnodes_info
、vgroups_info
等表。
安装 Grafana
功能丰富的 Grafana 仪表盘用于 TDengine(集群或非集群)需要 Grafana 7.x 或 8.x,因此我们建议此处使用最新的 Grafana 7/8 版本。您可以在任何支持的操作系统上安装 Grafana,按照安装说明进行操作。
在 Debian 或 Ubuntu 上安装 Grafana
对于 Debian 或 Ubuntu 操作系统,第一个选项是使用 grafana APT 仓库。以下是如何从头开始安装:
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key |\
sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" |\
sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
在 CentOS/RHEL 上安装 Grafana
您可以从官方 YUM 仓库安装。
sudo tee /etc/yum.repos.d/grafana.repo << EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
sudo yum install grafana
或使用 RPM 安装
wget https://dl.grafana.com/oss/release/grafana-7.5.11-1.x86_64.rpm
sudo yum install grafana-7.5.11-1.x86_64.rpm
# it's ok to use in one line
sudo yum install \
https://dl.grafana.com/oss/release/grafana-7.5.11-1.x86_64.rpm
自动设置 TDinsight v2.x
我们创建了一个 TDinsight.sh
脚本,通过 Grafana 配置策略实现自动化。
您可以通过 wget
或其他工具下载该脚本
wget https://github.com/taosdata/grafanaplugin/releases/latest/download/TDinsight.sh
chmod +x TDinsight.sh
此脚本将自动下载最新的 TDengine 数据源插件和 TDinsight 仪表盘,将它们转换为配置并设置 TDinsight 仪表盘。通过一些额外的警报选项,您只需一条命令行即可获得警报通知功能。
对于最简单的用例,假设您在同一主机上运行 TDengine 和 Grafana,并且都使用默认选项。运行 ./TDinsight.sh
并打开 Grafana URL 是您设置 TDinsight 所需的全部操作。
以下是 TDinsight.sh
的用法
Usage:
./TDinsight.sh
./TDinsight.sh -h|--help
./TDinsight.sh -n <ds-name> -a <api-url> -u <user> -p <password>
Install and configure TDinsight dashboard in Grafana on Ubuntu 18.04/20.04 system.
-h, -help, --help Display help
-V, -verbose, --verbose Run script in verbose mode. Will print out each step of execution.
-v, --plugin-version <version> TDengine datasource plugin version, [default: latest]
-P, --grafana-provisioning-dir <dir> Grafana provisioning directory, [default: /etc/grafana/provisioning/]
-G, --grafana-plugins-dir <dir> Grafana plugins directory, [default: /var/lib/grafana/plugins]
-O, --grafana-org-id <number> Grafana organization id. [default: 1]
-n, --tdengine-ds-name <string> TDengine datasource name, no space. [default: TDengine]
-a, --tdengine-api <url> TDengine REST API endpoint. [default: http://127.0.0.1:6041]
-u, --tdengine-user <string> TDengine user name. [default: root]
-p, --tdengine-password <string> TDengine password. [default: taosdata]
-i, --tdinsight-uid <string> Replace with a non-space ASCII code as the dashboard id. [default: tdinsight]
-t, --tdinsight-title <string> Dashboard title. [default: TDinsight]
-e, --tdinsight-editable If the provisioning dashboard could be editable. [default: false]
大多数 CLI 选项都可被环境变量识别。
短选项 | 长选项 | 环境变量 | 描述 |
---|---|---|---|
-v | –plugin-version | TDENGINE_PLUGIN_VERSION | TDengine 数据源插件版本,默认为最新。 |
-P | –grafana-provisioning-dir | GF_PROVISIONING_DIR | Grafana 配置目录,[默认: /etc/grafana/provisioning/] |
-G | –grafana-plugins-dir | GF_PLUGINS_DIR | Grafana 插件目录,默认为 /var/lib/grafana/plugins 。 |
-O | –grafana-org-id | GF_ORG_ID | Grafana 组织 ID,默认为 1。 |
-n | –tdengine-ds-name | TDENGINE_DS_NAME | TDengine 数据源名称,默认为 TDengine。 |
-a | –tdengine-api | TDENGINE_API | TDengine REST API 端点,默认为 http://127.0.0.1:6041 。 |
-u | –tdengine-user | TDENGINE_USER | TDengine 用户名。[默认: root] |
-p | –tdengine-password | TDENGINE_PASSWORD | TDengine 密码。[默认: taosdata] |
-i | –tdinsight-uid | TDINSIGHT_DASHBOARD_UID | TDinsight 仪表盘 uid 。[默认: tdinsight] |
-t | –tdinsight-title | TDINSIGHT_DASHBOARD_TITLE | TDinsight 仪表盘标题。[默认: TDinsight] |
-e | –tdinsight-editable | TDINSIGHT_DASHBOARD_EDITABLE | 配置的仪表盘是否可编辑。[默认: false] |
假设您在主机 tdengine
上运行 TDengine,HTTP API 端口为 6041
,用户名为 root1
,密码为 pass5ord
。使用脚本如下:
./TDinsight.sh -a http://tdengine:6041 -u root1 -p pass5ord
我们提供了 -E
选项,用于从命令行配置现有的 TDinsight 通知通道。假设您的 Grafana 用户名和密码都是 admin:admin
,使用以下命令获取通知通道:
curl --no-progress-meter -u admin:admin https://:3000/api/alert-notifications | jq
在这里,我们使用通知通道的 uid
属性作为 -E
输入。
./TDinsight.sh -a http://tdengine:6041 -u root1 -p pass5ord -E existing-notifier
如果您想监控多个 TDengine 集群,您需要设置多个 TDinsight 仪表盘。设置非默认 TDinsight 需要做一些更改 - 需要将 -n
、-i
、-t
选项更改为其他名称。
sudo ./TDengine.sh -n TDengine-Env1 -a http://another:6041 -u root -p taosdata -i tdinsight-env1 -t 'TDinsight Env1'
请注意,配置的数据源、通知通道和仪表盘在前台是不可更改的。您应该通过此脚本再次更新配置或手动更改配置。配置都位于 /etc/grafana/provisioning
目录中(此目录是 Grafana 的默认目录,如果需要,可以使用 -P
选项更改)。
对于特殊用例,-O
将在您使用 Grafana Cloud 或使用不同组织时设置组织 ID。-G
让您选择 Grafana 插件安装目录。-e
将设置仪表盘为可编辑。
手动设置 TDinsight v2.x
安装 TDengine 数据源插件
从 GitHub 安装最新版本的 TDengine 数据源插件。
get_latest_release() {
curl --silent "https://api.github.com/repos/taosdata/grafanaplugin/releases/latest" |
grep '"tag_name":' |
sed -E 's/.*"v([^"]+)".*/\1/'
}
TDENGINE_PLUGIN_VERSION=$(get_latest_release)
sudo grafana-cli \
--pluginUrl https://github.com/taosdata/grafanaplugin/releases/download/v$TDENGINE_PLUGIN_VERSION/tdengine-datasource-$TDENGINE_PLUGIN_VERSION.zip \
plugins install tdengine-datasource
注意:如果您使用的是 v3.1.7 之前的旧版本,请通过在 /etc/grafana/grafana.ini
中添加以下行来配置允许使用未签名插件。
[plugins]
allow_loading_unsigned_plugins = tdengine-datasource
启动 Grafana 服务
systemctl enable grafana-server
systemctl start grafana-server
登录 Grafana
在您的网络浏览器中打开默认的 grafana url:https://:3000
。默认用户名/密码都是 admin
。Grafana 会在首次登录后要求您更改密码。
添加 TDengine 数据源
指向配置 (Configurations) -> 数据源 (Data Sources) 菜单,然后点击添加数据源 (Add data source) 按钮。
搜索并选择 TDengine。
配置 TDengine 数据源。
保存并测试,应该显示“TDengine 数据源正常工作”。
导入 TDengine 仪表盘
指向 + / 创建 (Create) - 导入 (import) (或 /dashboard/import
url)。
使用 grafana.com 上的仪表盘 ID 15167
。
然后就完成了。
TDengine 的全页面视图如下所示。
TDinsight v2.x 仪表盘详情
TDinsight 仪表盘旨在提供 TDengine 集群资源使用情况以及 dnodes、mnodes、vnodes 或数据库的状态。它包含几个指标分区。
集群状态
包括集群当前信息和状态(从左到右,从上到下)。
- First EP:当前 TDengine 集群中的第一个 EP。
- Version:MNode 的服务器版本。
- Master Uptime:当前 master mnode 选举以来的时间。
- Expire Time - 企业版到期时间。
- Used Measuring Points - 企业版已使用的测量点。
- Databases - 数据库总数。
- Connections - 当前连接数。
- DNodes/MNodes/VGroups/VNodes:每种资源的总体数量和活动数量。
- DNodes/MNodes/VGroups/VNodes Alive Percent:每种资源的活动数量/总数量百分比,启用了告警规则,默认情况下,当资源活动百分比非 100% 时触发。
- Measuring Points Used:已启用告警的企业版已使用的测量点。
- Grants Expire Time:已启用告警的企业版到期时间。
- Error Rate:已启用告警的集群总体错误率。
- Variables:由
show variables
命令生成并以表格视图显示。
DNode 状态
- DNodes Status:
show dnodes
的简单表格视图。 - DNodes Lifetime:DNode 创建以来经过的时间。
- DNodes Number:DNode 数量变化的时间序列图。
- Offline Reasons:如果任何 dnode 状态为离线,则显示离线原因饼状图。
MNodes 概览
- MNodes Status:
show mnodes
的简单表格视图。 - MNodes Number:与
DNodes Number
类似,但针对 mnodes。
请求
- Requests Rate (Inserts per Second):每秒插入计数速率。
- Requests (Selects):查询请求计数和速率。
- Requests (HTTP):HTTP 请求计数和速率。
每个 $database
的数据库
- STables:超表数量。
- Total Tables:所有表总数。
- Sub Tables:作为超表的子表的数量。
- Tables:表变化的时间序列数据。
- Tables Number Foreach VGroups:每个 vgroups 的表数量。
每个 $fqdn
的 DNode 使用情况
特定节点的 DNode 资源详情,使用 grafana 查询类型变量 $fqdn
(来自 select tbname from log.dn
),包括:
- 当前内存使用率、CPU 使用率、带宽速度、IO 读写速率、磁盘使用量等。
- 过去一小时或某个时间段内的最大资源使用量。
- CPU 图表视图。
- 内存使用情况。
- 磁盘使用百分比:带有告警规则的图表视图。
- 磁盘使用量。
- 每分钟请求计数。
- IO 速率(读/写),与过去一小时的数据进行对比。
以下是指标列表
- Uptime:DNode 创建以来的经过时间。
- Has MNodes?:如果 DNode 有 MNode。
- CPU Cores:CPU 核数。
- VNodes Number:当前 DNode 的 VNodes 数量。
- VNodes Masters:处于 master 角色的 VNodes 数量。
- Current CPU Usage of taosd:taosd 进程的 CPU 使用率。
- Current Memory Usage of taosd:taosd 进程的内存使用率。
- Disk Used:taosd 数据目录的总磁盘使用百分比。
- CPU Usage:进程和系统 CPU 使用率。
- RAM Usage:RAM 使用指标时间序列视图。
- Disk Used:每个级别的磁盘使用量。
- Disk Increasing Rate per Minute:每分钟磁盘增长速率。
- Disk IO:进程读/写字节的时间序列数据和视图。
- Net IO:除 lo 外所有网络的总入/出比特数。
登录历史
目前只报告每分钟登录次数。
TaosAdapter
包括 taosAdapter http 请求统计信息和状态信息
以下是指标列表
- http_request:包括总 http 请求数、失败的 http 请求数以及进行中的 http 请求数。
- top 3 request endpoint:排名前 3 的总请求数及相应的端点。
- Memory Used:taosAdapter 内存使用量
- latency_quantile(ms):每个阶段的百分位数(1, 2, 5, 9, 99)
- top 3 failed request endpoint:排名前 3 的请求失败数及相应的端点。
- CPU Used:taosAdapter CPU 使用率
升级
使用 TDinsight.sh
重新安装将升级 Grafana 插件和 TDinsight 仪表盘。
在其他情况下,用户应首先安装新的 TDengine 数据源插件,然后移除并安装新的 TDinsight 仪表盘。
卸载
使用 TDinsight.sh
,只需运行 TDinsight.sh -R
即可清理所有已安装的组件。
如果您是手动安装 TDinsight,请按照以下步骤进行清理。
- 在 Grafana 网页中移除 TDinsight 仪表盘。
- 从 Grafana 数据源中移除 TDengine。
- 从 Grafana 插件目录中移除
tdengine-datasource
插件。
一体化 Docker 示例
git clone --depth 1 https://github.com/taosdata/grafanaplugin.git
cd grafanaplugin
根据需要修改 docker-compose.yml
文件
version: "3.7"
services:
grafana:
image: grafana/grafana:7.5.10
volumes:
- ./dist:/var/lib/grafana/plugins/tdengine-datasource
- ./grafana/grafana.ini:/etc/grafana/grafana.ini
- ./grafana/provisioning/:/etc/grafana/provisioning/
- grafana-data:/var/lib/grafana
environment:
TDENGINE_API: ${TDENGINE_API}
TDENGINE_USER: ${TDENGINE_USER}
TDENGINE_PASS: ${TDENGINE_PASS}
ports:
- 3000:3000
volumes:
grafana-data:
替换 docker-compose.yml
文件中的环境变量或在 .env
文件中设置它们,然后使用 docker-compose 启动 Grafana。
docker-compose up -d
TDinsight v2.x 已内置,请访问 https://:3000/dashboards 查看仪表盘。