Logimine
Mayros logib kahte kohta:
- Faililogi (JSON read), mille kirjutab Gateway.
- Konsooliväljund, mis kuvatakse terminalides ja Control UI-s.
See lehekülg selgitab, kus logid asuvad, kuidas neid lugeda ja kuidas konfigureerida logi tasemeid ja formaate.
Kus logid asuvad
Vaikimisi kirjutab Gateway pöörleva logifaili asukohta:
/tmp/mayros/mayros-YYYY-MM-DD.log
Kuupäev kasutab gateway hosti kohalikku ajavööndit.
Sa saad seda ~/.mayros/mayros.json failis alistada:
json{ "logging": { "file": "/path/to/mayros.log" } }
Kuidas logisid lugeda
CLI: reaalajas jälgimine (soovitatav)
Kasuta CLI-d, et jälgida gateway logifaili RPC kaudu:
bashmayros logs --follow
Väljundi režiimid:
- TTY sessioonid: ilus, värviline, struktureeritud logiread.
- Mitte-TTY sessioonid: lihttekst.
--json: rea eraldatud JSON (üks logiüritus rea kohta).--plain: sunni lihttekst TTY sessioonides.--no-color: keela ANSI värvid.
JSON režiimis emiteerib CLI type-ga märgistatud objekte:
meta: voo metaandmed (fail, kursor, suurus)log: parseeritud logikirjenotice: lühendamise / pööramise vihjedraw: parseerimata logirida
Kui Gateway ei ole kättesaadav, prindib CLI lühikese vihje käivitamiseks:
bashmayros doctor
Control UI (veeb)
Control UI Logs vahekaart jälgib sama faili kasutades logs.tail.
Vaata /web/control-ui, kuidas seda avada.
Ainult kanali logid
Kanali tegevuse filtreerimiseks (WhatsApp/Telegram/jne), kasuta:
bashmayros channels logs --channel whatsapp
Logi formaadid
Faililogi (JSONL)
Iga rida logifailis on JSON objekt. CLI ja Control UI parsivad neid kirjeid struktureeritud väljundi renderdamiseks (aeg, tase, alamsüsteem, sõnum).
Konsooliväljund
Konsoolilogi on TTY-teadlik ja vormindatud loetavuseks:
- Alamsüsteemi eesliited (nt
gateway/channels/whatsapp) - Taseme värvimine (info/warn/error)
- Valikuline kompaktne või JSON režiim
Konsooli vormindust kontrollib logging.consoleStyle.
Logimise konfigureerimine
Kogu logimise konfiguratsioon asub logging all ~/.mayros/mayros.json failis.
json{ "logging": { "level": "info", "file": "/tmp/mayros/mayros-YYYY-MM-DD.log", "consoleLevel": "info", "consoleStyle": "pretty", "redactSensitive": "tools", "redactPatterns": ["sk-.*"] } }
Logi tasemed
logging.level: faililogi (JSONL) tase.logging.consoleLevel: konsooli üksikasjalikkuse tase.
--verbose mõjutab ainult konsooli väljundit; see ei muuda faili logi tasemeid.
Konsooli stiilid
logging.consoleStyle:
pretty: inimlikult sõbralik, värviline, ajatemplitega.compact: tihedam väljund (parim pikaajalistele sessioonidele).json: JSON rea kohta (logiprotsessorite jaoks).
Redakteerimine
Tööriistade kokkuvõtted võivad redakteerida tundlikke tokeneid enne nende jõudmist konsooli:
logging.redactSensitive:off|tools(vaikimisi:tools)logging.redactPatterns: regex stringide loend vaikimisi komplekti alistamiseks
Redakteerimine mõjutab ainult konsooli väljundit ega muuda faililogisid.
Diagnostika + OpenTelemetry
Diagnostika on struktureeritud, masinloetavad sündmused mudeli käitamiste ja sõnumivoo telemeetria jaoks (webhookid, järjekord, sessiooni olek). Need ei asenda logi; need eksisteerivad mõõdikute, jälgimiste ja muude eksportijate toitmiseks.
Diagnostika sündmused emitatakse protsessis, kuid eksportijad lisatakse ainult siis, kui diagnostika + eksportija plugin on lubatud.
OpenTelemetry vs OTLP
- OpenTelemetry (OTel): andmemudel + SDK-d jälgimiste, mõõdikute ja logide jaoks.
- OTLP: juhtmeprotokoll, mida kasutatakse OTel andmete eksportimiseks kollektorisse/tausta.
- Mayros ekspordib täna OTLP/HTTP (protobuf) kaudu.
Eksporditud signaalid
- Mõõdikud: loendajad + histogrammid (tokeni kasutus, sõnumivoog, järjekord).
- Jälgimised: spännid mudeli kasutuse + webhook/sõnumi töötlemise jaoks.
- Logid: eksporditud OTLP kaudu, kui
diagnostics.otel.logson lubatud. Logi maht võib olla suur; pea meeleslogging.levelja eksportija filtreid.
Diagnostika sündmuste kataloog
Mudeli kasutus:
model.usage: tokenid, hind, kestus, kontekst, pakkuja/mudel/kanal, sessiooni id-d.
Sõnumivoog:
webhook.received: webhook sissepääs kanali kohta.webhook.processed: webhook käsitletud + kestus.webhook.error: webhook käsitseja vead.message.queued: sõnum järjekorda töötlemiseks.message.processed: tulemus + kestus + valikuline viga.
Järjekord + sessioon:
queue.lane.enqueue: käsurea järjekorra rada järjekorda + sügavus.queue.lane.dequeue: käsurea järjekorra rada järjekorrast + ooteaeg.session.state: sessiooni oleku üleminek + põhjus.session.stuck: sessiooni kinni hoiatus + vanus.run.attempt: käitamise kordamise/katse metaandmed.diagnostic.heartbeat: koondatud loendajad (webhookid/järjekord/sessioon).
Luba diagnostika (ilma eksportijata)
Kasuta seda, kui soovid diagnostika sündmusi pluginatele või kohandatud vajutitele:
json{ "diagnostics": { "enabled": true } }
Diagnostika lipud (sihitud logid)
Kasuta lippe, et sisse lülitada lisad, sihitud silumislogi ilma logging.level tõstmata.
Lipud on tõstutundmatud ja toetavad metamärke (nt telegram.* või *).
json{ "diagnostics": { "flags": ["telegram.http"] } }
Keskkonna alistamine (ühekordne):
MAYROS_DIAGNOSTICS=telegram.http,telegram.payload
Märkused:
- Lipu logid lähevad standardsesse logifaili (sama mis
logging.file). - Väljund on endiselt redakteeritud vastavalt
logging.redactSensitive. - Täielik juhend: /diagnostics/flags.
Eksport OpenTelemetry-sse
Diagnostikat saab eksportida diagnostics-otel plugina kaudu (OTLP/HTTP). See
töötab iga OpenTelemetry kollektori/taustaga, mis aktsepteerib OTLP/HTTP.
json{ "plugins": { "allow": ["diagnostics-otel"], "entries": { "diagnostics-otel": { "enabled": true } } }, "diagnostics": { "enabled": true, "otel": { "enabled": true, "endpoint": "http://otel-collector:4318", "protocol": "http/protobuf", "serviceName": "mayros-gateway", "traces": true, "metrics": true, "logs": true, "sampleRate": 0.2, "flushIntervalMs": 60000 } } }
Märkused:
- Sa saad plugina lubada ka
mayros plugins enable diagnostics-otelabil. protocoltoetab praegu ainulthttp/protobuf.grpcignoreeritakse.- Mõõdikud sisaldavad tokeni kasutust, hinda, konteksti suurust, käitamise kestust ja sõnumivoo loendajaid/histogramme (webhookid, järjekord, sessiooni olek, järjekorra sügavus/ootamine).
- Jälgimisi/mõõdikuid saab lülitada
traces/metricsabil (vaikimisi: sees). Jälgimised sisaldavad mudeli kasutuse spänne pluss webhook/sõnumi töötlemise spänne, kui lubatud. - Määra
headers, kui su kollektor nõuab autentimist. - Toetatud keskkonnamuutujad:
OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_SERVICE_NAME,OTEL_EXPORTER_OTLP_PROTOCOL.
Eksporditud mõõdikud (nimed + tüübid)
Mudeli kasutus:
mayros.tokens(loendaja, attr:mayros.token,mayros.channel,mayros.provider,mayros.model)mayros.cost.usd(loendaja, attr:mayros.channel,mayros.provider,mayros.model)mayros.run.duration_ms(histogramm, attr:mayros.channel,mayros.provider,mayros.model)mayros.context.tokens(histogramm, attr:mayros.context,mayros.channel,mayros.provider,mayros.model)
Sõnumivoog:
mayros.webhook.received(loendaja, attr:mayros.channel,mayros.webhook)mayros.webhook.error(loendaja, attr:mayros.channel,mayros.webhook)mayros.webhook.duration_ms(histogramm, attr:mayros.channel,mayros.webhook)mayros.message.queued(loendaja, attr:mayros.channel,mayros.source)mayros.message.processed(loendaja, attr:mayros.channel,mayros.outcome)mayros.message.duration_ms(histogramm, attr:mayros.channel,mayros.outcome)
Järjekorrad + sessioonid:
mayros.queue.lane.enqueue(loendaja, attr:mayros.lane)mayros.queue.lane.dequeue(loendaja, attr:mayros.lane)mayros.queue.depth(histogramm, attr:mayros.lanevõimayros.channel=heartbeat)mayros.queue.wait_ms(histogramm, attr:mayros.lane)mayros.session.state(loendaja, attr:mayros.state,mayros.reason)mayros.session.stuck(loendaja, attr:mayros.state)mayros.session.stuck_age_ms(histogramm, attr:mayros.state)mayros.run.attempt(loendaja, attr:mayros.attempt)
Eksporditud spännid (nimed + põhiomadused)
mayros.model.usagemayros.channel,mayros.provider,mayros.modelmayros.sessionKey,mayros.sessionIdmayros.tokens.*(input/output/cache_read/cache_write/total)
mayros.webhook.processedmayros.channel,mayros.webhook,mayros.chatId
mayros.webhook.errormayros.channel,mayros.webhook,mayros.chatId,mayros.error
mayros.message.processedmayros.channel,mayros.outcome,mayros.chatId,mayros.messageId,mayros.sessionKey,mayros.sessionId,mayros.reason
mayros.session.stuckmayros.state,mayros.ageMs,mayros.queueDepth,mayros.sessionKey,mayros.sessionId
Proovivõtt + loputamine
- Jälgimise proovivõtt:
diagnostics.otel.sampleRate(0.0–1.0, ainult juurspännid). - Mõõdikute ekspordi intervall:
diagnostics.otel.flushIntervalMs(min 1000ms).
Protokolli märkused
- OTLP/HTTP lõpp-punkte saab määrata
diagnostics.otel.endpointvõiOTEL_EXPORTER_OTLP_ENDPOINTkaudu. - Kui lõpp-punkt juba sisaldab
/v1/tracesvõi/v1/metrics, kasutatakse seda sellisena. - Kui lõpp-punkt juba sisaldab
/v1/logs, kasutatakse seda sellisena logide jaoks. diagnostics.otel.logslubab OTLP logi ekspordi peamise loggeri väljundi jaoks.
Logi ekspordi käitumine
- OTLP logid kasutavad samu struktureeritud kirjeid, mis kirjutatakse
logging.file. - Järgi
logging.level(faili logi tase). Konsooli redakteerimine ei kehti OTLP logide kohta. - Suuremahulised paigaldused peaksid eelistama OTLP kollektori proovivõttu/filtreerimist.
Tõrkeotsinguvihjed
- Gateway ei ole kättesaadav? Käivita esmalt
mayros doctor. - Logid tühjad? Kontrolli, et Gateway töötab ja kirjutab faili asukohta
logging.fileall. - Vajad rohkem üksikasju? Määra
logging.levelväärtuseledebugvõitraceja proovi uuesti.