
ببساطة العقد والرسوم البيانية
شاهد بنيتك التحتية. بدون إعدادات.
وجّه graph-go إلى بيئتك واحصل على خريطة تفاعلية حية لكل قاعدة بيانات وجدول وخدمة ومخزن تخزين — مع مراقبة صحية فورية.
graph-go هو أداة لرسم البنية التحتية تعمل من سطر الأوامر أولاً. يكتشف تلقائياً بنيتك التحتية عن طريق الاتصال بخدمة Docker، وفحص الحاويات الجارية، واختبار قواعد البيانات وخدمات التخزين. يتم تقديم واجهة المستخدم من الواجهة الخلفية وتعكس حالة الواجهة الخلفية الحقيقية — لا حاجة لجرد يدوي.
| الإمكانية | التفاصيل |
|---|---|
| الاكتشاف التلقائي | يكتشف البنية التحتية من حاويات Docker ومجموعات Kubernetes — لا حاجة لجرد يدوي |
| Kubernetes | المساحات الاسمية، النشر، StatefulSets، DaemonSets، البودات، الخدمات — مع مراقبة فورية تعتمد على informer |
| Docker | يصنف الحاويات الجارية، يستخرج بيانات الاعتماد، يراقب أحداث Docker، يحترم وسوم graphgo.* لتجاوز النوع/DSN/نوع العقدة/الاسم أو تجاهل حاوية |
| PostgreSQL | الجداول، علاقات المفاتيح الخارجية، طوبولوجيا المخطط |
| MongoDB | قواعد البيانات والمجموعات |
| MySQL | الجداول، علاقات المفاتيح الخارجية |
| Redis | مساحات المفاتيح وتوزيع المفاتيح |
| Elasticsearch | الفهارس، صحة المجموعة، حالة المشارِز |
| S3 / MinIO | المجموعات والبادئات العلوية |
| خدمات HTTP | نقاط التحقق الصحي، رسم تبعيات الخدمات |
| الصحة الفورية | تحديثات حالة حية مدعومة بـ WebSocket كل 5 ثوانٍ |
| رسم تفاعلي | تخطيط المسارات السباحية، مجموعات حاويات المساحات الاسمية، تكبير/تصغير، تصفية حسب النوع/الصحة، بحث في العقد |
يحترم graph-go مجموعة صغيرة من وسوم الحاويات graphgo.* (ضعها على أي حاوية تريد التحكم فيها):
| الوسم | التأثير |
|---|---|
graphgo.ignore=true | تخطِّ هذه الحاوية بالكامل |
graphgo.type=postgres | فرض نوع المهايئ (postgres, mongodb, mysql, redis, elasticsearch, s3, http) |
graphgo.dsn=... | حقن سلسلة اتصال (DSN لقاعدة بيانات postgres/mysql، URI لـ mongodb، وإلا يعود إلى dsn) |
graphgo.node-type=gateway | تجاوز نوع العقدة المرئية (service, gateway, auth, api, queue, cache) |
graphgo.name=... | تجاوز اسم العقدة الظاهر في الرسم والمستخدم في معرفات العقد والسجلات |
استخدم هذه الوسوم لإنقاذ الحاويات المصنفة بشكل خاطئ، أو توجيه graph-go إلى DSN مخصص، أو إخفاء حاوية من الرسم دون إزالتها.
شغّل مجموعة العرض التوضيحي المزودة بالبيانات باستخدام CLI. هذه أسرع طريقة لرؤية graph-go في بيئة واقعية وهي المسار الموصى به للمستخدمين الجدد:
git clone https://github.com/guilherme-grimm/graph-go.git
cd graph-go
go run ./cmd/app demo
افتح http://localhost:8080. يتم تشغيل الأمر مرتبطاً عبر Docker Compose. اضغط Ctrl+C لإيقاف الجلسة المرتبطة.
قد يستغرق التشغيل الأول عدة دقائق على جهاز بارد لأن Docker قد يحتاج إلى سحب الصور الأساسية وبناء صور العرض التوضيحي المحلية. عمليات التشغيل اللاحقة أسرع بكثير.
تتوقع مجموعة العرض التوضيحي أن تكون المنافذ التالية على المضيف شاغرة: 8080, 5432, 27017, 9000, 9001.
إذا كنت بحاجة إلى إيقاف تشغيل صريح لاحقاً:
docker compose -f docker-compose.demo.yml down
حاوية واحدة، منفذ واحد. قم بتركيب مقبس Docker للقراءة فقط وسيكتشف graph-go تلقائياً كل شيء يعمل على المضيف:
docker run -d -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/guilherme-grimm/graph-go:latest
يقرأ graph-go من مقبس Docker فقط. العلم
:roيفرض هذا — حافظ عليه.
افتح http://localhost:8080. يقوم الاكتشاف التلقائي بمعالجة حاويات Docker و (عند وجود kubeconfig أو حساب خدمة داخل المجموعة) موارد Kubernetes دون أي ملف إعداد.
للخدمات التي تعيش خارج Docker/Kubernetes (قواعد بيانات عن بُعد، خدمات سحابية مُدارة)، قم بتركيب ملف إعداد — راجع الإعدادات.
برنامج ثنائي مستقل واحد — واجهة المستخدم مضمنة، ولكن نقطة الدخول لا تزال CLI.
# Linux amd64 (يتطلب GitHub CLI؛ تصفّح Releases لمنصات أخرى)
gh release download --repo guilherme-grimm/graph-go --pattern 'graph-go_*_linux_amd64.tar.gz' --clobber
tar xzf graph-go_*_linux_amd64.tar.gz
./graph-go serve # أو فقط `./graph-go` — نفس الشيء
افتح http://localhost:8080. منصات أخرى على صفحة الإصدارات.
| الأمر | ما يفعله |
|---|---|
graph-go demo | تشغيل مجموعة العرض التوضيحي لـ Docker Compose من المستودع وعرض مخرجاتها في المقدمة. |
graph-go serve | بدء خادم HTTP مع الاكتشاف التلقائي والتحديثات الحية (الافتراضي — نفس التشغيل بدون وسائط). |
graph-go scan | تشغيل الاكتشاف مرة واحدة وإخراج الرسم البياني كـ JSON إلى stdout. مفيد للتوجيه إلى jq، أو فحوصات CI، أو التصدير لمرة واحدة. |
graph-go version | طباعة الإصدار، الالتزام (commit)، وتاريخ البناء. |
graph-go --health-check | الاتصال بـ /health المحلي والخروج بقيمة 0/1. يُستخدم بواسطة HEALTHCHECK للحاوية؛ ليس للاستخدام التفاعلي. |
العلامات العامة (تنطبق على كل أمر فرعي): --config, --log-level, --log-format. راجع graph-go <command> --help للحصول على السطح الكامل لكل أمر.
التدفق النموذجي:
graph-go demo للحصول على جولة محلية واقعية.graph-go serve للتشغيل على بنيتك التحتية الخاصة.graph-go scan للأتمتة لمرة واحدة، أو عمليات التصدير، أو فحوصات CI.| المنفذ | الغرض |
|---|---|
8080 | graph-go (واجهة المستخدم + API + WebSocket — الإنتاج) |
5173 | خادم تطوير Vite (التطوير فقط — راجع CONTRIBUTING.md) |
9001 | وحدة تحكم MinIO (مجموعة العرض التوضيحي فقط) |
الاكتشاف التلقائي هو المسار. قم بتركيب مقبس Docker و/أو التشغيل داخل مجموعة Kubernetes — يكتشف graph-go بنيتك التحتية بدون الحاجة إلى ملف إعداد.
استخدم ملف إعداد YAML (conf/config.yaml) فقط كمنفذ احتياطي للخدمات التي لا يمكن الوصول إليها عبر الاكتشاف — قواعد بيانات عن بُعد، خدمات سحابية مُدارة، نقاط نهاية خارجية. راجع conf/config.sample.yaml للحصول على المخطط الكامل — أمثلة لكل مهايئ وكل كتلة إعداد (server, docker, kubernetes, connections).
لاستخدام ملف إعداد مع تشغيل Docker أعلاه:
docker run -d -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v $(pwd)/conf/config.yaml:/app/conf/config.yaml:ro \
ghcr.io/guilherme-grimm/graph-go:latest
الاستخدام المصرح به فقط: graph-go مخصص لتصور البنية التحتية التي تملكها أو لديك إذن بالوصول إليها. لا توجهه إلى أنظمة دون إذن.