nanobot: 2026-09-18 19:16:50
This commit is contained in:
270
cron/jobs.json
270
cron/jobs.json
@@ -37,8 +37,8 @@
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
"nextRunAtMs": 1789711200000,
|
||||
"lastRunAtMs": 1789624800002,
|
||||
"nextRunAtMs": 1789797600000,
|
||||
"lastRunAtMs": 1789736532403,
|
||||
"lastStatus": "ok",
|
||||
"lastError": null,
|
||||
"runHistory": [
|
||||
@@ -97,11 +97,18 @@
|
||||
"durationMs": 6647,
|
||||
"error": null,
|
||||
"runId": "c1e268c8:1789624800003:96c562a2"
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789736532403,
|
||||
"status": "ok",
|
||||
"durationMs": 4793,
|
||||
"error": null,
|
||||
"runId": "c1e268c8:1789736532410:d63412c3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"createdAtMs": 1788948314679,
|
||||
"updatedAtMs": 1789624806649,
|
||||
"updatedAtMs": 1789736537196,
|
||||
"deleteAfterRun": false
|
||||
},
|
||||
{
|
||||
@@ -128,134 +135,36 @@
|
||||
"originMetadata": {}
|
||||
},
|
||||
"state": {
|
||||
"nextRunAtMs": 1789669878432,
|
||||
"lastRunAtMs": 1789662678420,
|
||||
"nextRunAtMs": 1789758137371,
|
||||
"lastRunAtMs": 1789750937353,
|
||||
"lastStatus": "ok",
|
||||
"lastError": null,
|
||||
"runHistory": [
|
||||
{
|
||||
"runAtMs": 1789547478103,
|
||||
"runAtMs": 1789736537196,
|
||||
"status": "ok",
|
||||
"durationMs": 26,
|
||||
"durationMs": 133,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789554678131,
|
||||
"runAtMs": 1789743737331,
|
||||
"status": "ok",
|
||||
"durationMs": 11,
|
||||
"durationMs": 19,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789561878143,
|
||||
"runAtMs": 1789750937353,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789569078156,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789576278256,
|
||||
"status": "ok",
|
||||
"durationMs": 11,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789583478269,
|
||||
"status": "ok",
|
||||
"durationMs": 13,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789590678283,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789597878296,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789605078310,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789612278324,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789619478338,
|
||||
"status": "ok",
|
||||
"durationMs": 11,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789626678350,
|
||||
"status": "ok",
|
||||
"durationMs": 13,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789633878365,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789641078378,
|
||||
"status": "ok",
|
||||
"durationMs": 11,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789648278391,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789655478405,
|
||||
"status": "ok",
|
||||
"durationMs": 13,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789662678420,
|
||||
"status": "ok",
|
||||
"durationMs": 12,
|
||||
"durationMs": 18,
|
||||
"error": null,
|
||||
"runId": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"createdAtMs": 1789540278089,
|
||||
"updatedAtMs": 1789662678432,
|
||||
"createdAtMs": 1776109113789,
|
||||
"updatedAtMs": 1789750937371,
|
||||
"deleteAfterRun": false
|
||||
},
|
||||
{
|
||||
@@ -282,155 +191,78 @@
|
||||
"originMetadata": {}
|
||||
},
|
||||
"state": {
|
||||
"nextRunAtMs": 1789664478436,
|
||||
"lastRunAtMs": 1789662678435,
|
||||
"nextRunAtMs": 1789752737375,
|
||||
"lastRunAtMs": 1789750937375,
|
||||
"lastStatus": "ok",
|
||||
"lastError": null,
|
||||
"runHistory": [
|
||||
{
|
||||
"runAtMs": 1789628478367,
|
||||
"runAtMs": 1789736537329,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789630278369,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789632078371,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789633878381,
|
||||
"runAtMs": 1789738337332,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789635678381,
|
||||
"runAtMs": 1789740137332,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789637478383,
|
||||
"runAtMs": 1789741937334,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789639278385,
|
||||
"runAtMs": 1789743737352,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789745537354,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789747337356,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789749137358,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789641078391,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789642878392,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789644678394,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789646478397,
|
||||
"runAtMs": 1789750937375,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789648278408,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789650078411,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789651878412,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789653678414,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789655478420,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789657278421,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789659078423,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789660878424,
|
||||
"status": "ok",
|
||||
"durationMs": 0,
|
||||
"error": null,
|
||||
"runId": null
|
||||
},
|
||||
{
|
||||
"runAtMs": 1789662678435,
|
||||
"status": "ok",
|
||||
"durationMs": 1,
|
||||
"error": null,
|
||||
"runId": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"createdAtMs": 1789540278095,
|
||||
"updatedAtMs": 1789662678436,
|
||||
"createdAtMs": 1776109113795,
|
||||
"updatedAtMs": 1789750937375,
|
||||
"deleteAfterRun": false
|
||||
}
|
||||
]
|
||||
|
||||
@@ -165,3 +165,13 @@ Primární zdroje:
|
||||
**Srovnávací kontext Backblaze Drive Stats (Q1 2026 snapshot, primární zdroj backblaze.com):** 341 263 disků, 1 030 poruch, AFR Q1/2026 = 1,24 %; rok 2025 AFR = 1,36 % (115,6M drive-days, 4 317 poruch); lifetime AFR = 1,39 % (529,9M drive-days, 20 212 poruch). Podíl značek: Toshiba 33,93 %, Seagate 33,02 %, WDC 25,30 %, HGST 7,75 %. Dataset open-source, CSV i Apache Iceberg formát (query přes DuckDB/Trino/Snowflake).
|
||||
|
||||
Praktický takeaway pro nákup disků do homelabu: HGST už nejde koupit nové (WD brand zrušen), takže reálné pořadí dnešních značek: WD > Seagate ≈ Toshiba, ale Seagate/Toshiba ~2× vyšší poruchovost; nižší teplota a vyšší kapacita pomáhají. Závěry platí pro enterprise disky v datacentru — na konzumerní disky nejsou nutně přenositelné, workload data nejsou k dispozici.
|
||||
- 2026-09-18: Pád Proxmox serveru (cca 2026-09-20 večer): celý server přestal náhle fungovat, veškerá snaha o rozběhání selhala. Jediná reakce — pískání speakeru při vyjmutí paměti (RAM sloty/panely paměti zůstaly jediným živým okruhem, zbytek boardu zjevně mrtvý — nebylo možné diagnostikovat dál, root cause boardu neznám).
|
||||
|
||||
Náhrada: sehnán **Dell Optiplex 9010** (den po pádu). Podobné CPU, kompatibilní ATX konektor na boardu. Přesun proveden téhož dne: pročistěné/zbavené zdrojů, použita RAM z původního stroje, zapojeny disky i **RTX 4060** — vše funguje. Celý přesun trval přes hodinu, hlavně kvůli problémům s BIOSem, které jsou ještě k dořešení.
|
||||
|
||||
Otevřené body po migraci:
|
||||
- Sekundární ventilátor — potřebuje doladění
|
||||
- BIOS — změny nastavení se **neukládají** (dohledat: CMOS battery / BIOS verze / jumper)
|
||||
- Nový **1TB NVMe disk** k instalaci
|
||||
- **Proxmox Backup Server** nahodit, aby bylo kam zálohovat — kandidát pivo.hell (Atom stroj)
|
||||
- Dlouhodobě: plánování nového HW. Průzkum hotový — dnešní nabídky jsou skříňky 15–20 l, kde za peníze dostane jen víc jader; víc jader uživatel nechce, směr zatím nevyhovuje. Zvažovat alternativy: mini-ITX SFF skříňě, používání Optiplexu jako mezikroku, případně custom build.
|
||||
|
||||
@@ -5,11 +5,12 @@ timestamp: draft
|
||||
# Project devops
|
||||
|
||||
## Kde to je
|
||||
- Projekt založen jako volný prostor pro admin/root poznámky o infrastruktuře a provozu.
|
||||
- **HW základna: Dell Optiplex 9010** (od 2026-09-20). Původní Proxmox server náhle zemřel (večer 2026-09-20, po vyjmutí RAM jen pískání speakeru, board mrtvý, root cause neznám). Do Optiplexu přesunuty RAM, disky i RTX 4060 — vše jede. BIOS měl problémy (celý přesun >1 h), změny v BIOSu se neukládají — k dořešení. Původní nvidia.hell incidenty (12.–13. 9.) se týkaly ještě původního stroje.
|
||||
- LibreChat: běží jako podman kontejnery; jako Code Interpreter sandbox vybrán LibreCodeInterpreter (nsjail, 3 kontejnery). Research hotový (2026-09-13), rozhodnutí o nasazení (sdílená Docker VM vs dedikovaná Proxmox VM) ještě nepadlo.
|
||||
- Ollama na nvidia.hell: po incidentech 12.–13. 9. 2026 zaevidován root cause pádů — kauzální řetěz: ollama rozhoduje load podle VRAM ne volné RAM + vypíná mmap (podmínka na 9,5 GiB stroji nesplnitelná nikdy, regrese od 2026-06-05) + PLE host buffer u gemma4 + přerušený load leakuje napinovanou host paměť (neviditelná pro ps/nvidia-smi/cgtop, detekce jen `nr_foll_pin` delta v /proc/vmstat), uvolní **jen reboot** (rmmod driveru ověřeně NE). Cgroup pojistka (`MemoryMax=6G`, `MemorySwapMax=0`, bez MemoryHigh) ověřena zátěžovým testem: 240/240 SSH heartbeatů, load 3,41 vs 81 při incidentu. Skutečný zdroj zátěže = nanobot.hell (dávky přes ~10 modelů + embedding), LibreChat jen zesilovač. Reporty v `artifacts/2026-09-13_ollama-nvidia-full-report.md` (ucelený, s kuchařkou pro triáž) a `artifacts/2026-09-13_ollama-nvidia-negative-findings.md` (negativní zjištění), shrnutí v memory.md 2026-09-14. Zavržené cesty: earlyoom i jakákoli externí kill varianta, MemoryHigh pod MemoryMax, navýšení RAM (headroom konstanta 7,5 GiB), limit počtu modelů, OLLAMA_LOAD_TIMEOUT, upgrade ollamy, mmap override (neexistuje), ballooning (`balloon: 0` + pevná paměť), rmmod jako remedy.
|
||||
|
||||
## Co dál
|
||||
- **HW po migraci na Optiplex 9010 (aktuální fronta):** (1) BIOS — neukládající se změny (CMOS battery? verze?); (2) doladit sekundární vetrak; (3) instalovat nový 1TB NVme; (4) nahodit Proxmox Backup Server — kandidát pivo.hell (Atom), aby bylo kam zálohovat; (5) dlouhodobě plán nového HW — průzkum ukázal 15–20 l skříňky s převahou jader, což nevyhovuje (uživatel nechce víc jader); zvažovat mini-ITX SFF, Optiplex jako mezikrok, custom build.
|
||||
- Rozhodnout umístění LibreCodeInterpreter (AI stack VM vs dedikovaná VM) a nasadit — viz memory.md 2026-09-13 pro capability požadavky (SYS_ADMIN, NET_ADMIN, apparmor:unconfined).
|
||||
- Ollama open body dle priority (report §11): (1) ~~zastavit dávky z nanobot.hell~~ — **neplatí jako provozní riziko** (dávky byly testovací tool-calling requesty, běžný provoz nanobot nesahá na lokální modely); (2) retest cgroup pojistky bez MemoryHigh (odblokováno rebootem; kritéria: heartbeat bez výpadku, MemAvailable > 2 GiB, dmesg constraint=MEMCG); (3) doladit MemoryMax podle memory.peak; (4) rozhodnout osud gemma4 (PLE ~5,9 GiB host bufferu, na 9,5 GiB stroji nikdy); (5) `OLLAMA_KV_CACHE_TYPE=q4_0` zrušit nebo nepoužívat granite-code; (6) drobnosti: `apt purge` earlyoom (rc), llama-server `--log-verbosity 4`, zabbix `Hostname=Zabbix server` → nvidia, LibreChat titleConvo duplicitní requesty, otázka real-time monitoringu (hlídač co killuje = zavržená cesta).
|
||||
- Návrh k rozhodnutí: izolovat embedding pipeline (wiki skill) ze ollamy na statický llama.cpp server (`llama-server --embeddings --pooling last`, stejný GGUF, /v1/embeddings) — obejde load path, kde vzniká leak; po ní nanobot nezůstane na lokální ollamě žádný provoz krom cloud proxy. Vyžaduje: úprava wiki_embed.py klienta, config.yaml endpoint, reindex --full.
|
||||
|
||||
20
scripts/tmp-test-apis.sh
Normal file
20
scripts/tmp-test-apis.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
# One-off test: do public airline fare APIs return usable data without auth?
|
||||
set -u
|
||||
|
||||
echo "=== Ryanair farefinder (PRG-MAD, no auth expected) ==="
|
||||
curl -sS --max-time 20 -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64)" \
|
||||
"https://services-api.ryanair.com/farfnd/v4/oneWayFares/PRG/MAD/cheapestPerDay?outboundMonthOfDate=2027-03-01¤cy=CZK" | head -c 2000
|
||||
echo
|
||||
echo
|
||||
|
||||
echo "=== Wizz Air search API (PRG-MAD, no auth expected) ==="
|
||||
curl -sS --max-time 20 -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64)" \
|
||||
"https://be.wizzair.com/27.6.0/api/booking/search?departureStation=PRG&arrivalStation=MAD&fromDate=2027-03-10&toDate=2027-03-10" | head -c 1000
|
||||
echo
|
||||
echo
|
||||
|
||||
echo "=== easyJet timeout API (PRG-MAD) ==="
|
||||
curl -sS --max-time 20 -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64)" \
|
||||
"https://www.easyjet.com/api/routepricing/v3/searchfares/GetLowestFares?departureAirport=PRG&arrivalAirport=MAD¤cy=CZK" | head -c 1000
|
||||
echo
|
||||
Reference in New Issue
Block a user