นี่คือคำสั่ง rrdgraph_libdbi ที่สามารถเรียกใช้ในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
rrdgraph_libdbi - กำลังดึงข้อมูลสำหรับการทำกราฟในกราฟ rrdtool ผ่าน libdbi
เรื่องย่อ
= sql// คนขับรถ>/ = /...
[/rrdminstepsize= ][/rrdfillmissing= หายไป n วินาที>]//
/ คอลัมน์>/ ความคุ้มค่า คอลัมน์>[/derive]/ ประโยค 1>/.../ ประโยค n>
DESCRIPTION
ชื่อไฟล์หลอก rrd นี้กำหนดแหล่งข้อมูล sql:
ตร.ว.//
magic cookie-prefix สำหรับแหล่งข้อมูลประเภท libdbi
<libdbi คนขับรถ>
ไดรเวอร์ libdbi ใดที่จะใช้ (เช่น: mysql)
=
กำหนดพารามิเตอร์ที่จำเป็นในการเชื่อมต่อกับฐานข้อมูลด้วยไดรเวอร์ libdbi ที่กำหนด
(ไดรเวอร์เหล่านี้ขึ้นอยู่กับ libdbi - สำหรับรายละเอียด โปรดดูเอกสารประกอบไดรเวอร์ของ libdbi!)
/rdminstepsize=<ขั้นต่ำ ขั้นตอน ขนาด>
กำหนดจำนวนขั้นต่ำของความยาวขั้นตอนที่ใช้สำหรับการสร้างกราฟ (ค่าเริ่มต้น: 300 วินาที)
/rrdfillmissing=<กรอก หายไป วินาที>
กำหนดจำนวนวินาทีที่จะเติมด้วยค่าสุดท้ายเพื่อหลีกเลี่ยงกล่อง NaN เนื่องจากความกระวนกระวายใจในการแทรกข้อมูล (ค่าเริ่มต้น: 0 วินาที)
กำหนดตารางที่จะดึงชุดผลลัพธ์
หากจำเป็นต้องดึงข้อมูลจากหลายตาราง ตารางเหล่านี้สามารถกำหนดได้โดยแยกชื่อตารางด้วย "+"
การเข้ารหัสแบบเลขฐานสิบหกผ่าน %xx จะถูกแปลเป็นค่าจริง ใช้ %% เพื่อใช้ %
"[*]unixtimestamp คอลัมน์>
กำหนดคอลัมน์ของ E ตารางE ซึ่งมี unix-timestamp
- หากเป็นฟิลด์ DATETIME ในฐานข้อมูล ให้นำหน้าด้วย '*'
การเข้ารหัสแบบเลขฐานสิบหกผ่าน %xx จะถูกแปลเป็นค่าจริง ใช้ %% เพื่อใช้ %
<ข้อมูล ความคุ้มค่า คอลัมน์>
กำหนดคอลัมน์ของ E ตารางE ซึ่งมีคอลัมน์ค่าซึ่งควรเป็นกราฟ
การเข้ารหัสแบบเลขฐานสิบหกผ่าน %xx จะถูกแปลเป็นค่าจริง ใช้ %% เพื่อใช้ %
/สืบมา
กำหนดว่าค่าข้อมูลที่ใช้ควรเป็นเดลต้าของ 2 ค่าที่ต่อเนื่องกัน (เพื่อจำลองแหล่งข้อมูลประเภท COUNTER หรือ DERIVE)
/ ข้อ>
กำหนดหนึ่ง (หรือมากกว่านั้น) โดยที่ส่วนคำสั่งที่เชื่อมต่อกับ AND เพื่อกรองรายการใน ตาราง
การเข้ารหัสแบบเลขฐานสิบหกผ่าน %xx จะถูกแปลเป็นค่าจริง ใช้ %% เพื่อใช้ %
ชื่อคอลัมน์ค่าที่ส่งคืน ซึ่งสามารถใช้เป็น ds-names คือ:
นาที, เฉลี่ย, แม็กซ์, นับ และ ซิก
ถูกส่งคืนเพื่อใช้เป็น ds-names ในคำจำกัดความ DS ของคุณ
เหตุผลของการใช้สิ่งนี้คือ หากใช้ฟังก์ชันการรวมเป็นค่าต่ำสุด/เฉลี่ยและสูงสุด เครื่องยนต์จะถูกใช้หลายครั้ง
และส่งผลให้ใช้คำสั่ง SQL เดียวกันหลายครั้ง
ตัวอย่าง
นี่คือตัวอย่างตารางในฐานข้อมูล MySQL:
ข้อมูลการเชื่อมต่อฐานข้อมูล
dbhost=127.0.0.1
ผู้ใช้=rrd
รหัสผ่าน=ความลับ
dbname=rd
ที่นี่ตาราง:
สร้างตาราง RRDValue (
RRDKeyID ใหญ่(20) ไม่เป็นโมฆะ
ยูนิกซ์ไทม์สแตมป์ int(11) ไม่เป็นโมฆะ
ค่าดีฟอลต์สองเท่าไม่ใช่ NULL
คีย์หลัก (RRDKeyID, UnixTimeStamp)
);
และ RRDKeyID ที่เราต้องการสร้างกราฟคือ: 1141942900757789274
ชื่อไฟล์ rrd หลอกเพื่อเข้าถึงสิ่งนี้คือ:
"sql//mysql/host=127.0.0.1/dbname=rrd/username=rrd/password=secret//RRDValue/UnixTimeStamp
/value/RRDKeyID=1141464142203608274"
เพื่อแสดงสิ่งนี้ที่นี่ คำสั่งเพื่อสร้างกราฟที่มีค่าจริง
DS_BASE="sql//mysql/host=127.0.0.1/dbname=rrd/username=rrd/password=passwd//RRDValue/UnixTimeStamp/value/RRDKeyID=1141942900757789274"
rrdtool กราฟ test.png --imgformat=PNG --start=-1day --end=+3hours --width=1000 --height=600 \
"DEF:min=$DS_BASE:นาที:เฉลี่ย" \
"LINE1:นาที#FF0000:ค่า" \
"DEF:avg=$DS_BASE:avg:AVERAGE" \
"LINE1:avg#00FF00:เฉลี่ย" \
"DEF:max=$DS_BASE:สูงสุด:เฉลี่ย" \
"LINE1:max#FF0000:สูงสุด" \
"DEF:sigma=$DS_BASE:sigma:AVERAGE" \
"CDEF:upper=avg,4,sigma,*,+" \
"LINE1:upper#0000FF:+4 ซิกม่า" \
"CDEF:lower=avg,4,sigma,*,-" \
"LINE1:lower#0000FF:-4 ซิกม่า"
หมายเหตุ
* โดยปกติคุณสามารถใช้ไดรเวอร์ประเภทอื่นที่ libdbi รองรับ - เช่น postgres
...
* จากวิธีการเชื่อมที่มาข้อมูล ก็ควรจะทำการ join แบบ over . ได้เช่นกัน
ตารางที่แตกต่างกัน
(แยกตารางด้วย "," ในตารางและเพิ่มใน WHERE Clauses ที่รวมตารางเท่ากับ
นี้ไม่ได้ทดสอบ!!!)
* การเพิ่มลงในฐานข้อมูลโดยใช้แหล่งข้อมูลเดียวกันควรค่อนข้างง่าย
เชือก
นี้ยังไม่ได้ดำเนินการ...
* ฟังก์ชันการรวมจะถูกละเว้นและมีการใช้คอลัมน์ข้อมูลหลายคอลัมน์แทน
เพื่อหลีกเลี่ยงการค้นหา SQL เดียวกันหลายครั้งเมื่อค่าต่ำสุด ค่าเฉลี่ย และค่าสูงสุดคือ
ที่จำเป็นสำหรับกราฟ...
* เพื่อประสิทธิภาพของ DB คุณควรคิดว่ามี 2 ตาราง ตารางหนึ่งมีค่าทางประวัติศาสตร์
และอื่น ๆ ที่มีข้อมูลล่าสุด
ตารางที่สองนี้ควรมีขนาดเล็กเพื่อให้สามารถบล็อกSQL .ได้ในปริมาณที่น้อยที่สุด
งบ
mysql ใดที่คุณสามารถใช้ myisam table-type สำหรับอันแรกและ InnoDB สำหรับอันที่สอง
สิ่งนี้น่าสนใจเป็นพิเศษเช่นเดียวกับตารางที่มี +100M แถว myisam นั้นเล็กกว่ามาก
แล้ว InnoDB
* ในการดีบักคำสั่ง SQL ให้ตั้งค่าตัวแปรสภาพแวดล้อม RRDDEBUGSQL และ SQL . จริง
คำสั่งและเวลาจะถูกพิมพ์ไปที่ stderr
ประสิทธิภาพ ปัญหา สีสดสวย MySQL แบ็กเอนด์
LibDBI มีปัญหาด้านประสิทธิภาพอย่างมากเมื่อคุณดึงข้อมูลจากเซิร์ฟเวอร์ MySQL ประสิทธิภาพ
ผลกระทบเป็นแบบทวีคูณตามจำนวนค่าที่คุณดึงมาจากฐานข้อมูล สำหรับ
ตัวอย่างเช่น จะใช้เวลามากกว่า 2 วินาทีในการสร้างกราฟ 5DS บนข้อมูล 150 ชั่วโมงด้วย a
ความแม่นยำ 5 นาที (เทียบกับ 100ms เมื่อข้อมูลมาจากไฟล์ RRD) ข้อผิดพลาดนี้ได้รับ
แก้ไขใน LibDBI เวอร์ชันล่าสุด (ยังไม่เผยแพร่) ในเวลานั้นคุณจะต้อง
รวบรวม libdbi และ libdbi-drivers จากที่เก็บ CVS เพื่อแก้ไข คุณสามารถหาเพิ่มเติม
ข้อมูลเกี่ยวกับเธรดรายการส่งเมลของผู้ใช้ libdbi นี้:
http://sourceforge.net/mailarchive/message.php?msg_id=30320894
ใช้ rrdgraph_libdbi ออนไลน์โดยใช้บริการ onworks.net