Skip to content

Commit

Permalink
working push to grafana cloud
Browse files Browse the repository at this point in the history
  • Loading branch information
j-white committed May 8, 2024
1 parent 52c8043 commit d2ad8cd
Show file tree
Hide file tree
Showing 9 changed files with 169 additions and 202 deletions.
41 changes: 16 additions & 25 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 8 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,19 @@ crate-type = ["cdylib"]

[dependencies]
graphql_client = "0.14.0"
serde = "1.0.200"
serde = "1.0.201"
worker = "0.2.0"
reqwest = { version = "0.12.4", features = ["json"] }
opentelemetry = { version = "=0.22.0", features = ["otel_unstable"] }
opentelemetry_sdk = { version="=0.22.1", default-features = false, features = ["trace", "metrics", "rt-tokio-current-thread"] }
opentelemetry-stdout = { version="0.3.0", default-features = false, features=["trace", "metrics"] }
getrandom = { version = "0.2.14", features = ["js"] }
serde_json = "1.0.116"
opentelemetry-otlp = { version="0.15.0", features = ["metrics", "http-proto"], default-features = false }
opentelemetry = { version = "=0.22.0", default-features = false, features = ["metrics"] }
opentelemetry_sdk = { version="=0.22.1", default-features = false, features = ["metrics"] }
getrandom = { version = "0.2.15", features = ["js"] }
serde_json = "1.0.117"
opentelemetry-otlp = { version="0.15.0", default-features = false, features = ["metrics", "http-proto"] }
opentelemetry-proto = { version = "0.5.0", default-features = false, features = ["metrics", "with-serde"] }
prometheus = "0.13.4"
web-time = "1.1.0"
chrono = "0.4.38"
prost = "0.12.4"

[profile.release]
opt-level = "s" # optimize for size in release builds
Expand Down
107 changes: 0 additions & 107 deletions features/metrics.json

This file was deleted.

6 changes: 2 additions & 4 deletions features/o11y.feature
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,5 @@ Feature: OpenTelemetry metrics
Given Worker is configured to send metrics to a mock OpenTelemetry collector
When Worker is triggered
Then Worker metrics are published
And Metric name should include "cloudflare_worker_requests"
And Metric name should include "cloudflare_worker_errors"
And Metric name should include "cloudflare_worker_cpu_time"
And Metric name should include "cloudflare_worker_duration"
And Metric name should include "cloudflare_worker"
And Metric name should include "cloudflare_worker_cpu"
1 change: 1 addition & 0 deletions features/step_definitions/mf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ export class MiniflareDriver {
CLOUDFLARE_API_URL: self.config.cloudflareApiUrl,
CLOUDFLARE_API_KEY: "fake-key",
CLOUDFLARE_ACCOUNT_ID: "1234",
OTLP_ENCODING: "json",
},
modulesRules: [
{ type: "CompiledWasm", include: ["**/*.wasm"], fallthrough: true },
Expand Down
10 changes: 6 additions & 4 deletions features/step_definitions/otel_server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,13 @@ export class OpenTelemetryServer {
indexMetrics() {
let self = this;
this.metricNames.clear();
console.log(JSON.stringify(this.metrics, null, 2));
for (let metrics of this.metrics) {
let resourceMetrics = metrics.resourceMetrics as unknown as IResourceMetrics;
for (let scopeMetrics of resourceMetrics.scopeMetrics) {
for (let metric of scopeMetrics.metrics) {
self.metricNames.set(metric.name, 1);
for (let resourceMetrics of metrics.resourceMetrics) {
for (let scopeMetrics of resourceMetrics.scopeMetrics) {
for (let metric of scopeMetrics.metrics) {
self.metricNames.set(metric.name, 1);
}
}
}
}
Expand Down
8 changes: 8 additions & 0 deletions src/gql.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use prometheus::{CounterVec, GaugeVec, Opts, Registry};
use crate::metrics::prometheus_registry_to_opentelemetry_metrics;
use web_time::SystemTime;
use chrono::NaiveDateTime;
use worker::console_log;

// The paths are relative to the directory where your `Cargo.toml` is located.
// Both json and the GraphQL schema language are supported as sources for the schema
Expand Down Expand Up @@ -37,10 +38,17 @@ pub async fn perform_my_query(cloudflare_api_url: String, cloudflare_api_key: St
let res = client.post(cloudflare_api_url)
.bearer_auth(cloudflare_api_key)
.json(&request_body).send().await?;

if !res.status().is_success() {
console_log!("GraphQL query failed: {:?}", res.status());
return Err(Box::new(res.error_for_status().unwrap_err()));
}

let response_body: Response<get_workers_analytics_query::ResponseData> = res.json().await?;
if response_body.errors.is_some() {
console_log!("GraphQL query failed: {:?}", response_body.errors);
return Err(Box::new(worker::Error::JsError("graphql".parse().unwrap())));
}
let response_data: get_workers_analytics_query::ResponseData = response_body.data.expect("missing response data");

let registry = Registry::new();
Expand Down
Loading

0 comments on commit d2ad8cd

Please sign in to comment.