Collector Mode Configuration
Detailed configuration guide for Telegen Collector mode.
Overview
Collector Mode enables Telegen to collect telemetry from remote infrastructure without eBPF. This is ideal for network devices, storage arrays, and other infrastructure that cannot run agents.
flowchart LR
subgraph Remote["Remote Infrastructure"]
SW["Switches"]
RT["Routers"]
ST["Storage Arrays"]
end
subgraph Collector["Telegen Collector"]
TG["Telegen"]
end
SW -->|SNMP| TG
RT -->|SNMP| TG
ST -->|API| TG
TG -->|OTLP| OC["OTel Collector"]
When to Use Collector Mode
Use Collector Mode when you need to monitor:
- Network infrastructure - Switches, routers, firewalls
- Storage arrays - Dell, NetApp, Pure, HPE
- SNMP-enabled devices - Any device with SNMP support
- Remote hosts - Via SNMP or vendor APIs
Minimal Collector Configuration
telegen:
mode: collector
otlp:
endpoint: "otel-collector:4317"
collector:
snmp:
enabled: true
targets:
- address: "10.0.1.1:161"
community: "public"
SNMP Collection
SNMP v2c Configuration
collector:
snmp:
enabled: true
poll_interval: 60s
timeout: 10s
retries: 3
targets:
- name: "core-switch-01"
address: "10.0.1.1:161"
version: "v2c"
community: "public"
modules:
- if_mib
- entity_mib
labels:
location: "dc1-rack1"
role: "core"
- name: "access-switch-01"
address: "10.0.1.2:161"
version: "v2c"
community: "public"
modules:
- if_mib
SNMP v3 Configuration
collector:
snmp:
enabled: true
targets:
- name: "secure-router-01"
address: "10.0.1.10:161"
version: "v3"
security:
user: "monitor"
security_level: "authPriv" # noAuthNoPriv, authNoPriv, authPriv
auth_protocol: "SHA256" # MD5, SHA, SHA224, SHA256, SHA384, SHA512
auth_password: "${SNMP_AUTH_PASSWORD}"
priv_protocol: "AES256" # DES, AES, AES192, AES256
priv_password: "${SNMP_PRIV_PASSWORD}"
modules:
- if_mib
- bgp4_mib
Available SNMP Modules
| Module | Description |
|---|---|
if_mib |
Interface statistics (IF-MIB) |
entity_mib |
Physical entity information |
host_resources |
Host resources (HR-MIB) |
bgp4_mib |
BGP routing (BGP4-MIB) |
cisco_envmon |
Cisco environment monitoring |
cisco_process |
Cisco process MIB |
juniper_alarm |
Juniper alarm MIB |
arista_hw |
Arista hardware MIB |
Custom SNMP Modules
Define custom SNMP modules for specific devices:
collector:
snmp:
custom_modules:
- name: "custom_power"
walk:
- "1.3.6.1.4.1.12345.1.2" # Enterprise OID
metrics:
- name: "power_consumption_watts"
oid: "1.3.6.1.4.1.12345.1.2.1"
type: gauge
- name: "power_status"
oid: "1.3.6.1.4.1.12345.1.2.2"
type: gauge
lookups:
- 0: "unknown"
- 1: "ok"
- 2: "degraded"
- 3: "failed"
SNMP Trap Receiver
Receive and process SNMP traps:
collector:
snmp:
trap_receiver:
enabled: true
listen_address: ":162"
# Community string validation for v2c traps
community_allowlist:
- "public"
- "traps"
# v3 trap authentication
v3_users:
- user: "trap-sender"
auth_protocol: "SHA256"
auth_password: "${TRAP_AUTH_PASSWORD}"
priv_protocol: "AES256"
priv_password: "${TRAP_PRIV_PASSWORD}"
SNMP Discovery
Auto-discover SNMP devices on your network:
collector:
snmp:
discovery:
enabled: true
interval: 1h
# Networks to scan
networks:
- "10.0.0.0/16"
- "192.168.0.0/24"
# Ports to probe
ports:
- 161
# Communities to try
communities:
- "public"
- "private"
# Skip specific addresses
exclude:
- "10.0.0.1"
- "10.0.255.255"
Storage Array Monitoring
Dell PowerStore
collector:
storage:
dell:
enabled: true
poll_interval: 60s
targets:
- name: "powerstore-cluster-01"
address: "https://powerstore.example.com"
username: "monitor"
password: "${DELL_PASSWORD}"
verify_ssl: true
# Metrics to collect
metrics:
performance: true
capacity: true
alerts: true
hardware: true
Pure Storage FlashArray
collector:
storage:
pure:
enabled: true
poll_interval: 60s
targets:
- name: "pure-array-01"
address: "https://purestorage.example.com"
api_token: "${PURE_API_TOKEN}"
metrics:
arrays: true
volumes: true
hosts: true
pods: true
replication: true
NetApp ONTAP
collector:
storage:
netapp:
enabled: true
poll_interval: 60s
targets:
- name: "ontap-cluster-01"
address: "https://ontap.example.com"
username: "monitor"
password: "${NETAPP_PASSWORD}"
verify_ssl: true
metrics:
aggregates: true
volumes: true
luns: true
network: true
performance: true
HPE Primera/3PAR
collector:
storage:
hpe:
enabled: true
poll_interval: 60s
targets:
- name: "primera-01"
address: "https://primera.example.com"
username: "monitor"
password: "${HPE_PASSWORD}"
metrics:
system: true
cpgs: true
volumes: true
hosts: true
ports: true
Network Infrastructure APIs
Arista CloudVision
collector:
network_infra:
arista:
enabled: true
poll_interval: 60s
address: "https://cloudvision.example.com"
token: "${ARISTA_CVP_TOKEN}"
metrics:
devices: true
interfaces: true
bgp: true
events: true
Cisco ACI
collector:
network_infra:
cisco_aci:
enabled: true
poll_interval: 60s
apic:
address: "https://apic.example.com"
username: "monitor"
password: "${ACI_PASSWORD}"
metrics:
fabric: true
tenants: true
endpoints: true
faults: true
Hybrid Mode
Run both Agent and Collector simultaneously:
telegen:
mode: agent # Primary mode
# Agent features
agent:
ebpf:
enabled: true
network:
enabled: true
profiling:
enabled: true
# Also enable collector features
collector:
enabled: true
snmp:
enabled: true
targets:
- address: "10.0.1.1:161"
community: "public"
storage:
pure:
enabled: true
targets:
- address: "https://pure.example.com"
api_token: "${PURE_TOKEN}"
otlp:
endpoint: "otel-collector:4317"
Resource Configuration
collector:
resources:
# Max concurrent SNMP polls
max_concurrent_polls: 50
# Max concurrent API requests
max_concurrent_api_requests: 20
# Request timeout
timeout: 30s
# Rate limiting
rate_limit:
requests_per_second: 100
Example: Data Center Infrastructure
Complete example for monitoring a data center:
telegen:
mode: collector
service_name: "dc-telegen-collector"
log_level: info
otlp:
endpoint: "otel-collector:4317"
collector:
# Network devices via SNMP
snmp:
enabled: true
poll_interval: 60s
targets:
# Core switches
- name: "core-sw-01"
address: "10.0.1.1:161"
version: "v3"
security:
user: "monitor"
auth_protocol: "SHA256"
auth_password: "${SNMP_AUTH}"
priv_protocol: "AES256"
priv_password: "${SNMP_PRIV}"
modules: [if_mib, entity_mib]
labels:
tier: "core"
- name: "core-sw-02"
address: "10.0.1.2:161"
version: "v3"
security:
user: "monitor"
auth_protocol: "SHA256"
auth_password: "${SNMP_AUTH}"
priv_protocol: "AES256"
priv_password: "${SNMP_PRIV}"
modules: [if_mib, entity_mib]
labels:
tier: "core"
trap_receiver:
enabled: true
listen_address: ":162"
# Storage arrays
storage:
pure:
enabled: true
targets:
- name: "prod-pure-01"
address: "https://10.0.10.100"
api_token: "${PURE_TOKEN}"
netapp:
enabled: true
targets:
- name: "prod-ontap-01"
address: "https://10.0.10.110"
username: "monitor"
password: "${NETAPP_PASSWORD}"
Next Steps
- Agent Mode - eBPF-based collection
- Environment Variables - Environment variable reference