# Overview

slingnode.ethereum\_observability is an Ansible role used to deploy a full observability stack that seamlessly integrates with Ethereum nodes deployed by [slingnode.ethereum](https://docs.slingnode.com/slingnode.ethereum/) role. Both roles use the same naming for common variables. This means you can define them once in your Playbook, group\_vars or host\_vars and deploy a full Ethereum node along with the observability stack.&#x20;

Out of the box you get a fully functional stack with:

* ethereum client metrics
* node metrics
* container metrics
* parsed and aggregated client logs&#x20;
* dashboarding solution

The stack is comprised of:&#x20;

* ELK
* Filebeat
* Grafana
* Prometheus
  * Node-Exporter
  * Ethereum-Metrics-Exporter
  * Container Advisor

## Deployment types

SlingNode Observability Stack (SOS) can be deployed on a single server along with Ethereum clients or it can be used in a distributed deployment. The following sections describe both options.&#x20;

### Single server deployment

In a single server deployment (default type), all components ([monitoring server](https://docs.slingnode.com/slingnode.ethereum_observability/architecture#monitoring-server) and [monitoring agents](https://docs.slingnode.com/slingnode.ethereum_observability/architecture#monitoring-agents)) are deployed to the same server as the Ethereum clients. In this deployment type, the services communicate over Docker Network as depicted in the diagram below.&#x20;

<figure><img src="https://2410776892-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZot9W737nZumweBaQqaI%2Fuploads%2FbotIMD2t7mGsSCHgAJnL%2Fslingnode-ethereum-node-monitoring-single-server.png?alt=media&#x26;token=89f9bfc2-c12c-40c4-bc4a-018206091158" alt=""><figcaption><p>Single server deployment</p></figcaption></figure>

### Distributed deployment

In a distributed deployment, the [monitoring server](https://docs.slingnode.com/slingnode.ethereum_observability/architecture#monitoring-server) (Prometheus, ELK, Grafana) is deployed to a dedicated node and configured to monitor Ethereum Clients running on remote servers. The monitoring agents (Filebeat, node-exporter, ethereum-metrics-exporter,  cadvisor) are deployed to the servers where the Ethereum clients are running. The monitoring server and agents communicate over the network as depicted in the diagram below.

<figure><img src="https://2410776892-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZot9W737nZumweBaQqaI%2Fuploads%2Fx2o3fgi3kSE11GdnoHxI%2Fslingnode-ethereum-node-monitoring-distributed.png?alt=media&#x26;token=c6ce9e22-7381-4032-ae52-9f821c89f52e" alt=""><figcaption><p>Distributed deployment</p></figcaption></figure>

## Customization

The role comes with a configuration for Prometheus, EL and Filebeat that will work out of the box for single server and distributed deployments. However the configuration is fully customizable to let you control the how those services work. The configuration files are templated out and specified by variables. Please refer to configuration section for details:

* [Prometheus configuration](https://docs.slingnode.com/slingnode.ethereum_observability/components/prometheus#configuration)
* [Logstash configuration](https://docs.slingnode.com/slingnode.ethereum_observability/components/elk#configuration)
* [Filebeat configuration](https://docs.slingnode.com/slingnode.ethereum_observability/components/filebeat-configuration#configuration)

## Scalability

Scalability of an observability stacks is a big topic. There are a lot of variables  that factor into it. Amongst others:

* Scrape interval
* Logging level
* Retention period
* Number of monitored hosts
* Types of applications&#x20;
* Types of OSes
* Data query patterns (frequency, bucket sizes)
* Availability requirements

SlingNode Observability Stack is meant to be used for monitoring "small deployments". What's small? We have successfully monitored 10 servers running full Ethereum stack (execution, consensus, validator) with scrape interval of 5s, info logging level and 30 days data retention.&#x20;

Having said that we don't have any precise benchmarks.&#x20;

As outlined above this stack will work perfectly fine for a "small deployment". However if you need to scale your observability infrastructure and make it "production grade" you will need something more elaborate. SlingNode Team has extensive experience building and maintaining large scale observability solutions and is ready to help out. Contact us at  "contact - at - slingnode.com".&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.slingnode.com/slingnode.ethereum_observability/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
