<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>InfluxData Blog - Josh Powers</title>
    <description>Posts by Josh Powers on the InfluxData Blog</description>
    <link>https://www.influxdata.com/blog/author/josh-powers/</link>
    <language>en-us</language>
    <lastBuildDate>Wed, 12 Jun 2024 08:00:00 +0000</lastBuildDate>
    <pubDate>Wed, 12 Jun 2024 08:00:00 +0000</pubDate>
    <ttl>1800</ttl>
    <item>
      <title>Telegraf 1.31 Release Notes</title>
      <description>&lt;p&gt;A new feature-bearing release for Telegraf is now available:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Telegraf 1.31 — &lt;a href="https://docs.influxdata.com/telegraf/v1/release-notes/"&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the binaries for the latest Telegraf release on our &lt;a href="https://influxdata.com/downloads"&gt;Downloads page&lt;/a&gt;. Many thanks to all the open source community members who contributed to this effort!&lt;/p&gt;

&lt;h2 id="new-plugins"&gt;New plugins&lt;/h2&gt;

&lt;p&gt;These are the newest plugins, first available in this version:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OpenMetrics Parser (&lt;code&gt;parsers.openmetrics&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Parse OpenMetrics-style Prometheus metrics&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/srebhan"&gt;srebhan&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Parquet Parser (&lt;code&gt;parsers.parquet&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Generate metrics from parsing Parquet files&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/powersj"&gt;powersj&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Smartctl Output (&lt;code&gt;inputs.smartctl&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Collect metrics from smartctl JSON output&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/powersj"&gt;powersj&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Timestamp Processor (&lt;code&gt;processors.timestamp&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Parse fields containing timestamps into timestamps in other formats&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/powersj"&gt;powersj&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="important-changes"&gt;Important changes&lt;/h2&gt;

&lt;p&gt;Here are some changes to highlight:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;CLI Option: Remote URL retries
    &lt;ul&gt;
      &lt;li&gt;A new &lt;code&gt;--url-config-retry-attempts&lt;/code&gt; CLI option lets users set the number of retry attempts starting from a URL-based configuration file. The default remains 3.&lt;/li&gt;
      &lt;li&gt;Users can set this -1 to try forever, however, note that Telegraf will block starting until it obtains the configuration.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;CLI Option: Reload URL interval
    &lt;ul&gt;
      &lt;li&gt;Introduces the &lt;code&gt;--url-config-check-interval&lt;/code&gt; CLI option that checks that the remote URL is updated. The existing &lt;code&gt;--watch-config&lt;/code&gt; option is only used for local files.&lt;/li&gt;
      &lt;li&gt;This option checks the Last-Modified header to determine if an update is required.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Deprecation Removals
    &lt;ul&gt;
      &lt;li&gt;All deprecation removal messages were updated to either v1.35.0 (June 2025) or v1.40 (September 2026).&lt;/li&gt;
      &lt;li&gt;If you find any issues with the replacements, please file issues.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Retry Errors on Startup
    &lt;ul&gt;
      &lt;li&gt;In general, if Telegraf detects errors connecting to inputs, it will fail to start. This is to ensure the user is aware of the error(s) and prevent the user from assuming everything is working when Telegraf is not collecting everything configured.&lt;/li&gt;
      &lt;li&gt;Some users may want to collect whatever is possible. To enable this, a new set of startup error behavior configuration options was introduced and added to a number of plugins. These options allow the user to either ‘error’ the current behavior, ‘retry’ to allow additional retries of the plugin, or ‘ignore’ to disable that plugin from further attempts.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Procstat with Multiple Selection Criteria
    &lt;ul&gt;
      &lt;li&gt;The proctstat input plugin now allows the user to define multiple filter selection criteria.&lt;/li&gt;
      &lt;li&gt;With this new capability, users can define more finely tuned search parameters to reduce the output and generated metrics.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Procstat Fields
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="https://github.com/influxdata/telegraf/pull/15186"&gt;PR #15186&lt;/a&gt; changes the meaning of inputs.procstat fields read_bytes and write_bytes on Linux to now contain &lt;em&gt;all&lt;/em&gt; I/O operations for consistency with other operating-systems. The previous values are output as disk_read_bytes and disk_write_bytes measuring &lt;em&gt;only&lt;/em&gt; the I/O on the storage layer.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="downloads"&gt;Downloads&lt;/h2&gt;

&lt;p&gt;Head to our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt; to get the latest Telegraf release. If you have issues or questions, please join our &lt;a href="https://influxdata.com/slack"&gt;InfluxDB Community Slack&lt;/a&gt;, post them in our &lt;a href="https://github.com/influxdata/telegraf/issues"&gt;InfluxDB GitHub Repo&lt;/a&gt;, or our &lt;a href="https://community.influxdata.com/c/influxdb2"&gt;Community Site&lt;/a&gt;, and we will take a look.&lt;/p&gt;

&lt;h2 id="influxdb-university"&gt;InfluxDB University&lt;/h2&gt;

&lt;p&gt;Learn more about collecting data with Telegraf by taking the free InfluxDB University &lt;a href="https://university.influxdata.com/courses/data-collection-with-telegraf-tutorial/"&gt;Data Collection with Telegraf course&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Wed, 12 Jun 2024 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/telegraf-1-31-release-notes/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/telegraf-1-31-release-notes/</guid>
      <category>Product</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
    <item>
      <title>Telegraf 1.30 Release Notes</title>
      <description>&lt;p&gt;A new feature-bearing release for Telegraf is now available:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Telegraf 1.30 — &lt;a href="https://docs.influxdata.com/telegraf/v1.27/release-notes-changelog/"&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the binaries for the latest Telegraf release on our &lt;a href="https://influxdata.com/downloads"&gt;Downloads page&lt;/a&gt;. Many thanks to all the open source community members who contributed to this effort!&lt;/p&gt;

&lt;h2 id="removal-of-deprecated-plugins-and-options"&gt;Removal of deprecated plugins and options&lt;/h2&gt;

&lt;p&gt;For the past few years, we warned users that we would remove a number of very old, deprecated plugins and plugin options in v1.30. That time has finally come. Users have replacements available to them and can use the migrate command to attempt to auto-migrate their configuration.&lt;/p&gt;

&lt;p&gt;The full list of removed plugins and options includes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Plugins
    &lt;ul&gt;
      &lt;li&gt;&lt;code&gt;Inputs.cassandra&lt;/code&gt; replaced with &lt;code&gt;inputs.jolokia2&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.httpjson&lt;/code&gt; replaced with &lt;code&gt;inputs.http&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.io&lt;/code&gt; replaced by &lt;code&gt;inputs.diskio&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.jolokia&lt;/code&gt; replaced by &lt;code&gt;inputs.jolokia2&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.kafka_consumer_legacy&lt;/code&gt; replaced by &lt;code&gt;inputs.kafka_consumer&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.snmp_legacy&lt;/code&gt; replaced by &lt;code&gt;inputs.snmp&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.tcp_listener&lt;/code&gt; replaced by &lt;code&gt;inputs.socket_listener&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.udp_listener&lt;/code&gt; replaced by &lt;code&gt;inputs.socket_listener&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Outputs.riemann_legacy&lt;/code&gt; replaced by &lt;code&gt;outputs.riemann&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Config Options
    &lt;ul&gt;
      &lt;li&gt;&lt;code&gt;Inputs.disk: mountpoints&lt;/code&gt; replaced by &lt;code&gt;mount_points&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.mqtt_consumer: metric_buffer&lt;/code&gt; is ignored&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;Inputs.nats_consumer: metric_buffer&lt;/code&gt; is ignored&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.influxdb : url&lt;/code&gt; replaced by &lt;code&gt;urls&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="new-plugins"&gt;New plugins&lt;/h2&gt;

&lt;p&gt;These are the newest plugins, first available in this version:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Zabbix Output (&lt;code&gt;outputs.zabbix&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Send metrics to Zabbix Network Monitoring&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/adrianlzt"&gt;adrianlzt&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;SNMP Lookup Processor (&lt;code&gt;processors.snmp_lookup&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Look up and cache extra tags using SNMP, replaces ifname processor&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/Hipska"&gt;hipska&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Binary Serializer (&lt;code&gt;serializers.binary&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Serialize metrics into binary protocol based on user-configuration&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/Ignatella"&gt;ignatella&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="important-changes"&gt;Important changes&lt;/h2&gt;

&lt;p&gt;Here are some changes to highlight:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Deprecations
    &lt;ul&gt;
      &lt;li&gt;A number of long, deprecated plugins were removed.&lt;/li&gt;
      &lt;li&gt;Please see the section below for additional details.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Option to skip re-running processors after aggregators
    &lt;ul&gt;
      &lt;li&gt;Introduces a new agent config option to skip re-running processors after aggregators.&lt;/li&gt;
      &lt;li&gt;By default, after aggregators are run, processors are run a second time. This can lead to unexpected results.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Kernel Pressure Stall Info
    &lt;ul&gt;
      &lt;li&gt;The kernel input plugin was updated to collect PSI information via &lt;code&gt;/proc/pressure&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;syslog Input Timeout
    &lt;ul&gt;
      &lt;li&gt;The default read-timeout of syslog was not sensible and could have closed the connection between messages exceeding the timeout.&lt;/li&gt;
      &lt;li&gt;The new default sets this to infinite (i.e. zero).&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Postgresql Input Tag
    &lt;ul&gt;
      &lt;li&gt;The postgresql plugin was not correctly sanitizing parameter values containing spaces or equal signs.&lt;/li&gt;
      &lt;li&gt;This has been resolved, but could result in new tag values.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;loongarch64 builds
    &lt;ul&gt;
      &lt;li&gt;Introduces loongarch64 builds for nightly builds.&lt;/li&gt;
      &lt;li&gt;Will not be a part of release packages initially.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="downloads"&gt;Downloads&lt;/h2&gt;

&lt;p&gt;Head to our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt; to get the latest Telegraf release. If you find issues or have questions, please join our &lt;a href="https://influxdata.com/slack"&gt;InfluxDB Community Slack&lt;/a&gt;, post them in our &lt;a href="https://github.com/influxdata/telegraf/issues"&gt;InfluxDB GitHub Repo&lt;/a&gt;, or our &lt;a href="https://community.influxdata.com/c/influxdb2"&gt;Community Site&lt;/a&gt;, and we will take a look.&lt;/p&gt;

&lt;h2 id="influxdb-university"&gt;InfluxDB University&lt;/h2&gt;

&lt;p&gt;Learn more about collecting data with Telegraf by taking the free InfluxDB University &lt;a href="https://university.influxdata.com/courses/data-collection-with-telegraf-tutorial/"&gt;Data Collection with Telegraf course&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Fri, 15 Mar 2024 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/telegraf-1-30-release-notes/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/telegraf-1-30-release-notes/</guid>
      <category>Developer</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
    <item>
      <title>Telegraf 1.29 Release Notes</title>
      <description>&lt;p&gt;A new feature-bearing release for Telegraf is now available:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Telegraf 1.29 — &lt;a href="https://docs.influxdata.com/telegraf/v1.27/release-notes-changelog/"&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the binaries for the latest Telegraf release on our &lt;a href="https://influxdata.com/downloads"&gt;Downloads page&lt;/a&gt;. Many thanks to all the open source community members who contributed to this effort!&lt;/p&gt;

&lt;h2 id="new-plugins"&gt;New Plugins&lt;/h2&gt;

&lt;p&gt;These are the newest plugins, first available in this version:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Filter Processor (&lt;code&gt;processors.filter&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Set rules with the ability to keep or drop specific metrics&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/srebhan"&gt;srebhan&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;LDAP Input (&lt;code&gt;inputs.ldap&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Monitor LDAP servers’ monitoring backend&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/srebhan"&gt;srebhan&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;OpenSearch Output (&lt;code&gt;outputs.opensearch&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Send metrics to OpenSearch&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/mannukalra"&gt;mannukalra&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Systemd Secret Store (&lt;code&gt;secretstores.systemd&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Secret store to use systemd as a backend&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/srebhan"&gt;srebhan&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="important-changes"&gt;Important Changes&lt;/h2&gt;

&lt;p&gt;Here are some changes to highlight:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Secrets Global Option
    &lt;ul&gt;
      &lt;li&gt;Introduced a new &lt;code&gt;--unprotected&lt;/code&gt; global flag.&lt;/li&gt;
      &lt;li&gt;When set, this flag instructs Telegraf to not attempt to reserve locked memory pages. This option might pose a security risk as decrypted secrets might be swapped out to disk, but allows for execution in environments where reserving locked memory is not possible.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Deprecate fieldpass and fielddrop modifiers
    &lt;ul&gt;
      &lt;li&gt;In order to better align the naming conventions, the metric modifiers &lt;code&gt;fieldpass&lt;/code&gt; and &lt;code&gt;fielddrop&lt;/code&gt; are replaced with &lt;code&gt;fieldinclude&lt;/code&gt; and &lt;code&gt;fieldexclude&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;All options will continue to work, but the documentation and examples were updated with the new terms.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Oracle and IBM Netezza SQL Support
    &lt;ul&gt;
      &lt;li&gt;The SQL input plugin now has drivers for both Oracle and IBM Netezza.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Stackdriver Distributions
    &lt;ul&gt;
      &lt;li&gt;The Stackdriver output can now take histograms and send them as a Stackdriver distribution.&lt;/li&gt;
      &lt;li&gt;This only supports Prometheus metric version 1 histograms. The sparse layout of version 2 histograms requires using the merge aggregator.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Removed all-zero fields from inputs.procstat
    &lt;ul&gt;
      &lt;li&gt;Up to now, Telegraf reports the fields &lt;code&gt;cpu_time_guest&lt;/code&gt;, &lt;code&gt;cpu_time_guest_nice&lt;/code&gt;, &lt;code&gt;cpu_time_idle&lt;/code&gt;, &lt;code&gt;cpu_time_irq&lt;/code&gt;, &lt;code&gt;cpu_time_nice&lt;/code&gt;, &lt;code&gt;cpu_time_soft_irq&lt;/code&gt; and &lt;code&gt;cpu_time_steal&lt;/code&gt;, which the underlying library never sets. As a consequence, those fields were always zero.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Introduction of Migrations
    &lt;ul&gt;
      &lt;li&gt;Users can migrate several deprecated plugins and plugin options using the new &lt;code&gt;telegraf config migrate&lt;/code&gt; command. This works for all plugins and options scheduled for removal in v1.30.0 (see next section).&lt;/li&gt;
      &lt;li&gt;For each given configuration file, the command generates a migrated version with a &lt;code&gt;.migrated&lt;/code&gt; suffix.&lt;/li&gt;
      &lt;li&gt;Please check the modifications and test the migrated version before using it!&lt;/li&gt;
      &lt;li&gt;Please also check the output of the command carefully as some migrations require further manual intervention due to ambiguous settings, adapted metric formats, or complex setups.&lt;/li&gt;
      &lt;li&gt;Note: The migration command will not keep comments for migrated plugins!&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="deprecation-removals"&gt;Deprecation Removals&lt;/h2&gt;

&lt;p&gt;This is the final release before the planned removal of several plugins and options. Users have been warned about these removals via warnings for multiple years. The list of removals includes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Plugins
    &lt;ul&gt;
      &lt;li&gt;&lt;code&gt;inputs.cassandra&lt;/code&gt; replaced with &lt;code&gt;inputs.jolokia2&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.httpjson&lt;/code&gt; replaced with &lt;code&gt;inputs.http&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.io&lt;/code&gt; replaced by &lt;code&gt;inputs.diskio&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.jolokia&lt;/code&gt; replaced by &lt;code&gt;inputs.jolokia2&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.kafka_consumer_legacy&lt;/code&gt; replaced by &lt;code&gt;inputs.kafka_consumer&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.snmp_legacy&lt;/code&gt; replaced by &lt;code&gt;inputs.snmp&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.tcp_listener&lt;/code&gt; replaced by &lt;code&gt;inputs.socket_listener&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.udp_listener&lt;/code&gt; replaced by &lt;code&gt;inputs.socket_listener&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;outputs.riemann_legacy&lt;/code&gt; replaced by &lt;code&gt;outputs.riemann&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Config Options
    &lt;ul&gt;
      &lt;li&gt;&lt;code&gt;inputs.disk: mountpoints&lt;/code&gt; replaced by &lt;code&gt;mount_points&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.mqtt_consumer: metric_buffer&lt;/code&gt; is ignored&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.nats_consumer: metric_buffer&lt;/code&gt; is ignored&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;inputs.influxdb : url&lt;/code&gt; replaced by &lt;code&gt;urls&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="downloads"&gt;Downloads&lt;/h2&gt;

&lt;p&gt;Head to our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt; to get the latest Telegraf release. If you find issues or have questions, please join our &lt;a href="https://influxdata.com/slack"&gt;InfluxDB Community Slack&lt;/a&gt;, post them in our &lt;a href="https://github.com/influxdata/telegraf/issues"&gt;InfluxDB GitHub Repo&lt;/a&gt;, or our &lt;a href="https://community.influxdata.com/c/influxdb2"&gt;Community Site&lt;/a&gt;, and we will take a look.&lt;/p&gt;

&lt;h2 id="influxdb-university"&gt;InfluxDB University&lt;/h2&gt;

&lt;p&gt;Learn more about collecting data with Telegraf by taking the free InfluxDB University &lt;a href="https://university.influxdata.com/courses/data-collection-with-telegraf-tutorial/"&gt;Data Collection with Telegraf course&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Wed, 13 Dec 2023 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/telegraf-1-29-release-notes/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/telegraf-1-29-release-notes/</guid>
      <category>Developer</category>
      <category>Product</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
    <item>
      <title>Using the Common Expression Language for Metric Filtering with Telegraf</title>
      <description>
&lt;p&gt;&lt;a href="https://www.influxdata.com/time-series-platform/telegraf/"&gt;Telegraf&lt;/a&gt; is an open-source plugin-driven agent for collecting, processing, aggregating, and writing time series data. When collecting metrics it is common to filter out or pass through metrics with specific names, tags, fields, or timestamp values.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/google/cel-spec"&gt;Common Expression Language (CEL)&lt;/a&gt; is an open-source language that provides a set of semantics for expression evaluation. Kubernetes users may already be familiar with the language as it is used to declare validation rules, policy rules, and other constraints or conditions.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://www.influxdata.com/blog/release-announcement-telegraf-1-27"&gt;v1.27&lt;/a&gt;, Telegraf now has the ability to parse CEL expressions to filter metrics. The following post outlines how users can take advantage of CEL to filter metrics easier than ever with Telegraf.&lt;/p&gt;

&lt;h2 id="telegraf-configuration"&gt;Telegraf configuration&lt;/h2&gt;

&lt;p&gt;The new &lt;code class="language-ini"&gt;metricpass&lt;/code&gt; option enables CEL filtering. This is similar to the existing &lt;code class="language-ini"&gt;namepass&lt;/code&gt; or &lt;code class="language-ini"&gt;tagpass&lt;/code&gt; options.&lt;/p&gt;

&lt;div style="padding:56.25% 0 0 0;position:relative; margin: 30px 0px;"&gt;&lt;iframe src="https://player.vimeo.com/video/720110271?h=4786ce8252&amp;amp;badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen="" style="position:absolute;top:0;left:0;width:100%;height:100%;" title="Telegraf Configuration: Metric Filtering"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;script src="https://player.vimeo.com/api/player.js"&gt;&lt;/script&gt;

&lt;p&gt;Telegraf evaluates the metrics based on the expression. Metrics that match the expression are passed on, while other metrics are dropped.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-yaml"&gt;[[inputs.cpu]]
  metricpass = “fields.usage_idle &amp;lt; 90”&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This option is valid for any input, output, processor, and aggregator plugin. For inputs the filtering takes place at the very end of an input, while for the other plugin types the filter is run before those plugins are run.&lt;/p&gt;

&lt;p&gt;While the CEL language is incredibly powerful, it does not alter metrics. It only determines which metrics should continue on from an input or to other plugins.&lt;/p&gt;

&lt;h2 id="cel-syntax-by-example"&gt;CEL syntax by example&lt;/h2&gt;

&lt;p&gt;The following are a set of examples to introduce CEL usage for Telegraf. For the complete set of types, logic, and functions users can reference the &lt;a href="https://github.com/google/cel-spec/blob/master/doc/langdef.md"&gt;cel-spec language definition&lt;/a&gt; in the CEL repo. There is even a &lt;a href="https://groups.google.com/g/cel-go-discuss"&gt;CEL Discussion Forum&lt;/a&gt; for help with specific questions about the language.&lt;/p&gt;

&lt;h3 id="referencing-metric-components"&gt;Referencing metric components&lt;/h3&gt;

&lt;p&gt;In order to filter metrics, users can reference specific components of a metric. Consider the following example metric:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-ini"&gt;example,host=a value=42 1686252961000000000&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The following table shows how to reference the specific components of the metric:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Component&lt;/th&gt;
      &lt;th&gt;CEL Reference&lt;/th&gt;
      &lt;th&gt;Example&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Metric name&lt;/td&gt;
      &lt;td&gt;name&lt;/td&gt;
      &lt;td&gt;name == “example”&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Tags&lt;/td&gt;
      &lt;td&gt;tags&lt;/td&gt;
      &lt;td&gt;tags.host == “a”&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Fields&lt;/td&gt;
      &lt;td&gt;fields&lt;/td&gt;
      &lt;td&gt;fields.value &amp;gt; 0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Timestamp&lt;/td&gt;
      &lt;td&gt;time&lt;/td&gt;
      &lt;td&gt;time &amp;gt;= now() - duration(“24h”)&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id="logical-operators"&gt;Logical operators&lt;/h3&gt;

&lt;p&gt;CEL supports C- and Go-style logic operators to make comparisons. The following example checks that the field “id” exists and the field “id” contains the substring “nwr”.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-c"&gt;"id" in fields &amp;amp;&amp;amp; fields.id.contains("nwr")&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This example ensures the metric name does not start with a “t” and that the tag “state” is equal to “on”.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-c"&gt;!name.startsWith("t") || tags.state == "on"&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="numeric-operations"&gt;Numeric operations&lt;/h3&gt;

&lt;p&gt;For numeric values, users can do both arithmetic and equality operations. For example:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-c"&gt;fields.value / 8 &amp;gt;= 1024
	fields.bits % 2 == 0&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="string-operations"&gt;String operations&lt;/h3&gt;

&lt;p&gt;To aid in testing strings, users have a number of helper functions available. The following table lists a few common ones:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Function&lt;/th&gt;
      &lt;th&gt;Test Description&lt;/th&gt;
      &lt;th&gt;Example&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;contains&lt;/td&gt;
      &lt;td&gt;String contains substring&lt;/td&gt;
      &lt;td&gt;tags.host.contains(“domain”)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;endsWith&lt;/td&gt;
      &lt;td&gt;Test string suffix&lt;/td&gt;
      &lt;td&gt;tags.id.endsWith(“.com”)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;lowerAscii&lt;/td&gt;
      &lt;td&gt;Lower case string&lt;/td&gt;
      &lt;td&gt;metric.name.lowerAscii()&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;matches&lt;/td&gt;
      &lt;td&gt;Compare string against a regular expression&lt;/td&gt;
      &lt;td&gt;tags.source.matches(“^[0-9a-zA-z-_]+@mycompany.com$”)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;startsWith&lt;/td&gt;
      &lt;td&gt;Test string prefix&lt;/td&gt;
      &lt;td&gt;tags.host.startsWith(“subdomain”)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;size&lt;/td&gt;
      &lt;td&gt;String length&lt;/td&gt;
      &lt;td&gt;tags.id.size()&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;For the full list of functions, check out &lt;a href="https://github.com/google/cel-go/blob/master/ext/strings.go"&gt;string.go source&lt;/a&gt;, which includes examples as well.&lt;/p&gt;

&lt;h3 id="time-operations"&gt;Time operations&lt;/h3&gt;

&lt;p&gt;A possible use case for this type of filtering would be to remove metrics older than a specific date. CEL includes a variety of helper functions to pick apart a date. For example:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-c"&gt;time.getFullYear() == 2023&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;There is a large list of these helper functions available on the &lt;a href="https://github.com/google/cel-spec/blob/master/doc/langdef.md#list-of-standard-definitions"&gt;CEL list of standard definitions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Additionally, a user can compare the current time to the timestamp. With this a user can see if a timestamp is less than a day old:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-c"&gt;time &amp;gt;= now() - duration(“24h”)&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="types"&gt;Types&lt;/h3&gt;

&lt;p&gt;To test for a specific type, the &lt;code class="language-c"&gt;type()&lt;/code&gt; function returns what a particular tag or field is. This might be useful to ensure a field is a numeric type:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-c"&gt;type(fields.bits) in [double, int, uint]
type(fields.cluster) == string&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The first line ensures that the bits field is of a numeric type, while the second ensures the cluster field is a string.&lt;/p&gt;

&lt;h2 id="performance-impact"&gt;Performance impact&lt;/h2&gt;

&lt;p&gt;Users should keep in mind that CEL usage comes at a cost. CEL is an interpreted language and uses overhead when implemented. If you only filter based on a specific tag or metric name, continue to use the &lt;code class="language-c"&gt;namepass/namedrop&lt;/code&gt; and &lt;code class="language-c"&gt;tagpass/tagdrop&lt;/code&gt; configuration options to achieve the best performance. However, in most cases, these CEL filters should be faster than using the Starlark processor to do the same task.&lt;/p&gt;

&lt;h2 id="get-started-with-metric-filtering-and-telegraf"&gt;Get started with metric filtering and Telegraf&lt;/h2&gt;

&lt;p&gt;With the addition of the Common Expression Language for metric filtering in v1.27, it is now even easier for users to customize their metrics. Download &lt;a href="https://www.influxdata.com/time-series-platform/telegraf/"&gt;Telegraf&lt;/a&gt; and give the new &lt;code class="language-c"&gt;metricpass&lt;/code&gt; option a try today!&lt;/p&gt;
</description>
      <pubDate>Thu, 22 Jun 2023 07:35:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/using-common-expression-language-metric-filtering-telegraf/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/using-common-expression-language-metric-filtering-telegraf/</guid>
      <category>Product</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
    <item>
      <title>Storing Secrets with Telegraf</title>
      <description>&lt;p&gt;Telegraf is an open source plugin-driven agent for collecting, processing, aggregating, and writing time series data. Telegraf relies on user-provided configuration files to define the various plugins and flow of this data. These configurations may require secrets or other sensitive data.&lt;/p&gt;

&lt;p&gt;The new secret store plugin type allows a user to store secrets and reference those secrets in their Telegraf configuration file. These stores alleviate the need to have secrets directly in the Telegraf configuration file.&lt;/p&gt;

&lt;p&gt;The following post provides an overview of the Secret Store feature of Telegraf and includes a few real-life examples.&lt;/p&gt;

&lt;h2 id="secret-stores"&gt;Secret Stores&lt;/h2&gt;

&lt;p&gt;As of v1.27, Telegraf has a few Secret Store plugins to choose from:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/tree/master/plugins/secretstores/docker"&gt;Docker&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;When running Docker, this plugin can read Docker provided secrets.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;These are values stored in &lt;code class="language-ini"&gt;/run/secrets&lt;/code&gt; on the container.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/tree/master/plugins/secretstores/http"&gt;HTTP&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Query secrets from an HTTP endpoint.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;The format of the data is expected to be a flat JSON object.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Supports a variety of encryption methods and authentication.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/tree/master/plugins/secretstores/jose"&gt;JOSE&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Local encrypted files using the JavaScript Object Signing and Encryption algorithm.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Users can use the &lt;code class="language-ini"&gt;telegraf secrets set&lt;/code&gt; to create secrets.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/tree/master/plugins/secretstores/os"&gt;OS&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Interact with OS-specific secret stores.&lt;/p&gt;

        &lt;ul&gt;
          &lt;li&gt;
            &lt;p&gt;Linux uses kernel keyrings.&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;macOS works with the macOS Keychain.&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;Windows interacts with the Windows Credential Manager control panel.&lt;/p&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="plugin-support"&gt;Plugin support&lt;/h3&gt;

&lt;p&gt;Telegraf plugins support secret stores only with specific fields. To learn if a plugin supports secret stores, look at the plugin’s README and look for the “Secret-store support” section. This details the plugin’s secret store capabilities and which configuration options it supports.&lt;/p&gt;

&lt;h3 id="user-access"&gt;User access&lt;/h3&gt;

&lt;p&gt;When setting up secrets, another key item to consider is that the user running Telegraf needs access to the secrets. When creating a secret store and running Telegraf as a service, be sure to give the commonly used &lt;code class="language-ini"&gt;telegraf&lt;/code&gt; user access to those secrets.&lt;/p&gt;

&lt;h2 id="getting-started-checklist"&gt;Getting started checklist&lt;/h2&gt;

&lt;p&gt;Below is a set of steps to migrate an existing Telegraf configuration to one that supports secret stores:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Verify plugin support
    &lt;ul&gt;
      &lt;li&gt;As mentioned above, ensure that the plugin(s) you want to use supports secret stores.&lt;/li&gt;
      &lt;li&gt;Then, ensure that plugin(s) support the configuration options you need.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Choose a secret store
    &lt;ul&gt;
      &lt;li&gt;Decide if you’re going to integrate with the OS secret stores or use an external store.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Add secret store to Telegraf config
    &lt;ul&gt;
      &lt;li&gt;Add the appropriate secret store plugin to the Telegraf config.&lt;/li&gt;
      &lt;li&gt;Each secret store requires a unique &lt;code class="language-ini"&gt;id&lt;/code&gt; that configurations using the secrets can reference.&lt;/li&gt;
      &lt;li&gt;Set up any configuration options necessary to reference the secrets.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Save secrets to that store
    &lt;ul&gt;
      &lt;li&gt;Telegraf’s secrets subcommand can write secrets for some, but not all the stores.&lt;/li&gt;
      &lt;li&gt;Ensure that the plugin successfully stored your secrets and that the secrets are accessible by the user running Telegraf. Keep in mind that some stores may not persist over reboots.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Update config to use secrets
    &lt;ul&gt;
      &lt;li&gt;Finally, update the Telegraf configuration to switch from hard-coded credentials.&lt;/li&gt;
      &lt;li&gt;Use the &lt;code class="language-ini"&gt;@{secretstore_id:secret_key}&lt;/code&gt; syntax to reference the secret stores for a configuration value.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;

&lt;p&gt;Below are a few examples using different secret store plugins:&lt;/p&gt;

&lt;h3 id="linux-os-example"&gt;Linux OS example&lt;/h3&gt;

&lt;p&gt;The following sets up secrets using a user’s kernel keyring on a Linux machine.&lt;/p&gt;

&lt;p&gt;First, update the Telegraf config to include the OS secret store plugin. The following gives the secret store the ID “mystore”, which we will use to reference the secrets later. Because you can have multiple secret stores, the ID is what makes the stores unique for identification purposes. The keyring value is the user’s kernel keyring to use:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-ini"&gt;[[secretstores.os]]
   id = "mystore"
   keyring = "telegraf"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To create secrets, use &lt;code class="language-ini"&gt;keyctl&lt;/code&gt; or the Telegraf binary. The &lt;code class="language-ini"&gt;secrets set&lt;/code&gt; subcommand takes the keyring name used above and the secret name. Then the user is prompted for the secret information to avoid putting the secret in their shell history:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;$ telegraf --config config.toml secrets set mystore influx_token
Enter secret value:&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Finally, to update the Telegraf configuration to reference the new secret:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-ini"&gt;[[outputs.influxdb_v2]]
  urls = ["http://127.0.0.1:8086"]
  token = "@{mystore:influx_token}"
  organization = "myorg"
  bucket = "mybucket"&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="docker-example"&gt;Docker example&lt;/h3&gt;

&lt;p&gt;The following is an example of pulling secrets via Docker secrets. The Docker secret store differs from the other stores in that it only reads secrets provided by Docker itself at runtime. These secrets mount to the &lt;code class="language-ini"&gt;/run/secrets&lt;/code&gt; directory of a container. A user cannot use Telegraf to set Docker secrets.&lt;/p&gt;

&lt;p&gt;Below is an example of a user storing the secrets in a file, which the Docker Compose config then references under secrets. Then update the Telegraf service to use the that secret:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-yaml"&gt;services:
  telegraf:
    image: telegraf:latest
    secrets:
      - influx_token
    user: “${USERID}” # Use the value of `id -u` of the user launching the docker-compose

secrets:
  influx_token:
    file: influx_token.txt&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The final Telegraf config used to access the Docker secret is similar to the code below:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-ini"&gt;[[secretstores.docker]]
  id = "docker_store"

[[outputs.influxdb_v2]]
  urls = ["http://127.0.0.1:8086"]
  token = "@{docker_store:influx_token}"
  organization = "myorg"
  bucket = "mybucket"&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="http-example"&gt;HTTP example&lt;/h3&gt;

&lt;p&gt;The following is an example of pulling secrets via an HTTP endpoint.&lt;/p&gt;

&lt;p&gt;The HTTP secret store plugin can call out to an HTTP endpoint with a variety of authentication or encryption options. The plugin expects the secrets to be in a flat key-value JSON file where the key is the secret name and the value is the actual secret. Here is an example of the format:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-json"&gt;{
    “influx_token_dev”: “6702bf65b31941f59dfcf09afd94b1aa”,
    “influx_token_test”: “1af461d979344253824cbbaf88dd2563”,
    “influx_token_prod”: “56372127fe944e68a497bad0a6e33663”
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To add this to Telegraf, provide a unique ID for the store and the URL to query for the secrets:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-ini"&gt;[[secretstores.http]]
  id = "http_store"
  url = "http://127.0.0.1/secrets"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Again, there are many options available for the plugin, including: custom headers, bearer tokens, basic authentication, oauth2, proxy, TLS config, cookie support, and much more. You can send encrypted secrets to Telegraf and, with the appropriate cipher and key, decrypt the secrets themselves.&lt;/p&gt;

&lt;p&gt;Finally, add the reference to the secrets to the config:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-ini"&gt;token = "@{http_store:influx_token_prod}"&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="jose-example"&gt;JOSE example&lt;/h3&gt;

&lt;p&gt;The following is an example of pulling secrets via the JavaScript Object Signing and Encryption (JOSE) algorithm. This secret store stores the secrets locally in encrypted files, one for each secret. To decrypt the files, you have to provide the password either in the Telegraf configuration file or when running Telegraf, interactively enter the password. As a result, this secret store option is better thought of as a security through obscurity.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-ini"&gt;[[secretstores.jose]]
  id = "jose_store"
  path = "/etc/telegraf/secrets"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To create secrets users can use the Telegraf binary:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;$ telegraf --config config.toml secrets set jose_store influx_token
Enter secret value:
Enter passphrase to unlock "/etc/telegraf/secrets":
$ ls /etc/telegraf/secrets
influx_token&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then, like other secret stores, update the Telegraf configuration with the reference to the secret:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-ini"&gt;token = "@{jose_store:influx_token}"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On start, if the password to the store is not provided in the configuration file, the user is prompted to enter the password:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;$ ./telegraf --config config.toml 
Enter passphrase to unlock "/etc/telegraf/secrets":&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id="get-started-with-secret-stores-and-telegraf"&gt;Get started with Secret Stores and Telegraf&lt;/h2&gt;

&lt;p&gt;This post laid out a number of ways to use the new secret store functionality in Telegraf. Consider where you might be able to use this functionality in Telegraf and give it a shot today!&lt;/p&gt;
</description>
      <pubDate>Thu, 15 Jun 2023 07:35:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/storing-secrets-telegraf/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/storing-secrets-telegraf/</guid>
      <category>Product</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
    <item>
      <title>Telegraf 1.27 Release Notes </title>
      <description>&lt;p&gt;A new feature-bearing release for Telegraf is now available:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Telegraf 1.27 —  &lt;a href="https://docs.influxdata.com/telegraf/v1.27/release-notes-changelog/"&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the binaries for the latest Telegraf release on our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt;. Many thanks to all the open source community members who contributed to this effort!&lt;/p&gt;

&lt;h2 id="key-new-features"&gt;Key new features&lt;/h2&gt;

&lt;p&gt;Below are a few new features of v1.27 worth highlighting:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/blob/536ab9e7b210689f269af4aea45103e414e97c67/docs/CONFIGURATION.md?plain=1#L637-L654"&gt;Common Expression Metric Filtering&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;A new &lt;code class="language-bash"&gt;metricpass&lt;/code&gt; filter option that accepts a filter expression using the &lt;a href="https://github.com/google/cel-go"&gt;Common Expression Language (CEL)&lt;/a&gt;.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Provides users with a powerful way to filter any aspect of a metric.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/blob/536ab9e7b210689f269af4aea45103e414e97c67/docs/CONFIGURATION.md?plain=1#L54-L71"&gt;Configuration File Parameter Expansion&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Config file environment variable substitution now supports additional parameter expansion.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;This allows for setting default values and error handling when a value is not set.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/tree/536ab9e7b210689f269af4aea45103e414e97c67/plugins/inputs/sflow"&gt;Netflow sFlow decoder&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;The Netflow Input Plugin can now parse sFlow v5 messages.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;This will eventually replace the sFlow specific input plugin.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/tree/master/plugins/inputs/sql"&gt;SQL FlightSQL support&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;The SQL Input Plugin added support for FlightSQL.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;The allows users to query against the new InfluxDB v3.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://github.com/influxdata/telegraf/tree/master/plugins/outputs/mqtt"&gt;MQTT layouts&lt;/a&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;The MQTT output now supports specifying the layout format of metrics.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;This option can allow the user to select from a set of high-level layouts that may better represent their data.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="new-plugins"&gt;New plugins&lt;/h2&gt;

&lt;p&gt;These are the newest plugins, first available, in this version:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;ctrlX Data Layer Input (&lt;code class="language-bash"&gt;inputs.ctrlx_datalayer&lt;/code&gt;)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Gather data from communication middleware running on ctrlX CORE devices.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Contributed by  &lt;a href="https://github.com/boschrexroth"&gt;boschrexroth&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Intel Baseband Accelerator Input (&lt;code class="language-bash"&gt;inputs.intel_baseband&lt;/code&gt;)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Collects metrics from both dedicated and integrated Intel devices that provide Wireless Baseband hardware acceleration.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Contributed by  &lt;a href="https://github.com/bkotlowski"&gt;bkotlowski&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Clarify Output (&lt;code class="language-bash"&gt;outputs.clarify&lt;/code&gt;)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Write data to Clarify.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Contributed by  &lt;a href="https://github.com/bbergshaven"&gt;bbergshaven&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Nebius Cloud Monitoring Output (&lt;code class="language-bash"&gt;outputs.nebius_cloud_monitoring&lt;/code&gt;)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Send aggregated metrics to Nebius.Cloud Monitoring.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Contributed by  &lt;a href="https://github.com/abrekhov"&gt;abrekhov&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Scale Processor (&lt;code class="language-bash"&gt;processors.scale&lt;/code&gt;)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Processor to scale values from a specified range into another range.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Contributed by  &lt;a href="https://github.com/PaddyKe"&gt;PaddyKe&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Docker Secret Store (&lt;code class="language-bash"&gt;secretstores.docker&lt;/code&gt;)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Secret store to use Docker Secrets as a backend.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Contributed by  &lt;a href="https://github.com/shantanoo-desai"&gt;shantanoo-desai&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;HTTP Secret Store (&lt;code class="language-bash"&gt;secretstores.http&lt;/code&gt;)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Secret store to query secrets from an HTTP server.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Contributed by  &lt;a href="https://github.com/srebhan"&gt;srebhan&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;CloudEvents Serializer (&lt;code class="language-bash"&gt;serializers.cloudevents&lt;/code&gt;)&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Produce metrics into the CloudEvents JSON format.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Contributed by  &lt;a href="https://github.com/srebhan"&gt;srebhan&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="important-changes"&gt;Important changes&lt;/h2&gt;

&lt;p&gt;There were two changes that could possibly impact a small number of users:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Time parsing with abbreviated time zones&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Up until this release, Telegraf was not parsing date times that included an abbreviated time zone (e.g. &lt;code class="language-bash"&gt;mst&lt;/code&gt;) correctly.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;If a user is using this type of date time, a warning will print as the behavior will now correctly parse these.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Parser and Serializer Structure&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;This was an internal-only change.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;End users should not see any differences unless they use Telegraf like a library.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="deprecation-removals"&gt;Deprecation removals&lt;/h2&gt;

&lt;p&gt;Users may have already seen some deprecation warnings for v2.0. Many of these messages were updated to set removal for v1.30, ~March 2024. This will be the first set of removals focusing on settings and plugins deprecated before v1.0.&lt;/p&gt;

&lt;h2 id="downloads"&gt;Downloads&lt;/h2&gt;

&lt;p&gt;Head to our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt; to get the latest Telegraf release. If you find issues or have questions, please join our &lt;a href="https://influxdata.com/slack"&gt;InfluxDB Community Slack&lt;/a&gt;, post them in our &lt;a href="https://github.com/influxdata/telegraf/issues"&gt;InfluxDB GitHub Repo&lt;/a&gt;, or our &lt;a href="https://community.influxdata.com/c/influxdb2"&gt;Community Site&lt;/a&gt;, and we will take a look.&lt;/p&gt;

&lt;h2 id="influxdb-university"&gt;InfluxDB University&lt;/h2&gt;

&lt;p&gt;Learn more about collecting data with Telegraf by taking the free InfluxDB University &lt;a href="https://university.influxdata.com/courses/data-collection-with-telegraf-tutorial/"&gt;Data Collection with Telegraf course&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Tue, 13 Jun 2023 07:35:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/release-announcement-telegraf-1-27/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/release-announcement-telegraf-1-27/</guid>
      <category>Product</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
    <item>
      <title>Telegraf 1.26.0 Release Includes Static Linux Builds, State Persistence, OpenSearch Query, and Windows Management Instrumentation</title>
      <description>&lt;p&gt;A new feature-bearing release for Telegraf is now available:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Telegraf 1.26.0 —  &lt;a href="https://docs.influxdata.com/telegraf/v1.26/release-notes-changelog/"&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the binaries for the latest Telegraf release on our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Many thanks to all the open source community members who contributed to this effort!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key new features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Static Builds
    &lt;ul&gt;
      &lt;li&gt;Linux builds are now statically built. Other operating systems were cross-built in the past and as a result, already static.&lt;/li&gt;
      &lt;li&gt;Users should not notice any change in behavior.&lt;/li&gt;
      &lt;li&gt;The &lt;code class="language-html"&gt;_static&lt;/code&gt; specific Linux binary is no longer produced as a result.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Default Configuration
    &lt;ul&gt;
      &lt;li&gt;The &lt;code class="language-html"&gt;telegraf config&lt;/code&gt; command and default config file provided by Telegraf now includes all plugins and produces the same output across all operating systems.&lt;/li&gt;
      &lt;li&gt;Plugin comments specify supported platform(s).&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;State Persistence
    &lt;ul&gt;
      &lt;li&gt;State persistence is now available in select plugins.&lt;/li&gt;
      &lt;li&gt;This allows plugins to start collecting data where they left off. A configuration with state persistence cannot change or it will not be able to recover.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New inputs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OpenSearch Query (&lt;code class="language-html"&gt;opensearch_query&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Gather metrics from OpenSearch query endpoints.&lt;/li&gt;
      &lt;li&gt;Contributed by  &lt;a href="https://github.com/NullOranje"&gt;NullOranje&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;P4 Runtime (&lt;code class="language-html"&gt;p4runtime&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Collects metrics from P4 programmable pipelines over gRPC.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/jokuniew"&gt;jokuniew&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Radius (&lt;code class="language-html"&gt;radius&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Collects authentication response time metrics from Radius.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/Hr0bar"&gt;Hr0bar&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Windows Management Instrumentation (&lt;code class="language-html"&gt;win_wmi&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Enable queries of Windows Management Instrumentation (WMI) classes.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/julesroussel3"&gt;julesroussel3&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New parsers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Apache Avro (&lt;code class="language-html"&gt;avro&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Support the Apache Avro format.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/athornton"&gt;athornton&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New processors&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Lookup (&lt;code class="language-html"&gt;lookup&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Read specific files and apply a table of annotations to metrics.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/srebhan"&gt;srebhan&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Downloads&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Head to our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt; to get the latest Telegraf release. If you find issues or have questions, please join our &lt;a href="https://influxdata.com/slack"&gt;InfluxDB Community Slack&lt;/a&gt;, post them in our &lt;a href="https://github.com/influxdata/telegraf/issues"&gt;InfluxDB GitHub Repo&lt;/a&gt;, or our &lt;a href="https://community.influxdata.com/c/influxdb2"&gt;Community Site&lt;/a&gt;, and we will take a look.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;InfluxDB University&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Learn more about collecting data with Telegraf by taking the free InfluxDB University &lt;a href="https://university.influxdata.com/courses/data-collection-with-telegraf-tutorial/"&gt;Data Collection with Telegraf course&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Call for testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Please fill out &lt;a href="https://forms.gle/P2fKo8pmxzXgyNJp9"&gt;this form&lt;/a&gt; if you are interested in being included in testing bug fixes and features for plugins and systems you are using. Telegraf maintainers will tag you on pull requests to test artifacts. This will help us better address bugs that may arise after a release.&lt;/p&gt;
</description>
      <pubDate>Thu, 16 Mar 2023 07:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/release-announcement-telegraf-oss-1-26-0/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/release-announcement-telegraf-oss-1-26-0/</guid>
      <category>Product</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
    <item>
      <title>InfluxDB SQL Queries with Python</title>
      <description>&lt;p&gt;Recently InfluxData announced SQL support in InfluxDB Cloud. Users can now use familiar SQL queries to explore and analyze their time series data. The SQL support was introduced along with the usage of &lt;a href="https://www.influxdata.com/glossary/apache-arrow/"&gt;Apache Arrow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Apache Arrow is an open source project used as the foundation of InfluxDB’s SQL support. Arrow provides the data representation, storage format, query processing, and network transport layers. &lt;a href="https://www.influxdata.com/glossary/apache-arrow-flight-sql/"&gt;Apache Flight SQL&lt;/a&gt; provides a method for interacting with Arrow via SQL.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/influxdata/flightsql-dbapi"&gt;Flight SQL DB API&lt;/a&gt; library provides a seamless user experience for users interacting with Apache Flight SQL in Python. This library can be used directly with InfluxDB with SQL support.&lt;/p&gt;

&lt;p&gt;The following demonstrates an end-to-end example of using the library with InfluxDB Cloud. Users who need to execute other operations, like inserting data, querying with Flux, or any other API requests, can continue to use the existing &lt;a href="https://github.com/influxdata/influxdb-client-python"&gt;influxdb-client-python&lt;/a&gt; client library.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; FlightSQL is useful for writing database agnostic code for different databases that support it. This more general approach is what this article covers. For example, if you are creating a UI or other user experience that might query different kinds of databases. If your intent is to &lt;em&gt;only&lt;/em&gt; use InfluxDB, we suggest using the upstream &lt;a href="https://docs.influxdata.com/influxdb/cloud-dedicated/reference/client-libraries/v3/"&gt;Flight libraries&lt;/a&gt; directly, because they have simpler dependencies and support &lt;strong&gt;both&lt;/strong&gt; InfluxQL and SQL.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id="install-the-library"&gt;Install the library&lt;/h2&gt;

&lt;p&gt;The library is published on &lt;a href="https://pypi.org/project/flightsql-dbapi/"&gt;PyPI&lt;/a&gt; in order to make it easy to install:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;pip install flightsql-dbapi&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To use the library, users need to import the &lt;code&gt;FlightSQLClient&lt;/code&gt; in their code:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;from flightsql import FlightSQLClient&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id="connecting-to-influxdb-cloud"&gt;Connecting to InfluxDB Cloud&lt;/h2&gt;

&lt;p&gt;To create a client for interacting with InfluxDB, users need to provide three pieces of information:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;host:&lt;/strong&gt; The hostname of the InfluxDB Cloud instance — note that this does not require a protocol (e.g. “https://”) or a port (e.g. 8086). The underlying library builds the full connection string.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;token:&lt;/strong&gt; This is the InfluxDB token string with access to the bucket.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;bucket:&lt;/strong&gt; In the client metadata, users need to provide what InfluxDB bucket to use with the connection; each connection then belongs to a specific bucket.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is an example of this connection process, where a user connects to InfluxDB Cloud and uses a token from the environment called “INFLUX_TOKEN” to connect to the “telegraf-monitoring” bucket:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;client = FlightSQLClient(
    host="us-east-1-1.aws.cloud2.influxdata.com",
    token=os.environ["INFLUX_TOKEN"],
    metadata={"bucket-name": "telegraf-monitoring"},
)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;From here users can use the returned client to interact with InfluxDB’s SQL support. For example, a user could execute queries on, or query information about the bucket’s tables and schema.&lt;/p&gt;

&lt;h2 id="executing-a-query"&gt;Executing a query&lt;/h2&gt;

&lt;p&gt;Passing a query to the client is a straightforward process of passing the SQL query string to the &lt;code class="language-python"&gt;execute()&lt;/code&gt; function. However, the following step is unique to Flight SQL, which requires gathering a ticket from an endpoint:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;info = client.execute("select * from cpu limit 10")
reader = client.do_get(info.endpoints[0].ticket)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In Apache Flight SQL, once a query is passed to the server, the server returns a FlightInfo object. The object contains a list of endpoints describing locations containing the query result. In the case of InfluxDB Cloud, there will only be a single endpoint. The client can then gather the query result from the information provided by the single endpoint’s ticket.&lt;/p&gt;

&lt;h2 id="query-result-handling"&gt;Query result handling&lt;/h2&gt;

&lt;p&gt;The response from the client is of the type &lt;a href="https://arrow.apache.org/docs/python/generated/pyarrow.flight.FlightStreamReader.html"&gt;FlightStreamReader&lt;/a&gt;. This allows the user to stream the data to avoid filling up memory and to be more efficient:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;for batch in reader:
    print(batch)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If the user only has a limited number of results from the query, they can use the &lt;code class="language-python"&gt;read_all()&lt;/code&gt; function to collect all data chunks into a Table:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;data = reader.read_all()&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The return value from this is a &lt;a href="https://arrow.apache.org/docs/python/generated/pyarrow.Table.html"&gt;PyArrow Table&lt;/a&gt;. These tables are groups of arrays representing columns of data in tabular form. The table provides a huge number of performant operations and abilities to convert to other data types.&lt;/p&gt;

&lt;p&gt;For example, a user can convert the table directly into a &lt;a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html"&gt;Pandas DataFrame&lt;/a&gt;. This allows users to quickly manipulate, transform, and analyze their data using the powerful Pandas library:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;reader.read_all().to_pandas()&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Users of the &lt;a href="https://github.com/pola-rs/polars"&gt;Polars&lt;/a&gt; library can also take advantage of Arrow support directly. A user can create a &lt;a href="https://pola-rs.github.io/polars/py-polars/html/reference/api/polars.from_arrow.html#polars-from-arrow"&gt;Polars DataFrame&lt;/a&gt; directly from the resulting Arrow Table:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;polars.from_table(reader.read_all())&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id="schemas-and-tables"&gt;Schemas and tables&lt;/h2&gt;

&lt;p&gt;When working with SQL it is helpful to know what schema or tables are available. To find that information when working with InfluxDB Cloud, users can use the following scripts to gather the tables:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;info = client.get_tables()
tables = client.do_get(info.endpoints[0].ticket).read_all()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or the following for the full schema:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;info = client.get_db_schemas()
schema = client.do_get(info.endpoints[0].ticket).read_all()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;As the table and schema information is relatively small, using &lt;code&gt;read_all()&lt;/code&gt; here gets the user the data immediately.&lt;/p&gt;

&lt;h2 id="try-out-sql-with-influxdb-and-python-today"&gt;Try out SQL with InfluxDB and Python today&lt;/h2&gt;

&lt;p&gt;This post demonstrated how users could take advantage of the Python Flight SQL library to connect and retrieve data from InfluxDB Cloud, powered by IOx. Users can now take advantage of familiar SQL queries with the leading time-series database and report out using Python.&lt;/p&gt;

&lt;p&gt;Consider where you can use &lt;a href="https://www.influxdata.com/influxcloud-trial"&gt;InfluxDB Cloud&lt;/a&gt; with SQL support and the &lt;a href="https://github.com/influxdata/flightsql-dbapi"&gt;Python Flight SQL library&lt;/a&gt; and give it a shot today!&lt;/p&gt;
</description>
      <pubDate>Tue, 21 Feb 2023 07:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/influxdb-sql-queries-python/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/influxdb-sql-queries-python/</guid>
      <category>Use Cases</category>
      <category>Developer</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
    <item>
      <title>Telegraf 1.25.2 Release Includes Secret Stores, libvirt, NetFlow, and OPC UA Event Subscriptions</title>
      <description>&lt;p&gt;A new feature-bearing release for Telegraf is now available:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Telegraf 1.25.0, 1.25.1, and 1.25.2 — &lt;a href="https://docs.influxdata.com/telegraf/v1.25/release-notes-changelog/"&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The binaries for the latest Telegraf release can be found on our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Many thanks to all the open source community members who contributed to this effort!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key new features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Secret Store - Users can now use secret stores to fill in credentials or other secrets in their config. A user needs to configure one or more secret store plugins and then reference those secrets in their plugin configuration. See the &lt;a href="https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#secret-store-secrets"&gt;Secret Store configuration docs&lt;/a&gt; for more information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New inputs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Azure Monitor (&lt;code class="language-bash"&gt;azure_monitor&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Gather metrics from Azure Monitor API.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/ShiranAvidov"&gt;ShiranAvidov&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Google Cloud Storage (&lt;code class="language-bash"&gt;gcs&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Collects metrics by iterating files located on a cloud storage bucket.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/gkatzioura"&gt;gkatzioura&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Intel DLB (&lt;code class="language-bash"&gt;intel_dlb&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Reads metrics from DPDK using the telemetry v2 interface.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/influxdata/telegraf/pull/11824"&gt;bkotlowski&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Libvirt (&lt;code class="language-bash"&gt;libvirt&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Collects statistics from virtualized guests using the virtualization libvirt API.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/p-zak"&gt;p-zak&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;NetFlow (&lt;code class="language-bash"&gt;netflow&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Collects metrics from NetFlow v5, NetFlow v9, and IPFIX collectors.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/srebhan"&gt;srebhan&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;OPC UA Event Subscriptions (&lt;code class="language-bash"&gt;opcua_listener&lt;/code&gt;)
    &lt;ul&gt;
      &lt;li&gt;Gather metrics from subscriptions to OPC UA devices.&lt;/li&gt;
      &lt;li&gt;Contributed by &lt;a href="https://github.com/LarsStegman"&gt;LarsStegman&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Downloads&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Head to our &lt;a href="https://portal.influxdata.com/downloads"&gt;Downloads page&lt;/a&gt; to get the latest Telegraf release. If you find issues or have questions, please join our &lt;a href="https://influxdata.com/slack"&gt;InfluxDB Community Slack&lt;/a&gt;, post them in our &lt;a href="https://github.com/influxdata/telegraf/issues"&gt;InfluxDB GitHub Repo&lt;/a&gt;, or our &lt;a href="https://community.influxdata.com/c/influxdb2"&gt;Community Site&lt;/a&gt;, and we will take a look.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;InfluxDB University&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Learn more about collecting data with Telegraf by taking the free InfluxDB University &lt;a href="https://university.influxdata.com/courses/data-collection-with-telegraf-tutorial/"&gt;Data Collection with Telegraf course&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Call for testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Please fill out &lt;a href="https://forms.gle/P2fKo8pmxzXgyNJp9"&gt;this form&lt;/a&gt; if you are interested in being included in testing bug fixes and features for plugins and systems you are using. Telegraf maintainers will tag you on pull requests to test artifacts. This will help us better address bugs that may arise after a release.&lt;/p&gt;
</description>
      <pubDate>Thu, 16 Feb 2023 07:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/release-announcement-telegraf-1-25-2/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/release-announcement-telegraf-1-25-2/</guid>
      <category>Product</category>
      <author>Josh Powers (InfluxData)</author>
    </item>
  </channel>
</rss>
