Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

วิธีใช้แหล่งข้อมูล Redis ใหม่สำหรับปลั๊กอิน Grafana

เมื่อต้นเดือนนี้ Redis ได้เปิดตัวปลั๊กอิน Redis Data Source สำหรับ Grafana ซึ่งเชื่อมต่อเครื่องมือตรวจสอบแอปพลิเคชันโอเพนซอร์สที่ใช้กันอย่างแพร่หลายกับ Redis เพื่อให้คุณได้ทราบว่ามันทำงานอย่างไร มาดูตัวอย่างการอ้างอิงตนเอง:การใช้ปลั๊กอินเพื่อดูว่ามีการดาวน์โหลดกี่ครั้งเมื่อเวลาผ่านไป (ที่เก็บปลั๊กอิน Grafana ไม่ได้ให้สถิติดังกล่าวมาก่อน)

ต้องการเรียนรู้เพิ่มเติมหรือไม่ อ่าน ขอแนะนำปลั๊กอินแหล่งข้อมูล Redis สำหรับ Grafana

แหล่งข้อมูล Redis สำหรับ Grafana คืออะไร

หากคุณไม่คุ้นเคยกับ Grafana เป็นเครื่องมือยอดนิยมที่ใช้สร้างแดชบอร์ดเพื่อตรวจสอบแอปพลิเคชัน โครงสร้างพื้นฐาน และส่วนประกอบซอฟต์แวร์ แหล่งข้อมูล Redis สำหรับ Grafana เป็นปลั๊กอินที่ช่วยให้ผู้ใช้สามารถเชื่อมต่อกับฐานข้อมูล Redis และสร้างแดชบอร์ดใน Grafana เพื่อตรวจสอบข้อมูล Redis ได้อย่างง่ายดาย มันมีแดชบอร์ดที่กำหนดไว้ล่วงหน้าที่พร้อมใช้งานทันที แต่ยังช่วยให้คุณสร้างแดชบอร์ดที่ปรับแต่งได้ตามความต้องการเฉพาะของคุณ

วิธีใช้แหล่งข้อมูล Redis ใหม่สำหรับปลั๊กอิน Grafana

สามารถติดตั้งแหล่งข้อมูล Redis สำหรับปลั๊กอิน Grafana ได้โดยใช้ grafana-cli, Docker หรือใช้ใน Grafana Cloud หรือสร้างปลั๊กอินใหม่ตั้งแต่ต้นโดยทำตามคำแนะนำใน GitHub

grafana-cli plugins install redis-datasource

ข้อกำหนดเบื้องต้น

การสาธิตนี้ใช้:

  • Node.js 10.x พร้อมตัวจัดการแพ็คเกจโหนด (npm)
  • นักเทียบท่า
  • นักเทียบท่าเขียน
  • Redis 5.0.x หรือใหม่กว่าที่มี RedisTimeSeries (การสาธิตนี้ใช้คอนเทนเนอร์ Redis Docker)
  • Grafana 7.0 หรือใหม่กว่าที่มีแหล่งข้อมูล Redis (การสาธิตนี้ใช้คอนเทนเนอร์ Grafana Docker)

วิธีการดึงข้อมูลปลั๊กอิน Grafana

ข้อมูลเกี่ยวกับปลั๊กอินที่ลงทะเบียนในที่เก็บ Grafana สามารถเรียกค้นได้โดยใช้ API ในรูปแบบ JSON:

GET https://grafana.com/api/plugins/redis-datasource/versions/latest{  "id":2613,  "pluginId":639,  "pluginSlug":"redis-datasource",  "version":"1.1.2",  "url":"https://github.com/RedisTimeSeries/grafana-redis-datasource/",...  "downloads":1153,  "verified":false,  "status":"active ", "packages":{    "any":{      "md5":"ea0a2c9cb11c9fad66703ba4291e61cb",      "packageName":"any",      "downloadUrl":"/api/s  .}load/undefined ,

สำหรับตัวอย่างนี้ ฉันต้องการค้นหาจำนวนครั้งที่ดาวน์โหลดปลั๊กอิน Redis Data Source สำหรับ Grafana ต่อวัน และเพื่อค้นหาการเพิ่มขึ้นอย่างรวดเร็วหลังจากที่เราทวีตหรือโพสต์เกี่ยวกับเรื่องนี้ในบล็อก Redis ฉันตัดสินใจใช้ RedisTimeSeries (โมดูล Redis ที่เพิ่มโครงสร้างข้อมูลอนุกรมเวลาให้กับ Redis) เพื่อติดตามจำนวนการดาวน์โหลดทุกชั่วโมง

ในการเติมข้อมูล ฉันใช้ TS.ADD คำสั่งที่มีการประทับเวลาอัตโนมัติและป้ายกำกับ `plugin ` และ `รุ่น `. X คือจำนวนการดาวน์โหลดและเวอร์ชันล่าสุด `1.1.2' ที่ดึงมาจาก API ป้ายกำกับจะถูกใช้ในภายหลังเพื่อค้นหาอนุกรมเวลา

127.0.0.1:6379> ts.add redis-datasource * ปลั๊กอิน X LABELS redis-datasource เวอร์ชัน 1.1.2

ฉันเขียนสคริปต์อย่างง่ายโดยใช้ไลบรารี ioredis และ Axios เพื่อเรียก API และใช้ข้อมูลปลั๊กอินเพื่อเพิ่มตัวอย่างอนุกรมเวลา:

/** * ไคลเอ็นต์ Redis ที่มีประสิทธิภาพ เน้นประสิทธิภาพ และมีคุณสมบัติครบถ้วนสำหรับ Node.js * * @see https://github.com/luin/ioredis */const Redis =require("ioredis");/** * Promise based HTTP client สำหรับเบราว์เซอร์และ node.js * * @see https:// github.com/axios/axios */const axios =require("axios");/** * คุณยังสามารถระบุตัวเลือกการเชื่อมต่อเป็น redis:// URL หรือ rediss:// URL เมื่อใช้การเข้ารหัส TLS */const redis =new Redis("redis://localhost:6379");/** * Main * * @async * @param {string} plugin ชื่อปลั๊กอิน */async function main(plugin) {  /**   * รับข้อมูลของปลั๊กอิน   * * @see https://grafana.com/api/plugins/redis-datasource/versions/latest   */  const response =await axios.get(    `https://grafana.com/api/plugins/${plugin}/ เวอร์ชัน/ล่าสุด`  ); /**   * การตอบสนอง   */  const data =response.data; if (!data) {    console.log("ข้อมูลอยู่ที่ไหน"); กลับ; }  /**   * เพิ่มตัวอย่างอนุกรมเวลาด้วยปลั๊กอินและป้ายกำกับเวอร์ชัน   */  รอ redis.send_command(    "TS.ADD",    data.pluginSlug,    "*",    data.downloads,    "LABELS",".    "plugin pluginSlug,    "เวอร์ชัน",    data.version  ); /**   * ปิดการเชื่อมต่อ Redis   */  await redis.quit();}/** * Start */main("redis-datasource");

สภาพแวดล้อมสคริปต์ของฉัน 

ฉันใช้ไฟล์ package.json เพื่อติดตั้งการพึ่งพาและรันคำสั่งโดยใช้ `npm ` ตามที่แสดงที่นี่:

{  "author":"Mikhail Volkov",  "dependencies":{    "axios":"^0.19.2",    "ioredis":"^4.17.3"  },  "description":"รับสถิติสำหรับ Grafana Plugin",  "devDependencies":{    "@types/node":"^14.0.27"  },  "license":"ISC",  "name":"grafana-plugin-stats",  "scripts":{    "redis -cli":"docker exec -it redistimeseries redis-cli",    "start":"docker-compose up",    "start:app":"node grafana-plugin-stats.ts"  },  "version":"1.0 .0"}

ในการจัดการคอนเทนเนอร์ Docker ฉันใช้ docker-compose:

  • บริการ Redis ขึ้นอยู่กับอิมเมจ redis/redistimeseries ซึ่งเปิดใช้งานโมดูล RedisTimeSeries
  • บริการ Grafana ใช้ Grafana รุ่นล่าสุดพร้อมปลั๊กอิน Redis Data Source ที่ติดตั้งจากที่เก็บ
 เวอร์ชัน:"3.4" บริการ:Redis:container_name:redistimeseries ภาพ:redis/redistimeseries:พอร์ตล่าสุด:- 6379:6379 Grafana:container_name:Grafana Image:Grafana/Grafana:พอร์ตล่าสุด:- "3000:3000" - GF_AUTH_ANONYMOUS_ORG_ROLE=ผู้ดูแลระบบ      - GF_AUTH_ANONYMOUS_ENABLED=true      - GF_AUTH_BASIC_ENABLED=false      - GF_ENABLE_GZIP=true       - GF-datasource 

ในการเรียกใช้สคริปต์ทุก ๆ ชั่วโมงและรวบรวมข้อมูลการดาวน์โหลด ฉันใช้ crontab บนเซิร์ฟเวอร์ Linux ในระบบคลาวด์:

root@grafana:~# crontab -l5 * * * * node /root/grafana-plugin-stats/stats.ts

การทดสอบแหล่งข้อมูล Redis สำหรับปลั๊กอิน Grafana

ในการเรียกใช้สคริปต์และรวบรวมข้อมูล คุณต้องติดตั้ง Node.js, Docker และ Docker Compose โดยทำตามคำแนะนำสำหรับระบบปฏิบัติการของคุณ: 

> docker-compose up -dStarting grafana         ... doneStarting redistimeseries ... done...redistimeseries | 1:M 08 ส.ค. 2020 21:13:20.405 *  เวอร์ชัน Redis พบโดย RedisTimeSeries :6.0.1 - oss...grafana    | กำลังติดตั้ง redis-datasource @ 1.1.2grafana    | จาก:https://grafana.com/api/plugins/redis-datasource/versions/1.1.2/download...grafana    | t=2020-08-08T21:13:23+0000 lvl=info msg="Registering plugin" logger=plugins name=Redisgrafana    | t=2020-08-08T21:13:23+0000 lvl=info msg="HTTP Server Listen" logger=http.server address=[::]:3000 protocol=http subUrl=socket=

หลังจากรันสคริปต์ เราสามารถตรวจสอบข้อมูล RedisTimeSeries โดยใช้ TS.MRANGE สั่งการ. คุณค้นหาช่วงของอนุกรมเวลาได้หลายชุดโดยใช้ตัวกรองในทิศทางไปข้างหน้าหรือย้อนกลับ:

127.0.0.1:6379> ts.mrange - + withlabels filter plugin=redis-datasource1) 1) "diff:redis-datasource"   2) 1) 1) "value"         2) "diff"      2) 1) " type"          2) "แหล่งข้อมูล"      3) 1) "ปลั๊กอิน"         2) "แหล่งข้อมูลซ้ำ"      4) 1) "เวอร์ชัน"        2) "1.1.2"   3)   1) 1) (จำนวนเต็ม) 1597125602559     2) 0 1) (จำนวนเต็ม) 1597129202847           2) 1        3) 1) (จำนวนเต็ม) 1597132802738           2) 10

คำสั่ง TS.MRANGE พร้อมตัวกรอง `ปลั๊กอิน ` ดึงตัวอย่างเฉพาะสำหรับ `redis-datasource ` ปลั๊กอิน ใช้ตัวเลือก WITHLABELS เพื่อส่งคืนป้ายกำกับ

วิธีการแสดงข้อมูล RedisTimeSeries ใน Grafana

เปิด Grafana ในเว็บเบราว์เซอร์โดยใช้ `https://localhost:3000 ` และสร้างแหล่งข้อมูลโดยเลือกการกำหนดค่า -> แหล่งข้อมูล แหล่งข้อมูล Redis สำหรับ Grafana รองรับการรักษาความปลอดภัยเลเยอร์การขนส่ง (TLS) และสามารถเชื่อมต่อกับฐานข้อมูลโอเพนซอร์ส Redis OSS, Redis Enterprise และ Redis Enterprise Cloud ได้ทุกที่โดยใช้การเชื่อมต่อโดยตรง

วิธีใช้แหล่งข้อมูล Redis ใหม่สำหรับปลั๊กอิน Grafana

ขั้นตอนต่อไปคือการสร้างแดชบอร์ดพร้อมแผงกราฟเพื่อแสดงข้อมูลเป็นภาพ เลือก “แหล่งข้อมูล Redis” และ “คำสั่ง RedisTimeSeries” ในตัวแก้ไขแบบสอบถาม ใช้คำสั่ง TS.MRANGE ด้วยตัวกรองชื่อปลั๊กอิน

วิธีใช้แหล่งข้อมูล Redis ใหม่สำหรับปลั๊กอิน Grafana

สุดท้าย ฉันตั้งชื่อปลั๊กอิน Legend Labels ของปลั๊กอินและตั้งค่าเวอร์ชันเป็น Value Label ซึ่งจะทำให้ง่ายต่อการแสดงซีรีส์สำหรับ Redis Data Source สำหรับ Grafana เวอร์ชันต่อมา

ตรวจสอบผลลัพธ์

ใช้คำสั่ง TS.INFO เพื่อดูข้อมูลและสถิติสำหรับอนุกรมเวลา จนถึงตอนนี้ ฉันได้รวบรวมข้อมูลการดาวน์โหลดมาเป็นเวลา 250 ชั่วโมงแล้ว และสามารถดูจำนวนหน่วยความจำ (เป็นไบต์) ที่ได้รับการจัดสรรเพื่อจัดเก็บอนุกรมเวลาและข้อมูลอื่นๆ

127.0.0.1:6379> ts.info diff:redis-datasource 1) totalSamples 2) (integer) 250 3) memoryUsage 4) (integer) 4313 5) firstTimestamp 6) (integer) 1597125602559 7) lastTimestamp 8) ( จำนวนเต็ม) 1598022003033 9) storageTime10) (จำนวนเต็ม) 011) chunkCount12) (จำนวนเต็ม) 113) maxSamplesPerChunk14) (จำนวนเต็ม) 25615) labels16) 1) 1) "value"       2) "diff"    2) 1) "type"       2) " แหล่งข้อมูล"    3) 1) "ปลั๊กอิน"       2) "แหล่งข้อมูลซ้ำ"    4) 1) "เวอร์ชัน"       2) "1.1.2"17) sourceKey18) (ไม่มี) 19) กฎ 20) (รายการหรือชุดว่าง)

ในขณะที่เผยแพร่ ปลั๊กอิน Redis Data Source สำหรับ Grafana ถูกดาวน์โหลดมากกว่า 3500 ครั้ง! เราได้รับความคิดเห็นอันมีค่าจากชุมชนและพัฒนาคุณลักษณะใหม่ๆ สำหรับแหล่งข้อมูลต่อไป

สำหรับข้อมูลเพิ่มเติม โปรดดูที่เก็บ GitHub สำหรับโครงการ และแจ้งให้เราทราบหากคุณมีคำถามใดๆ ในปัญหา

บทสรุป

ฉันหวังว่าโพสต์นี้ และตัวอย่างของฉันที่ใช้แหล่งข้อมูล Redis สำหรับ Grafana เพื่อติดตามการดาวน์โหลดปลั๊กอินเมื่อเวลาผ่านไป ได้แสดงให้เห็นถึงพลังและความสะดวกในการใช้เครื่องมือใหม่นี้ และเป็นแรงบันดาลใจให้คุณตรวจสอบข้อมูลแอปพลิเคชันของคุณ (ธุรกรรม สตรีม , คิว ฯลฯ) โดยใช้ RedisTimeSeries คอยติดตามโพสต์เพิ่มเติมเกี่ยวกับวิธีการและเหตุผลในการใช้ปลั๊กอิน Redis Data Source สำหรับ Grafana