[{"data":1,"prerenderedAt":650},["ShallowReactive",2],{"docs-pages-it":3,"doc-it-ingest-gateway":155},[4,11,16,21,26,31,37,48,56,65,73,81,89,93,102,106,114,119,124,129,135,140,145,150],{"path":5,"title":6,"description":7,"order":8,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Finstallation","Installazione","Installa CloseYourIt sul tuo server con un solo comando.",1,"start",null,{"path":12,"title":13,"description":14,"order":15,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fsettings","Impostazioni","Ogni impostazione del file .env, a cosa serve e quali non vanno mai cambiate.",2,{"path":17,"title":18,"description":19,"order":20,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fdatabase","Database","Cos'è il database, cosa contiene, quanto restano i dati e quanto spazio occupa.",3,{"path":22,"title":23,"description":24,"order":25,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fupdates-and-backups","Aggiornamenti e backup","Aggiorna a una versione nuova, fai e ripristina il backup del database, controlla l'installazione.",4,{"path":27,"title":28,"description":29,"order":30,"group":9,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Ftroubleshooting","Risolvere i problemi","Cosa controllare quando installazione, certificato, email o dati in arrivo non funzionano.",5,{"path":32,"title":33,"description":34,"order":35,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fconnect-your-apps","Collega le tue app","Tutti gli strumenti che mandano dati a CloseYourIt, e cosa raccoglie ognuno.",6,"connect",{"path":38,"title":39,"description":40,"order":41,"group":10,"parent":42,"package":43,"note":44,"collects":45,"status":10},"\u002Fdocs\u002Fsdk-ruby","Ruby \u002F Rails","La gemma closeyourit-ruby manda errori, log, query lente e metriche dei job da un'app Rails.",7,"connect-your-apps","closeyourit-ruby","Errori, log, query e metodi lenti, job in background.",{"errors":46,"logs":46,"performance":46,"visits":47,"servers":47},"full","none",{"path":49,"title":50,"description":51,"order":52,"group":10,"parent":42,"package":53,"note":54,"collects":55,"status":10},"\u002Fdocs\u002Fsdk-javascript","JavaScript","Il pacchetto @bussolabs\u002Fcloseyourit-js funziona nel browser e su Node 20.16 o più recente.",8,"@bussolabs\u002Fcloseyourit-js","Browser e Node, adattatori framework e query database dalla 0.13.0.",{"errors":46,"logs":46,"performance":46,"visits":46,"servers":47},{"path":57,"title":58,"description":59,"order":60,"group":10,"parent":42,"package":61,"note":62,"collects":63,"status":10},"\u002Fdocs\u002Fsdk-dart","Dart \u002F Flutter","Il pacchetto closeyourit cattura gli errori delle app Flutter, anche quando il telefono è senza rete.",9,"closeyourit","Errori, log e metriche pubblici dalla 0.9.3.",{"errors":46,"logs":64,"performance":64,"visits":47,"servers":47},"partial",{"path":66,"title":67,"description":68,"order":69,"group":10,"parent":42,"package":61,"note":70,"collects":71,"status":72},"\u002Fdocs\u002Fsdk-python","Python","Il pacchetto closeyourit manda errori, log e metriche da applicazioni Python lato server.",10,"Lato server. SQLAlchemy; query Django e FastAPI\u002FStarlette dalla 0.4.0.",{"errors":46,"logs":46,"performance":64,"visits":47,"servers":47},"pre_alpha",{"path":74,"title":75,"description":76,"order":77,"group":10,"parent":42,"package":78,"note":79,"collects":80,"status":10},"\u002Fdocs\u002Fsdk-sentry","SDK Sentry","Invia errori con un SDK Sentry compatibile; sessioni e crash hanno profili separati.",11,"Sentry SDK","Errori compatibili; sessioni e crash richiedono il profilo verificato.",{"errors":46,"logs":47,"performance":47,"visits":47,"servers":47},{"path":82,"title":83,"description":84,"order":85,"group":10,"parent":42,"package":86,"note":87,"collects":88,"status":10},"\u002Fdocs\u002Fagent-server","Agent per server","Un piccolo programma sul server che manda lo stato della macchina ogni 60 secondi.",12,"closeyourit-agent","CPU, memoria, dischi, rete, container e servizi.",{"errors":47,"logs":64,"performance":47,"visits":47,"servers":46},{"path":90,"title":91,"description":92,"order":85,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fnuxt","Vue e Nuxt","Collega gli errori del browser Nuxt e del server Nitro senza esporre un token segreto.",{"path":94,"title":95,"description":96,"order":97,"group":10,"parent":42,"package":98,"note":99,"collects":100,"status":101},"\u002Fdocs\u002Fagent-kubernetes","Kubernetes","Un osservatore in sola lettura del cluster: una copia sola per cluster.",13,"closeyourit-kube","Macchine, app ed eventi di errore del cluster.",{"errors":47,"logs":47,"performance":47,"visits":47,"servers":46},"coming",{"path":103,"title":104,"description":105,"order":97,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fopentelemetry","OpenTelemetry","Invia tracce, metriche e log dei server attraverso il ricevitore OTLP facoltativo.",{"path":107,"title":108,"description":109,"order":110,"group":10,"parent":42,"package":111,"note":112,"collects":113,"status":10},"\u002Fdocs\u002Fcli","CLI cyi","Il comando closeyourit, in breve cyi: gestisci progetti, errori e ticket dal terminale.",14,"@bussolabs\u002Fcloseyourit-cli","Non raccoglie dati: comanda CloseYourIt dal terminale.",{"errors":47,"logs":47,"performance":47,"visits":47,"servers":47},{"path":115,"title":116,"description":117,"order":118,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fhttp-api","API HTTP","Manda errori, log, metriche e visite con semplici richieste HTTP, senza un SDK.",15,{"path":120,"title":121,"description":122,"order":123,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fgithub-app","GitHub","Collega i repository GitHub a ticket e rilasci con una GitHub App tua.",16,{"path":125,"title":126,"description":127,"order":128,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fingest-gateway","Gateway di ingest","Tieni al sicuro errori, log e metriche in arrivo quando l'app è lenta o sta ripartendo.",17,{"path":130,"title":131,"description":132,"order":133,"group":134,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fai","AI","Accendi assistente, analisi, dettatura e ricerca intelligente con una chiave CloseYourIt AI o con il tuo provider.",18,"automation",{"path":136,"title":137,"description":138,"order":139,"group":134,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fautomator","Automator","Fai lavorare i ticket in automatico su una tua macchina Linux, con Claude Code, Codex o tutti e due.",19,{"path":141,"title":142,"description":143,"order":144,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fstack-coverage","Framework e copertura degli stack","Scegli un SDK pubblicato o verifica i limiti di un’integrazione provata localmente.",20,{"path":146,"title":147,"description":148,"order":149,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fmonitoring","Tracce, misure e sessioni","Esplora i nuovi segnali, confronta le versioni e ricostruisci le posizioni originali degli errori.",21,{"path":151,"title":152,"description":153,"order":154,"group":36,"parent":10,"package":10,"note":10,"collects":10,"status":10},"\u002Fdocs\u002Fnode-database","Database Node","Monitora query lente e ripetute con pg, mysql2, Drizzle e Prisma PostgreSQL.",22,{"id":156,"title":126,"body":157,"collects":10,"description":127,"extension":644,"group":36,"meta":645,"navigation":646,"note":10,"order":128,"package":10,"parent":10,"path":125,"seo":647,"status":10,"stem":648,"__hash__":649},"docs_it\u002Fdocs\u002Fingest-gateway.md",{"type":158,"value":159,"toc":629},"minimark",[160,173,178,183,194,217,220,224,230,277,281,357,361,370,373,377,380,454,457,461,475,479,484,492,538,541,544,548,570,574,585,589,603,610,613,617,625],[161,162,163,164,168,169,172],"p",{},"Le tue applicazioni mandano errori, log e metriche a CloseYourIt. Quei dati possono arrivare in due modi: ",[165,166,167],"strong",{},"diretto",", che è quello che hai dopo l'installazione, e ",[165,170,171],{},"attraverso il gateway",", che accendi con un comando.",[174,175,177],"h2",{"id":176},"le-due-strade","Le due strade",[179,180,182],"h3",{"id":181},"diretto-predefinito","Diretto (predefinito)",[184,185,191],"pre",{"className":186,"code":188,"language":189,"meta":190},[187],"language-text","la tua applicazione  →  Caddy  →  app  →  worker  →  database\n","text","",[192,193,188],"code",{"__ignoreMap":190},[195,196,197,205,208,214],"ol",{},[198,199,200,201,204],"li",{},"La tua applicazione manda una richiesta a ",[192,202,203],{},"https:\u002F\u002F\u003Ctuo-dominio>\u002Fapi\u002F…",".",[198,206,207],{},"Caddy, il web server, la passa all'app.",[198,209,210,211,204],{},"L'app controlla il token e risponde ",[192,212,213],{},"202",[198,215,216],{},"Il worker salva i dati un attimo dopo.",[161,218,219],{},"Se al passo 2 l'app sta ripartendo o è troppo occupata, la richiesta fallisce. I dati si perdono, a meno che chi li manda non riprovi.",[179,221,223],{"id":222},"attraverso-il-gateway","Attraverso il gateway",[184,225,228],{"className":226,"code":227,"language":189,"meta":190},[187],"la tua applicazione  →  Caddy  →  gateway  →  app  →  worker  →  database\n                                     ↓ l'app non risponde\n                                   coda  →  app, più tardi\n",[192,229,227],{"__ignoreMap":190},[195,231,232,235,247,250,261,274],{},[198,233,234],{},"La tua applicazione manda la stessa richiesta allo stesso indirizzo.",[198,236,237,238,241,242,246],{},"Caddy passa i dati in arrivo al gateway. Tutto il resto sotto ",[192,239,240],{},"\u002Fapi\u002F"," — la lettura dei dati, l'",[243,244,137],"a",{"href":245},"\u002Fit\u002Fdocs\u002Fautomator"," — continua ad andare dritto all'app.",[198,248,249],{},"Il gateway inoltra la richiesta all'app e aspetta qualche secondo.",[198,251,252,253,256,257,260],{},"Se l'app risponde, anche con un errore come ",[192,254,255],{},"401"," o ",[192,258,259],{},"422",", la tua applicazione riceve quella risposta. Non si mette niente in coda.",[198,262,263,264,267,268,271,272,204],{},"Se l'app non risponde, è sovraccarica (",[192,265,266],{},"429",") o va in errore (",[192,269,270],{},"5xx","), il gateway salva la richiesta, cifrata, in una coda (NATS JetStream) e risponde subito ",[192,273,213],{},[198,275,276],{},"Il gateway continua a provare a consegnare quello che c'è in coda finché l'app non lo prende.",[179,278,280],{"id":279},"a-confronto","A confronto",[282,283,284,298],"table",{},[285,286,287],"thead",{},[288,289,290,293,296],"tr",{},[291,292],"th",{},[291,294,295],{},"Diretto",[291,297,223],{},[299,300,301,313,331,344],"tbody",{},[288,302,303,307,310],{},[304,305,306],"td",{},"App che riparte o sovraccarica",[304,308,309],{},"la richiesta fallisce",[304,311,312],{},"la richiesta aspetta in coda",[288,314,315,318,321],{},[304,316,317],{},"Servizi in più",[304,319,320],{},"nessuno",[304,322,323,324,327,328],{},"due: ",[192,325,326],{},"gateway"," e ",[192,329,330],{},"nats",[288,332,333,336,338],{},[304,334,335],{},"Disco in più",[304,337,320],{},[304,339,340,341],{},"fino a ",[165,342,343],{},"6 GB",[288,345,346,349,354],{},[304,347,348],{},"Indirizzo e token nelle tue applicazioni",[304,350,351],{},[192,352,353],{},"https:\u002F\u002F\u003Ctuo-dominio>",[304,355,356],{},"gli stessi",[174,358,360],{"id":359},"quando-ti-serve","Quando ti serve",[362,363,364,367],"ul",{},[198,365,366],{},"Molte applicazioni mandano dati, o una ne manda tanti.",[198,368,369],{},"Aggiorni spesso e non vuoi perdere dati durante i riavvii.",[161,371,372],{},"Per un piccolo team con pochi progetti puoi farne a meno.",[174,374,376],{"id":375},"passare-dal-diretto-al-gateway","Passare dal diretto al gateway",[161,378,379],{},"Nelle tue applicazioni non cambia niente: stesso indirizzo, stessi token. Non si sposta nessun dato, e puoi tornare indietro quando vuoi.",[195,381,382,389,413,447],{},[198,383,384,385,388],{},"Controlla che ci sia spazio: ",[192,386,387],{},"df -h \u002Fopt\u002Fcloseyourit"," deve mostrare almeno 6 GB liberi.",[198,390,391,392],{},"Accendilo:",[184,393,397],{"className":394,"code":395,"language":396,"meta":190,"style":190},"language-bash shiki shiki-themes github-light github-dark","closeyourit enable ingest\n","bash",[192,398,399],{"__ignoreMap":190},[400,401,403,406,410],"span",{"class":402,"line":8},"line",[400,404,61],{"class":405},"sScJk",[400,407,409],{"class":408},"sZZnC"," enable",[400,411,412],{"class":408}," ingest\n",[198,414,415,416,327,418,420,421,424,425,424,428,327,431,434,435],{},"Controlla che ",[192,417,326],{},[192,419,330],{}," siano accesi accanto ad ",[192,422,423],{},"app",", ",[192,426,427],{},"worker",[192,429,430],{},"postgres",[192,432,433],{},"caddy",":",[184,436,438],{"className":394,"code":437,"language":396,"meta":190,"style":190},"closeyourit status\n",[192,439,440],{"__ignoreMap":190},[400,441,442,444],{"class":402,"line":8},[400,443,61],{"class":405},[400,445,446],{"class":408}," status\n",[198,448,449,450,453],{},"Manda una richiesta a mano (vedi l'",[243,451,116],{"href":452},"\u002Fit\u002Fdocs\u002Fhttp-api",") e controlla che compaia in CloseYourIt.",[161,455,456],{},"Il passaggio dura qualche secondo. Una richiesta che arriva in quel momento può fallire. Caddy passa al gateway solo quando il gateway è rimasto acceso: se non succede, il comando lo dice, lo rispegne e i dati continuano ad andare dritti all'app.",[174,458,460],{"id":459},"come-capire-se-una-richiesta-è-finita-in-coda","Come capire se una richiesta è finita in coda",[161,462,463,464,466,467,470,471,474],{},"Quando il gateway tiene una richiesta invece di consegnarla subito, risponde ",[192,465,213],{}," con l'intestazione ",[192,468,469],{},"X-CloseYourIt-Queued: true"," (gli indirizzi compatibili con Sentry rispondono ",[192,472,473],{},"200",", come si aspettano quegli SDK). Quella risposta vuol dire \"al sicuro in coda\", non \"già salvata in CloseYourIt\".",[174,476,478],{"id":477},"cosa-accetta-il-gateway","Cosa accetta il gateway",[161,480,481,482,204],{},"Solo gli indirizzi che ricevono dati: eventi, metriche, log, visite, registrazioni, rilasci, segnali dei cron, campioni dei server e i due indirizzi compatibili con Sentry. Vedi l'",[243,483,116],{"href":452},[161,485,486,487,241,489,491],{},"Tutto il resto sotto ",[192,488,240],{},[243,490,137],{"href":245}," che prende lavoro — continua ad andare dritto all'app, con il gateway acceso o spento.",[282,493,494,504],{},[285,495,496],{},[288,497,498,501],{},[291,499,500],{},"Limite",[291,502,503],{},"Valore",[299,505,506,514,522,530],{},[288,507,508,511],{},[304,509,510],{},"Dimensione di una richiesta",[304,512,513],{},"5 MB",[288,515,516,519],{},[304,517,518],{},"Richieste al minuto da un indirizzo IP",[304,520,521],{},"600",[288,523,524,527],{},[304,525,526],{},"Coda",[304,528,529],{},"4 GB",[288,531,532,535],{},[304,533,534],{},"Richieste che non si sono potute consegnare",[304,536,537],{},"1 GB, tenute a parte",[161,539,540],{},"Quando la coda è piena, le richieste nuove vengono rifiutate invece di buttare quelle già in attesa.",[161,542,543],{},"Una richiesta che continua a fallire si riprova con pause sempre più lunghe. Dopo 20 tentativi passa nell'archivio \"non consegnate\" e non si riprova più.",[174,545,547],{"id":546},"la-lettura-dei-dati-o-lautomator-hanno-smesso-di-funzionare","La lettura dei dati o l'Automator hanno smesso di funzionare",[161,549,550,551,554,555,557,558,561,562,565,566,569],{},"Le prime installazioni mandavano al gateway ",[165,552,553],{},"tutto"," ",[192,556,240],{},", che rifiuta quello che non conosce: la lettura dei dati risponde ",[192,559,560],{},"405"," e l'Automator riceve ",[192,563,564],{},"404",". Lancia ",[192,567,568],{},"closeyourit update",": porta anche il file del web server della versione nuova.",[174,571,573],{"id":572},"la-chiave-di-cifratura","La chiave di cifratura",[161,575,576,577,580,581,584],{},"Le richieste in coda sono cifrate con la chiave in ",[192,578,579],{},"\u002Fopt\u002Fcloseyourit\u002Fingest\u002Fenvelope_key",". La password della coda è in ",[192,582,583],{},"\u002Fopt\u002Fcloseyourit\u002Fingest\u002Fnats_password",". Si generano entrambe all'installazione. Se sostituisci la chiave mentre ci sono richieste in attesa, quelle richieste non si possono più leggere.",[174,586,588],{"id":587},"tornare-al-diretto","Tornare al diretto",[184,590,592],{"className":394,"code":591,"language":396,"meta":190,"style":190},"closeyourit disable ingest\n",[192,593,594],{"__ignoreMap":190},[400,595,596,598,601],{"class":402,"line":8},[400,597,61],{"class":405},[400,599,600],{"class":408}," disable",[400,602,412],{"class":408},[161,604,605,606,609],{},"Le richieste tornano subito alla strada diretta. Il gateway ha poi ",[165,607,608],{},"30 secondi"," per consegnare quello che è ancora in attesa, e si ferma. Quello che non è stato consegnato resta nella coda su disco e si consegna la prossima volta che accendi il gateway.",[161,611,612],{},"Fallo quando l'app sta bene, così la coda è già vuota.",[174,614,616],{"id":615},"opentelemetry-si-configura-a-parte","OpenTelemetry si configura a parte",[161,618,619,620,624],{},"Il ",[243,621,623],{"href":622},"\u002Fit\u002Fdocs\u002Fopentelemetry","ricevitore OTLP",", facoltativo, ha ascoltatori, autenticazione e limiti delle richieste suoi. Accendere questo gateway di ingest nativo non espone e non attiva quegli ascoltatori da solo.",[626,627,628],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":190,"searchDepth":15,"depth":15,"links":630},[631,636,637,638,639,640,641,642,643],{"id":176,"depth":15,"text":177,"children":632},[633,634,635],{"id":181,"depth":20,"text":182},{"id":222,"depth":20,"text":223},{"id":279,"depth":20,"text":280},{"id":359,"depth":15,"text":360},{"id":375,"depth":15,"text":376},{"id":459,"depth":15,"text":460},{"id":477,"depth":15,"text":478},{"id":546,"depth":15,"text":547},{"id":572,"depth":15,"text":573},{"id":587,"depth":15,"text":588},{"id":615,"depth":15,"text":616},"md",{},true,{"title":126,"description":127},"docs\u002Fingest-gateway","i8LAciZpYjB4CYRQHZ-qWkcYJz9or2jl9G9bVQXbwzc",1791302513751]