Telegraf is a server-based agent that collects and sends metrics and events from databases, systems, and IoT sensors. Telegraf is an open source, plugin-driven tool for the collection and output of data.
To view metrics gathered by Telegraf and stored in a hypertable in a Timescale Cloud service.
- Link Telegraf to your Timescale Cloud service: create a Telegraf configuration
- View the metrics collected by Telegraf: connect to your service and query the metrics table
Best practice is to use an Ubuntu EC2 instance hosted in the same region as your Timescale Cloud service as a migration machine. That is, the machine you run the commands on to move your data from your source database to your target Timescale Cloud service.
Before you migrate your data:
Create a target Timescale Cloud service.
Each Timescale Cloud service has a single database that supports the most popular extensions. Timescale Cloud services do not support tablespaces, and there is no superuser associated with a service. Best practice is to create a Timescale Cloud services with at least 8 CPUs for a smoother experience. A higher-spec instance can significantly reduce the overall migration window.
To ensure that maintenance does not run during the process, adjust the maintenance window.
To create a Telegraf configuration that exports data to a hypertable in your service:
Setup your service connection string
This variable hold the connection information for the target Timescale Cloud service.
In Terminal on the source machine, set the following:
export TARGET=postgres://tsdbadmin:<PASSWORD>@<HOST>:<PORT>/tsdb?sslmode=requireYou find the connection information for your Timescale Cloud service in the configuration file you downloaded when you created the service.
Generate a Telegraf configuration file
In Terminal, run the following:
telegraf --input-filter=cpu --output-filter=postgresql config > telegraf.conftelegraf.conf
configures a CPU input plugin that samples various metrics about CPU usage, and the PostgreSQL output plugin.telegraf.conf
also includes all available input, output, processor, and aggregator plugins. These are commented out by default.Test the configuration
telegraf --config telegraf.conf --testYou see an output similar to the following:
2022-11-28T12:53:44Z I! Starting Telegraf 1.24.32022-11-28T12:53:44Z I! Available plugins: 208 inputs, 9 aggregators, 26 processors, 20 parsers, 57 outputs2022-11-28T12:53:44Z I! Loaded inputs: cpu2022-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 1669640025000000000Configure the PostgreSQL output plugin
In
telegraf.conf
, in the[[outputs.postgresql]]
section, setconnection
to the value of $TARGET.connection = "<VALUE OF $TARGET>"Use hypertables when Telegraf creates a new table:
In the section that begins with the comment
## Templated statements to execute when creating a new table
, add the following 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);`The
by_range
dimension builder was added to TimescaleDB 2.13.
This section shows you how to generate system metrics using Telegraf, then connect to your service and query the metrics hypertable.
Collect system metrics using Telegraf
Run the following command for a 30 seconds:
telegraf --config telegraf.confTelegraf uses loaded inputs
cpu
and outputspostgresql
along withglobal tags
, the intervals when the agent collects data from the inputs, and flushes to the outputs.View the metrics
Connect to your Timescale Cloud service:
psql $TARGETView the metrics collected in the
cpu
table intsdb
:SELECT*FROM cpu;You see something like:
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.0890207714444812022-12-05 12:25:20 | cpu1 | hostname | 0 | 0 | 84.27299703278959 | 0 | 0 | 0 | 0 | 0 | 5.934718100814769 | 9.7922848663956472022-12-05 12:25:20 | cpu2 | hostname | 0 | 0 | 87.53709198848934 | 0 | 0 | 0 | 0 | 0 | 4.747774480755411 | 7.7151335312410372022-12-05 12:25:20 | cpu3 | hostname| 0 | 0 | 86.68639053296472 | 0 | 0 | 0 | 0 | 0 | 4.43786982253345 | 8.8757396450399922022-12-05 12:25:20 | cpu4 | hostname | 0 | 0 | 96.15384615371369 | 0 | 0 | 0 | 0 | 0 | 1.1834319526667423 | 2.6627218934917614To view the average usage per CPU core, use
SELECT cpu, avg(usage_user) FROM cpu GROUP BY cpu;
.
For more information about the options that you can configure in Telegraf, see the PostgreQL output plugin.
Keywords
Found an issue on this page?Report an issue or Edit this page in GitHub.