इस प्रोजेक्ट के बारे में

Argos एक declarative OpenTelemetry इन्स्ट्रूमेंटेशन लाइब्रेरी है जो Go माइक्रोसर्विसेज़ के लिए बनाई गई है, और यह शून्य‑एलोकेशन अनुशासन पर आधारित है। README इसे Go इकोसिस्टम में दो अन्य दृष्टिकोणों का विकल्प बताता है: Java के -javaagent बाइटकोड इन्स्ट्रूमेंटेशन का कोई समकक्ष नहीं है, और "zero-code" विकल्प (eBPF) को उच्च विशेषाधिकार, नवीनतम Linux kernel की आवश्यकता होती है और यह केवल सीमित लाइब्रेरीज़ को कवर करता है। Argos इसके बजाय low‑code पथ अपनाता है: स्टार्टअप पर एक इनिशियलाइज़ेशन कॉल, और प्रत्येक उपयोग में लाई गई क्लाइंट लाइब्रेरी के लिए स्पष्ट, ड्रॉप‑इन रैपर, बिना किसी monkey‑patching और बिना हॉट पाथ पर reflection के। Setup और lifecycle एक ही argos.Run कॉल Init, SIGINT/SIGTERM‑ट्रिगर शटडाउन और Shutdown को साथ में वायर करता है, और WithServiceName जैसे functional options लेता है। README में बताया गया है कि जब अधिक नियंत्रण चाहिए तो एक lower‑level Init/Shutdown जोड़ी उपलब्ध है। कॉन्फ़िगरेशन functional options के माध्यम से या YAML फ़ाइल से लोड किया जा सकता है। रूट मॉड्यूल Trace/TraceFunc हेल्पर्स, Resource, Propagation, Logger (ग्लोबल ambient logging) और argostest पैकेज एक्सपोज़ करता है। डिफ़ॉल्ट रूप से ट्रेसेस और मेट्रिक्स OTLP के माध्यम से localhost:4317 पर एक्सपोर्ट होते हैं और फेल ओपन मोड में रहते हैं, इसलिए जब कोई कलेक्टर नहीं चल रहा हो तब भी अनुरोध काम करते रहते हैं। Integrations प्रत्येक vendor SDK रैपर अपना स्वयं का Go मॉड्यूल और go.mod रखता है, इसलिए एक को इम्पोर्ट करने से दूसरे की ट्रांज़िटिव डिपेंडेंसीज़ नहीं आतीं। दस्तावेज़ित कवरेज में HTTP सर्वर (net/http, chi, gin, echo, fiber, gorilla/mux), कोई भी http.RoundTripper HTTP क्लाइंट के रूप में, कोई भी database/sql ड्राइवर, GORM, go-redis v9, MongoDB ड्राइवर v2, gocql (Cassandra), Sarama (Kafka), amqp091-go (RabbitMQ), Azure Service Bus, GCP Pub/Sub v2, gRPC, pkg/sftp और net/smtp शामिल हैं। प्रत्येक मॉड्यूल वास्तविक टेस्ट, बेसलाइन‑वर्सेस‑इन्स्ट्रूमेंटेड बेंचमार्क प्रदान करता है, और golangci‑lint, gosec और govulncheck पास करता है। लाइब्रेरीज़ जो अभी तक कवर नहीं हुईं, उनके लिए एक contribution टेम्पलेट और decision tree उपलब्ध है। रूट मॉड्यूल जानबूझकर शून्य vendor SDK डिपेंडेंसी रखता है। Samples और tooling आठ runnable माइक्रोसर्विसेज़ दस्तावेज़ित हैं, प्रत्येक के पास अपना docker-compose.yml और README है। छह में एक राउटर को डेटा या मैसेजिंग स्टैक के साथ जोड़ा गया है (उदाहरण के लिए gin + GORM/PostgreSQL + Kafka, या fiber + Cassandra + SFTP); inventory‑api और inventory‑worker एक सहयोगी जोड़ी बनाते हैं जिसका अनुरोध दोनों प्रोसेस को कवर करने वाला एकल ट्रेस उत्पन्न करता है। cmd/doctor CLI Go प्रोजेक्ट की imports स्कैन करता है और किसी भी मिलते‑जुलते Argos इंटीग्रेशन का सुझाव देता है जो अभी तक जोड़ा नहीं गया है; -strict सुझावों को CI फेल्योर में बदल देता है, और -init एक starter argos.config.yaml और main.go स्निपेट बनाता है। रिपॉज़िटरी एक Go workspace मल्टी‑मॉड्यूल लेआउट है जिसमें कोर मॉड्यूल, इंटीग्रेशन, cmd/doctor, सैंपल्स, उदाहरण, mkdocs‑material डॉक्यूमेंटेशन साइट और Grafana, LGTM, OTel Collector स्टैक के साथ Docker सेटअप, तथा सैंपल्स द्वारा उपयोग किए जाने वाले बैकएंड सिस्टम शामिल हैं। Make टार्गेट्स बिल्ड, टेस्ट, बेंच, लिंट, फॉर्मेटिंग, सुरक्षा स्कैनिंग और टेलीमेट्री या बैकएंड स्टैक को ऊपर‑नीचे करने को कवर करते हैं। Stability और stated limits सभी मॉड्यूल अभी भी v0.x में हैं, इसलिए किसी भी मॉड्यूल का पब्लिक API माइनर संस्करणों के बीच बदल सकता है, हालांकि मौजूदा रिलीज़ हल की जा सकती हैं। आवश्यकताएँ और साक्ष्य स्पष्ट चेतावनियों के साथ वर्णित हैं: Go 1.26 या बाद का संस्करण आवश्यक है, पुराने संस्करण असमर्थित हैं। opt‑in capture और masking फीचर केवल आंशिक रूप से hardened हैं — capture.MaskSQL को सतत fuzz testing के माध्यम से सत्यापित किया गया है जिससे एक वास्तविक बग मिला और ठीक किया गया, जबकि HTTP क्लाइंट, HTTP सर्वर और gRPC इंटीग्रेशन पर हेडर और बॉडी कैप्चर यूनिट टेस्ट द्वारा कवर हैं लेकिन समान fuzzing पास नहीं हुआ। inventory‑api/inventory‑worker जोड़ी पर एक घंटे का soak test (HTTP, gRPC, SQL, Redis, Kafka, MongoDB, Cassandra को मिश्रित सफलता और त्रुटि ट्रैफ़िक (~245k अनुरोध) के साथ चलाया) ने कोई goroutine या मेमोरी ग्रोथ नहीं दिखाया, लेकिन यह केवल उन इंटीग्रेशन के लिए प्रमाण है जिनका परीक्षण किया गया, सभी के लिए सार्वभौमिक गारंटी नहीं — RabbitMQ, GCP Pub/Sub, Azure Service Bus, SFTP और SMTP के लिए कोई समर्पित soak test नहीं है, और एक घंटे से अधिक की रन नहीं की गई। बेंचमार्क छोटे‑बर्स्ट लोड के लिए हैं, सतत‑लोड सत्यापन नहीं। प्रोजेक्ट MIT लाइसेंस के तहत है।