Get metrics from Prometheus for applications, and expose these applications and metrics in JSON
format via REST API. The data ingestion framework probe
(
i.e. DIF Probe) will access the REST API, convert the JSON output to Turbonomic DTO to be consumed by Turbonomic
server. This enables Turbonomic to collect and analyze Prometheus metrics and make intelligent decisions about
application scaling, placement and optimization.
To configure the Prometheus server and map query results into applications and metrics, you need to create the following custom resources in the Kubernetes cluster (from Prometurbo 8.8.4):
- PrometheusQueryMapping: allows users to define mappings between Turbonomic entities (such as ApplicationComponents, Services, or VirtualMachines) and Prometheus metrics exposed by different prometheus exporters.
- PrometheusServerConfig: specifies the address of the Prometheus server, as well as optional label selectors to filter out PrometheusQueryMapping resources applicable to that server. This allows users to configure multiple Prometheus servers and use different mappings for each server.
Custom resource definitions for the above two resources must be installed first in the Kubernetes cluster. Get them here.
Sample custom resource instances can be found here.
The application metrics are served via REST API at endpoint /metrics
. The output JSON format is defined
at turbo-go-sdk:
type Topology struct {
Version string `json:"version"`
Updatetime int64 `json:"updateTime"`
Scope string `json:"scope"`
Source string `json:"source"`
Entities []*DIFEntity `json:"topology"`
}
type DIFEntity struct {
UID string `json:"uniqueId"`
Type string `json:"type"`
Name string `json:"name"`
HostedOn *DIFHostedOn `json:"hostedOn"`
MatchingIdentifiers *DIFMatchingIdentifiers `json:"matchIdentifiers"`
PartOf []*DIFPartOf `json:"partOf"`
Metrics map[string][]*DIFMetricVal `json:"metrics"`
partOfSet set.Set
hostTypeSet set.Set
}
Follow the deployment instructions at here to deploy Prometurbo and DIFProbe container in the same Pod.