APIIDA API Gateway Manager
Connect an external Prometheus
How it works
AAGM already ships a Prometheus and its Pushgateway. Installation | Install using Docker Compose
Once set up successfully, everything should connect automatically and start collecting metrics from APIs registered in AAGM.
Here is a diagram of how the individual components work together.
Prometheus Configuration
This configuration is already integrated in the supplied Prometheus.
https://prometheus.io/docs/prometheus/latest/configuration/configuration/
Prometheus automatically pulls the metrics of all its targets every few seconds.
global:
scrape_interval: 15s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: [ 'host.docker.internal:9090' ]
- job_name: 'aagmdb'
static_configs:
- targets: [ 'host.docker.internal:9104' ]
- job_name: 'prometheus-pushgateway'
scrape_interval: 1s
honor_labels: true
static_configs:
- targets: [ 'host.docker.internal:9091' ]
Using an external Prometheus
The url of Prometheus and the Prometheus Pushgateway must be stored in the configuration of AAGM under General settings.
Prometheus must receive the Pushgateway as target as in line 16 above.
Optionally, the database of AAGM can also be added. https://grafana.com/oss/prometheus/exporters/mysql-exporter/
View metrics directly in Prometheus
Here are a few examples of how to retrieve metrics directly in Prometheus.
Example: Nodes
cpuLoadPercentage{name="Docker GW 1"}
memoryLoadPercentage{hostPort="host.docker.internal:8444"}
cpuLoadPercentage
Example: APIs
allRequestsCount{name="APIIDA Metrics API"}
allRequestsCount{job="Docker GW 1 APIIDA Metrics API"}
allRequestsCount{nodeID="2"}
Jobs, Labels and Metric Names
https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels https://prometheus.io/docs/concepts/jobs_instances/
All possible filters can also be viewed here or directly on the PushGateway.
Jobs
The name of the job consists of the name of the gateway and the name of the API.
Labels
Enable the Prometheus dimensional data model to identify any combination of labels for the same metric name.
id
Id of the API or Node
name
Name of the API or Node
nodeId
Id of the node on which the API is running
type
Type of job, either “api” or “node”. Influences which metrics are available.
Metric Names
Specify the general characteristic of a system that is being measured
All Metric Names for Label type=api
allRequestsCount
averageBackendResponseTimeMillis
averageFrontendResponseTimeMillis
maxBackendResponseTimeMillis
maxFrontendResponseTimeMillis
minBackendResponseTimeMillis
minFrontendResponseTimeMillis
policyViolationCount
routingFailureCount
successfulRequestsCount
All Metric Names for Label type=node
cpuLoadPercentage
memoryLoadPercentage
diskSpacePercentage
totalDiskSpaceMB
freeDiskSpaceMB
sqlDelay
Grafana
Grafana supports the Prometheus query. The Grafana data source for Prometheus is included since Grafana 2.5.0 https://prometheus.io/docs/visualization/grafana/#grafana-support-for-prometheus
Grafana user: admin pass: admin
Links
https://github.com/prometheus/pushgateway
https://packagist.org/packages/promphp/prometheus_push_gateway_php