r/frigate-exporter: Deploy Prometheus exporter

Frigate exports useful statistics natively, but in a custom JSON format.
There is a [feature request][0] to add support for Prometheus format,
but it's mostly being ignored.  A community member has created a
standalone process that converts the JSON format into Prometheus format,
though, which we can use.

[0]: https://github.com/blakeblackshear/frigate/issues/2266
frigate-exporter
Dustin 2024-10-21 19:57:15 -05:00
parent 4ac79ba18d
commit ccf33f90e0
4 changed files with 71 additions and 0 deletions

View File

@ -6,3 +6,5 @@
tags: frigate
- role: frigate-caddy
tags: frigate-caddy
- role: frigate-exporter
tags: frigate-exporter

View File

@ -0,0 +1,18 @@
# vim: set ft=systemd :
[Unit]
Description=Prometheus exporter for Frigate
After=network.target
Wants=network.target
After=frigate.service
[Container]
Image=git.pyrocufflink.net/containerimages/prometheus-frigate-exporter
Pull=never
Environment=FRIGATE_STATS_URL=http://localhost:5000/api/stats
User=45005
Group=45005
NoNewPrivileges=true
Network=host
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,4 @@
- name: restart frigate-exporter
service:
name: frigate-exporter
state: restarted

View File

@ -0,0 +1,47 @@
- name: ensure frigate-exporter container image is available
podman_image:
name: git.pyrocufflink.net/containerimages/prometheus-frigate-exporter:latest
state: present
environment:
http_proxy: '{{ http_proxy }}'
https_proxy: '{{ https_proxy }}'
tags:
- install
- container-image
- name: ensure frigate-exporter container unit is defined
copy:
src: frigate-exporter.container
dest: /etc/containers/systemd/frigate-exporter.container
owner: root
group: root
mode: u=rw,go=r
notify:
- reload systemd
- restart frigate-exporter
tags:
- container
- systemd
- name: flush handlers
meta: flush_handlers
- name: ensure frigate-exporter is running
service:
name: frigate-exporter
state: started
tags:
- service
- name: ensure firewall is configured for frigate-exporter
firewalld:
port: 9100/tcp
immediate: '{{ item == "immediate" }}'
permanent: '{{ item == "permanent" }}'
state: enabled
loop:
- immediate
- permanent
when: host_uses_firewalld|d(true)
tags:
- firwalld