A Prometheus Exporter/Collector for ChinaCache CDN API serving a Prometheus Pushgateway
- This repository packages three important modules with different capabilities:
- client.go: is the communicating interface between an application and the ChinaCache-API
- on demand, it executes HTTP-Requests to fetch metrics from ChinaCache
- the resulting JSON-response is then read into a go-struct conforming the JSON structure
- collector.go: asks the client to get those metrics and accesses the resulting struct's fields
- from these fields, it creates metrics conforming to the conventions of Prometheus
- it also implements the Collector interface defined by Prometheus
- the functions
Describe
andCollect
are called passively by another application/module or on scrape by a prometheus server
- main.go: initializes client and collector and pushes the resulting metrics to a prometheus pushgateway
- client.go: is the communicating interface between an application and the ChinaCache-API
- This project uses dep as package manager
- versions are tracked in
Gopkg.lock
- dep settings are included in
Gopkg.toml
- get dep here: https://github.com/golang/dep
- define the following environment-variables to grant access to your ChinaCache-Account and to the PushGateway:
CHINACACHE_USER
CHINACACHE_PASS
CHINACACHE_CHANNEL_IDS
CHINACACHE_INTERVAL
(optional query interval in Golang duration format. By default, fetch metrics once and exit)PUSHGATEWAY
(default for the docker image: http://localhost:9091)QUERYTIME
(optional)
- have Prometheus downloaded and installed locally
- start Prometheus using the config-file from this repo:
sudo prometheus -config.file=prometheus.yml
- download the docker image of the pushgateway:
docker pull prom/pushgateway
- start it:
sudo docker run -d -p 9091:9091 prom/pushgateway
- build and run the repo:
go build bin/cc
./bin/cc
API-Endpoint: https://portal-api.chinacache.com:444/api/public/statistics/%s.do?userName=%s&apiPasswd=%s&channelIds=%s&startTime=%s&endTime=%s
-
ChinaCache_metrics_isp_total_bytes
- HELP: Total Traffic in Bytes
- TYPE: GaugeValue
- Labels: channel = [one of the available channel IDs]
-
ChinaCache_metrics_isp_specific_flux_ratio
- HELP: Flow Rate for a single ISP.
- TYPE: GaugeValue
- Labels:
- channel = [one of the available channel IDs]
- isp = [name of the specific ISP translated from chinese]
- NOTE: These metrics specific to single regions are only available if the queried time-frame crosses two days, as they are only created once per day.
-
ChinaCache_metrics_hit_miss_total
- HELP: Hits and Misses total values.
- TYPE: GaugeValue
- Labels:
- channel = [one of the available channel IDs]
- HitOrMiss = [Hit|Miss]
-
ChinaCache_metrics_region_total_bytes
- HELP: Total Traffic in Bytes.
- TYPE: GaugeValue
- Labels: channel = [one of the available channel IDs]
-
ChinaCache_metrics_region_specific_flux_ratio
- HELP: Flow Rate for a single region.
- TYPE: GaugeValue
- Labels:
- channel = [one of the available channel IDs]
- region = [Province]
- name = [name of the specific region translated from chinese]
- NOTE: These metrics specific to single regions are only available if the queried time-frame crosses two days, as they are only created once per day.
REST-API-Endpoint: https://portal-api.chinacache.com:444/rest-api/public/statistics/%s?api_user=%s&api_key=%s&start_time=%s&end_time=%s&channel_id=%s
-
ChinaCache_metrics_statuscodes_request_percent
- HELP: Percentage of Requests that result in the given StatusCode.
- TYPE: GaugeValue
- Labels:
- channel = [one of the available channel IDs]
- StatusCode = [200|404|...]
-
ChinaCache_metrics_statuscodes_request_count
- HELP: Number of Requests that result in the given StatusCode.
- TYPE: GaugeValue
- Labels:
- channel = [one of the available channel IDs]
- StatusCode = [200|404|...]