aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhref <href@random.sh>2019-01-30 16:32:30 +0100
committerMark Felder <feld@FreeBSD.org>2019-04-04 11:30:43 -0500
commitbc3618a38d2e37254e27f723d3dd61679eca9be5 (patch)
tree822b87dbe8b6d5b55ac64a023eb978b2d8078070
parentb655a8ea839d19443f44ff5b300a069d88ec7d58 (diff)
downloadpleroma-bc3618a38d2e37254e27f723d3dd61679eca9be5.tar.gz
Set up telemetry and prometheus
-rw-r--r--config/config.exs5
-rw-r--r--lib/pleroma/application.ex8
-rw-r--r--lib/pleroma/repo.ex4
-rw-r--r--lib/pleroma/web/endpoint.ex20
4 files changed, 37 insertions, 0 deletions
diff --git a/config/config.exs b/config/config.exs
index dccf7b263..1e086f44c 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -8,6 +8,10 @@ use Mix.Config
# General application configuration
config :pleroma, ecto_repos: [Pleroma.Repo]
+config :pleroma, Pleroma.Repo,
+ types: Pleroma.PostgresTypes,
+ loggers: [Pleroma.Repo.Instrumenter, Ecto.LogEntry]
+
config :pleroma, Pleroma.Captcha,
enabled: false,
seconds_valid: 60,
@@ -87,6 +91,7 @@ websocket_config = [
# Configures the endpoint
config :pleroma, Pleroma.Web.Endpoint,
+ instrumenters: [Pleroma.Web.Endpoint.Instrumenter],
url: [host: "localhost"],
http: [
dispatch: [
diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex
index 782d1d589..03dcbab1a 100644
--- a/lib/pleroma/application.ex
+++ b/lib/pleroma/application.ex
@@ -25,6 +25,7 @@ defmodule Pleroma.Application do
import Cachex.Spec
Pleroma.Config.DeprecationWarnings.warn()
+ setup_instrumenters()
# Define workers and child supervisors to be supervised
children =
@@ -140,6 +141,13 @@ defmodule Pleroma.Application do
end
end
+ defp setup_instrumenters() do
+ Pleroma.Web.Endpoint.MetricsExporter.setup()
+ Pleroma.Web.Endpoint.PipelineInstrumenter.setup()
+ Pleroma.Web.Endpoint.Instrumenter.setup()
+ Pleroma.Repo.Instrumenter.setup()
+ end
+
if Mix.env() == :test do
defp streamer_child, do: []
defp chat_child, do: []
diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex
index 4af1bde56..aa5d427ae 100644
--- a/lib/pleroma/repo.ex
+++ b/lib/pleroma/repo.ex
@@ -8,6 +8,10 @@ defmodule Pleroma.Repo do
adapter: Ecto.Adapters.Postgres,
migration_timestamps: [type: :naive_datetime_usec]
+ defmodule Instrumenter do
+ use Prometheus.EctoInstrumenter
+ end
+
@doc """
Dynamically loads the repository url from the
DATABASE_URL environment variable.
diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex
index fa2d1cbe7..6d9528c86 100644
--- a/lib/pleroma/web/endpoint.ex
+++ b/lib/pleroma/web/endpoint.ex
@@ -70,6 +70,26 @@ defmodule Pleroma.Web.Endpoint do
extra: "SameSite=Strict"
)
+ # Note: the plug and its configuration is compile-time this can't be upstreamed yet
+ if proxies = Pleroma.Config.get([__MODULE__, :reverse_proxies]) do
+ plug(RemoteIp, proxies: proxies)
+ end
+
+ defmodule Instrumenter do
+ use Prometheus.PhoenixInstrumenter
+ end
+
+ defmodule PipelineInstrumenter do
+ use Prometheus.PlugPipelineInstrumenter
+ end
+
+ defmodule MetricsExporter do
+ use Prometheus.PlugExporter
+ end
+
+ plug(PipelineInstrumenter)
+ plug(MetricsExporter)
+
plug(Pleroma.Web.Router)
@doc """