Grafana: إضافة مصدر البيانات دون استخدام واجهة الويب

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

مرحبا،
أنا فقط أتساءل عما إذا كان من الممكن إضافة مصادر البيانات "من سطر الأوامر أو ملف التكوين" بدلاً من استخدام خيار "إضافة مصدر" لواجهة الويب ...
أرغب في إجراء عملية تثبيت تقوم بأتمتة تثبيت influxdb + تثبيت grafana وإنشاء مصدر بيانات تدفق "المضيف المحلي" تلقائيًا داخل grafana. هل هذا ممكن؟
شكرا

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

هل يمكن إعادة فتح هذه القضية؟
أرغب بشدة في خيار مشابه لـ dashboards.json للحصول على دليل يمكن من خلاله تحديد مصادر البيانات المطلوبة

ال 40 كومينتر

من خلال واجهة برمجة تطبيقات الويب:

curl ' http: // localhost : 3000 / api / datasources' -X PUT - البيانات-ثنائي '{"الاسم": "test"، "type": "influxdb_08"، "url": " http: // localhost : 8086 "،" access ":" proxy "،" isDefault ": true،" database ":" asd "،" user ":" asd "،" password ":" asd "} '

تكمن المشكلة في أن ما ورد أعلاه يعمل ، فأنت بحاجة إلى مفتاح API ، ولإنشاء مفتاح api تحتاج إلى واجهة مستخدم. الحل هو أن تكون قادرًا على استخدام واجهة برمجة التطبيقات مع اسم المستخدم / كلمة المرور (على سبيل المثال مع اسم المستخدم / كلمة المرور للمستخدم المسؤول)

شكرًا ، سأحاول هذا وأرى :-)
المشكلة الرئيسية هي أنه لا يمكنني العثور على أي مستند حول واجهة برمجة تطبيقات الويب ... ربما أفتقد شيئًا ما.

إليك بعض أكواد python للقيام بذلك والتي اشتقتها من مشاهدة طلبات http:

import requests

[ provide credential variables etc ]

grafana_url = os.path.join('http://', '%s:%u' % (grafana_host, grafana_port))
session = requests.Session()
login_post = session.post(
   os.path.join(grafana_url, 'login'),
   data=json.dumps({
      'user': grafana_user,
      'email': '',
      'password': grafana_password }),
   headers={'content-type': 'application/json'})

# Get list of datasources
datasources_get = session.get(os.path.join(grafana_url, 'api', 'datasources'))
datasources = datasources_get.json()

# Add new datasource
datasources_put = session.put(
   os.path.join(grafana_url, 'api', 'datasources'),
   data=json.dumps({
      'access': 'direct',
      'database': ifdb_database,
      'name': datasource_name,
      'password': ifdb_password,
      'type': 'influxdb_08',
      'url': 'http://%s:%u' % (ifdb_host, ifdb_port),
      'user': ifdb_user}),
      headers={'content-type': 'application/json'})

شكرا،
نظرًا لأنه سيكون جزءًا من التثبيت ، أعتقد أن طريقة 'Curl' ستجعل ضربة بالكوع. لكنني سأجرب أيضًا أشياء بيثون لأنها قد تكون مفيدة أيضًا. شكرًا مرة أخرى ، سأخبرك :-)
مسيحي

سأحاول تسهيل ذلك في الإصدار 2.1 وأيضًا جعل أداة CLI تجعل التفاعل مع واجهة برمجة تطبيقات الويب أسهل

مرحبًا مرة أخرى torkedo ،
لقد قلت "المشكلة هي أن ما ورد أعلاه يعمل ، فأنت بحاجة إلى مفتاح واجهة برمجة التطبيقات ، ولإنشاء مفتاح واجهة برمجة تطبيقات تحتاج إلى واجهة مستخدم".
وعندما أحاول إرسال أمر curl هذا بشكل فعال ، أحصل على {"message": "تم رفض الوصول"}
هل يمكن أن تشرح ما تقصده بـ "الحل هو أن تكون قادرًا على استخدام واجهة برمجة التطبيقات مع اسم المستخدم / كلمة المرور (على سبيل المثال مع اسم المستخدم / كلمة المرور الخاصة بالمستخدم المسؤول)"
شكرا...

أهلا بكم،
نجح حل Python الخاص بـ PRI-mcallen بشكل جيد بالنسبة لي :-) سأستمر في هذا الطريق.
أغلق الموضوع.
شكرا!!

@ PRI-mcallen شكرًا على نص Python ، بناءً على ذلك توصلت إلى ما يلي (غالبًا Bash حوالي curl مع ملفات تعريف الارتباط / ملف تعريف الارتباط) حيث لا أملك مترجم Python في حسابي حيث أنا تحتاج إلى تشغيل هذا ، ربما يكون مفيدًا لشخص آخر.

هذه مشكلة حقيقية لتشغيل grafana في عامل ميناء. نحن نستخدم أداة تزامن عمال الرصيف (مايسترو نج). لدينا صورة عامل إرساء لـ grafana ونود أن نكون قادرين على تكوين مصدر بيانات الجرافيت تلقائيًا. تنشئ أداة التزامن حاوية الجرافيت ثم حاوية grafana التي تعتمد عليها. تقوم الأداة بحقن عنوان حاوية الجرافيت كمتغيرات env في حاوية grafana. نريد البرنامج النصي لبدء التشغيل الذي يتم تشغيله في حاوية grafana لتكوين مصدر بيانات الجرافيت تلقائيًا. اعتدنا أن نكون قادرين على القيام بذلك باستخدام config.js في grafana 1.9 ولكن الآن لا يوجد سوى واجهة برمجة تطبيقات HTTP (التي لم يتم توثيقها) للقيام بذلك.

iangkent ، راجع مقتطف python الذي نشرته أعلاه للحصول على مثال عن كيفية استخدام واجهة برمجة تطبيقات HTTP (هندسة عكسية من مشاهدة المعاملات).

مرحبا

أنا أختبر مقتطف python الذي نشره @ PRI-mcallen في 2.1.0-pre1 ، ويبدو أن شيئًا ما معطل (لأنه يعمل في 2.0.2 و 2.0.3-pre1)

الرد الذي أحصل عليه من إضافة مصدر البيانات هو

datasources_put.json ()
{u'message ': لم يتم العثور عليك'}

ومن سجلات جرافانا:

2015/07/13 11:27:49 [I] مكتمل / api / datasources 404 غير موجود في 1.169711ms

حاولت استخدام curl مباشرة ونفس السلوك (باستخدام مصادقة ملفات تعريف الارتباط أو المستخدم / المرور)

curl - المستخدم admin: admin \
-X وضع \
-H 'نوع المحتوى: application / json ؛ charset = UTF-8' \
- ثنائي البيانات "{\" الاسم \ ": \" test4 \ "، \" isDefault \ ": \" صحيح \ "، \" النوع \ ": \" influxdb_08 \ "، \" url \ ": \ " http: // localhost : 8086 \"، \ "access \": \ "proxy \"، \ "database \": \ "test4 \"، \ "user \": \ "test4 \"، \ "password \ ": \" test4 \ "}" \
" http://172.16.149.149 : 3000 / api / datasources".

{"الرسالة غير موجودة"}

هل لدى أي شخص فكرة عن كيفية استكشاف الأخطاء وإصلاحها أو إصلاحها؟

شكرا لك مقدما
إفرين

@ 3fr61n هناك تغيير طفيف في كسر واجهة HTTP API في 2.1 (في سجل التغيير)

تغيير واجهة برمجة تطبيقات HTTP لمصدر البيانات ، أصبح إضافة مصدر البيانات الآن POST / api / datasources / ، التحديث الآن PUT / api / datasources /: id

شكرا!!! انه يعمل الان

في grafana 2.1 ، يمكنك الآن المصادقة مقابل واجهة برمجة التطبيقات باستخدام المصادقة الأساسية ، لذلك لا تحتاج إلى تسجيل الدخول واستخدام ملفات تعريف الارتباط لإنشاء مفتاح api (أو لإضافة مصادر البيانات)
https://github.com/grafana/grafana/issues/2218#issuecomment -117041541

curl -i -XPOST ' http: // admin: admin @ hostname : 3000 / api / datasources' --data-binary '{\ "name \": \ "influxdb_09x \"، \ "type \": \ "influxdb \ "، \" الوصول \ ": \" الوكيل \ "، \" url \ ": \" http: // hostname : 8086 \ "، \" password \ ": \" root \ "، \" user \ " : \ "root \"، \ "database \": \ "cadvisor \"، \ "basicAuth \": صحيح، \ "basicAuthUser \": \ "admin \"، \ "basicAuthPassword \": \ "admin \" ، \ "isDefault \": صحيح، \ "jsonData \": null} '

أحصل على "[{" fieldNames ": [" Name "]،" rating ":" RequiredError "،" message ":" Required "} ، {" fieldNames ": [" Type "] ،" category ":" RequiredError "،" message ":" Required "} ، {" fieldNames ": [" Access "] ،" التصنيف ":" RequiredError "،" message ":" Required "}]"

أنت بحاجة إلى رأس تطبيق ContentType / json

curl -i -XPOST ' http: // admin: admin @ hostname : 3000 / api / datasources' --header "ContentType application / json" --data-binary '{\ "name \": \ "influxdb2 \"، \ "type \": \ "influxdb_09x \"، \ "access \": \ "proxy \"، \ "url \": \ " http: // hostname : 8086 \"، \ "password \": \ " جذر \ "، \" user \ ": \" root \ "، \" database \ ": \" cadvisor \ "، \" basicAuth \ ": صحيح، \" basicAuthUser \ ": \" admin \ "، \" basicAuthPassword \ ": \" admin \ "، \" isDefault \ ": true، \" jsonData \ ": null} '

لا يزال يتم إرجاع الخطأ أعلاه: /

هذا لا يبدو صحيحًا ، فالتنقطتان مفقودتان ، -H 'Content-Type: application / json ؛ charset = UTF-8' \

أنا أستخدم صور Docker Graphite الرسمية (hopsoft / graphite-statsd) و grafana (grafana / grafana) وعمل الأمر التالي بالنسبة لي:

curl 'http://admin:[email protected]:3000/api/datasources' -X POST -H 'Content-Type: application/json;charset=UTF-8' --data-binary '{"name":"localGraphite","type":"graphite","url":"http://192.168.99.100","access":"proxy","isDefault":true,"database":"asd"}'

في grafana 2.6 و influxdb 0.10 ، يعمل الضفيرة التالية بشكل صحيح:

curl 'http://admin:[email protected]:3000/api/datasources' -X POST -H 'Content-Type: application/json;charset=UTF-8' --data-binary '{"name":"influx","type":"influxdb","url":"http://localhost:8086","access":"proxy","isDefault":true,"database":"mydb","user":"admin","password":"admin"}'

يمكنك التحقق من تكوين مصادر البيانات من خلال:
curl 'http://admin:[email protected]:3000/api/datasources'

تم إغلاق هذه المشكلة في مارس ولكن هل هناك أي طريقة لأتمتة هذا بطريقة أنظف للاستخدام في Docker؟

تم إغلاق هذه المشكلة في مارس ولكن هل هناك أي طريقة لأتمتة هذا بطريقة أنظف للاستخدام في Docker؟

ما نقوم به في Docker بـ run2.sh (يوجد بالفعل run.sh في grafana/grafana ):

echo 'Starting Grafana...'
/run.sh "$@" &
AddDataSource() {
  curl 'http://localhost:3000/api/datasources' \
    -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    --data-binary \
    '{"name":"Prometheus","type":"prometheus","url":"http://prometheus:9090","access":"proxy","isDefault":true}'
}
until AddDataSource; do
  echo 'Configuring Grafana...'
  sleep 1
done
echo 'Done!'
wait

لكنني أوافق على أن هذا تصميم محزن للغاية. يمكن تكوين أي تطبيق آخر قبل بدء تشغيله. Grafana عليك أن تبدأ أولاً ثم تهيئته. عجيب.

مرحبًا torkelo ، عمل رائع باستخدام أداة Grafana!
تلقيت الخطأ "لم يتم العثور على المستخدم" عندما أحاول إضافة مستخدم في مؤسسة باستخدام واجهة برمجة تطبيقات Grafana باستخدام الأمر-

curl 'http: //: @: 3000 / api / orgs / 6 / users' -X POST -H 'Content-Type: application / json؛ charset = UTF-8' --data-binary '{"loginOrEmail": "user1"، "role": "Viewer"} '

لقد أدخلت بيانات اعتماد المصادقة الأساسية الصحيحة. أي حلول لهذه المشكلة؟
شكرا!

يجب أن يتواجد المستخدم مع استدعاء واجهة برمجة التطبيقات ، يمكنك إنشاء دعوة مستخدم باستخدام واجهة برمجة التطبيقات للدعوة

أو عن طريق الجواب:

# Check that a page returns a status 200 and fail if the word AWESOME is not
# in the page contents.
- uri:
    url: http://localhost:3000/api/datasources/name/Prometheus
    user: admin
    password: changeme
    force_basic_auth: yes
  register: grafana_prometheus
  failed_when: false
  changed_when: false

- name: Enable Prometheus Datasource
  uri:
    url: http://localhost:3000/api/datasources
    method: POST
    user: admin
    password: changeme
    body:
      name: "Prometheus"
      type: "prometheus"
      url: "http://prometheus:9090"
      access: "proxy"
      isDefault: true
    force_basic_auth: yes
    status_code: 201
    body_format: json
  when: grafana_prometheus.status == 404

مسار آخر محتمل للعمل ، هو الكتابة مباشرة في قاعدة بيانات Grafana. عادةً ما أبدأ Grafana من أجل إنشاء قاعدة البيانات الخاصة به ، وإيقافها واستخدام sqlite لإضافة المصدر إلى قاعدة البيانات.

بالنسبة إلى Grafana 4.0.2 ، سيكون شيئًا مثل:

cat <<EOF | sqlite3 grafana.db || echo "Failed to add data source."
INSERT INTO data_source VALUES (2,1,0,'prometheus','prometheus','proxy','http://address',NULL,NULL,NULL,0,NULL,NULL,0,'{}','2017-01-15 20:00:00','2017-01-15 20:00:00',0,'{}');
EOF

أفعل ذلك باستخدام CLI. الأداة التي كتبتها لـ Grafana - wizzy https://github.com/utkarshcmu/wizzy

هل يمكن إعادة فتح هذه القضية؟
أرغب بشدة في خيار مشابه لـ dashboards.json للحصول على دليل يمكن من خلاله تحديد مصادر البيانات المطلوبة

إليك جزء من حالة كومة الملح أيضًا (مشابه جدًا للشفرة غير المرغوبة أعلاه). إنه قبيح جدًا ، لكن يبدو أنه يقوم بالمهمة:

  http.query:
    - name: http://localhost:3000/api/datasources
    - method: POST
    - username: admin
    - password: admin
    - data: |
        {"name": "Prometheus",
        "type": "prometheus",
        "url": "http://localhost:9090",
        "access": "proxy",
        "isDefault": true}
    - header_list:
      - 'Content-Type: application/json'
    - status: 200
    - unless:
      - curl -f http://admin:admin<strong i="6">@localhost</strong>:3000/api/datasources/name/Prometheus

يرجى إعادة فتح هذا ، العبث مع curl و sqlite هو أكثر من مجرد إزعاج مع عامل الإرساء. مجرد حل نظيف كما هو الحال مع dashboard.json سيكون رائعًا!

+1 نحتاج إلى أن يكون هذا قابلاً للتكوين في تكوين ثابت (على سبيل المثال عند استخدام عامل إنشاء عامل لإعداد grafana تلقائيًا باستخدام مصدر بيانات influxdb)

+1 باستخدام ملف json ، يمكننا بسهولة إنشاء مصدر بيانات لكل فهرس ES مباشرة من الدمية ، بدلاً من تشغيل البرامج النصية الجانبية

+1

يوم الخميس ، 25 مايو 2017 الساعة 5:36 مساءً ، Anton Timofieiev [email protected]
كتب:

+1 باستخدام ملف json يمكننا بسهولة إنشاء مصدر بيانات لكل فهرس ES
مباشرة من الدمية ، بدلاً من تشغيل البرامج النصية الجانبية

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/grafana/grafana/issues/1789#issuecomment-304026003 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AFrnv_CDln7rDTlqZK6r_stAFiek7jaHks5r9ZHfgaJpZM4EBJaL
.

👍 مع القدرة على الاستعلام من القنصل عن مصدر البيانات (json بالفعل)

أتساءل كيف يمكنني تكوين تفاصيل البحث المرن (مثل اسم الفهرس واسم حقل الوقت والإصدار) سواء عبر HTTP API أو ملف conf. لا يمكنني العثور على مفتاح تلك التكوينات. ما هو السلوك الافتراضي؟ هل تنشئ مصدر بيانات لكل فهرس مثل timtofan قال؟

curl --user admin: admin ' http: // IPADDR : 3000 / api / datasources' -X POST -H 'Content-Type: application / json؛ charset = UTF-8' --data-binary '{"name" : "test"، "type": "prometheus"، "url": " http: // localhost : 9090"، "access": "proxy"، "basicAuth": false} '

"isDefault": صحيح إذا كنت تريد جعل مصدر البيانات افتراضيًا

هذه هي الطريقة التي أضيف بها مصدر بيانات بروميثيوس:
curl --user admin: admin ' http: // IPADDR : 3000 / api / datasources' -X POST -H 'Content-Type: application / json؛ charset = UTF-8' --data-binary '{"name" : "test"، "isDefault": true، "type": "prometheus"، "url": " http: // localhost : 9090"، "access": "proxy"، "basicAuth": false} '

هل يمكنني إضافة مصدر بيانات من ملف التكوين لجميع المؤسسات؟
سيكون مناسبا جدا

حسنًا ، أعلم أن هذا مغلق بالفعل ، لكنني أردت فقط مشاركة أن Grafana 5 يسمح بتعريف Dashboard من الكود. مزيد من المعلومات هنا: http://docs.grafana.org/administration/provisioning/#datasources

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

القضايا ذات الصلة

utkarshcmu picture utkarshcmu  ·  3تعليقات

Minims picture Minims  ·  3تعليقات

sslupsky picture sslupsky  ·  3تعليقات

deepujain picture deepujain  ·  3تعليقات

Azef1 picture Azef1  ·  3تعليقات