
ببساطة العقد والرسوم البيانية
شاهد بنيتك التحتية. بدون أي إعدادات.
وجّه graph-go نحو مجموعتك واحصل على خريطة تفاعلية حية لكل قاعدة بيانات وجدول وخدمة ودلو تخزين — مع مراقبة صحية في الوقت الفعلي.
graph-go هو أداة رسم خرائط للبنية التحتية تعمل عبر سطر الأوامر أولاً. يكتشف بنيتك التحتية تلقائيًا من خلال الاتصال ببرنامج Docker الخفي، وفحص الحاويات قيد التشغيل، واستكشاف قواعد البيانات وخدمات التخزين. تُقدَّم واجهة المستخدم من الخادم الخلفي وتعكس حالته الفعلية — دون الحاجة إلى جرد يدوي.
| القدرة | التفاصيل |
|---|---|
| الاكتشاف التلقائي | يكتشف البنية التحتية من حاويات Docker وعناقيد Kubernetes — دون الحاجة إلى جرد يدوي |
| Kubernetes | مساحات الأسماء، وعمليات النشر، وStatefulSets، وDaemonSets، والحاويات (Pods)، والخدمات — مع مراقبة فورية في الوقت الفعلي قائمة على informers |
| Docker | يصنّف الحاويات قيد التشغيل، ويستخرج بيانات الاعتماد، ويراقب أحداث Docker، ويحترم تسميات graphgo.* لتجاوز النوع/DSN/نوع العقدة/الاسم أو تجاهل حاوية |
| PostgreSQL | الجداول، وعلاقات المفاتيح الأجنبية، وطوبولوجيا المخطط |
| MongoDB | قواعد البيانات والمجموعات |
| MySQL | الجداول، وعلاقات المفاتيح الأجنبية |
| Redis | مساحات المفاتيح وتوزيع المفاتيح |
| Elasticsearch | الفهارس، وصحة العنقود، وحالة الشظايا |
| S3 / MinIO | الدلاء والبادئات من المستوى الأعلى |
| خدمات HTTP | نقاط نهاية الصحة، ورسم خرائط التبعيات بين الخدمات |
| الصحة في الوقت الفعلي | تحديثات حالة حية مدعومة بـ WebSocket كل 5 ثوانٍ |
| رسم بياني تفاعلي | تخطيط Swimlane، وحاويات تجميع مساحات الأسماء، والتحريك/التكبير، والتصفية حسب النوع/الصحة، والبحث في العقد |
يحترم 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 مخصص، أو إخفاء حاوية من الرسم البياني دون إزالتها.
شغّل مجموعة العرض التجريبية المُهيّأة مسبقًا باستخدام سطر الأوامر. هذه أسرع طريقة لرؤية 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 (قواعد بيانات بعيدة، خدمات سحابية مُدارة)، اربط ملف إعدادات — راجع الإعدادات.
ملف تنفيذي واحد مكتفٍ ذاتيًا — واجهة المستخدم مضمّنة، لكن نقطة الدخول لا تزال سطر الأوامر.
# Linux amd64 (requires the GitHub CLI; browse Releases for other platforms)
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 # or just `./graph-go` - same thing
افتح 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 مخصص لتصوّر البنية التحتية التي تملكها أو لديك إذن بالوصول إليها. لا توجّهه نحو أنظمة دون تصريح.