Grafana: [طلب الميزة] إضافة المستخدم الحالي كمتغير قالب

تم إنشاؤها على ٥ مايو ٢٠١٦  ·  45تعليقات  ·  مصدر: grafana/grafana

هل هناك أي طريقة لاستخدام التفاصيل الخاصة بـ "مستخدم grafana الحالي" في استعلام مقابل واجهة Influxdb الخلفية ، سواء كان عنوان بريده الإلكتروني أو اسم المستخدم الخاص به؟

المطلب: أقوم بتخزين البيانات الشخصية للعديد (ربما الآلاف) من المستخدمين. خياري الحالي للتنفيذ هو قاعدة بيانات تدفق واحدة ، وقياس واحد ، مع علامة لتحديد المستخدم الذي ينتمي إليه كل قياس. لدي حرية استخدام البريد الإلكتروني أو اسم المستخدم أو أي شيء آخر يعمل بهوية المستخدم الفعلية في تلك العلامة.

من الناحية المثالية ، سأقوم بطريقة ما بحقن grafana بعبارة مثل "حيث user = fred" بحيث تقوم النهاية الخلفية دائمًا بإرجاع البيانات المتعلقة بهذا المستخدم المحدد فقط.

الأمان: أتفهم التعرض الأمني ​​، وأن أي مستخدم خبير + خبير سيكون قادرًا على استخدام أدوات http لفحص بيانات المستخدمين الآخرين. ومع ذلك ، فإنني أنوي إضافة فحص لهذا في الواجهة الأمامية لـ nginx والتي تعمل كوكيل عكسي لـ grafana. خطتي هي أن يقوم nginx بفحص مكالمات API الواردة إلى GET / api / datasources / proxy /: datasourceId / * والتأكد من أنها تحتوي على جملة where التي تطابق المستخدم المسجل حاليًا. يبدو أنها قطعة من الكعكة :)

aredashboartemplating help wanted prioritnice-to-have typfeature-request

التعليق الأكثر فائدة

سيكون من الجيد أن يكون متغيرًا داخليًا

ال 45 كومينتر

هذا غير ممكن في الوقت الحالي.

لقد نجحت في حل هذا الأمر باستخدام وكيل عكسي يعترض "/ api / datasources / proxy /: datasourceId / *" استدعاءات API إلى النهاية الخلفية لـ grafana ، ويحقن شرط أين. بالتزامن مع سلوك وكيل المصادقة الرائع لـ grafana ، لست بحاجة الآن إلى هذه الميزة. في الواقع ، استنادًا إلى بعض وجهات نظر Torkelo المعلنة سابقًا حول الأمان ، والافتقار إلى فرض مستوى المستخدم من خلال قواعد البيانات الخلفية ، أشعر أن هذا السلوك ربما لا ينتمي إلى Grafana في هذا الوقت.

abraae هل يمكنك توضيح كيفية تنفيذ هذه الميزة؟

abraae +1
هل يمكن ان توضح ما قمت به؟

عذرًا ، ليس لدي وقت لتوثيق ما فعلته ولكن من الذاكرة:

  • استخدم nginx كوكيل عكسي أمام خادم grafana ، أي أن كل حركة المرور الواردة إلى خادم grafana تمر عبر nginx
  • إعداد nginx أسيوط. لالتقاط المكالمات إلى / api / datasources / proxy /: datasourceId / *
  • بدلاً من تمريرها ، أعد الكتابة باستخدام nginx لإضافة عبارة where

لذلك ، فإن ما تفعله هو فرض شرط مكان إضافي في جميع استدعاءات واجهة برمجة التطبيقات التي تعود إلى النهاية الخلفية لـ grafana.

كان هناك الكثير الذي يتعين علي القيام به لتشغيله من الذاكرة :) آسف لا يمكن تقديم المزيد من المساعدة.

    -

abraae Thx لإجابتك.
هل من الممكن رؤية ما فعلته في nginx.conf؟

بالتأكيد ، هنا nginx.conf.

[عفوًا ، ملف خاطئ - انظر أدناه]

لا أرى في ملفك كيف تلتقط / api / datasources / proxy /: datasourceId / *
ما الذي فعلته ؟ اين هي كتابتك حكم الاعادة ؟؟ :-)

آه آسف ، ملف خاطئ ، جرب هذا: https://gist.github.com/abraae/c209b537350b2b2d9703ba126872cc3f

سيكون من الجيد أن يكون متغيرًا داخليًا

هل أخذ اسم المستخدم كمتغير في الاستعلام مطبق؟

أرغب في هذه الوظيفة أيضًا وسببها كما يلي:

لنفترض أن لديك لوحة معلومات تسرد فيها الطلبات من أداة ITSM وتريد أن تعرض الرسوم البيانية الطلبات التي تم تعيينها للمستخدم الذي قام بتسجيل الدخول فقط.
ستؤدي القدرة على تعيين متغير في لوحة المعلومات يشير إلى اسم المستخدم الذي تم تسجيل الدخول إليه إلى حل مشكلتنا في الشركة التي أعمل بها (شركة International BIG).

مثال آخر هو استخدام اسم المستخدم الذي تم تسجيل الدخول إليه للوصول إلى القسم واستخدام ذلك لعرض البيانات المتعلقة بالقسم فقط.

لا ينبغي أن يكون من الصعب القيام بإضافة متغير عام لاستخدامه في لوحات المعلومات التي تشير إلى المستخدم الذي قام بتسجيل الدخول بحيث يمكن استخدامه.

دعنا نقول:
Grafana.User.Email $ = [email protected]
$ Grafana.User.Name = جاندولف
$ Grafana.User.Sicany = TheWize
Grafana.User.Username دولار = GDog

هذا من شأنه أن يحل الكثير من المشاكل والقيود التي يواجهها الأشخاص مع Grafana ، وأنا أوصي بشدة أن تفكر في تنفيذ ذلك.

أي أخبار عن هذه؟

أي تحديث على هذا؟

أود أيضًا أن أجد هذه الميزة مفيدة جدًا.

سأحتاج أيضًا إلى هذه الميزة حقًا. أنا أعمل على نشر لوحات تحكم خاصة بالمستخدم مع معلومات مالية يجب أن تعرض فقط بيانات المستخدمين المعنية. إن صنع 25 نسخة من نفس لوحة القيادة لهذا الغرض يكون مملًا بشكل غير ضروري.

+1

+1

أريد استخدام هذه القيمة لتقييد الوصول إلى المتغيرات (تفويض)
سيكون أفضل حل لهذا

+1
حالة الاستخدام هي أن مستخدمًا واحدًا يمكنه رؤية معلومات قسمه فقط.
يمكن استخدامه كقائمة تحكم في الوصول بدلاً من إنشاء لوحة معلومات جديدة لكل قسم.

+1

مرحبًا بالجميع ، أود دمج Grafana مع مزود هوية OIDC باستخدام تدفق رمز التفويض [1] للحصول على SSO بين واجهات المستخدم المختلفة التي يوفرها النظام الأساسي. كمتطلب رئيسي ، يجب أن أضمن إيجارات متعددة ، لذلك يجب أن يكون الحل الأفضل هو استخدام أحد مطالبات المستخدم التي يعيدها IdP في JWT كمعامل استعلام تستخدمه grafana لاسترداد البيانات من db ، على وجه الخصوص سأستخدم الادعاء الذي يحتوي على tenantId الذي ينتمي إليه المستخدم المسجل.

[1] https://grafana.com/docs/auth/generic-oauth/

هل قام أي شخص بتنفيذ شيء مشابه أو لديه أي اقتراحات للقيام بذلك؟

شكرا لكم مقدما

+1

ستكون حالة الاستخدام المحددة الخاصة بي هي إنشاء متغيرات نموذجية لتطبيق عوامل تصفية مختلفة (قيم ملصق Prometheus) اعتمادًا على المستخدم الذي قام بتسجيل الدخول.

بمعنى آخر ، يمكن أن تكون محتويات حقل "regex" لمتغير القالب ديناميكية وتعتمد على المستخدم الذي قام بتسجيل الدخول.

لتحقيق ذلك ، يمكن أن يكون لدى كل مستخدم في Grafana بعض حقول البيانات الوصفية الاختيارية التي تم تعيينها بواسطة المسؤول في وقت إنشاء المستخدم. يمكن الإشارة إلى حقول البيانات الوصفية الاختيارية هذه من حقل "regex" لمتغير القالب.

قد يسمح هذا بتطبيق التصفية "الديناميكية" التي يتحكم مسؤول أعلى مستوى في إعداد القيمة.

شكرا جزيلا!

+1

$__currentUserEmail سيكون رائعًا.

+1

+1

+1 أرغب في إنشاء لوحة تحكم لمستخدمي جامعتنا حتى يتمكنوا من رؤية إحصاءات WiFi و vpn الخاصة بهم بناءً على اسم المستخدم الخاص بهم. يمكن أن يساعدهم في استكشاف أخطاء اتصالهم وإصلاحها قبل الاتصال بمكتب المساعدة!

+1

يبدو لي أنه لا يوجد تقدم :( سيكون ذلك مفيدًا جدًا.

++

مرحبا!

هل نجح أحد في تنفيذ هذا الحل برمز abraae ؟
أحاول استخدامه مع grafana-azure-data-explorer (Kusto DB)

شكر!!

+1

مرحبا،

يعتمد الحل على مصدر بيانات SimpleJSON (https://github.com/grafana/simple-json-datasource)

الفكرة الرئيسية هي تمكين رأس X-Grafana-User وإعادته مرة أخرى من DS لملء متغير قالب

التنفيذ: https://github.com/rlklaser/grafana-logged-user

rlklaser هل هنا بعض الأمثلة على Express JS؟
أو يمكنك مشاركة ملف .war ؟
هذا لا يعمل بالنسبة لي على Express JS (((

app.get('/query', function (req, res) {
  res.status(200);
  res.json({ username: req.header('X-Grafana-User') })
});

app.get('/search', function (req, res) {
  res.status(200);
  res.json({ username: req.header('X-Grafana-User') })
});

وأرغب في استخدام https://github.com/simPod/grafana-json-datasource كـ DS

يجب على baur تغيير إعدادات grafana الافتراضية إلى:

[داتابروكسي]

تسجيل الدخول = صحيح
send_user_header = صحيح

تم إنشاء هذا الطلب قبل عامين ولم أر أي تحديثات بشأنه. أعتقد أن هذه ستكون أداة مفيدة جدًا للعديد من الأشخاص ، بمن فيهم أنا.

هل هناك أي تحديثات على هذا؟

كيف تحصل على نتيجة / api / user / team في SimpleJson GRAFANA وما هو الاستعلام للحصول على قيم "name" في متغير؟
مثال على نتيجة Grafana http api على https://www.logiserv.re/api/user/teams

نحتاج أيضًا إلى هذه الميزة بشدة من أجل لوحات المعلومات الشخصية

+1

أي تحديث لهذا الآن بعد أن أضاف النموذج دعمًا عالميًا متغيرًا لـ __org؟ https://github.com/grafana/grafana/pull/21790

يبدو أنه بإضافة المتغير __user سيستخدم نفس الآلية:

    templateSrv.setGlobalVariable('__user', {
      value: {
        name: contextSrv.user.login,
        id: contextSrv.user.id,
        toString: function() {
          return this.id;
        },
      },
    });

++ 1
فريق جرافانا ديف ،
ستكون هذه ميزة مفيدة للغاية وستجعل مهمة تفويض البيانات سهلة للغاية بالنسبة لنا ، ونحن نقوم بتقييم وعملية تنفيذ خدمة إعداد التقارير المستندة إلى Grafana على نطاق واسع والتي تتضمن الاتصال بمصادر بيانات متعددة.
ستكون هذه الميزة المحددة ضرورية لأمن البيانات في النشر متعدد المستأجرين.

++ 1 ، مرحبًا فريق Grafana dev ،
هذه ميزة مفيدة جدًا بالنسبة لنا ، فنحن نريد القيام بالتحكم في الوصول إلى البيانات بناءً على المستخدم لاستعلام محدد ، يرى مستخدم مختلف نطاقًا مختلفًا.

فريق Grafana Dev ، شكرًا جزيلاً لك على الميزة المفيدة جدًا !!!

لا يبدو أن المتغير يعمل عند استخدامه في استعلام داخل تعريفات متغيرات لوحات المعلومات.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات