Packages

appsignal

2.17.0
2.17.4 2.17.3 2.17.2 2.17.1 2.17.0 2.16.0 2.15.11 2.15.10 2.15.9 2.15.8 2.15.7 2.15.6 2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.1 2.14.0 2.13.4 2.13.3 2.13.2 2.13.1 2.13.0 2.12.3 2.12.2 2.12.1 2.12.0 2.11.0 2.10.2 2.10.1 2.10.0 2.9.2 2.9.1 2.9.0 2.8.3 2.8.2 2.8.1 2.8.0 2.7.13 2.7.12 2.7.11 2.7.10 2.7.9 2.7.8 2.7.7 2.7.6 2.7.5 2.7.4 2.7.3 2.7.2 2.7.1 2.7.0 2.7.0-beta.1 2.6.1 2.6.0 2.5.3 2.5.2 2.5.1 2.5.0 2.4.3 2.4.2 2.4.1 2.4.0 2.3.1 2.3.0 2.2.19 2.2.18 2.2.17 2.2.16 2.2.15 2.2.14 2.2.13 2.2.12 retired 2.2.11 2.2.10 2.2.9 2.2.8 2.2.7 2.2.6 2.2.5 2.2.4 2.2.3 2.2.2 2.2.1 2.2.0 2.1.15 2.1.14 2.1.13 2.1.12 2.1.11 2.1.10 2.1.9 2.1.8 2.1.7 2.1.7-beta.1 2.1.6 2.1.5 2.1.4 2.1.3 2.1.2 2.1.1 2.1.0 2.0.8 2.0.7 2.0.6 2.0.6-beta.1 2.0.5 retired 2.0.4 retired 2.0.3 retired 2.0.2 retired 2.0.1 retired 2.0.0 retired 2.0.0-beta.11 2.0.0-beta.10 2.0.0-beta.9 2.0.0-beta.8 2.0.0-beta.7 2.0.0-beta.6 2.0.0-beta.5 2.0.0-beta.4 2.0.0-beta.3 2.0.0-beta.2 2.0.0-beta.1 2.0.0-alpha.7 2.0.0-alpha.6 2.0.0-alpha.5 2.0.0-alpha.4 2.0.0-alpha.3 2.0.0-alpha.2 2.0.0-alpha.1 1.13.5 1.13.4 1.13.3 1.13.2 1.13.1 1.13.0 1.13.0-beta.2 1.13.0-beta.1 1.12.1 1.12.0 1.12.0-beta.3 1.12.0-beta.2 1.12.0-beta.1 1.11.8 1.11.7 1.11.6 1.11.5 1.11.4 1.11.3 1.11.2 1.11.1 1.11.0 1.11.0-beta.1 1.10.13 1.10.12 1.10.11 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.4 1.9.3 1.9.2 1.9.1 1.9.1-beta.1 1.9.0 1.9.0-beta.1 1.9.0-alpha.1 1.8.2 1.8.1 1.8.1-beta.2 1.8.1-beta.1 1.8.0 1.7.2 1.7.1 1.7.0 1.7.0-beta.2 1.7.0-beta.1 1.7.0-alpha.4 1.7.0-alpha.3 1.7.0-alpha.2 1.7.0-alpha.1 1.6.7 1.6.6 1.6.6-beta.2 1.6.6-beta.1 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.6.0-beta.1 1.6.0-alpha.1 1.5.1 1.5.0 1.5.0-beta.2 1.5.0-beta.1 1.4.11-beta.1 1.4.10 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.4.0-alpha.1 1.3.6 1.3.6-beta.1 1.3.5 1.3.4 1.3.4-beta.1 1.3.3 1.3.2 1.3.1 1.3.0 1.3.0-beta.3 1.3.0-beta.2 1.3.0-beta.1 1.2.3 1.2.2 1.2.1 1.2.0 1.1.1 1.1.0 1.0.4 1.0.3 1.0.2 1.0.1 1.0.0 1.0.0-rc.1 0.13.0 0.12.3 0.12.2 0.12.1 0.12.0 0.11.6 0.11.5 0.11.4 0.11.3 0.11.2 0.11.1 0.11.0 0.10.0 0.9.2 0.9.1 0.9.0 0.8.0 0.7.1 0.7.0 0.6.2 0.6.1 0.6.0 0.5.0 0.4.0 0.3.0 0.2.0 0.1.0 0.0.9 0.0.8 0.0.7 0.0.6 0.0.5 0.0.4 0.0.3 0.0.2 0.0.1

Collects error and performance data from your Elixir applications and sends it to AppSignal

Current section

280 Versions

Jump to

Compare versions

13 files changed
+610 additions
-474 deletions
  @@ -1,5 +1,21 @@
1 1 # AppSignal for Elixir changelog
2 2
3 + ## 2.17.0
4 +
5 + _Published on 2026-03-09._
6 +
7 + ### Added
8 +
9 + - Add HTTPoison instrumentation. HTTP requests made with HTTPoison will appear as `request.httpoison` events on your performance samples' event timeline.
10 +
11 + HTTPoison does not emit telemetry events, so the instrumentation is opt-in. Use `Appsignal.HTTPoison` in place of `HTTPoison` when making requests, or replace `use HTTPoison.Base` with `use Appsignal.HTTPoison.Base` for custom client modules. Response types (`%HTTPoison.Response{}`, `%HTTPoison.Error{}`, etc.) are unchanged.
12 +
13 + (minor [f667373a](https://github.com/appsignal/appsignal-elixir/commit/f667373ae7e02ae68f45547bf5a179fc9e0121c0))
14 +
15 + ### Changed
16 +
17 + - Bundled certificates have been updated. (patch [16dbdc27](https://github.com/appsignal/appsignal-elixir/commit/16dbdc2718e6618a9fae67db78b2c8482712907d))
18 +
3 19 ## 2.16.0
4 20
5 21 _Published on 2025-12-01._
  @@ -3,10 +3,60 @@
3 3 <<"https://github.com/appsignal/appsignal-elixir/blob/main/CHANGELOG.md">>},
4 4 {<<"GitHub">>,<<"https://github.com/appsignal/appsignal-elixir">>}]}.
5 5 {<<"name">>,<<"appsignal">>}.
6 - {<<"version">>,<<"2.16.0">>}.
6 + {<<"version">>,<<"2.17.0">>}.
7 7 {<<"description">>,
8 8 <<"Collects error and performance data from your Elixir applications and sends it to AppSignal">>}.
9 9 {<<"elixir">>,<<"~> 1.9">>}.
10 + {<<"files">>,
11 + [<<"lib">>,<<"lib/appsignal.ex">>,<<"lib/appsignal">>,
12 + <<"lib/appsignal/transaction.ex">>,
13 + <<"lib/appsignal/transaction_registry.ex">>,<<"lib/appsignal/probes">>,
14 + <<"lib/appsignal/probes/erlang_probe.ex">>,
15 + <<"lib/appsignal/probes/probes.ex">>,<<"lib/appsignal/logger">>,
16 + <<"lib/appsignal/logger/handler.ex">>,<<"lib/appsignal/logger/backend.ex">>,
17 + <<"lib/appsignal/integration_logger.ex">>,<<"lib/appsignal/tesla.ex">>,
18 + <<"lib/appsignal/test">>,<<"lib/appsignal/test/wrapper.ex">>,
19 + <<"lib/appsignal/test/monitor.ex">>,<<"lib/appsignal/test/tracer.ex">>,
20 + <<"lib/appsignal/test/span.ex">>,<<"lib/appsignal/logger.ex">>,
21 + <<"lib/appsignal/stacktrace.ex">>,<<"lib/appsignal/ecto_repo.ex">>,
22 + <<"lib/appsignal/instrumentation.ex">>,<<"lib/appsignal/system.ex">>,
23 + <<"lib/appsignal/finch.ex">>,<<"lib/appsignal/metadata.ex">>,
24 + <<"lib/appsignal/monitor.ex">>,<<"lib/appsignal/config.ex">>,
25 + <<"lib/appsignal/error.ex">>,<<"lib/appsignal/utils">>,
26 + <<"lib/appsignal/utils/data_encoder.ex">>,
27 + <<"lib/appsignal/utils/map_filter.ex">>,<<"lib/appsignal/utils/tasks.ex">>,
28 + <<"lib/appsignal/utils/push_api_key_validator.ex">>,
29 + <<"lib/appsignal/utils/file_system.ex">>,
30 + <<"lib/appsignal/utils/hostname.ex">>,
31 + <<"lib/appsignal/utils/argument_cleaner.ex">>,<<"lib/appsignal/ecto.ex">>,
32 + <<"lib/appsignal/diagnose">>,<<"lib/appsignal/diagnose/host.ex">>,
33 + <<"lib/appsignal/diagnose/config.ex">>,
34 + <<"lib/appsignal/diagnose/library.ex">>,
35 + <<"lib/appsignal/diagnose/paths.ex">>,
36 + <<"lib/appsignal/diagnose/report.ex">>,
37 + <<"lib/appsignal/diagnose/installation_report.ex">>,
38 + <<"lib/appsignal/diagnose/validation.ex">>,
39 + <<"lib/appsignal/diagnose/agent.ex">>,<<"lib/appsignal/instrumentation">>,
40 + <<"lib/appsignal/instrumentation/helpers.ex">>,
41 + <<"lib/appsignal/instrumentation/decorators.ex">>,
42 + <<"lib/appsignal/httpoison.ex">>,<<"lib/appsignal/heartbeat.ex">>,
43 + <<"lib/appsignal/demo.ex">>,<<"lib/appsignal/tracer.ex">>,
44 + <<"lib/appsignal/nif.ex">>,<<"lib/appsignal/span.ex">>,
45 + <<"lib/appsignal/absinthe.ex">>,<<"lib/appsignal/oban.ex">>,
46 + <<"lib/appsignal/check_in">>,<<"lib/appsignal/check_in/cron.ex">>,
47 + <<"lib/appsignal/check_in/event.ex">>,
48 + <<"lib/appsignal/check_in/heartbeat.ex">>,
49 + <<"lib/appsignal/check_in/scheduler.ex">>,
50 + <<"lib/appsignal/check_in/check_in.ex">>,<<"lib/appsignal/utils.ex">>,
51 + <<"lib/appsignal/error">>,<<"lib/appsignal/error/backend.ex">>,
52 + <<"lib/appsignal/transmitter.ex">>,<<"lib/mix">>,<<"lib/mix/tasks">>,
53 + <<"lib/mix/tasks/appsignal.demo.ex">>,
54 + <<"lib/mix/tasks/appsignal.install.ex">>,
55 + <<"lib/mix/tasks/appsignal.check_install.ex">>,
56 + <<"lib/mix/tasks/appsignal.diagnose.ex">>,<<"c_src/appsignal_extension.c">>,
57 + <<"mix.exs">>,<<"mix_helpers.exs">>,<<"CHANGELOG.md">>,
58 + <<"CODE_OF_CONDUCT.md">>,<<"README.md">>,<<"SUPPORT.md">>,<<"LICENSE">>,
59 + <<"Makefile">>,<<"agent.exs">>,<<"priv/cacert.pem">>]}.
10 60 {<<"app">>,<<"appsignal">>}.
11 61 {<<"requirements">>,
12 62 [[{<<"name">>,<<"castore">>},
  @@ -43,54 +93,11 @@
43 93 {<<"app">>,<<"telemetry">>},
44 94 {<<"optional">>,false},
45 95 {<<"requirement">>,<<"~> 0.4 or ~> 1.0">>},
96 + {<<"repository">>,<<"hexpm">>}],
97 + [{<<"name">>,<<"httpoison">>},
98 + {<<"app">>,<<"httpoison">>},
99 + {<<"optional">>,true},
100 + {<<"requirement">>,<<"~> 2.0">>},
46 101 {<<"repository">>,<<"hexpm">>}]]}.
47 - {<<"files">>,
48 - [<<"lib">>,<<"lib/appsignal.ex">>,<<"lib/appsignal">>,
49 - <<"lib/appsignal/transaction.ex">>,
50 - <<"lib/appsignal/transaction_registry.ex">>,<<"lib/appsignal/probes">>,
51 - <<"lib/appsignal/probes/erlang_probe.ex">>,
52 - <<"lib/appsignal/probes/probes.ex">>,<<"lib/appsignal/logger">>,
53 - <<"lib/appsignal/logger/handler.ex">>,<<"lib/appsignal/logger/backend.ex">>,
54 - <<"lib/appsignal/integration_logger.ex">>,<<"lib/appsignal/tesla.ex">>,
55 - <<"lib/appsignal/test">>,<<"lib/appsignal/test/wrapper.ex">>,
56 - <<"lib/appsignal/test/monitor.ex">>,<<"lib/appsignal/test/tracer.ex">>,
57 - <<"lib/appsignal/test/span.ex">>,<<"lib/appsignal/logger.ex">>,
58 - <<"lib/appsignal/stacktrace.ex">>,<<"lib/appsignal/ecto_repo.ex">>,
59 - <<"lib/appsignal/instrumentation.ex">>,<<"lib/appsignal/system.ex">>,
60 - <<"lib/appsignal/finch.ex">>,<<"lib/appsignal/metadata.ex">>,
61 - <<"lib/appsignal/monitor.ex">>,<<"lib/appsignal/config.ex">>,
62 - <<"lib/appsignal/error.ex">>,<<"lib/appsignal/utils">>,
63 - <<"lib/appsignal/utils/data_encoder.ex">>,
64 - <<"lib/appsignal/utils/map_filter.ex">>,<<"lib/appsignal/utils/tasks.ex">>,
65 - <<"lib/appsignal/utils/push_api_key_validator.ex">>,
66 - <<"lib/appsignal/utils/file_system.ex">>,
67 - <<"lib/appsignal/utils/hostname.ex">>,
68 - <<"lib/appsignal/utils/argument_cleaner.ex">>,<<"lib/appsignal/ecto.ex">>,
69 - <<"lib/appsignal/diagnose">>,<<"lib/appsignal/diagnose/host.ex">>,
70 - <<"lib/appsignal/diagnose/config.ex">>,
71 - <<"lib/appsignal/diagnose/library.ex">>,
72 - <<"lib/appsignal/diagnose/paths.ex">>,
73 - <<"lib/appsignal/diagnose/report.ex">>,
74 - <<"lib/appsignal/diagnose/validation.ex">>,
75 - <<"lib/appsignal/diagnose/agent.ex">>,<<"lib/appsignal/instrumentation">>,
76 - <<"lib/appsignal/instrumentation/helpers.ex">>,
77 - <<"lib/appsignal/instrumentation/decorators.ex">>,
78 - <<"lib/appsignal/heartbeat.ex">>,<<"lib/appsignal/demo.ex">>,
79 - <<"lib/appsignal/tracer.ex">>,<<"lib/appsignal/nif.ex">>,
80 - <<"lib/appsignal/span.ex">>,<<"lib/appsignal/absinthe.ex">>,
81 - <<"lib/appsignal/oban.ex">>,<<"lib/appsignal/check_in">>,
82 - <<"lib/appsignal/check_in/cron.ex">>,<<"lib/appsignal/check_in/event.ex">>,
83 - <<"lib/appsignal/check_in/heartbeat.ex">>,
84 - <<"lib/appsignal/check_in/scheduler.ex">>,
85 - <<"lib/appsignal/check_in/check_in.ex">>,<<"lib/appsignal/utils.ex">>,
86 - <<"lib/appsignal/error">>,<<"lib/appsignal/error/backend.ex">>,
87 - <<"lib/appsignal/transmitter.ex">>,<<"lib/mix">>,<<"lib/mix/tasks">>,
88 - <<"lib/mix/tasks/appsignal.demo.ex">>,
89 - <<"lib/mix/tasks/appsignal.install.ex">>,
90 - <<"lib/mix/tasks/appsignal.check_install.ex">>,
91 - <<"lib/mix/tasks/appsignal.diagnose.ex">>,<<"c_src/appsignal_extension.c">>,
92 - <<"mix.exs">>,<<"mix_helpers.exs">>,<<"CHANGELOG.md">>,
93 - <<"CODE_OF_CONDUCT.md">>,<<"README.md">>,<<"SUPPORT.md">>,<<"LICENSE">>,
94 - <<"Makefile">>,<<"agent.exs">>,<<"priv/cacert.pem">>]}.
95 102 {<<"licenses">>,[<<"MIT">>]}.
96 103 {<<"build_tools">>,[<<"mix">>,<<"make">>]}.
  @@ -9,6 +9,11 @@ defmodule Appsignal do
9 9 """
10 10
11 11 @os Application.compile_env(:appsignal, :os_internal, :os)
12 + @installation_report Application.compile_env(
13 + :appsignal,
14 + :appsignal_diagnose_installation_report,
15 + Appsignal.Diagnose.InstallationReport
16 + )
12 17
13 18 use Application
14 19 alias Appsignal.Config
  @@ -196,7 +201,7 @@ defmodule Appsignal do
196 201
197 202 # Parse install report and fetch the architecture and target
198 203 defp fetch_installed_architecture_target do
199 - case File.read(Path.join([:code.priv_dir(:appsignal), "install.report"])) do
204 + case @installation_report.read_install() do
200 205 {:ok, raw_report} ->
201 206 case Jason.decode(raw_report) do
202 207 {:ok, report} ->
  @@ -120,7 +120,7 @@ defmodule Appsignal.CheckIn.Scheduler do
120 120 end
121 121
122 122 @impl true
123 - def terminate(_reason, %{events: events}) when length(events) > 0 do
123 + def terminate(_reason, %{events: [_ | _] = events}) do
124 124 # If any events are stored, attempt to transmit them before the
125 125 # process is terminated.
126 126 handle_continue({:transmit, events}, initial_state())
  @@ -0,0 +1,20 @@
1 + defmodule Appsignal.Diagnose.InstallationReportBehaviour do
2 + @moduledoc false
3 + @callback read_install() :: {:ok, binary()} | {:error, atom()}
4 + @callback read_download() :: {:ok, binary()} | {:error, atom()}
5 + end
6 +
7 + defmodule Appsignal.Diagnose.InstallationReport do
8 + @moduledoc false
9 + @behaviour Appsignal.Diagnose.InstallationReportBehaviour
10 +
11 + @spec read_install() :: {:ok, binary()} | {:error, atom()}
12 + def read_install do
13 + File.read(Path.join([:code.priv_dir(:appsignal), "install.report"]))
14 + end
15 +
16 + @spec read_download() :: {:ok, binary()} | {:error, atom()}
17 + def read_download do
18 + File.read(Path.join([:code.priv_dir(:appsignal), "download.report"]))
19 + end
20 + end
Loading more files…