目录
强大的性能,无限的扩展能力
收集、组织和处理海量高速数据。 当您将任何数据视为时序数据时,它都更有价值。 使用 InfluxDB,这是 #1 的时序平台,旨在与 Telegraf 一起扩展。
查看入门方法
输入和输出集成概述
此插件可以通过 Stackdriver Monitoring API 收集来自 Google Cloud 服务的监控数据。 它旨在通过收集相关指标来帮助用户监控其云基础设施的性能和健康状况。
此输出插件提供了一种可靠且高效的机制,用于将 Telegraf 收集的指标直接路由到 TimescaleDB 中。 通过利用 PostgreSQL 强大的生态系统以及 TimescaleDB 的时序优化,它支持高性能数据摄取和高级查询功能。
集成详情
Google Cloud Stackdriver
Stackdriver Telegraf 插件允许用户使用 Cloud Monitoring API v3 从 Google Cloud Monitoring 查询时序数据。 通过此插件,用户可以轻松地将 Google Cloud 监控指标集成到他们的监控堆栈中。 此 API 提供了有关 Google Cloud 中运行的资源和应用程序的大量见解,包括性能、正常运行时间和运营指标。 该插件支持各种配置选项来过滤和优化检索到的数据,使用户能够根据其特定需求自定义其监控设置。 这种集成有助于更顺畅地维护云资源的健康和性能,并协助团队根据历史和当前性能统计数据做出数据驱动的决策。
TimescaleDB
TimescaleDB 是一个开源时序数据库,作为 PostgreSQL 的扩展构建,旨在高效处理大规模、面向时间的数据。 TimescaleDB 于 2017 年推出,是为了响应对强大、可扩展解决方案日益增长的需求而诞生的,该解决方案可以管理大量数据,并具有高插入率和复杂查询。 通过利用 PostgreSQL 熟悉的 SQL 接口并通过专门的时序功能对其进行增强,TimescaleDB 在希望将时序功能集成到现有关系数据库中的开发人员中迅速普及。 它的混合方法允许用户从 PostgreSQL 的灵活性、可靠性和生态系统中获益,同时为时序数据提供优化的性能。
该数据库在需要快速摄取数据点并结合对历史时期进行复杂分析查询的环境中特别有效。 TimescaleDB 具有许多创新功能,例如将数据透明地分区为可管理块的超表和内置的持续聚合。 这些功能可以显着提高查询速度和资源效率。
配置
Google Cloud Stackdriver
[[inputs.stackdriver]]
## GCP Project
project = "erudite-bloom-151019"
## Include timeseries that start with the given metric type.
metric_type_prefix_include = [
"compute.googleapis.com/",
]
## Exclude timeseries that start with the given metric type.
# metric_type_prefix_exclude = []
## Most metrics are updated no more than once per minute; it is recommended
## to override the agent level interval with a value of 1m or greater.
interval = "1m"
## Maximum number of API calls to make per second. The quota for accounts
## varies, it can be viewed on the API dashboard:
## https://cloud.google.com/monitoring/quotas#quotas_and_limits
# rate_limit = 14
## The delay and window options control the number of points selected on
## each gather. When set, metrics are gathered between:
## start: now() - delay - window
## end: now() - delay
#
## Collection delay; if set too low metrics may not yet be available.
# delay = "5m"
#
## If unset, the window will start at 1m and be updated dynamically to span
## the time between calls (approximately the length of the plugin interval).
# window = "1m"
## TTL for cached list of metric types. This is the maximum amount of time
## it may take to discover new metrics.
# cache_ttl = "1h"
## If true, raw bucket counts are collected for distribution value types.
## For a more lightweight collection, you may wish to disable and use
## distribution_aggregation_aligners instead.
# gather_raw_distribution_buckets = true
## Aggregate functions to be used for metrics whose value type is
## distribution. These aggregate values are recorded in in addition to raw
## bucket counts; if they are enabled.
##
## For a list of aligner strings see:
## https://cloud.google.com/monitoring/api/ref_v3/rpc/google.monitoring.v3#aligner
# distribution_aggregation_aligners = [
# "ALIGN_PERCENTILE_99",
# "ALIGN_PERCENTILE_95",
# "ALIGN_PERCENTILE_50",
# ]
## Filters can be added to reduce the number of time series matched. All
## functions are supported: starts_with, ends_with, has_substring, and
## one_of. Only the '=' operator is supported.
##
## The logical operators when combining filters are defined statically using
## the following values:
## filter ::= {AND AND AND }
## resource_labels ::= {OR }
## metric_labels ::= {OR }
## user_labels ::= {OR }
## system_labels ::= {OR }
##
## For more details, see https://cloud.google.com/monitoring/api/v3/filters
#
## Resource labels refine the time series selection with the following expression:
## resource.labels. =
# [[inputs.stackdriver.filter.resource_labels]]
# key = "instance_name"
# value = 'starts_with("localhost")'
#
## Metric labels refine the time series selection with the following expression:
## metric.labels. =
# [[inputs.stackdriver.filter.metric_labels]]
# key = "device_name"
# value = 'one_of("sda", "sdb")'
#
## User labels refine the time series selection with the following expression:
## metadata.user_labels."" =
# [[inputs.stackdriver.filter.user_labels]]
# key = "environment"
# value = 'one_of("prod", "staging")'
#
## System labels refine the time series selection with the following expression:
## metadata.system_labels."" =
# [[inputs.stackdriver.filter.system_labels]]
# key = "machine_type"
# value = 'starts_with("e2-")'
</code></pre>
TimescaleDB
# Publishes metrics to a TimescaleDB database
[[outputs.postgresql]]
## Specify connection address via the standard libpq connection string:
## host=... user=... password=... sslmode=... dbname=...
## Or a URL:
## postgres://[user[:password]]@localhost[/dbname]?sslmode=[disable|verify-ca|verify-full]
## See https://postgresql.ac.cn/docs/current/libpq-connect.html#LIBPQ-CONNSTRING
##
## All connection parameters are optional. Environment vars are also supported.
## e.g. PGPASSWORD, PGHOST, PGUSER, PGDATABASE
## All supported vars can be found here:
## https://postgresql.ac.cn/docs/current/libpq-envars.html
##
## Non-standard parameters:
## pool_max_conns (default: 1) - Maximum size of connection pool for parallel (per-batch per-table) inserts.
## pool_min_conns (default: 0) - Minimum size of connection pool.
## pool_max_conn_lifetime (default: 0s) - Maximum connection age before closing.
## pool_max_conn_idle_time (default: 0s) - Maximum idle time of a connection before closing.
## pool_health_check_period (default: 0s) - Duration between health checks on idle connections.
# connection = ""
## Postgres schema to use.
# schema = "public"
## Store tags as foreign keys in the metrics table. Default is false.
# tags_as_foreign_keys = false
## Suffix to append to table name (measurement name) for the foreign tag table.
# tag_table_suffix = "_tag"
## Deny inserting metrics if the foreign tag can't be inserted.
# foreign_tag_constraint = false
## Store all tags as a JSONB object in a single 'tags' column.
# tags_as_jsonb = false
## Store all fields as a JSONB object in a single 'fields' column.
# fields_as_jsonb = false
## Name of the timestamp column
## NOTE: Some tools (e.g. Grafana) require the default name so be careful!
# timestamp_column_name = "time"
## Type of the timestamp column
## Currently, "timestamp without time zone" and "timestamp with time zone"
## are supported
# timestamp_column_type = "timestamp without time zone"
## Templated statements to execute when creating a new table.
# create_templates = [
# '''CREATE TABLE {{ .table }} ({{ .columns }})''',
# ]
## Templated statements to execute when adding columns to a table.
## Set to an empty list to disable. Points containing tags for which there is
## no column will be skipped. Points containing fields for which there is no
## column will have the field omitted.
# add_column_templates = [
# '''ALTER TABLE {{ .table }} ADD COLUMN IF NOT EXISTS {{ .columns|join ", ADD COLUMN IF NOT EXISTS " }}''',
# ]
## Templated statements to execute when creating a new tag table.
# tag_table_create_templates = [
# '''CREATE TABLE {{ .table }} ({{ .columns }}, PRIMARY KEY (tag_id))''',
# ]
## Templated statements to execute when adding columns to a tag table.
## Set to an empty list to disable. Points containing tags for which there is
## no column will be skipped.
# tag_table_add_column_templates = [
# '''ALTER TABLE {{ .table }} ADD COLUMN IF NOT EXISTS {{ .columns|join ", ADD COLUMN IF NOT EXISTS " }}''',
# ]
## The postgres data type to use for storing unsigned 64-bit integer values
## (Postgres does not have a native unsigned 64-bit integer type).
## The value can be one of:
## numeric - Uses the PostgreSQL "numeric" data type.
## uint8 - Requires pguint extension (https://github.com/petere/pguint)
# uint64_type = "numeric"
## When using pool_max_conns > 1, and a temporary error occurs, the query is
## retried with an incremental backoff. This controls the maximum duration.
# retry_max_backoff = "15s"
## Approximate number of tag IDs to store in in-memory cache (when using
## tags_as_foreign_keys). This is an optimization to skip inserting known
## tag IDs. Each entry consumes approximately 34 bytes of memory.
# tag_cache_size = 100000
## Cut column names at the given length to not exceed PostgreSQL's
## 'identifier length' limit (default: no limit)
## (see https://postgresql.ac.cn/docs/current/limits.html)
## Be careful to not create duplicate column names!
# column_name_length_limit = 0
## Enable & set the log level for the Postgres driver.
# log_level = "warn" # trace, debug, info, warn, error, none
输入和输出集成示例
Google Cloud Stackdriver
-
将云指标集成到自定义仪表板中:借助此插件,团队可以将来自 Google Cloud 的指标导入个性化仪表板,从而可以实时监控应用程序性能和资源利用率。 通过自定义云指标的可视化表示,运营团队可以轻松识别趋势和异常,从而在问题升级之前进行主动管理。
-
自动化警报和分析:用户可以设置自动化警报机制,利用插件的指标来跟踪资源阈值。 这种能力使团队能够通过提供即时通知来快速响应性能下降或中断,从而缩短平均恢复时间并确保持续的运营效率。
-
跨平台资源比较:该插件可用于提取来自各种 Google Cloud 服务的指标,并将它们与本地资源进行比较。 这种跨平台可见性有助于组织就资源分配和扩展策略做出明智的决策,并优化云支出与本地基础设施的比例。
-
用于容量规划的历史数据分析:通过长期收集历史指标,该插件使团队能够进行全面的容量规划。 了解过去的绩效趋势有助于准确预测资源需求,从而实现更好的预算编制和投资策略。
TimescaleDB
-
实时物联网数据摄取:使用该插件实时收集和存储来自数千个物联网设备的传感器数据。 这种设置有助于立即进行分析,帮助组织监控运营效率并快速响应不断变化的条件。
-
云应用程序性能监控:利用该插件将来自分布式云应用程序的详细性能指标馈送到 TimescaleDB 中。 这种集成支持实时仪表板和警报,使团队能够快速识别和缓解性能瓶颈。
-
历史数据分析和报告:实施一个系统,将长期指标存储在 TimescaleDB 中,以进行全面的历史分析。 这种方法使企业能够执行趋势分析、生成详细报告并根据存档的时序数据做出数据驱动的决策。
-
自适应警报和异常检测:将插件与自动化异常检测工作流程集成。 通过持续将指标流式传输到 TimescaleDB,机器学习模型可以分析数据模式并在发生异常时触发警报,从而提高系统可靠性和主动维护能力。
反馈
感谢您成为我们社区的一份子! 如果您对这些页面有任何一般性反馈或发现任何错误,我们欢迎并鼓励您提出意见。 请在 InfluxDB 社区 Slack 中提交您的反馈。
强大的性能,无限的扩展能力
收集、组织和处理海量高速数据。 当您将任何数据视为时序数据时,它都更有价值。 使用 InfluxDB,这是 #1 的时序平台,旨在与 Telegraf 一起扩展。
查看入门方法