DNS 和 PostgreSQL 集成

强大性能,轻松集成,由 Telegraf 提供支持,Telegraf 是 InfluxData 构建的开源数据连接器。

info

这不是大规模实时查询的推荐配置。为了查询和压缩优化、高速摄取和高可用性,您可能需要考虑 DNS 和 InfluxDB

50 亿+

Telegraf 下载量

#1

时序数据库
来源:DB Engines

10 亿+

InfluxDB 下载量

2,800+

贡献者

目录

强大性能,无限扩展

收集、组织和处理海量高速数据。当您将任何数据视为时序数据时,它都更有价值。InfluxDB 是排名第一的时序平台,旨在与 Telegraf 一起扩展。

查看入门方法

输入和输出集成概览

DNS 插件使用户能够监控和收集 DNS 查询时间的统计信息,从而促进 DNS 解析的性能分析。

Telegraf PostgreSQL 插件允许您高效地将指标写入 PostgreSQL 数据库,同时自动管理数据库模式。

集成详情

DNS

此插件以毫秒为单位收集 DNS 查询时间,利用类似于 Dig 命令的 DNS 查询功能。它提供了一种通过测量来自指定 DNS 服务器的响应时间来监控和分析 DNS 性能的方法,使网络管理员和工程师能够确保最佳 DNS 解析时间。该插件可以配置为针对特定服务器并自定义查询的记录类型,涵盖各种 DNS 功能,例如将域名解析为 IP 地址,或根据需要检索特定记录的详细信息,同时还清楚地报告每次查询的成功或失败,以及相关的元数据。

PostgreSQL

PostgreSQL 插件使用户能够将指标写入 PostgreSQL 数据库或兼容数据库,通过自动更新缺少的列,为模式管理提供强大的支持。该插件旨在促进与监控解决方案的集成,允许用户高效地存储和管理时序数据。它为连接设置、并发和错误处理提供了可配置的选项,并支持高级功能,例如用于标签和字段的 JSONB 存储、外键标记、模板化模式修改以及通过 pguint 扩展支持无符号整数数据类型。

配置

DNS

[[inputs.dns_query]]
  servers = ["8.8.8.8"]

  # network = "udp"

  # domains = ["."]

  # record_type = "A"

  # port = 53

  # timeout = "2s"

  # include_fields = []
  

PostgreSQL

# Publishes metrics to a postgresql 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 age of a connection 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 backoff 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

  ## Enable & set the log level for the Postgres driver.
  # log_level = "warn" # trace, debug, info, warn, error, none

输入和输出集成示例

DNS

  1. 监控多个服务器的 DNS 性能:通过部署 DNS 插件,用户可以通过在服务器数组中指定不同的 DNS 服务器(例如 Google DNS 和 Cloudflare DNS)来同时监控它们的性能。这种情况可以比较不同 DNS 提供商的响应时间和可靠性,从而帮助根据经验数据选择最佳选项。

  2. 分析高流量域名的查询时间:集成该插件以专门测量与组织运营相关的高流量域名(例如内部服务或面向客户的站点)的响应时间。通过关注这些域名的性能指标,组织可以主动解决延迟问题,确保服务可靠性并改善用户体验。

  3. DNS 超时警报:将插件与警报系统结合使用,以便在 DNS 查询超过定义的超时阈值时通知管理员。这种设置有助于主动排除网络问题或服务器配置错误,从而对潜在的停机场景做出快速响应。

  4. 收集历史数据以了解性能趋势:使用该插件收集较长时期内 DNS 查询时间的历史数据。这些数据可用于分析 DNS 性能的趋势和模式,从而更好地进行容量规划、识别周期性问题并证明基础设施升级或 DNS 架构变更的合理性。

PostgreSQL

  1. 使用复杂查询进行实时分析:利用 PostgreSQL 插件将来自各种来源的指标存储在 PostgreSQL 数据库中,从而使用复杂查询实现实时分析。这种设置可以帮助数据科学家和分析师发现模式和趋势,因为他们可以在多个表之间操作关系数据,同时利用 PostgreSQL 强大的查询优化功能。具体来说,用户可以使用跨不同指标表的 JOIN 操作创建复杂的报告,从而揭示通常隐藏在嵌入式系统中的见解。

  2. 与 TimescaleDB 集成以处理时序数据:在 TimescaleDB 实例中使用 PostgreSQL 插件来高效处理和分析时序数据。通过实施超表,用户可以在时间维度上实现更高的性能和主题分区。这种集成允许用户对大量的时序数据运行分析查询,同时保留 PostgreSQL SQL 查询的全部功能,从而确保指标分析的可靠性和效率。

  3. 数据版本控制和历史分析:实施一种使用 PostgreSQL 插件的策略,以维护指标在不同时间点的不同版本。用户可以设置一个不可变的数据表结构,其中保留旧版本的表,从而实现轻松的历史分析。这种方法不仅提供了对数据演变的洞察,还有助于遵守数据保留策略,确保数据集的历史完整性保持不变。

  4. 针对不断变化的指标的动态模式管理:使用该插件的模板功能来创建动态变化的模式,以响应指标的变化。此用例允许组织在指标演变时调整其数据结构,添加必要的字段并确保遵守数据完整性策略。通过利用模板化的 SQL 命令,用户无需手动干预即可扩展其数据库,从而促进敏捷的数据管理实践。

反馈

感谢您成为我们社区的一员!如果您有任何一般性反馈或在这些页面上发现任何错误,我们欢迎并鼓励您提出意见。请在 InfluxDB 社区 Slack 中提交您的反馈。

强大性能,无限扩展

收集、组织和处理海量高速数据。当您将任何数据视为时序数据时,它都更有价值。InfluxDB 是排名第一的时序平台,旨在与 Telegraf 一起扩展。

查看入门方法

相关集成

HTTP 和 InfluxDB 集成

HTTP 插件从一个或多个 HTTP(S) 端点收集指标。它支持各种身份验证方法和数据格式的配置选项。

查看集成

Kafka 和 InfluxDB 集成

此插件从 Kafka 读取消息,并允许基于这些消息创建指标。它支持各种配置,包括不同的 Kafka 设置和消息处理选项。

查看集成

Kinesis 和 InfluxDB 集成

Kinesis 插件允许从 AWS Kinesis 流中读取指标。它支持多种输入数据格式,并提供使用 DynamoDB 进行检查点操作的功能,以实现可靠的消息处理。

查看集成