Folosesc fluentd, Elasticsearch și Grafana stack pentru logare și monitorizare. Urmăresc jurnalele (în format JSON) care provin din containerul/pod-ul NodeJS implementat în clusterul EKS și dumping în Elasticsearch.
Problemă
Formatul de jurnal care vine în stdout de la nod (implementat folosind serverul web pm2) nu este json corect
de exemplu:
10:37:01 0|server | {"timestamp":"*","level":"*","label":"*","user":"*","message":"*","RequestMethod":"*"," RequestPath":"*","StatusCode":*,"MachineName":"V","EnvironmentName":"*","Application":"*","CorrelationId":"*"}
După cum puteți vedea mai sus, acele date inutile 10:37:01 0|server |
vine în afara json {}, așa că, în timp ce analizează jurnalele folosind directiva de filtru, aruncă eroarea și spune eroarea „pattern not matched”
Poartă
Jurnalele mele ar trebui să fie preluate de la stdout prin fluentd și aruncate în Elasticsearch, de aceea trebuie să repar structura jurnalelor doar pentru a mă asigura că jurnalele mele ar trebui să arate ca mai jos:
{"timestamp":"*","level":"*","label":"*","user":"*","message":"*","RequestMethod":"*"," RequestPath":"*","StatusCode":*,"MachineName":"V","EnvironmentName":"*","Application":"*","CorrelationId":"*"}
Ceea ce înseamnă că nu există date 10:37:01 0|server |
venind în afara corpului Json {}. FYI Am verificat și pe serverul pm2 dacă putem elimina această intrare din jurnale, dar nu am găsit nimic pe ea.
Orice metodă care ar putea rezolva problema mea va fi grozavă.