LINUX.ORG.RU

Как осуществить мониторинг данных из Redis в Grafana?

 , , ,


0

3

Мне нужно как-то отобразить данные из бд Redis (ключи и их значения) в Grafana. Я пытался сделать это несколькими способами:

- SimpleJson

- Redis_fdw (Здесь я хотел перетаскивать данные из Redis в PostgreSQL, а из него уже в Grafana, но там возникли проблемы при установке).

Также я пытаюсь сейчас написать скрипт с помощью Python, который бы перетаскивал данные из Redis в PostgreSQL (ещё желательно сделать с таймером, чтобы это происходило, к примеру, каждые 5 секунд).

Как конкретно можно осуществить всё это наиболее просто и удобно?

На всякий случай скину то, что у меня есть на данный момент в скрипте, просто чтобы показать, что python видит и redis, и postgresql (и да, почему-то добавленные строки в конечном итоге не сохраняются в базе данных):

https://groups.google.com/group/redis-db/attach/8752b692ed92d/test.py?part=0....


import redis
import psycopg2

try:
    conn = psycopg2.connect("dbname='testdb' user='user' host='localhost' password='password'")
except:
    print "I am unable to connect to the database"
        
cur = conn.cursor()

cur.execute("""INSERT INTO ns_leg_data VALUES
    ('foo', '123', '123', '123', '123', '123', '2008-08-09', '2008-05-05', '2010-01-01', '123')""")

cur.execute("""SELECT session_id from ns_leg_data""")
rows = cur.fetchall()
print "\nShow me the data:\n"

for row in rows:
    print "   ", row[0]


            
r = redis.StrictRedis(host='localhost', port=6379, db=0)
r.set('foo', 'bar')
print(r.get('foo'))
print(r.smembers('online_agents'))
print(r.hgetall('agent:substates:agent'))

Не очень понял, при чём тут вообще postgresql.
Возможно тебе проще было бы поднять твой скрипт демоночком и запросы в редис преобразовывать в то что хочет графана.

https://github.com/maiha/grafana-redis.cr выглядит именно так как я указал, но уже готовое.

AnDoR ★★★★★ ()
Ответ на: комментарий от Wizard_

Я рассматривал этот вариант, но меня смутило следующее: «Works only for Int values. It maybe fail with selecting 1m etc.» Т.е., если я правильно понимаю, если значением ключа будет не число, то это работать уже не будет.

А postgresql я хотел использовать, потому что из него мне будет уже проще простого вытащить данные в Grafana. Да и нельзя сказать «что хочет графана», потому что для каждого датасоурса по сути свой синтаксис запроса метрики. К примеру, если бы redis был в графане, то я бы без проблем прописал в ей команду по типу get <ключ>, и никаких шаманств. Но так, увы, нельзя.

Отчасти у меня это получилось с simplejson, но там всё слишком костыльно, как по мне.

Вот

И вот

Lotrein ()