zabbix_export: version: '7.2' template_groups: - uuid: 30a90fb5fb3e4a7f9bb4517022c7726a name: Templates/FlowerCore templates: - uuid: 89cecb27144c4b539bd8972d4d949063 template: FlowerCore Print Ollama name: FlowerCore Print Ollama description: FlowerCore Print.Web Ollama health probe checks. Import this template into Zabbix and link it to the Print.Web host. groups: - name: Templates/FlowerCore items: - uuid: 8fd2720255d54bc8bda0fe3ab4677c6c name: Print.Web metrics snapshot type: HTTP_AGENT key: flowercore.print.ollama.snapshot delay: 30s history: 7d trends: '0' value_type: TEXT url: http://10.0.57.16:5200/api/metrics timeout: 5s description: Raw JSON from Print.Web GET /api/metrics. The Ollama summary is public monitoring data; /api/ai/ollama-snapshot remains API-key protected. - uuid: 5cb902556e9f45c2b4c29c5c4a32fd73 name: Print.Web Ollama long keep-alive runner count type: DEPENDENT key: flowercore.print.ollama.long_keepalive.count delay: '0' history: 7d trends: 30d value_type: UNSIGNED description: Number of active Ollama runners whose keep-alive window remains above 10 minutes. preprocessing: - type: JAVASCRIPT parameters: - | var payload = JSON.parse(value); var ollama = payload.ollama || payload.Ollama || {}; var runners = ollama.runners || ollama.Runners || []; if (!Array.isArray(runners)) { return 0; } var count = 0; for (var i = 0; i < runners.length; i += 1) { var runner = runners[i] || {}; var markedLong = runner.longKeepAlive || runner.LongKeepAlive; var remainingRaw = runner.keepAliveRemainingSeconds; if (remainingRaw === undefined || remainingRaw === null) { remainingRaw = runner.KeepAliveRemainingSeconds; } var remaining = Number(remainingRaw || 0); if (markedLong === true || remaining > 600) { count += 1; } } return count; master_item: key: flowercore.print.ollama.snapshot - uuid: 73680dcbbe4844f48378c9f3042641f1 name: Print.Web Ollama active runner count type: DEPENDENT key: flowercore.print.ollama.active_runner.count delay: '0' history: 7d trends: 30d value_type: UNSIGNED description: Active runner count from the Print.Web Ollama snapshot. preprocessing: - type: JAVASCRIPT parameters: - | var payload = JSON.parse(value); var ollama = payload.ollama || payload.Ollama || {}; var activeRunnerRaw = ollama.activeRunnerCount; if (activeRunnerRaw === undefined || activeRunnerRaw === null) { activeRunnerRaw = ollama.ActiveRunnerCount; } var activeRunnerCount = Number(activeRunnerRaw); if (!isNaN(activeRunnerCount)) { return activeRunnerCount; } var runners = ollama.runners || ollama.Runners || []; return Array.isArray(runners) ? runners.length : 0; master_item: key: flowercore.print.ollama.snapshot triggers: - uuid: 8fcd85b7e6e9423099b5e2bcbba3537e expression: last(/FlowerCore Print Ollama/flowercore.print.ollama.long_keepalive.count)>0 name: Print.Web Ollama runner keep-alive exceeds 10 minutes priority: WARNING description: Print.Web reports at least one active Ollama runner with more than 10 minutes of keep-alive remaining. Check the Admin Ollama Fleet panel and stop duplicate model callers before the Pi 5 Ollama lane thrashes. manual_close: 'YES'