Coder Social home page Coder Social logo

umatare5 / twelvedata-exporter Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 32 KB

Prometheus Twelvedata Exporter allows a prometheus instance to monitor prices of stocks, ETFs, and mutual funds

License: MIT License

Dockerfile 2.55% Makefile 1.82% Go 95.64%
prometheus-exporter stocks finance etfs prometheus go monitoring funds

twelvedata-exporter's Introduction

twelvedata-exporter

License: MIT

twelvedata-exporter is a Prometheus Exporter to fetch quotes from Twelvedata API.

This exporter allows a prometheus instance to monitor prices of stocks, ETFs, and mutual funds.

Important

To access the Twelvedata API, you need an access token. Please register with Twelvedata in advance and generate an access token by referring to the official document: Getting Started - Authentication.

Note

The Twelvedata API has some limitations based on the license. For example, API limit, accessible market and others. For the limitations, please refer to twelvedata - Pricing with following documents:

Quick Start

docker run -p 10016:10016 -e TWELVEDATA_API_KEY ghcr.io/umatare5/twelvedata-exporter
  • -p: Publish a container's port 10016/tcp, to the host 10016/tcp.
  • -e: Forward environment variable TWELVEDATA_API_KEY into a container.

Tip

If you would like to use binaries, please download them from release page.

  • linux_amd64, linux_arm64, darwin_amd64, darwin_arm64 and windows_amd64 are supported.

Syntax

NAME:
   Fetch quotes from Twelvedata API - twelvedata-exporter

USAGE:
   twelvedata-exporter COMMAND [options...]

VERSION:
   1.0.1

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --web.listen-address value, -I value     Set IP address (default: "0.0.0.0")
   --web.listen-port value, -P value        Set port number (default: 10016)
   --web.scrape-path value, -p value        Set the path to expose metrics (default: "/price")
   --twelvedata.api-key value, -a value     Set key to use twelvedata API [$TWELVEDATA_API_KEY]
   --help, -h                               show help
   --version, -v                            print the version

Configuration

This exporter supports following environment variables:

Environment Variable Description
TWELVEDATA_API_KEY The API Key to be used for requests.

Metrics

This exporter returns following metrics:

Metric Name Description Type Example Value
twelvedata_change_percent Changed percent since last close price. Gauge 1.00975
twelvedata_change_price Changed price since last close price. Gauge 1.72
twelvedata_price Real-time or the latest available price. Gauge 172.06
twelvedata_previous_close_price Closing price of the previous day. Gauge 170.34
twelvedata_volume Trading volume during the bar. Gauge 1.5206856e+07
Click to show full metrics

# HELP twelvedata_change_percent Changed percent since last close price.
# TYPE twelvedata_change_percent gauge
twelvedata_change_percent{currency="USD",exchange="NASDAQ",name="Alphabet Inc",symbol="GOOGL"} 1.00975
# HELP twelvedata_change_price Changed price since last close price.
# TYPE twelvedata_change_price gauge
twelvedata_change_price{currency="USD",exchange="NASDAQ",name="Alphabet Inc",symbol="GOOGL"} 1.72
# HELP twelvedata_failed_queries_total Count of failed queries
# TYPE twelvedata_failed_queries_total counter
twelvedata_failed_queries_total 0
# HELP twelvedata_previous_close_price Closing price of the previous day.
# TYPE twelvedata_previous_close_price gauge
twelvedata_previous_close_price{currency="USD",exchange="NASDAQ",name="Alphabet Inc",symbol="GOOGL"} 170.34
# HELP twelvedata_price Real-time or the latest available price.
# TYPE twelvedata_price gauge
twelvedata_price{currency="USD",exchange="NASDAQ",name="Alphabet Inc",symbol="GOOGL"} 172.06
# HELP twelvedata_queries_total Count of completed queries
# TYPE twelvedata_queries_total counter
twelvedata_queries_total 1
# HELP twelvedata_query_duration_seconds Duration of queries to the upstream API
# TYPE twelvedata_query_duration_seconds summary
twelvedata_query_duration_seconds_sum 0
twelvedata_query_duration_seconds_count 0
# HELP twelvedata_volume Trading volume during the bar.
# TYPE twelvedata_volume gauge
twelvedata_volume{currency="USD",exchange="NASDAQ",name="Alphabet Inc",symbol="GOOGL"} 1.5206856e+07

Usage

Exporter

To refer to the usage, please access http://localhost:10016/ after starting the exporter.

$ TWELVEDATA_API_KEY="foobarbaz"
$ docker run -p 10016:10016 -e TWELVEDATA_API_KEY ghcr.io/umatare5/twelvedata-exporter
INFO[0000] Listening on port 0.0.0.0:10016

or using a binary:

$ TWELVEDATA_API_KEY="foobarbaz"
$ ./twelvedata-exporter
INFO[0000] Listening on port 0.0.0.0:10016

Prometheus

Please refer to prometheus.sample.yml#L27-L42.

Development

Build

The repository includes a ready to use Dockerfile. Run the following command to build a new image:

make image

The new image is named as $USER/twelvedata-exporter and exports 10016/tcp to your host.

Release

I'm releasing this exporter manually.

git tag vX.Y.Z && git push --tags

Run the release workflow.

Contribution

  1. Fork (https://github.com/umatare5/twelvedata-exporter/fork)
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Create a new Pull Request

Licence

MIT

Author

umatare5

Acknowledgements

I used to use Marco Paganini's quotes-exporter before. However, due to changes in the external endpoint, that exporter was broken and archived. Now, I built this exporter taking Marco's exporter as a reference. My thanks to Marco the predecessor, and Tristan Colgate-McFarlane the creator of yquotes-exporter who preceded Marco.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.