Flame Boss exporter
A Go exporter on folly that reads barbecue cooks from Flame Boss's cloud into Prometheus, for a Grafana dashboard and cook alerts in Discord.
The Flame Boss is a barbecue controller. It reads a pit probe and three meat probes, and runs a blower fan to hold the pit at a set temperature. The controller sends its readings only to Flame Boss's cloud. The flameboss exporter on the folly Kubernetes cluster reads them from that cloud into Prometheus. The owner watches a cook on a Grafana dashboard and the lab's Tidbyt displays, and gets its alerts in Discord.
Use it#
| Surface | Address | Who can reach it |
|---|---|---|
| Dashboard | Flame Boss, at https://grafana.lolwtf.ca/d/flameboss-cook | Clients that route to folly's load-balancer range, with a Grafana sign-in |
| Alerts | Discord, through Alertmanager on folly | The owner's Discord channel |
| Metrics | /metrics on port 8080 of the flameboss Service in monitoring | Prometheus, or kubectl port-forward |
| Cook snapshot | /api/cook on the same port, as JSON | Pods in folly, such as Tronbyt |
| Tidbyt app | flameboss, described in Tidbyt apps | The displays that Tronbyt shows it on |
| Cook log | https://myflameboss.com/en/cooks/<cook_id> | Anyone with the cook ID, with no sign-in |
Limits#
- The exporter keeps a cook in memory. A restart starts the
/api/cookgraph, the elapsed time and the reached-set latch again, and forgets the lid and alarm events. Probe names and alarm settings return when the controller sends them. - The exporter sends no commands. It cannot change the set temperature or silence an alarm on the controller.
- A cook's series exist while readings arrive. After 5 minutes without a reading,
flameboss_cook_activeis 0. After 30 minutes, the cook's series and its/api/cookentry go away, so the dashboard is empty between cooks and the Tidbyt app hides. FlameBossCookStartedandFlameBossMeatProbeAtWrapPointhave severitynotice, which the Discord route sends and theInfoInhibitorrule of the kube-prometheus-stack chart does not match.FlameBossVentAdvicekeeps severityinfo, so it reaches Discord only while a warning or critical alert fires in themonitoringnamespace.- Before its first connection, the exporter exports
flameboss_broker_connectedas 0 for the entry server, soFlameBossCloudUnreachablefires after 15 minutes if it never connects. - The Deployment carries the
reloader.stakater.com/autoannotation, so a change to theflameboss-credentialsSecret restarts the exporter, which reads its token only at start.
How it works#
The exporter signs in to myflameboss.com:8883 with the account's T-<user_id> username and token. The Flame Boss cloud names the server that each online controller is on. The exporter connects to that server and follows the controller when it moves. apps/flameboss/README.md has the protocol and every metric.
The controller sends temperatures in tenths of a degree Celsius, whatever its display shows. -32767 is an unplugged probe. Every exported temperature is in Fahrenheit.
Flux substitutes SECRET_FLAMEBOSS_USERNAME and SECRET_FLAMEBOSS_PASSWORD from clusters/folly/config/cluster-secrets.sops.yaml into the flameboss-credentials Secret.
Operate#
The rules watch the pit, the meat probes, the controller's alarms and the exporter. Their thresholds are in Fahrenheit, for a brisket or a pork butt. Operate the Flame Boss exporter lists each alert and its action.
Reference#
- Source, protocol, metrics and the Tidbyt app:
apps/flameboss/ - Manifests:
clusters/folly/monitoring/flameboss.yaml - Alerts:
clusters/folly/monitoring/flameboss-rules.yaml, tested byclusters/folly/monitoring/flameboss_test.yaml - Dashboard:
clusters/folly/monitoring/grafana-dashboards/flameboss.json - Image:
ghcr.io/jonpulsifer/flameboss
Linked from 3
- Tidbyt appsSix Pixlet apps, rackstat, tempest, wishin, callerid, burnsafe and flameboss, that the Tronbyt server on folly renders for the lab's Tidbyt pixel displays.
- WorkloadsWhat runs on the folly and offsite Kubernetes clusters, the files that list it, and the workloads that have their own page.
- Operate the Flame Boss exporterCheck a cook in the Flame Boss exporter, act on its alerts, change the alert thresholds, replace the Flame Boss token, read the first controller payloads and get a past cook's log.