SNMP Trap 和 TimescaleDB 集成

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

info

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

50 亿+

Telegraf 下载量

#1

时序数据库
来源:DB Engines

10 亿+

InfluxDB 下载量

2,800+

贡献者

目录

强大性能,无限扩展

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

查看入门方法

输入和输出集成概述

SNMP Trap Telegraf 插件能够接收 SNMP 通知,通过捕获来自网络设备的重要事件,促进全面的网络监控。

此输出插件提供了一种可靠而高效的机制,用于将 Telegraf 收集的指标直接路由到 TimescaleDB。通过利用 PostgreSQL 强大的生态系统以及 TimescaleDB 的时序优化,它支持高性能数据摄取和高级查询功能。

集成详情

SNMP Trap

SNMP Trap 插件充当 SNMP 通知(称为陷阱和信息请求)的接收端点。它通过 UDP 运行,侦听传入的通知,这些通知可以配置为在特定端口上到达。此插件是网络监控和管理不可或缺的一部分,允许系统收集和响应从网络中各种设备(包括路由器、交换机和服务器)发送的 SNMP 陷阱。该插件通过 SNMPv3 支持安全传输选项,从而可以配置身份验证和加密参数以保护敏感数据。此外,它还允许用户灵活配置 SNMP 的多个方面,例如 MIB 文件位置,使其能够适应各种环境和用例。建议从已弃用的 netsnmp 后端过渡到更新的 gosmi 后端,以利用其增强的功能和支持。实施此插件的用户可以有效地监控网络事件、自动响应陷阱并维护强大的网络监控基础设施。

TimescaleDB

TimescaleDB 是一个开源时序数据库,作为 PostgreSQL 的扩展构建,旨在高效处理大规模、面向时间的数据。TimescaleDB 于 2017 年推出,是为了响应对强大、可扩展的解决方案日益增长的需求,该解决方案可以管理大量数据,同时具有高插入速率和复杂查询。通过利用 PostgreSQL 熟悉的 SQL 接口并使用专门的时序功能对其进行增强,TimescaleDB 迅速在希望将时序功能集成到现有关系数据库中的开发人员中流行起来。其混合方法使用户可以受益于 PostgreSQL 的灵活性、可靠性和生态系统,同时为时序数据提供优化的性能。

该数据库在需要快速摄取数据点并结合对历史时期进行复杂分析查询的环境中尤其有效。TimescaleDB 具有许多创新功能,例如将数据透明地分区为可管理块的超表和内置的持续聚合。这些功能可以显着提高查询速度和资源效率。

配置

SNMP Trap

[[inputs.snmp_trap]]
  ## Transport, local address, and port to listen on.  Transport must
  ## be "udp://".  Omit local address to listen on all interfaces.
  ##   example: "udp://127.0.0.1:1234"
  ##
  ## Special permissions may be required to listen on a port less than
  ## 1024.  See README.md for details
  ##
  # service_address = "udp://:162"
  ##
  ## Path to mib files
  ## Used by the gosmi translator.
  ## To add paths when translating with netsnmp, use the MIBDIRS environment variable
  # path = ["/usr/share/snmp/mibs"]
  ##
  ## Deprecated in 1.20.0; no longer running snmptranslate
  ## Timeout running snmptranslate command
  # timeout = "5s"
  ## Snmp version; one of "1", "2c" or "3".
  # version = "2c"
  ## SNMPv3 authentication and encryption options.
  ##
  ## Security Name.
  # sec_name = "myuser"
  ## Authentication protocol; one of "MD5", "SHA", "SHA224", "SHA256", "SHA384", "SHA512" or "".
  # auth_protocol = "MD5"
  ## Authentication password.
  # auth_password = "pass"
  ## Security Level; one of "noAuthNoPriv", "authNoPriv", or "authPriv".
  # sec_level = "authNoPriv"
  ## Privacy protocol used for encrypted messages; one of "DES", "AES", "AES192", "AES192C", "AES256", "AES256C" or "".
  # priv_protocol = ""
  ## Privacy password used for encrypted messages.
  # priv_password = ""

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

输入和输出集成示例

SNMP Trap

  1. 集中式网络监控:将 SNMP Trap 插件集成到集中式监控解决方案中,以实时接收有关网络设备的警报。通过配置插件以侦听来自各种路由器和交换机的陷阱,网络管理员可以快速响应设备中断或超出关键阈值等问题。此设置支持主动管理和快速解决网络问题,从而最大限度地减少停机时间。

  2. 自动化事件响应:每当收到特定陷阱时,使用 SNMP Trap 插件触发自动化事件响应工作流程。例如,如果检测到指示硬件故障的陷阱,则可以启动自动化脚本来收集诊断信息、通知支持人员,甚至尝试修复操作。这种方法通过减少人工干预和加快响应时间来提高 IT 运营效率。

  3. 网络性能分析:部署 SNMP Trap 插件以收集性能指标以及陷阱,从而全面了解网络健康状况。通过将此数据聚合到分析平台中,网络团队可以分析趋势、识别瓶颈并根据历史数据优化性能。这允许围绕网络升级或更改做出明智的决策和战略规划。

  4. 与警报系统集成:将 SNMP Trap 插件连接到 PagerDuty 或 Slack 等第三方警报系统。收到预定义的陷阱后,插件可以将警报发送到这些系统,使团队能够立即收到重要网络事件的通知。这种集成确保在正确的时间通知正确的人员,从而帮助保持高服务水平和快速解决问题。

TimescaleDB

  1. 实时物联网数据摄取:使用该插件实时收集和存储来自数千个物联网设备的传感器数据。此设置有助于立即进行分析,帮助组织监控运营效率并快速响应不断变化的条件。

  2. 云应用程序性能监控:利用该插件将来自分布式云应用程序的详细性能指标馈送到 TimescaleDB。这种集成支持实时仪表板和警报,使团队能够快速识别和缓解性能瓶颈。

  3. 历史数据分析和报告:实施一个系统,将长期指标存储在 TimescaleDB 中,以进行全面的历史分析。这种方法使企业能够执行趋势分析、生成详细报告并根据存档的时序数据做出数据驱动的决策。

  4. 自适应警报和异常检测:将插件与自动化异常检测工作流程集成。通过将指标持续流式传输到 TimescaleDB,机器学习模型可以分析数据模式并在发生异常时触发警报,从而提高系统可靠性和主动维护能力。

反馈

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

强大性能,无限扩展

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

查看入门方法

相关集成

HTTP 和 InfluxDB 集成

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

查看集成

Kafka 和 InfluxDB 集成

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

查看集成

Kinesis 和 InfluxDB 集成

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

查看集成