document prometheus
This commit is contained in:
parent
c2054f82ab
commit
d1a0d93bf7
3 changed files with 35 additions and 2 deletions
31
docs/docs/administration/monitoring.md
Normal file
31
docs/docs/administration/monitoring.md
Normal file
|
@ -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
|
||||||
|
```
|
|
@ -207,6 +207,8 @@ defp ip(%{remote_ip: remote_ip}) when is_tuple(remote_ip) do
|
||||||
|> Enum.join(".")
|
|> Enum.join(".")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp ip(_), do: nil
|
||||||
|
|
||||||
defp render_throttled_error(conn) do
|
defp render_throttled_error(conn) do
|
||||||
conn
|
conn
|
||||||
|> render_error(:too_many_requests, "Throttled")
|
|> render_error(:too_many_requests, "Throttled")
|
||||||
|
|
|
@ -17,7 +17,7 @@ RESP=$(curl \
|
||||||
client_id=$(echo $RESP | jq -r .client_id)
|
client_id=$(echo $RESP | jq -r .client_id)
|
||||||
client_secret=$(echo $RESP | jq -r .client_secret)
|
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 "Could not create an app"
|
||||||
echo "$RESP"
|
echo "$RESP"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -47,7 +47,7 @@ RESP=$(curl \
|
||||||
--data-urlencode 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' \
|
--data-urlencode 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' \
|
||||||
--data-urlencode "scope=admin:metrics"
|
--data-urlencode "scope=admin:metrics"
|
||||||
)
|
)
|
||||||
|
echo $RESP
|
||||||
ACCESS_TOKEN="$(echo $RESP | jq -r .access_token)"
|
ACCESS_TOKEN="$(echo $RESP | jq -r .access_token)"
|
||||||
|
|
||||||
echo "Token is $ACCESS_TOKEN"
|
echo "Token is $ACCESS_TOKEN"
|
||||||
|
|
Loading…
Reference in a new issue