From 64424393781445f35d2d1dbf443cb4f641867824 Mon Sep 17 00:00:00 2001 From: Jamil Date: Thu, 30 Jun 2022 09:34:03 -0700 Subject: [PATCH] Telemetry check service (#771) --- apps/fz_http/lib/fz_http/application.ex | 1 + .../lib/fz_http/connectivity_check_service.ex | 3 +-- .../lib/fz_http/telemetry_ping_service.ex | 27 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 apps/fz_http/lib/fz_http/telemetry_ping_service.ex diff --git a/apps/fz_http/lib/fz_http/application.ex b/apps/fz_http/lib/fz_http/application.ex index 6daf0d025..a28c563d4 100644 --- a/apps/fz_http/lib/fz_http/application.ex +++ b/apps/fz_http/lib/fz_http/application.ex @@ -36,6 +36,7 @@ defmodule FzHttp.Application do {Phoenix.PubSub, name: FzHttp.PubSub}, FzHttpWeb.Presence, FzHttp.ConnectivityCheckService, + FzHttp.TelemetryPingService, FzHttp.VpnSessionScheduler, {OpenIDConnect.Worker, openid_connect_providers}, {DynamicSupervisor, name: FzHttp.RefresherSupervisor, strategy: :one_for_one}, diff --git a/apps/fz_http/lib/fz_http/connectivity_check_service.ex b/apps/fz_http/lib/fz_http/connectivity_check_service.ex index a5455849a..1e78eac6e 100644 --- a/apps/fz_http/lib/fz_http/connectivity_check_service.ex +++ b/apps/fz_http/lib/fz_http/connectivity_check_service.ex @@ -7,7 +7,7 @@ defmodule FzHttp.ConnectivityCheckService do require Logger - alias FzHttp.{ConnectivityChecks, Telemetry} + alias FzHttp.ConnectivityChecks def start_link(_) do http_client().start() @@ -26,7 +26,6 @@ defmodule FzHttp.ConnectivityCheckService do # XXX: Consider passing state here to implement exponential backoff in case of errors. @impl GenServer def handle_info(:perform, _state) do - Telemetry.ping() {:noreply, post_request()} end diff --git a/apps/fz_http/lib/fz_http/telemetry_ping_service.ex b/apps/fz_http/lib/fz_http/telemetry_ping_service.ex new file mode 100644 index 000000000..c79126ac4 --- /dev/null +++ b/apps/fz_http/lib/fz_http/telemetry_ping_service.ex @@ -0,0 +1,27 @@ +defmodule FzHttp.TelemetryPingService do + @moduledoc """ + Periodic service for sending `ping` telemetry + events. + """ + use GenServer + alias FzHttp.Telemetry + + @interval 3_600 + + def start_link(_) do + GenServer.start_link(__MODULE__, %{}) + end + + @impl GenServer + def init(state) do + # Send ping every hour + :timer.send_interval(@interval * 1000, :perform) + {:ok, state} + end + + @impl GenServer + def handle_info(:perform, state) do + Telemetry.ping() + {:noreply, state} + end +end