From: FloatingGhost <hannah@coffee-and-dreams.uk>
Date: Fri, 16 Dec 2022 10:24:36 +0000 (+0000)
Subject: document prometheus
X-Git-Url: https://git.squeep.com/?a=commitdiff_plain;h=d1a0d93bf75050fcdb370ec19338501ade474689;p=akkoma

document prometheus
---

diff --git a/docs/docs/administration/monitoring.md b/docs/docs/administration/monitoring.md
new file mode 100644
index 000000000..65fbbb249
--- /dev/null
+++ b/docs/docs/administration/monitoring.md
@@ -0,0 +1,31 @@
+# Monitoring Akkoma
+
+If you run akkoma, you may be inclined to collect metrics to ensure your instance is running smoothly,
+and that there's nothing quietly failing in the background.
+
+To facilitate this, akkoma exposes prometheus metrics to be scraped.
+
+## Prometheus
+
+To scrape prometheus metrics, we need an oauth2 token with the `admin:metrics` scope.
+
+consider using [constanze](https://akkoma.dev/AkkomaGang/constanze) to make this easier -
+
+```bash
+constanze token --client-app --scopes "admin:metrics" --client-name "Prometheus"
+```
+
+or see `scripts/create_metrics_app.sh` in the source tree for the process to get this token.
+
+Once you have your token of the form `Bearer $ACCESS_TOKEN`, you can use that in your prometheus config:
+
+```yaml
+- job_name: akkoma
+  scheme: https
+  authorization:
+    credentials: $ACCESS_TOKEN # this should have the bearer prefix removed
+  metrics_path: /api/v1/akkoma/metrics
+  static_configs:
+  - targets:
+    - example.com
+```
\ No newline at end of file
diff --git a/lib/pleroma/web/plugs/rate_limiter.ex b/lib/pleroma/web/plugs/rate_limiter.ex
index f5ca27f0c..3c82654b4 100644
--- a/lib/pleroma/web/plugs/rate_limiter.ex
+++ b/lib/pleroma/web/plugs/rate_limiter.ex
@@ -207,6 +207,8 @@ defmodule Pleroma.Web.Plugs.RateLimiter do
     |> Enum.join(".")
   end
 
+  defp ip(_), do: nil
+
   defp render_throttled_error(conn) do
     conn
     |> render_error(:too_many_requests, "Throttled")
diff --git a/scripts/create_metrics_app.sh b/scripts/create_metrics_app.sh
index c2f32e50f..c42f5dde8 100755
--- a/scripts/create_metrics_app.sh
+++ b/scripts/create_metrics_app.sh
@@ -17,7 +17,7 @@ RESP=$(curl \
 client_id=$(echo $RESP | jq -r .client_id)
 client_secret=$(echo $RESP | jq -r .client_secret)
 
-if [ -z "$client_id"]; then
+if [ -z "$client_id" ]; then
   echo "Could not create an app"
   echo "$RESP"
   exit 1
@@ -47,7 +47,7 @@ RESP=$(curl \
     --data-urlencode 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' \
     --data-urlencode "scope=admin:metrics"
 )
-
+echo $RESP
 ACCESS_TOKEN="$(echo $RESP | jq -r .access_token)"
 
 echo "Token is $ACCESS_TOKEN"