Dans ce billet, nous allons passer en revue ce qu’apporte Erlenmeyer et comment traiter les métriques des services Clever Cloud avec PromQL.
Protocoles d’Erlenmeyer
Sur Clever Cloud, nous avons déployé un Erlenmeyer
devant notre backend Warp10. Cela signifie que tous ces protocoles open source peuvent être utilisés pour interroger les métriques de notre application. Le host est https://PROTO-c1-warp10-clevercloud-customers.services.clever-cloud.com/PROTO
avec PROTO
étant:
- pour PromQL:
prometheus
, - pour OpenTSDB:
opentsdb
, - pour InfluxQL:
influxql
, - et pour Graphite:
graphite
.
Retrouver les données in memory avec PromQL
READ TOKEN
en tant que APP_ID
as an variable d’environment:export TOKEN=MY_AWESOME_TOKEN # Remplacez la valeur par votre token Clever Cloud Warp10
export APP_ID=app_test # Remplacez la valeur par une de vos propres applications Clever Cloud.
Récupérer les données brutes
mem.used_percent
dans PromQL, nous avons besoin d’une requête HTTP GET
vers Erlenmeyer, avec le TOKEN en basic AUTH. Dans ce cas, la requête PromQL GET
requiert quatre paramètres: query, start, end et step. De même, pour en savoir plus sur le langage PromQL, vous pouvez lire la Documentation de Prometheus. Dans notre cas, nous allons créer une requête simple pour obtenir les données brutes :api/v1/query_range?
query=mem.used_percent{app_id="$APP_ID"}&
start=1623289800&
end=1623311400&
step=120s
query
est utilisé pour les requêtes PromQL: start
et end
sont des timestamps en millisecondes correspondant à la limite de temps pour obtenir des données. Et le step
est le paramètre de sampling.120s
.cURL
en url encoded:curl --request GET --url "https://u:${TOKEN}@prometheus-c1-warp10-clevercloud-customers.services.clever-cloud.com/prometheus/api/v1/query_range?query=mem.used_percent%7Bapp_id%3D%22${APP_ID}%22%7D&start=1623289800&end=1623311400&step=120s" --header 'Content-Type: application/json'
Exemple “Group By”
Un groupe par requête peut être utile dans le cas de Clever Cloud pour fusionner certaines séries (déploiements ou instances multiples). Ainsi, nous allons regrouper les données en fonction des étiquettes app_id
dans l’exemple suivant.
READ_TOKEN
et APP_ID
. Pour calculer un groupe par dans notre cas, nous appliquons la max
PromQL fonction regroupée par le label de la série app_id
:api/v1/query_range?
query=max(mem.used_percent{app_id="$APP_ID"}) by (app_id)&
start=1623289800&
end=1623311400&
step=120s
cURL
url encodé suivant :curl --request GET --url "https://u:${TOKEN}@prometheus-c1-warp10-clevercloud-customers.services.clever-cloud.com/prometheus/api/v1/query_range?query=max(mem.used_percent%7Bapp_id%3D%22${APP_ID}%22%7D)%20by%20(app_id)&start=1623289800&end=1623311400&step=120s" --header 'Content-Type: application/json'
Source de données Grafana PromQL
Vous pouvez utiliser Grafana pour créer vos propres tableaux de bord, qui est une application Web de visualisation interactive open source (pour déployer un Grafana en tant qu’application Clever Cloud, nous fournissez un exemple github et vous pouvez également suivre cet Article de blog en français). Bien sûr, vous pouvez configurer une source de données PromQL pour obtenir les métriques des applications Clever Cloud :
- créer une source Prométhée,
- puis définissez la source Prometheus host sur
https://prometheus-c1-warp10-clevercloud-customers.services.clever-cloud.com/prometheus
,</li > - activez en plus l’authentification de base avec un utilisateur défini sur
metrics
et un mot de passe contenant votretoken Warp10
, - pour conclure, cliquez sur
Enregistrer et tester
, votre source de données Prometheus devrait maintenant fonctionner !
Interface utilisateur Prometheus avec remote_read
Comme avec Grafana, vous pouvez utiliser Prometheus et tracer des métriques Clever Cloud dans l’interface utilisateur Web. Et en effet, remplissez simplement votre configuration Prometheus avec une source remote_read :
api/v1/query_range ?
remote_read:
- url: "https://prometheus-c1-warp10-clevercloud-customers.services.clever-cloud.com/prometheus/remote_read/"
basic_auth:
username: "métriques"
password: "TOKEN"
{ __name__= "mem.used_percent", app_id="$APP_ID" }
.
qui sont des caractères prométhéens invalides. Néanmoins, la réponse du backend traduira toujours ces valeurs .
dans les données de la série (nom ou étiquettes) en _
valides.Pour résumer
Comme vous pouvez le voir avec ce post, vous pouvez obtenir des métriques des applications et des add-ons de Clever Cloud. Actuellement, vous avez un moyen supplémentaire de les interroger, car Erlenmeyer permet l’utilisation du PromQL
. Cependant l’inconvénient est que vous devrez mettre à jour régulièrement votre token, car ils expirent dans quelques jours. Nous travaillons sur une solution pour améliorer l’expérience utilisateur. Tout d’abord, nous fournirons bientôt à nos clients l’accès à un Grafana avec source de données configurée et tableaux de bord déjà pré-remplis. Le token sera géré de notre côté et vous pourrez ensuite construire vos propres graphiques avec des requêtes PromQL
ou WarpScript
.