# Dec 12th, 2017: \[IT\]\[ElasticStack\] Monitorare Bitcoin&co con Elastic Stack

**URL:** <https://discuss.elastic.co/t/dec-12th-2017-it-elasticstack-monitorare-bitcoin-co-con-elastic-stack/110040>\
**Category:** Advent Calendar\
**Created:** [December 12, 2017, 12:00am UTC](https://discuss.elastic.co/t/dec-12th-2017-it-elasticstack-monitorare-bitcoin-co-con-elastic-stack/110040 "2017-12-12T00:00:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![nellicus](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nellicus/32/51566_2.png) [@nellicus](https://discuss.elastic.co/u/nellicus)\
**Post date:** [December 12, 2017, 12:00am UTC](https://discuss.elastic.co/t/dec-12th-2017-it-elasticstack-monitorare-bitcoin-co-con-elastic-stack/110040/1 "2017-12-12T00:00:09Z")

</div>

Bitcoin e le "crypto-valute" in generale continuano a riscuotere molto interesse per gli addetti ai lavori ma non solo.

Oggi vedremo come poter monitorare le performance di queste valute con Elastic Stack e [CoinMarketCap API](https://coinmarketcap.com/)

Vogliamo anche far uso di una nuova fantastica feature di Logstash che ci consente di modificare le nostre pipelines direttamente da Kibana UI senza dover riavviare Logstash dopo ogni modifica 🕶🚀

Per abilitare remote management e dichiarare una pipeline, aggiungiamo la configurazione seguente in logstash.yml:

```
#remote management
xpack.management.enabled: true
xpack.management.elasticsearch.url: "https://es-node:9200"

#autenticazione
xpack.management.elasticsearch.username: logstash_admin
xpack.management.elasticsearch.password: password
xpack.management.logstash.poll_interval: 5s 
xpack.management.elasticsearch.ssl.ca: "/path/to/ca/ca.crt"
xpack.management.elasticsearch.ssl.keystore.path: "/path/to/node/cert.p12"
xpack.management.elasticsearch.ssl.keystore.password: "secretpassword"

#la nostra pipeline
xpack.management.pipeline.id: ["coins"]

```

Usiamo Logstash Input [http\_poller](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-http_poller.html) per accedere ai dati offerti da CoinMarketCap per ottenere i dati sulle crypto valute:

 ![27](https://us1.discourse-cdn.com/elastic/original/3X/f/5/f5cfea44d91aac3bd6f676f635857fa7ef1504b9.jpg)

per referenza

```
input {
        http_poller {
            urls => {
                btc => "https://api.coinmarketcap.com/v1/ticker/bitcoin/"
                ltc => "https://api.coinmarketcap.com/v1/ticker/litecoin/"
                eth => "https://api.coinmarketcap.com/v1/ticker/ethereum/"
                neo => "https://api.coinmarketcap.com/v1/ticker/neo/"
                lisk => "https://api.coinmarketcap.com/v1/ticker/lisk/"
                btcc => "https://api.coinmarketcap.com/v1/ticker/bitcoin-cash/"
                ada => "https://api.coinmarketcap.com/v1/ticker/cardano/"
                ethc => "https://api.coinmarketcap.com/v1/ticker/ethereum-classic/"
                globaldata => "https://api.coinmarketcap.com/v1/global/"
            }
        request_timeout => 60
        schedule => { cron => "*/1 * * * * UTC"}
        codec => "json"
        }
}

filter {
         
}

output {
        stdout{codec=>rubydebug}
        elasticsearch{
                hosts => "https://es-node:9200"
                index => "coin-metrics-%{+YYYY.MM.dd}"
                user => "logstash_writer"
                password => "password"
                ssl => true
                cacert => "/path/to/ca.crt"    
        }
}

```

In Elasticsearch utilizziamo un dynamic template  
per assicurarci che i dati vengano indicizzati con i tipi di dato adatti per poter eseguire tutte le [aggregations](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html) piú interessanti:

```
PUT _template/coin
{
  "order": 0,
  "index_patterns": [
"coin*"
  ],
  "settings": {
"index": {
  "number_of_shards": "1"
}
  },
  "mappings": {
"doc": {
  "dynamic_templates": [
    {
      "usd_as_double": {
        "match_mapping_type": "string",
        "match": "*_usd",
        "mapping": {
          "type": "double"
        }
      }
    },
    {
      "eur_as_double": {
        "match_mapping_type": "string",
        "match": "*_eur",
        "mapping": {
          "type": "double"
        }
      }
    },
    {
      "pct_as_double": {
        "match_mapping_type": "string",
        "match": "percent_change_*",
        "mapping": {
          "type": "double"
        }
      }
    },
    {
      "price_as_double": {
        "match_mapping_type": "string",
        "match": "price_*",
        "mapping": {
          "type": "double"
        }
      }
    },
    {
      "rank_as_long": {
        "match_mapping_type": "string",
        "match": "rank",
        "mapping": {
          "type": "long"
        }
      }
    },
    {
      "supply_as_long": {
        "match_mapping_type": "string",
        "match": "*_supply",
        "mapping": {
          "type": "long"
        }
      }
    }
  ]
}
  }
}

```

In pochi minuti abbiamo creato una dashboard con diverse visualizzazioni:

 ![06](https://us1.discourse-cdn.com/elastic/original/3X/b/8/b8524354f8aa3e2006e2a173cef2cddb31da304d.png)

i prossimi passi potrebbero consistere nello sfruttare questi dati tramite [Timelion](https://www.elastic.co/blog/timelion-tutorial-from-zero-to-hero) , configurare qualche alert per notificarci via [slack](https://www.elastic.co/guide/en/watcher/current/actions.html#actions-slack) o eseguire un'altra azione...

---

<div class="post-metadata">

**Author:** ![tatdat](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tatdat/32/113160_2.png) [@tatdat](https://discuss.elastic.co/u/tatdat)\
**Post date:** [December 28, 2017, 5:09am UTC](https://discuss.elastic.co/t/dec-12th-2017-it-elasticstack-monitorare-bitcoin-co-con-elastic-stack/110040/2 "2017-12-28T05:09:32Z")

</div>

Hi @nellicus, i have one question with **Coin prices over time** chart.  
What kind of aggregation in Y-Axis?. Thanks!

---

<div class="post-metadata">

**Author:** ![nellicus](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/nellicus/32/51566_2.png) [@nellicus](https://discuss.elastic.co/u/nellicus)\
**Post date:** [December 28, 2017, 5:23pm UTC](https://discuss.elastic.co/t/dec-12th-2017-it-elasticstack-monitorare-bitcoin-co-con-elastic-stack/110040/3 "2017-12-28T17:23:15Z")

</div>

Hi @tatdat that's single metric `max` agg run on `price_usd`  
hth

---

<div class="post-metadata">

**Author:** ![tatdat](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tatdat/32/113160_2.png) [@tatdat](https://discuss.elastic.co/u/tatdat)\
**Post date:** [December 29, 2017, 3:47am UTC](https://discuss.elastic.co/t/dec-12th-2017-it-elasticstack-monitorare-bitcoin-co-con-elastic-stack/110040/4 "2017-12-29T03:47:09Z")

</div>

> [@nellicus](#):
>
> Hi @tatdat that's single metric max agg run on price\_usd
> 
> hth

Thanks @nellicus.

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [August 23, 2018, 8:31am UTC](https://discuss.elastic.co/t/dec-12th-2017-it-elasticstack-monitorare-bitcoin-co-con-elastic-stack/110040/5 "2018-08-23T08:31:20Z")

</div>


