Или: как вы можете использовать мощность Kubernetes и хороший стек мониторинга, чтобы делать практически все
Я только что получил курильщик, и допустим, что я пошел за это. Ну, не ветчина, но у меня была вещь в течение 6 недель, и я сделал 5 кроттин. Каждый становится немного лучше, и я скажу, что опыт курения мяса довольно весело; Есть тонна, на которую вы должны обратить внимание, и вы хотите внести небольшие коррективы, не позволяя что -то слишком драматично.
Наряду с курильщиком я также получил Igrill V2. Это фактически термометр Bluetooth, который имеет как мясо, так и датчики температуры окружающей среды. У Igrill есть приложение, которое позволяет вам делать некоторые основные вещи Но вы привязаны к линейке Bluetooth маленького устройства, который довольно маленький, может быть, примерно 30 футов в хороший день. Это означало, что я даже не мог ходить по своему дому и при этом получить температуру и оповещения от термометра.
Наша цель
Создайте простой способ контролировать температуру курильщика в реальном времени из любого места.
Наш технический стек
- Kubernetes
- Шлем
- Helmfile
- Прометей-оператор
- Прометей
- Графана
- Менеджер оповещения
- Прометеус толчок шлюза
- игрилл
- Raspberry Pi B+
Наше решение
Во -первых, нам нужно подключить Igrill к чему -то другому, кроме телефона. У меня есть горстка из Raspberry Pi B+, которая должна работать отлично. У них встроенный Bluetooth и Btle.
Некоторые люди уже сделали тяжелую работу, когда дело доходит до разговора с IGRILL, Это репо от Bjoernhoefer Выглядит хорошо, так что давайте начнем там.
import time from igrill import IGrillV2Peripheral from prometheus_client import Gauge, push_to_gateway, CollectorRegistry registry = CollectorRegistry() probe_one = Gauge('bbq_probe_one_temp', 'Temp of probe one', registry=registry) probe_two = Gauge('bbq_probe_two_temp', 'Temp of probe two', registry=registry) probe_three = Gauge('bbq_probe_three_temp', 'Temp of probe three', registry=registry) probe_four = Gauge('bbq_probe_four_temp', 'Temp of probe four', registry=registry) probes = [ probe_one, probe_two, probe_three, probe_four ] battery = Gauge('bbq_battery', 'Battery of the iGrill', registry=registry) if __name__ == '__main__': periph = IGrillV2Peripheral('XX:XX:XX:XX:XX:XX') while True: temperature=periph.read_temperature() # Probe 1 if temperature[1] != 63536.0: print("bbq/probe1", temperature[1]) probe_one.set(temperature[1]) # Probe 2 if temperature[2] != 63536.0: print("bbq/probe2", temperature[2]) probe_two.set(temperature[2]) # Probe 3 if temperature[3] != 63536.0: print("bbq/probe3", temperature[3]) probe_three.set(temperature[3]) # Probe 4 if temperature[4] != 63536.0: print("bbq/probe4", temperature[4]) probe_four.set(temperature[4]) print("bbq/battery", periph.read_battery()) battery.set(periph.read_battery()) push_to_gateway('https://grillstats-url', job="igrill", registry=registry ) time.sleep(5)
Нам не нужен сервер MQTT. Вместо этого мы можем добавить GateTheus Gateway в наш кластер Kubernetes и подтолкнуть наши метрики прямо там.
Теперь давайте настроем нашего оператора Prometheus с помощью коляска, который готов к получению метрик.
В файле value.yaml мы добавляем
- prometheus: additionalServiceMonitors: - name: igrill-monitor selector: matchLabels: app: prometheus-pushgateway namespaceSelector: matchNames: - metrics endpoints: - honorLabels: true - port: '9091' - targetPort: '9091' interval: 5s
Это говорит Prometheus, что он должен очистить новые конечные точки.
Наконец, давайте настроем Ворота Прометея, чтобы дать нам место, чтобы подтолкнуть метрики. Мы используем руль для развертывания Gateway Prometheus.
Мы можем документировать все это с помощью Helmfile :
releases: - name: metrics namespace: metrics chart: stable/prometheus-operator values: - prometheus-node-exporter: service: port: 30206 targetPort: 30206 - prometheus: additionalServiceMonitors: - name: igrill-monitor selector: matchLabels: app: prometheus-pushgateway namespaceSelector: matchNames: - metrics endpoints: - honorLabels: true - port: "9091" - targetPort: "9091" interval: 5s - name: push-gateway namespace: metrics chart: stable/prometheus-pushgateway
Простой Helmfile Sync
развертывает все.
Теперь мы можем настроить диаграммы в Графане:
И, конечно же, гламурный снимок конечного продукта! За все, что мне потребовалось около 14 часов, чтобы курить, и людям это понравилось!
Оригинал: «https://dev.to/focusedlabs/i-built-a-rube-goldburg-machine-to-monitor-my-smoker-using-k8s-prometheus-and-grafana-5c59»