Skip to content

Commit f74e57a

Browse files
authored
Implement OpenTelemetry metrics for check suites
Added OpenTelemetry counters and observations for check suites.
1 parent d4d23ea commit f74e57a

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

  • actions/instrument/checksuite

actions/instrument/checksuite/main.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,35 @@ _otel_resource_attributes_custom() {
8282
}
8383

8484
otel_init
85+
check_suite_counter_handle="$(otel_counter_create counter github.checks.suites 1 'Number of check suites')"
86+
check_suite_duration_counter_handle="$(otel_counter_create counter github.checks.suites.duration s 'Duration of check suites')"
8587
check_run_counter_handle="$(otel_counter_create counter github.checks.runs 1 'Number of check runs')"
8688
check_run_duration_counter_handle="$(otel_counter_create counter github.checks.runs.duration s 'Duration of check runs')"
8789

8890
link="${GITHUB_SERVER_URL:-https://github.com}"/"$GITHUB_REPOSITORY"/runs
8991
check_suite_started_at="$(jq < "$check_runs_json" -r .started_at | sort | head -n 1)"
9092
check_suite_ended_at="$(jq < "$check_runs_json" -r .completed_at | sort -r | head -n 1)"
9193

94+
observation_handle="$(otel_observation_create 1)"
95+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.id="$(jq < "$check_suite_json" .id)"
96+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.conclusion="$(jq < "$check_suite_json" -r .conclusion)"
97+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.ref="/refs/heads/$(jq < "$check_suite_json" -r .head_branch)"
98+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.ref.sha="$(jq < "$check_suite_json" -r .head_sha)"
99+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.ref.name="$(jq < "$check_suite_json" -r .head_branch)"
100+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.app.name="$(jq < "$check_suite_json" -r .app.name)"
101+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.app.slug="$(jq < "$check_suite_json" -r .app.slug)"
102+
otel_counter_observe "$check_suite_counter_handle" "$observation_handle"
103+
104+
observation_handle="$(otel_observation_create "$(python3 -c "print(str(max(0, $(date -d "$check_suite_ended_at" '+%s.%N') - $(date -d "$check_suite_started_at" '+%s.%N'))))")")"
105+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.id="$(jq < "$check_suite_json" .id)"
106+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.conclusion="$(jq < "$check_suite_json" -r .conclusion)"
107+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.ref="/refs/heads/$(jq < "$check_suite_json" -r .head_branch)"
108+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.ref.sha="$(jq < "$check_suite_json" -r .head_sha)"
109+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.suite.ref.name="$(jq < "$check_suite_json" -r .head_branch)"
110+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.app.name="$(jq < "$check_suite_json" -r .app.name)"
111+
otel_observation_attribute_typed "$observation_handle" string github.actions.checks.app.slug="$(jq < "$check_suite_json" -r .app.slug)"
112+
otel_counter_observe "$check_suite_duration_counter_handle" "$observation_handle"
113+
92114
check_suite_span_handle="$(otel_span_start @"$check_suite_started_at" CONSUMER "$(jq < "$check_suite_json" -r '.app.name')")"
93115
otel_span_attribute_typed "$check_suite_span_handle" string github.actions.type=checksuite
94116
otel_span_attribute_typed "$check_suite_span_handle" int github.actions.checks.suite.id="$(jq < "$check_suite_json" .id)"

0 commit comments

Comments
 (0)