Jump to content

SNAMP

From Alfawiki
Adapted from the English Wikipedia article SNAMP, available under CC BY-SA 4.0Updated 9 August 2025
SNAMP
Company typeOpen-source software
IndustrySoftware, Cloud computing, IT monitoring
ProductsTelemetry collection, request tracing, elasticity management

SNAMP is a cross-platform, open-source software solution designed for telemetry collection, request tracing, and elasticity control in distributed application environments.

Overview

SNAMP streamlines the administration of microservices deployed within containers or software-defined data centers. It offers continuous telemetry data acquisition—including metrics and event logging—comprehensive request tracing that maps service interactions, dynamic cluster node scaling based on workload demands, and consolidates various telemetry data streams into a unified framework.

Telemetry

The platform gathers metrics, event logs, and health status information to assess service condition and operational performance. This information supports visualization through graphical charts, alerting mechanisms, and automated maintenance procedures. Users can define watchers to track critical metrics; when preset limits are exceeded, scripted triggers—using languages such as Groovy—can initiate responses like node restarts or notification dispatches.

SNAMP is compatible with existing enterprise monitoring ecosystems by collecting telemetry via diverse protocols and exposing it accordingly. For instance, it can obtain data through JMX and present it via SNMP to integrate with network monitoring tools like Nagios.

Request Tracing

Tracing functionality identifies service-to-service communication routes while capturing essential metrics such as latency, throughput, uptime, and scalability indicators. This capability aids in diagnosing delays and pinpointing system bottlenecks. The communication topology is displayed within a Web Console graph, enabling live visualization of the IT infrastructure.

Applications require instrumentation to send trace data to SNAMP. Instrumentation libraries are accessible from Maven Central under the groupID io.snamp.instrumentation. Additionally, SNAMP supports third-party tracing libraries including OpenZipkin and Apache HTrace.

Elasticity Management

A core element of SNAMP is the elasticity manager, which automates scaling operations—both provisioning and decommissioning cluster nodes—guided by defined scaling policies. Multiple policies can be associated with a cluster; decisions are made through fuzzy logic, where each policy contributes a weighted vote. Periodic evaluations produce one of three outcomes: expand, reduce, or maintain cluster size. Policies may depend on health checks, scripted logic, or metric thresholds. Available scaling strategies include:

  • All-of: scaling action requires unanimous agreement among policies
  • Any-of: a single policy can trigger scaling
  • Majority: scaling occurs if most policies concur

Individual policies can be assigned custom weights to influence voting results.

The elasticity manager interfaces with cluster management or cloud platforms such as OpenStack, Kubernetes, or VMware ESXi to carry out scaling instructions.

Web Console

The Web Console provides graphical representations of metrics, visualizes service communication networks as graphs, and oversees cluster status. While optional, SNAMP allows integration with external monitoring tools like Grafana, enhancing its analytical and visualization capabilities.

Architecture

The SNAMP platform consists of several fundamental components:

  • Resource Connector facilitates interaction between SNAMP and IT services by normalizing telemetry data flows. For example, the JMX Connector manages Java applications through JMX.
  • Gateway serves aggregated telemetry data from resource connectors externally via designated protocols; for instance, the SNMP Gateway utilizes SNMP.
  • Supervisor manages resource groups by providing health monitoring functions, elasticity control, and automatic discovery of resources.

By combining various gateways with resource connectors, SNAMP enables protocol translation of telemetry data. Its components are extensible through scripting with Groovy or any JVM-compatible language, allowing for customized integrations and enhancements.

Features

  • Compatibility with external visualization and monitoring platforms such as Grafana, Nagios, and SSH
  • Gathers telemetry information through various protocols and technologies including Spring Actuator, OpenZipkin spans (via Kafka and HTTP), HTTP, JMX, Modbus, rsh, command-line interface output (stdout), and SSH
  • Makes telemetry data accessible using protocols like XMPP (chat bot), SNMPv2/SNMPv3, HTTP, NRDP, NSCA, syslog, and also streams data directly to InfluxDB
  • Provides elasticity management integration compatible with OpenStack Senlin
  • Enables scripting capabilities through the use of Groovy

Alternatives

Equivalent solutions may be assembled from the following components:

  • Visualization and monitoring: Nagios, Grafana
  • Distributed tracing: OpenZipkin
  • Automated scaling: AWS Auto Scaling for EC2 instances, OpenStack Heat

Jolokia offers a JMX-to-HTTP bridge that can be deployed within standalone Java applications, Java EE servers, or OSGi frameworks.

See also

External links