目录
强大性能,无限扩展
收集、组织和处理海量高速数据。 当您将任何数据视为时间序列数据时,它都会更有价值。 借助 InfluxDB,这个排名第一的时间序列平台旨在通过 Telegraf 进行扩展。
查看入门方法
输入和输出集成概述
此插件通过与 Kubelet API 通信来捕获 Kubernetes pod 和容器的指标。
此输出插件为将 Telegraf 收集的指标直接路由到 TimescaleDB 提供了一种可靠高效的机制。 通过利用 PostgreSQL 的强大生态系统以及 TimescaleDB 的时间序列优化,它支持高性能数据摄取和高级查询功能。
集成详情
Kubernetes
Kubernetes 输入插件与 Kubelet API 接口,以收集在单个主机上运行的 pod 和容器的指标,理想情况下作为 Kubernetes 安装中守护程序集的一部分。 通过在集群中的每个节点上运行,它从本地运行的 kubelet 收集指标,确保数据反映环境的实时状态。 Kubernetes 作为一个快速发展的项目,更新频繁,该插件遵循主要云提供商支持的版本,在有限的时间跨度内保持跨多个版本的兼容性。 充分考虑了潜在的高序列基数,这可能会给数据库带来负担; 因此,建议用户实施过滤技术和保留策略来有效管理此负载。 配置选项提供了插件行为的灵活自定义,以便无缝集成到不同的设置中,从而增强其在监控 Kubernetes 环境中的实用性。
TimescaleDB
TimescaleDB 是一个开源时间序列数据库,作为 PostgreSQL 的扩展而构建,旨在高效处理大规模、面向时间的数据。 TimescaleDB 于 2017 年推出,是为了响应对能够管理海量数据、具有高插入速率和复杂查询的强大、可扩展解决方案日益增长的需求而出现的。 通过利用 PostgreSQL 熟悉的 SQL 接口,并通过专门的时间序列功能对其进行增强,TimescaleDB 在希望将时间序列功能集成到现有关系数据库中的开发人员中迅速普及。 它的混合方法允许用户受益于 PostgreSQL 的灵活性、可靠性和生态系统,同时为时间序列数据提供优化的性能。
该数据库在需要快速摄取数据点并对历史时期进行复杂分析查询的环境中尤其有效。 TimescaleDB 具有许多创新功能,例如将数据透明地分区为可管理块的超表和内置的连续聚合。 这些显着提高了查询速度和资源效率。
配置
Kubernetes
[[inputs.kubernetes]]
## URL for the kubelet, if empty read metrics from all nodes in the cluster
url = "http://127.0.0.1:10255"
## Use bearer token for authorization. ('bearer_token' takes priority)
## If both of these are empty, we'll use the default serviceaccount:
## at: /var/run/secrets/kubernetes.io/serviceaccount/token
##
## To re-read the token at each interval, please use a file with the
## bearer_token option. If given a string, Telegraf will always use that
## token.
# bearer_token = "/var/run/secrets/kubernetes.io/serviceaccount/token"
## OR
# bearer_token_string = "abc_123"
## Kubernetes Node Metric Name
## The default Kubernetes node metric name (i.e. kubernetes_node) is the same
## for the kubernetes and kube_inventory plugins. To avoid conflicts, set this
## option to a different value.
# node_metric_name = "kubernetes_node"
## Pod labels to be added as tags. An empty array for both include and
## exclude will include all labels.
# label_include = []
# label_exclude = ["*"]
## Set response_timeout (default 5 seconds)
# response_timeout = "5s"
## Optional TLS Config
# tls_ca = /path/to/cafile
# tls_cert = /path/to/certfile
# tls_key = /path/to/keyfile
## Use TLS but skip chain & host verification
# insecure_skip_verify = false
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
输入和输出集成示例
Kubernetes
-
动态资源分配监控:通过利用 Kubernetes 插件,团队可以为各种 pod 和容器的资源使用模式设置警报。 这种主动监控方法可以根据特定阈值自动扩展资源,从而帮助优化性能,同时最大限度地降低高峰使用期间的成本。
-
多租户资源隔离分析:使用 Kubernetes 的组织可以利用此插件来跟踪每个命名空间的资源消耗。 在多租户场景中,了解不同团队之间的资源分配和使用情况对于确保公平访问和性能保证至关重要,从而带来更好的资源管理策略。
-
实时健康状况仪表板:将 Kubernetes 插件捕获的数据集成到 Grafana 等可视化工具中,以创建实时仪表板。 这些仪表板提供对 Kubernetes 环境整体健康状况和性能的洞察,使团队能够快速识别和纠正跨集群、pod 和容器的问题。
-
自动化事件响应工作流程:通过将 Kubernetes 插件与警报管理系统相结合,团队可以根据实时指标自动化事件响应程序。 如果 pod 的资源使用量超过预定义的限制,自动化工作流程可以触发补救措施,例如重新启动 pod 或重新分配资源,所有这些都有助于提高系统弹性。
TimescaleDB
-
实时物联网数据摄取:使用该插件实时收集和存储来自数千个物联网设备的传感器数据。 这种设置有助于即时分析,帮助组织监控运营效率并快速响应不断变化的情况。
-
云应用程序性能监控:利用该插件将来自分布式云应用程序的详细性能指标馈送到 TimescaleDB 中。 这种集成支持实时仪表板和警报,使团队能够快速识别和缓解性能瓶颈。
-
历史数据分析和报告:实施一个将长期指标存储在 TimescaleDB 中以进行全面历史分析的系统。 这种方法允许企业执行趋势分析、生成详细报告并根据存档的时间序列数据做出数据驱动的决策。
-
自适应警报和异常检测:将插件与自动化异常检测工作流程集成。 通过将指标持续流式传输到 TimescaleDB,机器学习模型可以分析数据模式并在发生异常时触发警报,从而增强系统可靠性和主动维护。
反馈
感谢您成为我们社区的一份子! 如果您有任何一般性反馈或在这些页面上发现任何错误,我们欢迎并鼓励您提供意见。 请在 InfluxDB 社区 Slack 中提交您的反馈。
强大性能,无限扩展
收集、组织和处理海量高速数据。 当您将任何数据视为时间序列数据时,它都会更有价值。 借助 InfluxDB,这个排名第一的时间序列平台旨在通过 Telegraf 进行扩展。
查看入门方法