Telegraf 从各种输入收集指标,并将它们写入各种输出。它由插件驱动,用于收集和输出数据,因此它是可扩展的。它使用 Go 编写,这意味着它是一个编译的独立二进制文件,可以在任何系统上运行,无需外部依赖关系或包管理工具。

Telegraf 是一个开源工具。它包含 200 多个用于收集和写入不同类型数据的插件,由使用这些数据的人员编写。

在开始之前,请确保您已

  1. 检查您安装的 Telegraf 版本

    telegraf --version
  2. 使用以下方法为 Telegraf 生成示例配置文件

    telegraf --input-filter=cpu --output-filter=postgresql config > telegraf.conf

    示例配置文件启用一个 CPU 输入插件,该插件对 CPU 使用情况的各种指标进行采样,以及 PostgreSQL 输出插件。该文件还包含所有可用的输入、输出、处理器和聚合器插件。这些默认情况下被注释掉了。您可以根据需要启用它们。

  3. 测试您生成的示例配置文件 telegraf.conf

    telegraf --config telegraf.conf --test

    将显示类似于以下内容的输出

    2022-11-28T12:53:44Z I! Starting Telegraf 1.24.3
    2022-11-28T12:53:44Z I! Available plugins: 208 inputs, 9 aggregators, 26 processors, 20 parsers, 57 outputs
    2022-11-28T12:53:44Z I! Loaded inputs: cpu
    2022-11-28T12:53:44Z I! Loaded aggregators:
    2022-11-28T12:53:44Z I! Loaded processors:
    2022-11-28T12:53:44Z W! Outputs are not used in testing mode!
    2022-11-28T12:53:44Z I! Tags enabled: host=localhost
    > cpu,cpu=cpu0,host=localhost usage_guest=0,usage_guest_nice=0,usage_idle=90.00000000087311,usage_iowait=0,usage_irq=0,usage_nice=0,usage_softirq=0,usage_steal=0,usage_system=6.000000000040018,usage_user=3.999999999996362 1669640025000000000
    > cpu,cpu=cpu1,host=localhost usage_guest=0,usage_guest_nice=0,usage_idle=92.15686274495818,usage_iowait=0,usage_irq=0,usage_nice=0,usage_softirq=0,usage_steal=0,usage_system=5.882352941192206,usage_user=1.9607843136712912 1669640025000000000
    > cpu,cpu=cpu2,host=localhost usage_guest=0,usage_guest_nice=0,usage_idle=91.99999999982538,usage_iowait=0,usage_irq=0,usage_nice=0,usage_softirq=0,usage_steal=0,usage_system=3.999999999996362,usage_user=3.999999999996362 1669640025000000000
  1. 在您首选的文本编辑器中打开 telegraf.conf 文件,并将 [[outputs.postgresql]] 部分中的 connection 参数设置为您创建的 Timescale 服务的 <SERVICE URL>

    connection = "<SERVICE URL>"
  2. 通过在配置文件中添加 table_template 参数来创建超表,以便在创建新表时执行。您可以在以注释 ## Templated statements to execute when creating a new table. 开头的部分中添加此参数。添加 table_template 参数后,配置文件中的部分将如下所示

    ## Templated statements to execute when creating a new table.
    # create_templates = [
    # '''CREATE TABLE {{ .table }} ({{ .columns }})''',
    # ]
    # table_template=`CREATE TABLE IF NOT EXISTS {TABLE}({COLUMNS}); SELECT create_hypertable({TABLELITERAL},by_range('time', INTERVAL '1 week'),if_not_exists := true);`
    注意

    by_range 维度生成器是 TimescaleDB 2.13 的新增功能。

  1. 运行 Telegraf 以收集指标

    telegraf --config telegraf.conf

    输出使用加载的输入 cpu 和输出 postgresql 以及 global tags,以及代理从输入中收集数据并刷新到输出的间隔。

    将显示类似于以下内容的输出

    2022-12-05T12:32:00Z I! Starting Telegraf 1.24.3
    2022-12-05T12:32:00Z I! Available plugins: 208 inputs, 9 aggregators, 26 processors, 20 parsers, 57 outputs
    2022-12-05T12:32:00Z I! Loaded inputs: cpu
    2022-12-05T12:32:00Z I! Loaded aggregators:
    2022-12-05T12:32:00Z I! Loaded processors:
    2022-12-05T12:32:00Z I! Loaded outputs: postgresql
    2022-12-05T12:32:00Z I! Tags enabled: host=test
    2022-12-05T12:32:00Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"test", Flush Interval:10s
  2. 在大约 15 到 20 秒后停止运行 Telegraf 以收集指标。

  3. 连接到 Timescale 并提供 tsdbadmin<PASSWORD>

    psql <SERVICE URL>
    Password for user tsdbadmin: <PASSWORD>
  4. 查看 tsdbcpu 表中收集的指标

    SELECT*FROM cpu;

    将显示类似于以下内容的输出

    time | cpu | host | usage_guest | usage_guest_nice | usage_idle | usage_iowait | usage_irq | usage_nice | usage_softirq | usage_steal | usage_system | usage_user
    ---------------------+-----------+----------------------------------+-------------+------------------+-------------------+--------------+-----------+------------+---------------+-------------+---------------------+---------------------
    2022-12-05 12:25:20 | cpu0 | hostname | 0 | 0 | 83.08605341237833 | 0 | 0 | 0 | 0 | 0 | 6.824925815961274 | 10.089020771444481
    2022-12-05 12:25:20 | cpu1 | hostname | 0 | 0 | 84.27299703278959 | 0 | 0 | 0 | 0 | 0 | 5.934718100814769 | 9.792284866395647
    2022-12-05 12:25:20 | cpu2 | hostname | 0 | 0 | 87.53709198848934 | 0 | 0 | 0 | 0 | 0 | 4.747774480755411 | 7.715133531241037
    2022-12-05 12:25:20 | cpu3 | hostname| 0 | 0 | 86.68639053296472 | 0 | 0 | 0 | 0 | 0 | 4.43786982253345 | 8.875739645039992
    2022-12-05 12:25:20 | cpu4 | hostname | 0 | 0 | 96.15384615371369 | 0 | 0 | 0 | 0 | 0 | 1.1834319526667423 | 2.6627218934917614
  5. 要查看每个 CPU 内核的平均使用情况,请使用

    SELECT cpu, avg(usage_user) FROM cpu GROUP BY cpu;

    将显示类似于以下内容的输出

    cpu | avg
    -----------+---------------------
    cpu7 | 0.36239363864003277
    cpu-total | 2.7778985775548013
    cpu4 | 1.9990184779524285
    cpu2 | 4.083993994915682
    cpu0 | 5.281711648540422
    cpu1 | 4.9013756546309155
    cpu6 | 0.6719913538159535
    cpu5 | 1.0512637475474937
    cpu3 | 3.871919066617788

有关您可以在 Telegraf 中配置的选项的更多信息,请参阅 PostgreQL 输出插件.

您可以使用 Grafana 直接从 Timescale 数据库可视化查询。

在开始之前,请确保您已

  • 创建了 Timescale Cloud 服务。
  • 安装了自托管的 Grafana 帐户,或注册了 Grafana Cloud.
  • 找到了要作为数据源使用的数据库的连接详细信息。这些详细信息包含在您创建服务时下载的备忘单中。
  1. 在您的 Web 浏览器中,登录到 Grafana 仪表板,地址为 http://localhost:3000/。默认用户名为 admin,默认密码为 admin
  2. 在 Grafana 仪表板中,导航到 ConfigurationData sources。单击 Add data source
  3. Add data source 页面中,搜索 PostgreSQL 并选择它。
  4. 使用您的连接详细信息配置数据源
    • Name 字段中,键入要用于数据集的名称。
    • Host 字段中,键入您的连接的主机和端口,格式如下:<HOST>:<PORT>。例如,example.tsdb.cloud.timescale.com:35177
    • Database 字段中,键入 tsdb
    • User 字段中,键入 tsdbadmin 或其他特权用户。
    • Password 字段中,键入密码。
    • TLS/SSL Mode 字段中,选择 require
    • PostgreSQL details 部分中,将 TimescaleDB 切换为开启。
    • 所有其他字段可以保留默认值。
  5. 单击 Save & test 以检查您的详细信息是否已正确设置。

在 Grafana 中配置 Timescale 作为数据源后,您可以创建使用 SQL 填充数据的面板。

关键词

在这个页面上发现问题了吗?报告问题 或 在 GitHub 上编辑此页面