Statsite reference RHEL#
From EclecticIQ Platform 2.3.0 Statsite replaces StatsD as a metrics aggregator.
Statsite is compatible with StatsD: existing StatsD mappings and indices work with Statsite.
Load the Statsite index mapping template#
For Elasticsearch to correctly load and index Statsite-specific fields, and for Kibana to display Statsite data, locally save the Statsite mapping template, and then upload it to Elasticsearch.
Statsite ships with a mapping template that should not require any customization, so that you can use it as is:
/opt/statsite/etc/elasticsearch_template.json
- Upload - elasticsearch_template.jsonto the Elasticsearch instance, to the- /_template/statsite-templatedirectory:- # Push Statsite mapping template to Elasticsearch (Repeat the command if it does not succeed the first time) curl -X POST http://127.0.0.1:9200/_template/statsite-template -H 'Content-Type: application/json' -d@/opt/statsite/etc/elasticsearch_template.json 
- Restart Elasticsearch: - # Restart Elasticsearch systemctl restart elasticsearch 
- When Elasticsearch is up and running again, delete any existing indices, so that Statsite creates new indices with the correct mapping: - # Delete existing Statsite indices curl -X DELETE 'http://localhost:9200/statsite-*' - This creates a new index in Elasticsearch: - statsite*.- The index contains the following Statsite-specific index fields: - Field - Meaning - Description - ns- namespace - It refers to a platform component or to a background process, such as API, ingestion, outgoing, and so on. - It scopes a set of metrics within specific platform functionality or a specific platform process. - grp- group - It refers to a group aggregating one or more components and their related metrics, within the context of the platform area specified in the ns namespace. - For example, if the namespace is ingestion, components that fall within a group can be incoming feeds and their priority level. - tgt- target - It refers to a specific platform artifact, such as an index, a task, a worker, a service, and so on. - act- action - It refers to the the type of metric, such as success, failure, waiting, pending, deduplication, runtime, and so on. 
Files and locations#
| Statsite configuration files | Description | 
|---|---|
| 
 | Statsite configuration. | 
| 
 | Statsite service configuration. | 
| 
 | Elasticsearch index mapping for Statsite. | 
[statsite]
port=8125
udp_port=8125
bind_address=127.0.0.1
log_level=INFO
flush_interval=10
timer_eps=0.01
set_eps=0.02
stream_cmd=python3 /opt/statsite/bin/elasticsearch_sink.py --base-url=http://localhost:9200 --split-keys=ns.grp.tgt.act --index-by-date
binary_stream=0
[Unit]
Description=network daemon to collect metrics
[Service]
User=nobody
Type=simple
Restart=on-failure
ExecStart=/opt/statsite/bin/statsite -f /opt/statsite/etc/statsite.conf
[Install]
WantedBy=multi-user.target
{
    "template" : "statsite*",
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "counter" : {
            "_source" : { "enabled" : true },
            "properties": {
                "@timestamp": {
                    "type": "date"
                },
                "val": {
                    "type": "double",
                    "index": "not_analyzed"
                },
                "ns": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "grp": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "tgt": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "act": {
                    "type": "string",
                    "index": "not_analyzed"
                }
            }
        },
        "gauge" : {
            "_source" : { "enabled" : true },
            "properties": {
                "@timestamp": {
                    "type": "date"
                },
                "val": {
                    "type": "double",
                    "index": "not_analyzed"
                },
                "ns": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "grp": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "tgt": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "act": {
                    "type": "string",
                    "index": "not_analyzed"
                }
            }
        },
        "timer" : {
            "_source" : { "enabled" : true },
            "properties": {
                "@timestamp": {
                    "type": "date"
                },
                "val": {
                    "type": "double",
                    "index": "not_analyzed"
                },
                "ns": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "grp": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "tgt": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "act": {
                    "type": "string",
                    "index": "not_analyzed"
                }
            }
        },
        "timer_data" : {
            "_source" : { "enabled" : true },
            "properties": {
                "@timestamp": {
                    "type": "date"
                },
                "ns": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "grp": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "tgt": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "act": {
                    "type": "string",
                    "index": "not_analyzed"
                },
                "count": {
                    "type": "integer",
                    "index": "not_analyzed"
                },
                "lower": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "mean": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "median": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "p50": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "p95": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "p99": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "rate": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "sample_rate": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "stdev": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "sum": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "sum_sq": {
                    "type": "float",
                    "index": "not_analyzed"
                },
                "upper": {
                    "type": "float",
                    "index": "not_analyzed"
                }
            }
        }
    }
}