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

สามารถติดตั้งแหล่งข้อมูล 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” และ “คำสั่ง RedisTimeSeries” ในตัวแก้ไขแบบสอบถาม ใช้คำสั่ง TS.MRANGE ด้วยตัวกรองชื่อปลั๊กอิน
![]()
สุดท้าย ฉันตั้งชื่อปลั๊กอิน 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