Developer(s) | Bytex Solutions OÜ |
---|---|
Initial release | July 7, 2016 |
Stable release | 2.0.0
/ July 24, 2017 |
Written in | Java |
Operating system | Cross-platform |
Type | Cluster management software System monitoring |
License | Apache License 2.0 |
Website | snamp |
SNAMP is an open-source, cross-platform software platform for telemetry, tracing and elasticity management[1] of distributed applications.
The main purpose of SNAMP is to simplify management of microservices running inside of containers or software-defined data centers. It provides telemetry data gathering (metrics and events), end-to-end tracing of requests between software components reflecting topology of communication paths, automatic scaling of cluster nodes based on workload, unification of telemetry data sources.
Metrics, events and health checks are used to control state and health of services in IT landscape. Gathering is carried out in real time. The collected data can be used for visualization in the form of charts, alarming and executing maintenance actions. It is possible to set up a watcher for the important metric. The watcher determines limitations and conditions applied to the value of the metric. If the value is out of range then watcher can execute a trigger. The trigger can be represented as handwritten script using one of the supported scripting languages, e.g. Groovy. It can be a maintenance action (restart server node) or notification (alert to e-mail).
Additionally, it is possible to extend functionality of existing monitoring tool used in enterprise. SNAMP can gather telemetry data and expose the data to the outside using any combination of supported protocols. For example, the data collected from JMX protocol can be exposed through SNMP and acquired by other network management software such as Nagios.
Tracing of requests allows to identify communication paths between services and to collect important metrics such as response time, requests per second, availability, scalability etc. This data helps to troubleshoot latency and scalability issues and to find the bottlenecks. Additionally, communication paths can be visualized in the form of the graph in the Web Console that allows to observe entire IT landscape in real time.
Applications should be instrumented to report the necessary information to SNAMP. Instrumentation libraries can be found at Maven Central[2] using groupID io.snamp.instrumentation
. Third-party instrumentation libraries are also supported:
Elasticity manager is a component of SNAMP that is responsible for automatic provisioning and decommissioning of cluster nodes. Its behavior is based on scaling policies. One more scaling policies can be associated with the cluster. Decision process is based on fuzzy logic. Each policy participating has its own vote weight and elasticity manager execute voting process periodically. Voting result represents one out of three possible decisions: enlarge cluster, shrink cluster or do nothing. Scaling policy can be based on health check, handwritten script or range of values associated with some metric. Due to the flexibility of the decision process it is possible to define several strategies for scaling:
Moreover, it is also possible to assign custom weights for each scaling policy.
Elasticity manager uses underlying cluster or cloud management platform for sending commands about provisioning and decommissioning. It can be OpenStack, Kubernetes or VMware ESXi.
Web Console is used for visualization of metrics in the form of charts, visualization of communication paths between services in the form of graph, cluster monitor. Using Web Console for visualization is an optional feature, because SNAMP provides integration with other tools such as Grafana.[5]
SNAMP platform consists of following several components:
Combination of different gateways and resource connectors is able to transform telemetry data from one protocol to another. Each component might be customized using Groovy-based scripts. It is possible to write custom component using any JVM-compatible languages.
An alternative solution might be constructed using combination of software components:
Jolokia[12] offers JMX-to-HTTP bridge that can be hosted inside of a standalone Java program, Java EE application server or OSGi environment.
Original source: https://en.wikipedia.org/wiki/SNAMP.
Read more |