Input plugin — ma’lumot pipelineiga tashqi manbadan yozuv, event yoki metric qabul qiladigan kengaytma komponentidir. Log collector ichida u fayl, syslog, message broker, HTTP endpoint yoki operatsion tizim jurnalidan data oladi va pipeline uchun umumiy ichki record formatiga aylantiradi.
Manba bilan ishlash
File input yangi satrlarni tail qiladi, syslog input UDP yoki TCP listener ochadi, broker input subscription yoki consumer group bilan xabar oladi. Har manbaning framing va delivery semantikasi boshqacha. TCP byte streamda delimiter parser kerak, UDPda esa bitta datagram message chegarasini beradi.
Input faqat byte o‘qimaydi; timestamp, source, tag va original offset kabi metadata ham qo‘shishi mumkin. Encoding noto‘g‘ri bo‘lsa replacement character yoki parse error aniq qayd etiladi.
Checkpoint
Qayta ishga tushganda file input qaysi offsetgacha o‘qilganini checkpointdan oladi. Inode va path birga ishlatilsa rotation taniladi. Broker input committed offset yoki acknowledgement orqali pozitsiyani saqlaydi.
Checkpoint output durable qabul qilmasdan oldin yangilansa data yo‘qoladi. Outputdan keyin juda kech yangilansa crashda record qayta o‘qiladi. Pipeline at-least-once yoki boshqa delivery siyosatini shu tartib bilan belgilaydi.
Poll va push
Polling input manbani davriy tekshiradi. Interval kichik bo‘lsa sourcega yuk, katta bo‘lsa latency oshadi. Push input listener sifatida data qabul qiladi va rate limit, connection hamda request body limitiga ega bo‘ladi.
Source tez, downstream sekin bo‘lsa input pause yoki backpressure qabul qilishi kerak. UDP senderga signal qaytara olmaydi; kernel buffer to‘lsa packet drop bo‘ladi. File source esa o‘qishni vaqtincha to‘xtatishi mumkin, lekin disk rotation va hajm xavfi qoladi.
Konfiguratsiya
Input plugin path, port, authentication, parser va tag kabi parametrlar oladi. Wildcard juda keng bo‘lsa maxfiy yoki collectorning o‘z logini ham o‘qib loop yaratishi mumkin. Exclude va allowlist bilan scope chegaralanadi.
Dynamic discovery containerlar paydo bo‘lganda input yaratadi. Cleanup bo‘lmasa tugagan pod uchun file handle va state saqlanib qoladi. Limitlar bir tenantning ko‘p manbasi barcha watcher resursini egallashini to‘xtatadi.
Xavfsizlik
Network input TLS va client authentication bilan himoyalanadi. User yuborgan tag routing yoki tenantni bevosita belgilamasligi kerak. File input faqat zarur katalog permissioniga ega bo‘ladi va symlink orqali cheklangan faylni o‘qish xavfi tekshiriladi.
Plugin uchinchi tomon kodi bo‘lsa collector process huquqida ishlaydi. Version, manba va dependencylar supply-chain nazoratidan o‘tadi. Malformed input uchun fuzz va resource limit testlari parserni himoya qiladi.
Plugin shartnomasi
Input plugin host bilan lifecycle shartnomasi orqali ishlaydi: initialize konfiguratsiyani tekshiradi, start qabul qilishni boshlaydi, stop yangi inputni yopadi va pending holatni flush qiladi. Host backpressure signalini bera olsa, plugin o‘qish tezligini pasaytiradi; aks holda cheklangan buffer to‘lganda aniq drop yoki block siyosati kerak. Plugin chiqaradigan event envelope timestamp, source, payload va metadata chegaralarini bir xil saqlaydi. Schema versiyasi o‘zgarsa downstream filterlar buzilmasligi uchun compatibility qoidasi va migration davri belgilanadi.
Konfiguratsiya xatosi startupda aniq field yo‘li bilan qaytariladi. Credential qiymati xabarda maskalanadi. Hot reload qo‘llansa, yangi instance tayyor bo‘lmaguncha eskisi yopilmaydi; aks holda konfiguratsiya almashuvi vaqtida input oralig‘i paydo bo‘ladi.
Bog‘liq tushunchalar
Log collector, Output plugin, File tailing, Syslog, Checkpoint, Backpressure, Data ingestion