Observability #6

Merged
qpismont merged 6 commits from 1.1 into main 2026-07-26 21:55:42 +02:00
Owner

Impl of trace, log and metric observability signal

Impl of trace, log and metric observability signal
qpismont added 1 commit 2026-06-30 22:45:54 +02:00
Switch to vscode + fetch bot_name with token
ci/woodpecker/push/tests Pipeline failed
743b6b33c9
qpismont added 1 commit 2026-06-30 22:48:56 +02:00
fix tests
ci/woodpecker/push/tests Pipeline was successful
7252bf7673
qpismont added 1 commit 2026-07-26 13:02:44 +02:00
add prometheus metrics
ci/woodpecker/push/tests Pipeline was successful
6ffd88927c
Author
Owner
@Herald
Herald reviewed 2026-07-26 13:21:38 +02:00
Herald left a comment
Collaborator

Review Feedback

4 issues found.


Summary

L'ajout de l'observabilité via des métriques Prometheus est bien structuré et suit les bonnes pratiques. Les métriques sont clairement nommées, documentées avec describe() et les points d'instrumentation sont positionnés aux endroits pertinents. Quelques améliorations mineures sont suggérées : fournir un exemple pour la variable d'environnement, revoir l'unité de la métrique de coût, optimiser le retour de name(), et améliorer la gestion d'erreur pour l'installation de l'exportateur. Globalement, la qualité du code est satisfaisante et la fonctionnalité est correctement implémentée.


Cost: $0.0016548

## Review Feedback ### 4 issues found. --- ### Summary L'ajout de l'observabilité via des métriques Prometheus est bien structuré et suit les bonnes pratiques. Les métriques sont clairement nommées, documentées avec `describe()` et les points d'instrumentation sont positionnés aux endroits pertinents. Quelques améliorations mineures sont suggérées : fournir un exemple pour la variable d'environnement, revoir l'unité de la métrique de coût, optimiser le retour de `name()`, et améliorer la gestion d'erreur pour l'installation de l'exportateur. Globalement, la qualité du code est satisfaisante et la fonctionnalité est correctement implémentée. --- ### Cost: $0.0016548
@@ -19,1 +19,4 @@
RUST_BACKTRACE=1
METRICS_BIND_ADDR=
Collaborator

La variable d'environnement METRICS_BIND_ADDR est définie sans valeur par défaut ni commentaire. Il serait judicieux d'ajouter un exemple de format (ex: 0.0.0.0:9090) ou un commentaire indiquant le format attendu, afin d'éviter des erreurs de configuration.

La variable d'environnement `METRICS_BIND_ADDR` est définie sans valeur par défaut ni commentaire. Il serait judicieux d'ajouter un exemple de format (ex: `0.0.0.0:9090`) ou un commentaire indiquant le format attendu, afin d'éviter des erreurs de configuration.
qpismont marked this conversation as resolved
@@ -56,0 +53,4 @@
}
}
pub fn name(&self) -> String {
Collaborator

La méthode name() retourne une String en clonant self.bot_name. Cela peut être inefficace si appelée fréquemment. Envisagez de retourner un &str pour éviter une allocation, ou changez le champ en Arc<str> si un partage est nécessaire.

La méthode `name()` retourne une `String` en clonant `self.bot_name`. Cela peut être inefficace si appelée fréquemment. Envisagez de retourner un `&str` pour éviter une allocation, ou changez le champ en `Arc<str>` si un partage est nécessaire.
qpismont marked this conversation as resolved
@@ -51,17 +50,38 @@ fn main() -> anyhow::Result<()> {
async fn run() -> anyhow::Result<()> {
let config = env::load_config()?;
if let Some(metric_bind_addr) = &config.metrics_bind_addr {
Collaborator

Le démarrage conditionnel de l'exportateur Prometheus est une bonne pratique. Toutefois, si l'installation échoue, l'erreur est propagée via ?, ce qui met fin à l'application. Cela peut être acceptable, mais un message d'erreur plus explicite (ex: avec tracing::error) aiderait au débogage.

Le démarrage conditionnel de l'exportateur Prometheus est une bonne pratique. Toutefois, si l'installation échoue, l'erreur est propagée via `?`, ce qui met fin à l'application. Cela peut être acceptable, mais un message d'erreur plus explicite (ex: avec `tracing::error`) aiderait au débogage.
qpismont marked this conversation as resolved
src/metrics.rs Outdated
@@ -0,0 +35,4 @@
.increment(1);
}
pub fn openrouter_cost_usd(cost: u64) {
Collaborator

La métrique herald_openrouter_cost_usd_total utilise un compteur de type Count, mais elle représente un coût en dollars. Bien que cela soit fonctionnel, il serait plus clair d'utiliser un type Gauge ou d'ajouter une unité personnalisée si possible. Actuellement l'unité Count peut prêter à confusion pour les opérateurs.

La métrique `herald_openrouter_cost_usd_total` utilise un compteur de type `Count`, mais elle représente un coût en dollars. Bien que cela soit fonctionnel, il serait plus clair d'utiliser un type `Gauge` ou d'ajouter une unité personnalisée si possible. Actuellement l'unité `Count` peut prêter à confusion pour les opérateurs.
qpismont marked this conversation as resolved
Author
Owner
# TYPE herald_bot_tasks_completed_total counter
herald_bot_tasks_completed_total{event_type="review"} 1

# TYPE herald_openrouter_cost_usd_total counter
herald_openrouter_cost_usd_total 0

# TYPE herald_webhooks_received_total counter
herald_webhooks_received_total{event_type="review"} 1

# TYPE herald_bot_tasks_active gauge
herald_bot_tasks_active 0
``` # TYPE herald_bot_tasks_completed_total counter herald_bot_tasks_completed_total{event_type="review"} 1 # TYPE herald_openrouter_cost_usd_total counter herald_openrouter_cost_usd_total 0 # TYPE herald_webhooks_received_total counter herald_webhooks_received_total{event_type="review"} 1 # TYPE herald_bot_tasks_active gauge herald_bot_tasks_active 0 ```
qpismont added 1 commit 2026-07-26 13:42:08 +02:00
fix usd metric
ci/woodpecker/push/tests Pipeline was successful
e1cb5d7d96
qpismont added 1 commit 2026-07-26 13:57:25 +02:00
update readme
ci/woodpecker/push/tests Pipeline was successful
c426b9b513
qpismont added 1 commit 2026-07-26 20:41:34 +02:00
bump version
ci/woodpecker/push/tests Pipeline was successful
b6a299ac18
qpismont merged commit d711153553 into main 2026-07-26 21:55:42 +02:00
qpismont deleted branch 1.1 2026-07-26 21:55:42 +02:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: qpismont/herald#6