Đây là hướng dẫn lệnh có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi, chẳng hạn như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
rrdtutorial - Hướng dẫn RRDtool của Alex van den Bogaerdt
MÔ TẢ
RRDtool được viết bởi Tobias Oetiker[email được bảo vệ]> với sự đóng góp của nhiều người
vòng quanh thế giới. Tài liệu này được viết bởi Alex van den Bogaerdt
<[email được bảo vệ]> để giúp bạn hiểu RRDtool là gì và nó có thể làm gì
bạn.
Tài liệu được cung cấp với RRDtool có thể quá kỹ thuật đối với một số người. Điều này
hướng dẫn ở đây để giúp bạn hiểu những điều cơ bản về RRDtool. Nó sẽ chuẩn bị cho bạn
tự đọc tài liệu. Nó cũng giải thích những điều chung về thống kê
tập trung vào mạng.
Tutorial
Quan trọng
Xin đừng bỏ qua trong tài liệu này! Phần đầu tiên của tài liệu này giải thích
những điều cơ bản và có thể nhàm chán. Nhưng nếu bạn không hiểu những điều cơ bản, các ví dụ sẽ không
có ý nghĩa đối với bạn.
Đôi khi mọi thứ thay đổi. Ví dụ này được sử dụng để cung cấp các số như "0.04" thay vì
"4.00000e-02". Đó thực sự là những con số giống nhau, chỉ khác nhau được viết ra. Đừng
hãy cảnh giác nếu một phiên bản tương lai của rrdtool hiển thị một dạng đầu ra hơi khác.
Các ví dụ trong tài liệu này đúng với phiên bản 1.2.0 của RRDtool.
Ngoài ra, đôi khi lỗi xảy ra. Chúng cũng có thể ảnh hưởng đến kết quả của các ví dụ.
Ví dụ speed4.png bị lỗi này (xử lý dữ liệu không xác định trong if-
tuyên bố đã sai). Dữ liệu bình thường sẽ ổn (một lỗi trong rrdtool sẽ không tồn tại lâu)
nhưng các trường hợp đặc biệt như NaN, INF, v.v. có thể kéo dài hơn một chút. Hãy thử phiên bản khác nếu
bạn có thể, hoặc chỉ sống với nó.
Tôi đã sửa ví dụ speed4.png (và thêm ghi chú). Có thể có các ví dụ khác
bị giống nhau hoặc một lỗi tương tự. Cố gắng tự mình sửa chữa, đó là một điều tuyệt vời
bài tập. Nhưng vui lòng không gửi kết quả của bạn như một bản sửa lỗi cho nguồn của tài liệu này.
Thảo luận về nó trên danh sách của người dùng, hoặc viết thư cho tôi.
Điều gì is RRDcông cụ?
RRDtool đề cập đến công cụ Cơ sở dữ liệu Round Robin. Đấu vòng tròn là một kỹ thuật hoạt động với
lượng dữ liệu cố định và một con trỏ đến phần tử hiện tại. Hãy nghĩ về một vòng kết nối với một số
dấu chấm được vẽ trên cạnh. Những dấu chấm này là nơi có thể lưu trữ dữ liệu. Vẽ một
mũi tên từ tâm của vòng tròn đến một trong các dấu chấm; đây là con trỏ. Khi mà
dữ liệu hiện tại được đọc hoặc ghi, con trỏ di chuyển đến phần tử tiếp theo. Như chúng ta đang ở trên một
vòng tròn không có bắt đầu cũng không phải kết thúc, bạn có thể tiếp tục và tiếp tục. Sau một
trong khi đó, tất cả các vị trí có sẵn sẽ được sử dụng và quy trình tự động sử dụng lại
các địa điểm. Bằng cách này, tập dữ liệu sẽ không tăng kích thước và do đó không yêu cầu
Sự bảo trì. RRDtool hoạt động với Cơ sở dữ liệu Round Robin (RRDs). Nó lưu trữ và truy xuất
dữ liệu từ chúng.
Điều gì dữ liệu có thể be đặt trong an ĐBSH?
Bạn đặt tên cho nó, nó có thể sẽ phù hợp miễn là nó là một số loại dữ liệu chuỗi thời gian. Điều này
có nghĩa là bạn phải có thể đo lường một số giá trị tại một số thời điểm và cung cấp
thông tin tới RRDtool. Nếu bạn có thể làm điều này, RRDtool sẽ có thể lưu trữ nó. Giá trị
phải là số nhưng không phải là số nguyên, như trường hợp của MRTG (tiếp theo
phần sẽ cung cấp thêm chi tiết về ứng dụng chuyên biệt hơn này).
Nhiều ví dụ dưới đây nói về SNMP là từ viết tắt của Simple Network Management
Giao thức. "Đơn giản" đề cập đến giao thức. Nó không có nghĩa là nó đơn giản để quản lý hoặc
giám sát một mạng. Sau khi làm việc theo cách của bạn thông qua tài liệu này, bạn sẽ biết đủ
có thể hiểu những gì mọi người đang nói về. Hiện tại, chỉ cần nhận ra rằng SNMP có thể
được sử dụng để truy vấn thiết bị về giá trị của bộ đếm mà chúng lưu giữ. Đó là giá trị từ những
bộ đếm mà chúng tôi muốn lưu trữ ở ĐBSH.
Điều gì có thể I do với điều này dụng cụ?
RRDtool có nguồn gốc từ MRTG (Multi Router Traffic Grapher). MRTG bắt đầu chỉ là một chút
kịch bản để vẽ đồ thị việc sử dụng kết nối Internet của một trường đại học. MRTG sau này là
(ab-) được sử dụng như một công cụ để vẽ đồ thị các nguồn dữ liệu khác bao gồm nhiệt độ, tốc độ, điện áp,
số lượng bản in và những thứ tương tự.
Nhiều khả năng bạn sẽ bắt đầu sử dụng RRDtool để lưu trữ và xử lý dữ liệu được thu thập qua SNMP.
Dữ liệu rất có thể sẽ là byte (hoặc bit) được truyền từ và đến mạng hoặc
máy vi tính. Nhưng nó cũng có thể được sử dụng để hiển thị sóng thủy triều, bức xạ mặt trời, năng lượng
tiêu thụ, số lượng khách tham quan triển lãm, mức độ tiếng ồn gần sân bay,
nhiệt độ tại địa điểm nghỉ lễ yêu thích của bạn, nhiệt độ trong tủ lạnh và bất cứ điều gì
trí tưởng tượng có thể nghĩ ra.
Bạn chỉ cần một cảm biến để đo dữ liệu và có thể đưa các con số vào RRDtool.
Sau đó, RRDtool cho phép bạn tạo cơ sở dữ liệu, lưu trữ dữ liệu trong đó, truy xuất dữ liệu đó và tạo
đồ thị ở định dạng PNG để hiển thị trên trình duyệt web. Những hình ảnh PNG đó phụ thuộc vào
dữ liệu bạn đã thu thập và chẳng hạn như có thể là tổng quan về mức sử dụng mạng trung bình,
hoặc các đỉnh đã xảy ra.
Điều gì if I vẫn còn có vấn đề sau khi đọc điều này tài liệu?
Trước hết: hãy đọc lại! Bạn có thể đã bỏ lỡ một cái gì đó. Nếu bạn không thể biên dịch
nguồn và bạn có một hệ điều hành khá phổ biến, nó có thể sẽ không phải là lỗi của RRDtool.
Có thể có các phiên bản được biên dịch trước trên Internet. Nếu họ đến từ đáng tin cậy
nguồn, lấy một trong những nguồn đó.
Mặt khác, nếu chương trình hoạt động nhưng không mang lại cho bạn kết quả như mong đợi, nó sẽ
là một vấn đề với cấu hình nó. Xem lại cấu hình của bạn và so sánh nó với
các ví dụ sau đây.
Có một danh sách gửi thư và một kho lưu trữ của nó. Đọc danh sách trong vài tuần và tìm kiếm
lưu trữ. Việc chỉ đặt một câu hỏi mà không tìm kiếm trong kho lưu trữ được coi là thô lỗ:
vấn đề có thể đã được giải quyết cho người khác! Điều này đúng với hầu hết, nếu không
tất cả, danh sách gửi thư và không chỉ cho danh sách cụ thể này. Tìm trong tài liệu rằng
đi kèm với RRDtool để biết vị trí và cách sử dụng danh sách.
Tôi khuyên bạn nên dành một chút thời gian để đăng ký vào danh sách gửi thư ngay bây giờ bằng cách gửi email
đến[email được bảo vệ]> với chủ đề "đăng ký". Nếu bạn muốn
rời khỏi danh sách này, chỉ cần viết một email đến cùng một địa chỉ nhưng bây giờ với chủ đề
"hủy đăng ký".
Làm thế nào sẽ bạn giúp đỡ tôi?
Bằng cách cung cấp cho bạn một số mô tả chi tiết với các ví dụ chi tiết. Tôi cho rằng sau
các hướng dẫn theo thứ tự được trình bày sẽ cung cấp cho bạn đủ kiến thức về RRDtool để
thử nghiệm cho chính mình. Nếu nó không hiệu quả trong lần đầu tiên, đừng bỏ cuộc. Đọc lại
nội dung mà bạn đã hiểu, bạn có thể đã bỏ lỡ điều gì đó.
Bằng cách làm theo các ví dụ, bạn sẽ có được một số kinh nghiệm thực tế và quan trọng hơn là một số
thông tin cơ bản về cách nó hoạt động.
Bạn sẽ cần biết một số điều về số thập lục phân. Nếu bạn không, hãy bắt đầu với
đọc bin_dec_hex trước khi bạn tiếp tục ở đây.
trên màn hình Thành phố điện khí hóa phía tây dãy núi Rocky đầu tiên Tròn Robin Cơ sở dữ liệu
Theo tôi, cách tốt nhất để học một cái gì đó là thực sự làm nó. Tại sao không bắt đầu đúng
Hiện nay? Chúng tôi sẽ tạo một cơ sở dữ liệu, đặt một số giá trị vào đó và trích xuất dữ liệu này một lần nữa. Của bạn
đầu ra phải giống với đầu ra được bao gồm trong tài liệu này.
Chúng ta sẽ bắt đầu với một số nội dung đơn giản và so sánh xe hơi với bộ định tuyến hoặc so sánh km
(dặm nếu bạn muốn) với bit và byte. Tất cả đều giống nhau: một số con số theo thời gian.
Giả sử chúng ta có một thiết bị chuyển byte đến và đi từ Internet. Thiết bị này giữ
một bộ đếm bắt đầu từ XNUMX khi nó được bật, tăng dần theo mỗi byte
chuyển nhượng. Bộ đếm này có thể sẽ có giá trị lớn nhất. Nếu giá trị này đạt được và
thêm một byte được đếm, bộ đếm bắt đầu lại từ XNUMX. Điều này cũng giống như nhiều
các bộ đếm trên thế giới chẳng hạn như bộ đếm quãng đường trên xe hơi.
Hầu hết các cuộc thảo luận về mạng nói về bit trên giây vì vậy hãy làm quen với điều đó
ngay lập tức. Giả sử một byte là tám bit và bắt đầu nghĩ theo bit chứ không phải byte. Quầy,
tuy nhiên, vẫn đếm byte! Trong thế giới SNMP hầu hết các bộ đếm là 32 bit. Điều đó
nghĩa là chúng đang đếm từ 0 đến 4294967295. Chúng tôi sẽ sử dụng các giá trị này trong các ví dụ.
Khi được hỏi, thiết bị sẽ trả về giá trị hiện tại của bộ đếm. Chúng tôi biết thời gian mà
đã trôi qua kể từ lần cuối chúng tôi hỏi nên giờ chúng tôi biết có bao nhiêu byte đã được chuyển *** vào
*** trung bình mỗi giây. Điều này không phải là rất khó để tính toán. Đầu tiên bằng lời nói, sau đó trong
tính toán:
1. Lấy bộ đếm hiện tại, trừ giá trị trước đó khỏi nó.
2. Làm tương tự với thời gian hiện tại và thời gian trước đó (tính bằng giây).
3. Chia kết quả của (1) cho kết quả của (2), kết quả là số byte mỗi
thứ hai. Nhân với tám để có số bit mỗi giây (bps).
bps = (bộ đếm_hiện tại - bộ đếm_trước) / (thời_điểm_bây giờ - thời_điểm_trước) * 8
Đối với một số người, có thể hữu ích khi chuyển điều này sang một ví dụ về ô tô. Đừng thử cái này
ví dụ, và nếu bạn làm vậy, đừng đổ lỗi cho tôi về kết quả!
Những người không quen nghĩ bằng ki lô mét trên giờ có thể dịch hầu hết thành dặm mỗi giờ
giờ bằng cách chia km cho 1.6 (đủ gần). Tôi sẽ sử dụng các từ viết tắt sau:
m: mét
km: ki-lô-mét (= 1000 mét).
h: giờ
s: giây
km / h: ki lô mét trên giờ
m / s: mét trên giây
Bạn đang lái một chiếc xe hơi. Lúc 12:05, bạn đọc bộ đếm trong bảng điều khiển và nó cho bạn biết
rằng ô tô đã đi được 12345 km tính đến thời điểm đó. Lúc 12:10 bạn nhìn lại, nó đọc
12357 km. Điều này có nghĩa là bạn đã đi được 12 km trong năm phút. Một nhà khoa học sẽ dịch
đó thành mét trên giây và điều này tạo ra một so sánh tốt về vấn đề (byte
mỗi năm phút) so với (bit trên giây).
Chúng tôi đã đi 12 km, tức là 12000 mét. Chúng tôi đã làm điều đó trong năm phút hoặc 300
giây. Tốc độ của chúng tôi là 12000m / 300s hoặc 40m / s.
Chúng ta cũng có thể tính tốc độ theo km / h: 12 lần 5 phút là một giờ, vì vậy chúng ta phải
nhân 12 km với 12 để được 144 km / h. Đối với những người bạn nói tiếng Anh bản ngữ của chúng tôi: đó là 90
mph, vì vậy đừng thử ví dụ này ở nhà hoặc nơi tôi sống :)
Hãy nhớ rằng: những con số này chỉ là giá trị trung bình. Không có cách nào để tìm ra từ
số, nếu bạn lái xe với tốc độ không đổi. Có một ví dụ sau trong hướng dẫn này
điều đó giải thích điều này.
Tôi hy vọng bạn hiểu rằng không có sự khác biệt trong việc tính toán m / s hoặc bps; chỉ con đường
chúng tôi thu thập dữ liệu là khác nhau. Ngay cả k từ kilo cũng giống như trong điều kiện mạng
k cũng có nghĩa là 1000.
Bây giờ chúng tôi sẽ tạo một cơ sở dữ liệu nơi chúng tôi có thể lưu giữ tất cả những con số thú vị này. Phương pháp
được sử dụng để khởi động chương trình có thể hơi khác nhau giữa các hệ điều hành, nhưng tôi cho rằng bạn có thể hình dung
nó ra nếu nó hoạt động khác với của bạn. Đảm bảo rằng bạn không ghi đè lên bất kỳ tệp nào trên
hệ thống khi thực hiện lệnh sau và nhập toàn bộ dòng dưới dạng một dòng dài (I
phải tách nó ra để dễ đọc) và bỏ qua tất cả các ký tự '\'.
rrdtool tạo test.rrd \
- bắt đầu 920804400 \
DS: tốc độ: COUNTER: 600: U: U \
RRA: TRUNG BÌNH: 0.5: 1: 24 \
RRA: TRUNG BÌNH: 0.5: 6: 10
(Vì vậy, hãy nhập: "rrdtool create test.rrd --start 920804400 DS ...")
Điều gì có được tạo?
Chúng tôi đã tạo cơ sở dữ liệu vòng tròn có tên là test (test.rrd) bắt đầu vào trưa ngày tôi
bắt đầu viết tài liệu này, ngày 7 tháng 1999 năm 920804400 (ngày này chuyển thành XNUMX
giây như giải thích bên dưới). Cơ sở dữ liệu của chúng tôi chứa một nguồn dữ liệu (DS) có tên là "tốc độ"
đại diện cho một bộ đếm. Bộ đếm này được đọc năm phút một lần (đây là giá trị mặc định
do đó bạn không cần phải đặt "--step = 300"). Trong cùng một cơ sở dữ liệu, hai hiệp đấu
các kho lưu trữ (RRA) được lưu giữ, một dữ liệu tính trung bình mỗi khi nó được đọc (ví dụ: có
không có gì để trung bình) và giữ 24 mẫu (24 lần 5 phút là 2 giờ). Cai khac
trung bình 6 giá trị (nửa giờ) và chứa 10 giá trị trung bình như vậy (ví dụ: 5 giờ).
RRDtool hoạt động với các tem thời gian đặc biệt đến từ thế giới UNIX. Dấu thời gian này là
số giây đã trôi qua kể từ ngày 1 tháng 1970 năm XNUMX theo giờ UTC. Giá trị tem thời gian là
được dịch sang giờ địa phương và do đó nó sẽ trông khác nhau đối với các múi giờ khác nhau.
Rất có thể bạn không ở cùng thế giới với tôi. Điều này có nghĩa là thời gian của bạn
khu là khác nhau. Trong tất cả các ví dụ mà tôi nói về thời gian, giờ có thể sai đối với
bạn. Điều này ít ảnh hưởng đến kết quả của các ví dụ, chỉ cần sửa giờ trong khi
đọc hiểu. Ví dụ: nơi tôi sẽ thấy "12:05" thì người Anh sẽ thấy "11:05".
Bây giờ chúng tôi phải điền vào cơ sở dữ liệu của chúng tôi với một số con số. Chúng tôi sẽ giả vờ đã đọc
số sau:
12:05 12345 km
12:10 12357 km
12:15 12363 km
12:20 12363 km
12:25 12363 km
12:30 12373 km
12:35 12383 km
12:40 12393 km
12:45 12399 km
12:50 12405 km
12:55 12411 km
13:00 12415 km
13:05 12420 km
13:10 12422 km
13:15 12423 km
Chúng tôi điền vào cơ sở dữ liệu như sau:
cập nhật rrdtool test.rrd 920804700: 12345 920805000: 12357 920805300: 12363
cập nhật rrdtool test.rrd 920805600: 12363 920805900: 12363 920806200: 12373
cập nhật rrdtool test.rrd 920806500: 12383 920806800: 12393 920807100: 12399
cập nhật rrdtool test.rrd 920807400: 12405 920807700: 12411 920808000: 12415
cập nhật rrdtool test.rrd 920808300: 12420 920808600: 12422 920808900: 12423
Điều này đọc: cập nhật cơ sở dữ liệu thử nghiệm của chúng tôi với các số sau
thời gian 920804700, giá trị 12345
thời gian 920805000, giá trị 12357
vân vân.
Như bạn thấy, có thể cung cấp nhiều hơn một giá trị vào cơ sở dữ liệu trong một
yêu cầu. Tôi đã phải dừng lại ở mức ba để có thể đọc được nhưng tối đa thực sự trên mỗi dòng là Hệ điều hành
phụ thuộc.
Bây giờ chúng tôi có thể truy xuất dữ liệu từ cơ sở dữ liệu của mình bằng cách sử dụng "rrdtool fetch":
rrdtool tìm nạp kiểm tra. rrd AVERAGE - bắt đầu 920804400 - gửi 920809200
Nó sẽ trả về kết quả sau:
tốc độ
920804700: nan
920805000: 4.0000000000e-02
920805300: 2.0000000000e-02
920805600: 0.0000000000e + 00
920805900: 0.0000000000e + 00
920806200: 3.3333333333e-02
920806500: 3.3333333333e-02
920806800: 3.3333333333e-02
920807100: 2.0000000000e-02
920807400: 2.0000000000e-02
920807700: 2.0000000000e-02
920808000: 1.3333333333e-02
920808300: 1.6666666667e-02
920808600: 6.6666666667e-03
920808900: 3.3333333333e-03
920809200: nan
920809500: nan
Lưu ý rằng bạn có thể nhận được nhiều hàng hơn bạn mong đợi. Lý do cho điều này là bạn yêu cầu
khoảng thời gian kết thúc vào 920809200. Số được viết sau 920809200: trong
danh sách trên bao gồm phạm vi thời gian từ 920808900 đến 920809200, NGOẠI TRỪ 920809200. Do đó
để chắc chắn, bạn cũng nhận được mục nhập từ 920809200 đến 920809500 vì nó
BAO GỒM 920809200. Bạn cũng có thể thấy "NaN" thay vì "nan", đây là hệ điều hành phụ thuộc. "Không"
là viết tắt của "Not A Number". Nếu hệ điều hành của bạn viết "U" hoặc "UNKN" hoặc một cái gì đó tương tự thì đó là
Được chứ. Nếu có điều gì đó không ổn, có thể do lỗi bạn đã thực hiện (giả sử
rằng hướng dẫn của tôi là đúng tất nhiên :-). Trong trường hợp đó: xóa cơ sở dữ liệu và thử
một lần nữa.
Ý nghĩa của kết quả trên sẽ trở nên rõ ràng dưới đây.
Thời gian đến tạo một số đồ họa
Hãy thử lệnh sau:
rrdtool đồ thị speed.png \
- bắt đầu 920804400 - kết thúc 920808000 \
DEF: myspeed = test.rrd: speed: AVERAGE \
LINE2: myspeed # FF0000
Điều này sẽ tạo ra speed.png bắt đầu lúc 12:00 và kết thúc lúc 13:00. Có một định nghĩa
của một biến có tên là myspeed, sử dụng dữ liệu từ RRA "speed" trong cơ sở dữ liệu "test.rrd".
Đường được vẽ có chiều cao 2 pixel và đại diện cho biến huyền bí. Màu đỏ
(được chỉ định bởi biểu diễn rgb của nó, xem bên dưới).
Bạn sẽ nhận thấy rằng điểm bắt đầu của biểu đồ không phải lúc 12:00 mà là lúc 12:05. Điều này là bởi vì
chúng tôi không có đủ dữ liệu để cho biết mức trung bình trước thời điểm đó. Điều này sẽ chỉ xảy ra khi
bạn bỏ lỡ một số mẫu, điều này sẽ không xảy ra nhiều, hy vọng.
Nếu điều này đã hiệu quả: xin chúc mừng! Nếu không, hãy kiểm tra những gì đã xảy ra.
Màu sắc được xây dựng từ đỏ, xanh lá cây và xanh lam. Đối với mỗi thành phần, bạn chỉ định
bao nhiêu để sử dụng trong hệ thập lục phân trong đó 00 có nghĩa là không được bao gồm và FF có nghĩa là được bao gồm đầy đủ.
"Màu" trắng là sự pha trộn của đỏ, lục và lam: FFFFFF "Màu" đen là tất cả
màu tắt: 000000
đỏ # FF0000
xanh lá cây # 00FF00
xanh lam # 0000FF
màu đỏ tươi # FF00FF (pha đỏ với xanh lam)
màu xám # 555555 (một phần ba của tất cả các thành phần)
Ngoài ra, bạn có thể (với RRDtool gần đây) thêm một kênh alpha (độ trong suốt). Các
mặc định sẽ là "FF" có nghĩa là không minh bạch.
PNG bạn vừa tạo có thể được hiển thị bằng trình xem hình ảnh yêu thích của bạn. Trình duyệt web
sẽ hiển thị PNG qua URL "tệp: ///the/path/to/speed.png"
Đồ họa với một số toán học
Khi nhìn vào hình ảnh, bạn nhận thấy rằng trục hoành có nhãn 12:10, 12:20,
12:30, 12:40 và 12:50. Đôi khi nhãn không phù hợp (có thể là 12:00 và 13:00
ứng cử viên) vì vậy họ bị bỏ qua.
Trục tung hiển thị phạm vi chúng ta đã nhập. Chúng tôi đã cung cấp km và khi phân chia
300 giây, chúng tôi nhận được những con số rất nhỏ. Chính xác thì giá trị đầu tiên là 12
(12357-12345) và chia cho 300 được 0.04, được RRDtool hiển thị là "40 m"
nghĩa là "40/1000". Chữ "m" (milli) không liên quan gì đến mét (cũng là m), km hoặc
milimét! RRDtool không biết về các đơn vị vật lý trong dữ liệu của chúng tôi, nó chỉ hoạt động với
số không thứ nguyên.
Nếu chúng tôi đo khoảng cách bằng mét, thì giá trị này sẽ là (12357000-12345000) / 300 =
12000 / 300 = 40.
Vì hầu hết mọi người có cảm giác tốt hơn với các con số trong phạm vi này, chúng tôi sẽ sửa điều đó. Chúng ta có thể
tạo lại cơ sở dữ liệu của chúng tôi và lưu trữ dữ liệu chính xác, nhưng có một cách tốt hơn: chúng tôi thực hiện một số
tính toán trong khi tạo tệp png!
rrdtool đồ thị speed2.png \
- bắt đầu 920804400 - kết thúc 920808000 \
- nhãn dọc m / s \
DEF: myspeed = test.rrd: speed: AVERAGE \
CDEF: realspeed = myspeed, 1000, \ * \
LINE2: realspeed # FF0000
Lưu ý: Tôi cần thoát khỏi toán tử nhân * bằng dấu gạch chéo ngược. Nếu tôi không,
hệ điều hành có thể giải thích nó và sử dụng nó để mở rộng tên tệp. Bạn cũng có thể đặt
dòng trong dấu ngoặc kép như sau:
"CDEF: realspeed = myspeed, 1000, *" \
Nó kết thúc thành: nó là RRDtool sẽ nhìn thấy *, không phải shell của bạn. Và nó là cái vỏ của bạn
thông dịch \, không phải RRDtool. Bạn có thể cần phải điều chỉnh các ví dụ cho phù hợp nếu bạn tình cờ
sử dụng hệ điều hành hoặc trình bao hoạt động khác.
Sau khi xem PNG này, bạn nhận thấy "m" (milli) đã biến mất. Cái này nó cái gì
kết quả chính xác sẽ là. Ngoài ra, một nhãn đã được thêm vào hình ảnh. Ngoài những thứ
đã đề cập ở trên, PNG sẽ trông giống nhau.
Các phép tính được chỉ định trong phần CDEF ở trên và ở trong Ký hiệu đánh bóng ngược
("RPN"). Những gì chúng tôi yêu cầu RRDtool làm là: "lấy mã nguồn dữ liệu và số
1000; nhân chúng lên ". Đừng bận tâm đến RPN, nó sẽ được giải thích ở phần sau
chi tiết. Ngoài ra, bạn có thể muốn đọc hướng dẫn của tôi về CDEF và hướng dẫn của Steve Rader về RPN.
Nhưng trước tiên hãy kết thúc hướng dẫn này.
Treo lên! Nếu chúng ta có thể nhân các giá trị với 1000, thì nó cũng có thể hiển thị
ki lô mét mỗi giờ từ cùng một dữ liệu!
Để thay đổi một giá trị được đo bằng mét trên giây:
Tính mét trên giờ: giá trị * 3600
Tính ki lô mét trên giờ: giá trị / 1000
Điều này kết hợp với nhau tạo nên: giá trị * (3600/1000) hoặc giá trị * 3.6
Trong cơ sở dữ liệu mẫu của chúng tôi, chúng tôi đã mắc lỗi và chúng tôi cần phải đền bù điều này bằng cách
nhân với 1000. Áp dụng cách sửa đó:
giá trị * 3.6 * 1000 == giá trị * 3600
Bây giờ hãy tạo PNG này và thêm một số phép thuật khác ...
rrdtool đồ thị speed3.png \
- bắt đầu 920804400 - kết thúc 920808000 \
- nhãn dọc km / h \
DEF: myspeed = test.rrd: speed: AVERAGE \
"CDEF: kmh = myspeed, 3600, *" \
CDEF: nhanh = kmh, 100, GT, kmh, 0, IF \
CDEF: tốt = kmh, 100, GT, 0, kmh, IF \
HRULE: 100 # 0000FF: "Cho phép tối đa" \
VÙNG: tốt # 00FF00: "Tốc độ tốt" \
VÙNG: nhanh # FF0000: "Quá nhanh"
Lưu ý: ở đây chúng tôi sử dụng một phương tiện khác để thoát khỏi toán tử * bằng cách đặt toàn bộ chuỗi trong
dấu ngoặc kép.
Đồ thị này trông đẹp hơn nhiều. Tốc độ được hiển thị bằng km / h và thậm chí có một dòng phụ với
tốc độ tối đa cho phép (trên đoạn đường tôi đi). Tôi cũng đã thay đổi các màu được sử dụng để
hiển thị tốc độ và thay đổi nó từ một dòng thành một khu vực.
Các tính toán phức tạp hơn bây giờ. Đối với các phép đo tốc độ trong giới hạn tốc độ, chúng
là:
Kiểm tra xem kmh có lớn hơn 100 (kmh, 100) GT không
Nếu vậy, trả về 0, khác kmh (((kmh, 100) GT), 0, kmh) IF
Đối với các giá trị trên giới hạn tốc độ:
Kiểm tra xem kmh có lớn hơn 100 (kmh, 100) GT không
Nếu vậy, trả về kmh, nếu không, trả về 0 (((kmh, 100) GT), kmh, 0) IF
Đồ họa ma thuật
Tôi muốn tin rằng hầu như không có giới hạn nào đối với cách đồ thị RRDtool có thể thao túng dữ liệu.
Tôi sẽ không giải thích cách nó hoạt động, nhưng hãy xem PNG sau:
rrdtool đồ thị speed4.png \
- bắt đầu 920804400 - kết thúc 920808000 \
- nhãn dọc km / h \
DEF: myspeed = test.rrd: speed: AVERAGE \
CDEF: nonans = myspeed, UN, 0, myspeed, IF \
CDEF: kmh = nonans, 3600, * \
CDEF: nhanh = kmh, 100, GT, 100,0, IF \
CDEF: over = kmh, 100, GT, kmh, 100, -, 0, IF \
CDEF: tốt = kmh, 100, GT, 0, kmh, IF \
HRULE: 100 # 0000FF: "Cho phép tối đa" \
VÙNG: tốt # 00FF00: "Tốc độ tốt" \
VÙNG: nhanh # 550000: "Quá nhanh" \
STACK: trên # FF0000: "Quá tốc độ"
Ghi chú trong đầu? Tôi đã phải xóa dữ liệu không xác định khỏi ví dụ này. Các
CDEF 'nonans' là mới và dòng thứ 6 (từng là dòng thứ 5) được sử dụng để đọc
'CDEF: kmh = myspeed, 3600, *'
Hãy tạo một trang HTML nhanh và bẩn để xem ba PNG:
Tốc độ, vận tốc
Đặt tên tệp là "speed.html" hoặc tương tự và xem nó trong trình duyệt web của bạn.
Bây giờ, tất cả những gì bạn phải làm là đo lường các giá trị thường xuyên và cập nhật cơ sở dữ liệu. Khi bạn
muốn xem dữ liệu, tạo lại các PNG và đảm bảo làm mới chúng trong trình duyệt của bạn.
(Lưu ý: chỉ nhấp vào tải lại có thể là không đủ, đặc biệt khi có liên quan đến proxy. Hãy thử
shift-reload hoặc ctrl-F5).
Cập nhật in Reality
Chúng tôi đã sử dụng lệnh "update": nó cần một hoặc nhiều tham số ở dạng
" : ". Bạn sẽ rất vui khi biết rằng bạn có thể chỉ định thời gian hiện tại bằng cách điền vào
trong một "N" là thời gian. Hoặc bạn có thể sử dụng hàm "thời gian" trong Perl (ví dụ ngắn nhất
trong hướng dẫn này):
perl -e 'thời gian in, "\ n"'
Cách chạy chương trình định kỳ là cách dành riêng cho hệ điều hành. Nhưng đây là một ví dụ trong giả
mã:
- Nhận giá trị và đặt nó vào biến "$ speed"
- tốc độ cập nhật rrdtool. rrd N: $ tốc độ
(không thử điều này với cơ sở dữ liệu thử nghiệm của chúng tôi, chúng tôi sẽ sử dụng nó trong các ví dụ khác)
Đây là tất cả. Chạy tập lệnh trên cứ sau năm phút. Khi bạn cần biết những gì
đồ thị như thế nào, hãy chạy các ví dụ trên. Bạn cũng có thể đặt chúng trong một kịch bản. Sau
đang chạy tập lệnh đó, hãy xem trang index.html mà chúng tôi đã tạo ở trên.
Một số từ on SNMP
Tôi có thể tưởng tượng rất ít người có thể lấy dữ liệu thực tế từ ô tô của họ cứ sau năm
phút. Tất cả những người khác sẽ phải giải quyết cho một số loại quầy khác. Bạn có thể
đo số lượng trang được in bằng máy in, ví dụ: tách cà phê được pha bằng
máy pha cà phê, một thiết bị đếm lượng điện đã sử dụng, bất cứ thứ gì. Bất kỳ gia tăng nào
bộ đếm có thể được theo dõi và vẽ biểu đồ bằng những thứ bạn đã học được cho đến nay. Sau này chúng tôi sẽ
cũng có thể theo dõi các loại giá trị khác như nhiệt độ.
Nhiều người quan tâm đến RRDtool sẽ sử dụng bộ đếm theo dõi các octet (byte)
được chuyển bởi một thiết bị mạng. Vì vậy, chúng ta hãy làm điều đó tiếp theo. Chúng tôi sẽ bắt đầu với một
mô tả về cách thu thập dữ liệu.
Một số người sẽ nhận xét rằng có những công cụ có thể thực hiện việc thu thập dữ liệu này cho
bạn. Họ đúng! Tuy nhiên, tôi cảm thấy điều quan trọng là bạn phải hiểu rằng họ không
cần thiết. Khi bạn phải xác định lý do tại sao mọi thứ lại sai, bạn cần biết chúng như thế nào
làm việc.
Một công cụ được sử dụng trong ví dụ này đã được nói đến rất ngắn gọn trong phần đầu của bài viết này
tài liệu, nó được gọi là SNMP. Đó là một cách nói chuyện với thiết bị nối mạng. Công cụ tôi sử dụng
bên dưới được gọi là "snmpget" và đây là cách nó hoạt động:
mật khẩu thiết bị snmpget OID
or
snmpget -v [phiên bản] -c [mật khẩu] OID thiết bị
Đối với thiết bị, bạn thay thế tên hoặc địa chỉ IP của thiết bị của mình. Cho mật khẩu bạn
sử dụng "chuỗi đọc cộng đồng" như nó được gọi trong thế giới SNMP. Đối với một số thiết bị,
mặc định là "công khai" có thể hoạt động, tuy nhiên, điều này có thể bị vô hiệu hóa, thay đổi hoặc bảo vệ cho
lý do riêng tư và bảo mật. Đọc tài liệu đi kèm với thiết bị của bạn hoặc
chương trình.
Sau đó, có tham số này, được gọi là OID, có nghĩa là "định danh đối tượng".
Khi bạn bắt đầu tìm hiểu về SNMP, bạn sẽ thấy rất khó hiểu. Nó không phải là tất cả khó khăn
khi bạn nhìn vào Cơ sở Thông tin Quản lý ("MIB"). Nó là một cái cây lộn ngược
mô tả dữ liệu, với một nút duy nhất làm gốc và từ đó có một số nhánh. Này
các nhánh kết thúc ở một nút khác, chúng phân nhánh ra, v.v. Tất cả các nhánh đều có tên và
chúng tạo thành con đường mà chúng ta đi theo suốt chặng đường dài. Các nhánh mà chúng tôi theo dõi là
có tên: iso, org, dod, internet, mgmt và mib-2. Những tên này cũng có thể được viết ra dưới dạng
số và là 1 3 6 1 2 1.
iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)
Có rất nhiều sự nhầm lẫn về dấu chấm hàng đầu mà một số chương trình sử dụng. Không có*
dấu chấm đầu tiên trong OID. Tuy nhiên, một số chương trình có thể sử dụng phần trên của OID như một
vỡ nợ. Để chỉ ra sự khác biệt giữa OID viết tắt và OID đầy đủ, họ cần
dấu chấm đầu tiên khi bạn chỉ định OID hoàn chỉnh. Thường thì những chương trình đó sẽ loại bỏ
phần mặc định khi trả lại dữ liệu cho bạn. Để làm cho mọi thứ tồi tệ hơn, họ có một số
tiền tố mặc định ...
Ok, chúng ta hãy tiếp tục bắt đầu OID của chúng tôi: chúng tôi đã có 1.3.6.1.2.1 Từ đó, chúng tôi
đặc biệt quan tâm đến nhánh "giao diện" có số 2 (ví dụ: 1.3.6.1.2.1.2
hoặc 1.3.6.1.2.1.interfaces).
Đầu tiên, chúng ta phải tải một số chương trình SNMP. Đầu tiên, hãy xem liệu có một gói được biên dịch trước hay không
có sẵn cho hệ điều hành của bạn. Đây là cách ưa thích. Nếu không, bạn sẽ phải lấy
nguồn của chính mình và biên dịch những. Internet có đầy đủ các nguồn, chương trình, v.v. Tìm
thông tin bằng cách sử dụng công cụ tìm kiếm hoặc bất cứ điều gì bạn thích.
Giả sử bạn có chương trình. Trước tiên, hãy cố gắng thu thập một số dữ liệu có sẵn trên hầu hết các
các hệ thống. Hãy nhớ rằng: có một tên viết tắt của bộ phận của cây mà chúng ta quan tâm nhất
trong thế giới chúng ta đang sống!
Tôi sẽ đưa ra một ví dụ có thể được sử dụng trên Fedora Core 3. Nếu nó không phù hợp với bạn,
làm việc theo cách của bạn thông qua hướng dẫn sử dụng snmp và điều chỉnh ví dụ để làm cho nó hoạt động.
snmpget -v2c -c public myrouter system.sysDescr.0
Thiết bị sẽ trả lời với mô tả về chính nó, có lẽ là một mô tả trống. Cho đến khi bạn có
một câu trả lời hợp lệ từ một thiết bị, có thể sử dụng "mật khẩu" khác hoặc một thiết bị khác,
không có ích gì khi tiếp tục.
snmpget -v2c -c public myrouter interface.ifNumber.0
Hy vọng rằng bạn nhận được một con số như một kết quả, số lượng giao diện. Nếu vậy, bạn có thể tiếp tục
và thử một chương trình khác có tên "snmpwalk".
snmpwalk -v2c -c public myrouter interface.ifTable.ifEntry.ifDescr
Nếu nó trả về với một danh sách các giao diện, bạn sắp hoàn tất. Đây là một ví dụ:
[user @ host / home / alex] $ snmpwalk -v2c -c public cisco 2.2.1.2
interface.ifTable.ifEntry.ifDescr.1 = "BRI0: B-Kênh 1"
interface.ifTable.ifEntry.ifDescr.2 = "BRI0: B-Kênh 2"
Interface.ifTable.ifEntry.ifDescr.3 = "BRI0" Hệ số: 42 52 49 30
interface.ifTable.ifEntry.ifDescr.4 = "Ethernet0"
interface.ifTable.ifEntry.ifDescr.5 = "Loopback0"
Trên thiết bị cisco này, tôi muốn giám sát giao diện "Ethernet0" và từ
đầu ra ở trên tôi thấy rằng nó là số bốn. Tôi thử:
[user @ host / home / alex] $ snmpget -v2c -c public cisco 2.2.1.10.4 2.2.1.16.4
interface.ifTable.ifEntry.ifInOctets.4 = 2290729126
interface.ifTable.ifEntry.ifOutOctets.4 = 1256486519
Vì vậy, bây giờ tôi có hai OID để theo dõi và chúng (đầy đủ, lần này):
1.3.6.1.2.1.2.2.1.10
và
1.3.6.1.2.1.2.2.1.16
cả hai đều có số giao diện là 4.
Đừng để bị lừa, đây không phải là lần thử đầu tiên của tôi. Tôi cũng mất một thời gian để hiểu
tất cả những con số này có nghĩa là gì. Nó sẽ giúp ích rất nhiều khi chúng được dịch sang mô tả
văn bản ... Ít nhất, khi mọi người đang nói về MIB và OID, bạn biết tất cả
Về. Đừng quên số giao diện (0 nếu nó không phụ thuộc vào giao diện) và thử
snmpwalk nếu bạn không nhận được câu trả lời từ snmpget.
Nếu bạn hiểu phần trên và nhận được số từ thiết bị của mình, hãy tiếp tục với
hướng dẫn này. Nếu không, hãy quay lại và đọc lại phần này.
A Thực Thế giới Ví dụ
Hãy để niềm vui bắt đầu. Đầu tiên, tạo một cơ sở dữ liệu mới. Nó chứa dữ liệu từ hai bộ đếm,
được gọi là đầu vào và đầu ra. Dữ liệu được đưa vào kho lưu trữ trung bình nó. Họ lấy 1, 6, 24
hoặc 288 mẫu cùng một lúc. Họ cũng đi vào kho lưu trữ giữ số lượng tối đa. Điều này
sẽ được giải thích ở phần sau. Thời gian giữa các mẫu là 300 giây, một khởi đầu tốt
điểm, tương đương với năm phút.
1 mẫu "được tính trung bình" ở trong 1 khoảng thời gian 5 phút
6 mẫu được lấy trung bình trở thành một mẫu trung bình trong 30 phút
24 mẫu được lấy trung bình trở thành một mẫu trung bình trong 2 giờ
288 mẫu được lấy trung bình trở thành một mẫu trung bình trong 1 ngày
Hãy thử tương thích với MRTG lưu trữ lượng dữ liệu sau:
600 mẫu 5 phút: 2 ngày và 2 giờ
600 mẫu 30 phút: 12.5 ngày
600 mẫu 2 giờ: 50 ngày
732 mẫu 1 ngày: 732 ngày
Các phạm vi này được nối thêm, do đó, tổng lượng dữ liệu được lưu trữ trong cơ sở dữ liệu là
khoảng 797 ngày. RRDtool lưu trữ dữ liệu theo cách khác, nó không bắt đầu "hàng tuần"
lưu trữ nơi lưu trữ "hàng ngày" dừng lại. Đối với cả hai kho lưu trữ, dữ liệu gần đây nhất sẽ là
gần "bây giờ" và do đó chúng tôi sẽ cần lưu giữ nhiều dữ liệu hơn MRTG!
Chúng ta sẽ cần:
600 mẫu 5 phút (2 ngày và 2 giờ)
700 mẫu 30 phút (2 ngày và 2 giờ, cộng thêm 12.5 ngày)
775 mẫu trong 2 giờ (trên + 50 ngày)
797 mẫu của 1 ngày (trên + 732 ngày, làm tròn lên 797)
rrdtool tạo myrouter.rrd \
DS: đầu vào: COUNTER: 600: U: U \
DS: đầu ra: COUNTER: 600: U: U \
RRA: TRUNG BÌNH: 0.5: 1: 600 \
RRA: TRUNG BÌNH: 0.5: 6: 700 \
RRA: TRUNG BÌNH: 0.5: 24: 775 \
RRA: TRUNG BÌNH: 0.5: 288: 797 \
RRA: TỐI ĐA: 0.5: 1: 600 \
RRA: TỐI ĐA: 0.5: 6: 700 \
RRA: TỐI ĐA: 0.5: 24: 775 \
RRA: TỐI ĐA: 0.5: 288: 797
Việc tiếp theo cần làm là thu thập dữ liệu và lưu trữ nó. Đây là một ví dụ. Nó được viết
một phần trong mã giả, bạn sẽ phải tìm ra những việc cần làm chính xác trên hệ điều hành của mình để thực hiện
nó hoạt động.
trong khi không phải là sự kết thúc của vũ trụ
do
nhận được kết quả của
cộng đồng bộ định tuyến snmpget 2.2.1.10.4
thành biến $ in
nhận được kết quả của
cộng đồng bộ định tuyến snmpget 2.2.1.16.4
thành biến $ out
cập nhật rrdtool myrouter.rrd N: $ in: $ out
đợi trong 5 phút
thực hiện
Sau đó, sau khi thu thập dữ liệu trong một ngày, hãy cố gắng tạo một hình ảnh bằng cách sử dụng:
đồ thị rrdtool myrouter-day.png --start -86400 \
DEF: inoctets = myrouter.rrd: input: AVERAGE \
DEF: outoctets = myrouter.rrd: output: AVERAGE \
VÙNG: inoctets # 00FF00: "Đang tắc đường" \
LINE1: outoctets # 0000FF: "Không lưu thông"
Điều này sẽ tạo ra một bức tranh có giá trị lưu lượng truy cập trong một ngày. Một ngày là 24 giờ của 60
phút 60 giây: 24 * 60 * 60 = 86400, chúng tôi bắt đầu bây giờ trừ đi 86400 giây. Chúng tôi xác định
(với DEF) inoctets và outoctets dưới dạng giá trị trung bình từ cơ sở dữ liệu myrouter.rrd
và vẽ một khu vực cho lưu lượng "vào" và một đường cho lưu lượng "ra".
Xem hình ảnh và tiếp tục ghi dữ liệu trong vài ngày nữa. Nếu bạn thích, bạn có thể thử
ví dụ từ cơ sở dữ liệu thử nghiệm và xem liệu bạn có thể nhận được các tùy chọn và tính toán khác nhau để
làm việc.
Đề xuất: Hiển thị theo byte trên giây và theo bit trên giây. Tạo đồ họa Ethernet
chuyển sang màu đỏ nếu chúng trên bốn megabit / giây.
Gom hàng Chức năng
Một vài đoạn trở lại tôi đã đề cập đến khả năng giữ các giá trị tối đa thay vì
các giá trị trung bình. Hãy đi sâu vào vấn đề này một chút.
Nhớ lại tất cả những thứ về tốc độ của ô tô. Giả sử chúng ta đã lái xe với tốc độ 144 km / h trong thời gian 5
phút và sau đó bị cảnh sát chặn lại trong 25 phút. Vào cuối bài giảng, chúng tôi
sẽ lấy máy tính xách tay của chúng tôi và tạo và xem hình ảnh được lấy từ cơ sở dữ liệu. Nếu chúng ta nhìn vào
RRA thứ hai mà chúng tôi đã tạo, chúng tôi sẽ có giá trị trung bình từ 6 mẫu. Các mẫu
được đo sẽ là 144 + 0 + 0 + 0 + 0 + 0 = 144, chia cho 30 phút, được sửa lỗi bằng
1000, được chuyển thành km / h, với kết quả là 24 km / h. Tôi vẫn sẽ nhận được một vé nhưng không
để tăng tốc nữa :)
Rõ ràng, trong trường hợp này, chúng ta không nên nhìn vào số liệu trung bình. Trong một số trường hợp, chúng rất tiện dụng.
Nếu bạn muốn biết mình đã đi được bao nhiêu km, hình ảnh trung bình sẽ là bên phải
một cái để xem xét. Mặt khác, đối với tốc độ mà chúng tôi đã di chuyển, các con số tối đa
thấy thú vị hơn nhiều. Sau này chúng ta sẽ xem nhiều loại hơn.
Đối với dữ liệu cũng vậy. Nếu bạn muốn biết số tiền, hãy nhìn vào số liệu trung bình. Nếu bạn muốn
để biết tỷ lệ, hãy nhìn vào mức tối đa. Theo thời gian, chúng sẽ ngày càng xa nhau hơn. Trong
cơ sở dữ liệu cuối cùng mà chúng tôi đã tạo, có hai kho lưu trữ giữ dữ liệu mỗi ngày. Các
kho lưu trữ giữ mức trung bình sẽ hiển thị số lượng thấp, kho lưu trữ hiển thị mức tối đa sẽ có
số cao hơn.
Đối với ô tô của tôi, mức trung bình mỗi ngày là 96/24 = 4 km / h (khi tôi đi khoảng 94
km vào một ngày) trong ngày làm việc và tối đa là 120 km / h (tốc độ tối đa của tôi mà tôi
đạt được mỗi ngày).
Sự khác biệt lớn. Đừng nhìn vào biểu đồ thứ hai để ước tính quãng đường tôi đã đi
và không nhìn vào biểu đồ đầu tiên để ước tính tốc độ của tôi. Điều này sẽ hoạt động nếu các mẫu
gần nhau, như chúng là trong năm phút, nhưng không phải nếu bạn trung bình.
Vào một số ngày, tôi đi một chuyến xe dài. Nếu tôi đi khắp châu Âu và đi du lịch trong 12 giờ,
đồ thị đầu tiên sẽ tăng lên khoảng 60 km / h. Chiếc thứ hai sẽ hiển thị 180 km / h. Điều này có nghĩa rằng
Tôi đi quãng đường 60 km / h hết 24 h = 1440 km. Tôi đã làm điều này với tốc độ cao hơn và
tối đa khoảng 180 km / h. Tuy nhiên, nó có lẽ không có nghĩa là tôi đã đi trong 8 giờ
với tốc độ không đổi 180 km / h!
Đây là một ví dụ thực tế: đi với dòng chảy qua Đức (nhanh!) Và dừng lại một vài lần để
gas và cà phê. Lái xe chậm qua Áo và Hà Lan. Hãy cẩn thận trong
núi và làng mạc. Nếu bạn nhìn vào các biểu đồ được tạo từ năm phút
trung bình bạn sẽ nhận được một bức tranh hoàn toàn khác. Bạn sẽ thấy các giá trị tương tự trên
đồ thị trung bình và tối đa (với điều kiện tôi đo mỗi 300 giây). Bạn sẽ có thể
xem khi nào tôi dừng lại, khi tôi đang ở số cao nhất, khi tôi lái xe qua đường cao tốc nhanh, v.v.
mức độ chi tiết của dữ liệu cao hơn nhiều, vì vậy bạn có thể xem thêm. Tuy nhiên, điều này mất 12
mẫu mỗi giờ hoặc 288 giá trị mỗi ngày, vì vậy, đó sẽ là rất nhiều dữ liệu trong một khoảng thời gian dài hơn
của thời gian. Do đó, chúng tôi tính trung bình nó, cuối cùng là một giá trị mỗi ngày. Từ một giá trị này, chúng tôi
tất nhiên không thể nhìn thấy nhiều chi tiết.
Đảm bảo rằng bạn hiểu vài đoạn cuối. Không có giá trị chỉ trong một dòng và một
ít trục, bạn cần biết ý nghĩa của chúng và diễn giải dữ liệu theo cách thích hợp.
Điều này đúng cho tất cả các dữ liệu.
Sai lầm lớn nhất mà bạn có thể mắc phải là sử dụng dữ liệu thu thập được cho những thứ mà nó không phải là
phù hợp với. Bạn sẽ tốt hơn nếu bạn không có biểu đồ nào cả.
Hãy xem xét gì bạn tại nên Biết
Bạn biết cách tạo cơ sở dữ liệu và có thể đưa dữ liệu vào đó. Bạn có thể lấy các con số ra
một lần nữa bằng cách tạo một hình ảnh, làm toán trên dữ liệu từ cơ sở dữ liệu và xem kết quả
thay vì dữ liệu thô. Bạn biết về sự khác biệt giữa mức trung bình và mức tối đa, và
khi nào thì sử dụng cái nào (hoặc ít nhất bạn nên có ý tưởng).
RRDtool có thể làm được nhiều hơn những gì chúng ta đã học được cho đến thời điểm hiện tại. Trước khi bạn tiếp tục với phần còn lại
của tài liệu này, tôi khuyên bạn nên đọc lại từ đầu và thử một số sửa đổi trên
các ví dụ. Hãy chắc chắn rằng bạn hiểu đầy đủ mọi thứ. Nó sẽ đáng để nỗ lực và giúp đỡ
bạn không chỉ với phần còn lại của hướng dẫn này mà còn trong quá trình theo dõi hàng ngày của bạn
sau khi bạn đọc phần giới thiệu này.
Ngày nguồn Các loại
Được rồi, bạn cảm thấy muốn tiếp tục. Chào mừng bạn trở lại và sẵn sàng để tăng tốc độ trong
các ví dụ và giải thích.
Bạn biết rằng để xem bộ đếm theo thời gian, bạn phải lấy hai số và
phân chia sự khác biệt của chúng giữa thời gian trôi đi. Điều này có ý nghĩa đối với các ví dụ
Tôi đã cho bạn nhưng có những khả năng khác. Ví dụ: tôi có thể truy xuất
nhiệt độ từ bộ định tuyến của tôi ở ba nơi cụ thể là đầu vào, cái gọi là điểm nóng và
ống xả. Các giá trị này không phải là bộ đếm. Nếu tôi lấy sự khác biệt của hai mẫu
và chia nó cho 300 giây, tôi sẽ yêu cầu sự thay đổi nhiệt độ mỗi giây.
Hy vọng rằng đây là số không! Nếu không, phòng máy có lẽ đang cháy :)
Vậy chúng ta có thể làm gì? Chúng ta có thể yêu cầu RRDtool lưu trữ các giá trị mà chúng ta đo lường trực tiếp khi chúng
là (điều này không hoàn toàn đúng nhưng đủ gần). Các biểu đồ chúng tôi tạo ra sẽ trông nhiều
tốt hơn, chúng sẽ hiển thị một giá trị không đổi. Tôi biết khi nào bộ định tuyến bận (nó hoạt động
-> nó sử dụng nhiều điện hơn -> nó tỏa ra nhiều nhiệt hơn -> nhiệt độ tăng lên). Tôi biết
khi cửa mở (phòng có điều hòa) -> không khí ấm từ phần còn lại
của tòa nhà chảy vào phòng máy -> nhiệt độ đầu vào tăng). Vv.
kiểu dữ liệu chúng tôi sử dụng khi tạo cơ sở dữ liệu trước đây là bộ đếm, bây giờ chúng tôi có một
kiểu dữ liệu và do đó một tên khác cho nó. Nó được gọi là GAUGE. Có nhiều dữ liệu như vậy
các loại:
- COUNTER chúng tôi đã biết điều này
- GAUGE chúng ta vừa học được cái này
- LẤY ĐƯỢC
- TUYỆT ĐỐI
Hai loại bổ sung là DERIVE và ABSOLUTE. Absolute có thể được sử dụng như bộ đếm với
một điểm khác biệt: RRDtool giả định bộ đếm được đặt lại khi nó được đọc. Đó là: châu thổ của nó là
được biết đến mà không cần tính toán bởi RRDtool trong khi RRDtool cần tính toán nó cho bộ đếm
loại. Ví dụ: ví dụ đầu tiên của chúng tôi (12345, 12357, 12363, 12363) sẽ đọc: không xác định, 12, 6,
0. Các phép tính còn lại giữ nguyên. Cái còn lại, dẫn xuất, giống như bộ đếm.
Không giống như bộ đếm, nó cũng có thể giảm để nó có thể có một delta âm. Một lần nữa, phần còn lại của
các phép tính vẫn giữ nguyên.
Hãy thử tất cả chúng:
rrdtool tạo all.rrd --start 978300900 \
ĐS: a: COUNTER: 600: U: U \
ĐS: b: GAUGE: 600: U: U \
ĐS: c: DERIVE: 600: U: U \
ĐS: d: TUYỆT ĐỐI: 600: U: U \
RRA: TRUNG BÌNH: 0.5: 1: 10
rrdtool cập nhật all.rrd \
978301200:300:1:600:300 \
978301500:600:3:1200:600 \
978301800:900:5:1800:900 \
978302100:1200:3:2400:1200 \
978302400:1500:1:2400:1500 \
978302700:1800:2:1800:1800 \
978303000:2100:4:0:2100 \
978303300:2400:6:600:2400 \
978303600:2700:4:600:2700 \
978303900:3000:2:1200:3000
đồ thị rrdtool all1.png -s 978300600 -e 978304200 -h 400 \
DEF: linea = all.rrd: a: AVERAGE LINE3: linea # FF0000: "Line A" \
DEF: lineb = all.rrd: b: AVERAGE LINE3: lineb # 00FF00: "Line B" \
DEF: linec = all.rrd: c: AVERAGE LINE3: linec # 0000FF: "Dòng C" \
DEF: lines = all.rrd: d: AVERAGE LINE3: lines # 000000: "Line D"
công cụ RRD Dưới các Kính hiển vi
· Dòng A là kiểu COUNTER, vì vậy nó sẽ liên tục tăng và RRDtool phải tính toán
sự khác biệt. Ngoài ra, RRDtool cần chia sự khác biệt cho lượng thời gian
hết hiệu lực. Điều này sẽ kết thúc như một đường thẳng tại 1 (các delta là 300, thời gian là
300).
· Dòng B là loại GAUGE. Đây là những giá trị "thực" nên chúng phải khớp với những gì chúng tôi đưa vào: a
một loại sóng.
· Dòng C thuộc loại DERIVE. Nó phải là một bộ đếm có thể giảm. Nó làm như vậy giữa
2400 và 0, với 1800 ở giữa.
· Dòng D thuộc loại TUYỆT ĐỐI. Điều này giống như bộ đếm nhưng nó hoạt động trên các giá trị không có
tính toán chênh lệch. Các con số giống nhau và như bạn có thể thấy (hy vọng) điều này
có một kết quả khác.
Điều này dịch theo các giá trị sau, bắt đầu lúc 23:10 và kết thúc vào 00:10 tiếp theo
ngày (trong đó "u" có nghĩa là không xác định / không có đồ thị):
- Dòng A: uu 1 1 1 1 1 1 1 1 1 u
- Dòng B: u 1 3 5 3 1 2 4 6 4 2 u
- Dòng C: uu 2 2 2 0 -2 -6 2 0 2 u
- Dòng D: u 1 2 3 4 5 6 7 8 9 10 u
Nếu PNG của bạn hiển thị tất cả những điều này, bạn biết bạn đã nhập dữ liệu chính xác, RRDtool
tệp thực thi đang hoạt động bình thường, người xem không đánh lừa bạn và bạn đã nhập thành công
năm 2000 :)
Bạn có thể thử cùng một ví dụ bốn lần, mỗi lần chỉ với một trong các dòng.
Hãy xem lại dữ liệu một lần nữa:
· Dòng A: 300,600,900, v.v. Bộ đếm delta là một hằng số 300 và thời gian cũng vậy
vùng đồng bằng. Một số bị chia cho chính nó luôn là 1 (ngoại trừ khi chia cho số XNUMX là
không xác định / bất hợp pháp).
Tại sao điểm đầu tiên lại không rõ? Chúng tôi biết những gì chúng tôi đưa vào cơ sở dữ liệu,
bên phải? Đúng, Nhưng chúng tôi không có giá trị để tính toán delta từ đó, vì vậy chúng tôi không biết
nơi chúng tôi bắt đầu. Sẽ là sai lầm nếu cho rằng chúng ta bắt đầu từ con số XNUMX nên chúng ta không làm như vậy!
· Dòng B: Không có gì để tính toán. Các con số là như họ đang có.
· Dòng C: Một lần nữa, giá trị đầu ra là không xác định. Câu chuyện tương tự cũng diễn ra như đối với dòng A. Trong
trường hợp này các delta không phải là hằng số, do đó dòng cũng không phải. Nếu chúng tôi muốn đặt
cùng các số trong cơ sở dữ liệu như chúng ta đã làm cho dòng A, chúng ta sẽ nhận được cùng một
hàng. Không giống như bộ đếm loại, loại này có thể giảm và tôi hy vọng sau này sẽ cho bạn biết lý do tại sao
điều này tạo ra sự khác biệt.
· Dòng D: Ở đây thiết bị sẽ tính toán các delta. Do đó, chúng tôi biết vùng châu thổ đầu tiên và
nó được âm mưu. Chúng tôi đã có cùng một đầu vào như với dòng A, nhưng ý nghĩa của đầu vào này là
khác nhau và do đó dòng là khác nhau. Trong trường hợp này, các delta tăng lên mỗi lần
với 300. Đồng bằng thời gian giữ ở mức không đổi 300 và do đó phép chia của hai
cho giá trị ngày càng tăng.
Counter Kết thúc tốt đẹp
Có một số điều cơ bản hơn để hiển thị. Một số tùy chọn quan trọng vẫn được đề cập và chúng tôi
vẫn chưa nhìn vào kết thúc truy cập. Đầu tiên là bọc bộ đếm: Trong xe hơi của chúng tôi, chúng tôi nhận thấy rằng
quầy hiển thị 999987. Chúng tôi đi 20 km và quầy sẽ đến 1000007. Thật không may,
chỉ có sáu chữ số trên bộ đếm của chúng tôi để nó thực sự hiển thị 000007. Nếu chúng tôi vẽ biểu đồ đó
trên loại DERIVE, điều đó có nghĩa là bộ đếm đã lùi lại 999980 km. Nó không phải, và
phải có một số bảo vệ cho điều này. Bảo vệ này chỉ có sẵn cho loại
COUNTER dù sao cũng nên được sử dụng cho loại bộ đếm này. Làm thế nào nó hoạt động? Loại
bộ đếm không bao giờ được giảm và do đó RRDtool phải giả định rằng nó được bọc nếu nó
giảm bớt! Nếu delta là âm, điều này có thể được bù đắp bằng cách thêm giá trị tối đa
giá trị của bộ đếm + 1. Đối với ô tô của chúng tôi, điều này sẽ là:
Delta = 7 - 999987 = -999980 (thay vì 1000007-999987 = 20)
Đồng bằng thực = -999980 + 999999 + 1 = 20
Tại thời điểm viết tài liệu này, RRDtool biết các bộ đếm 32 bit hoặc
Kích thước 64 bit. Các bộ đếm này có thể xử lý các giá trị khác nhau sau:
- 32 bit: 0 .. 4294967295
- 64 bit: 0 .. 18446744073709551615
Nếu những con số này trông lạ lẫm với bạn, bạn có thể xem chúng ở dạng thập lục phân:
- 32 bit: 0 .. FFFFFFFF
- 64 bit: 0 .. FFFFFFFFFFFFFFFF
RRDtool xử lý cả hai bộ đếm như nhau. Nếu xảy ra tràn và vùng đồng bằng sẽ
âm, RRDtool trước tiên thêm tối đa một bộ đếm nhỏ + 1 vào delta. Nếu đồng bằng
vẫn là tiêu cực, nó phải được truy cập lớn bao bọc. Thêm tối đa có thể
giá trị của bộ đếm lớn + 1 và trừ đi giá trị nhỏ được thêm vào do nhầm lẫn.
Có một rủi ro trong điều này: giả sử bộ đếm lớn được bao bọc trong khi thêm một vùng đồng bằng lớn, nó
về mặt lý thuyết có thể xảy ra rằng việc thêm giá trị nhỏ hơn sẽ làm cho delta dương.
Trong trường hợp không chắc chắn này, kết quả sẽ không chính xác. Mức tăng phải gần bằng
cao bằng giá trị bộ đếm tối đa để điều đó xảy ra, vì vậy rất có thể bạn sẽ có
một số vấn đề khác và vấn đề cụ thể này thậm chí sẽ không có giá trị
đang nghĩ về. Mặc dù vậy, tôi đã bao gồm một ví dụ, vì vậy bạn có thể tự đánh giá.
Phần tiếp theo cung cấp cho bạn một số ví dụ số cho các kết thúc ngược. Cố gắng làm
tự tính toán hoặc chỉ tin tôi nếu máy tính của bạn không thể xử lý các con số :)
Số hiệu chỉnh:
- 32 bit: (4294967295 + 1) = 4294967296
- 64 bit: (18446744073709551615 + 1)
- chỉnh sửa1 = 18446744069414584320
Trước: 4294967200
Tăng: 100
Nên trở thành: 4294967300
Nhưng thực sự là: 4
Đồng bằng: -4294967196
Chỉnh sửa1: -4294967196 + 4294967296 = 100
Trước: 18446744073709551000
Tăng: 800
Nên trở thành: 18446744073709551800
Nhưng thực sự là: 184
Đồng bằng: -18446744073709550816
Chỉnh sửa1: -18446744073709550816
+ 4294967296 = -18446744069414583520
Chỉnh sửa2: -18446744069414583520
+ 18446744069414584320 = 800
Trước: 18446744073709551615 (giá trị lớn nhất)
Tăng: 18446744069414584320 (tăng phi lý, tối thiểu cho
Nên trở thành: 36893488143124135935 ví dụ này hoạt động)
Nhưng thực sự là: 18446744069414584319
Đồng bằng: -4294967296
Chỉnh sửa1: -4294967296 + 4294967296 = 0
(không âm -> không sửa2)
Trước: 18446744073709551615 (giá trị lớn nhất)
Tăng: 18446744069414584319 (tăng ít hơn một lần)
Nên trở thành: 36893488143124135934
Nhưng thực sự là: 18446744069414584318
Đồng bằng: -4294967297
Chỉnh sửa1: -4294967297 + 4294967296 = -1
Chỉnh sửa2: -1 + 18446744069414584320 = 18446744069414584319
Như bạn có thể thấy từ hai ví dụ cuối cùng, bạn cần các số lạ để RRDtool không thành công
(tất nhiên là miễn là nó không có lỗi), vì vậy điều này sẽ không xảy ra. Tuy nhiên, SNMP hoặc bất cứ điều gì
phương pháp bạn chọn để thu thập dữ liệu, đôi khi cũng có thể báo cáo sai số. chúng tôi
không thể ngăn chặn tất cả các lỗi, nhưng có một số điều chúng tôi có thể làm. RRDtool "tạo"
lệnh này có hai tham số đặc biệt. Họ xác định mức tối thiểu và tối đa được phép
các giá trị. Cho đến bây giờ, chúng tôi sử dụng "U", có nghĩa là "không biết". Nếu bạn cung cấp các giá trị cho một hoặc cả hai
trong số chúng và nếu RRDtool nhận được các điểm dữ liệu nằm ngoài các giới hạn này, nó sẽ bỏ qua
những giá trị đó. Đối với nhiệt kế tính bằng độ C, mức tối thiểu tuyệt đối chỉ dưới
-273. Đối với bộ định tuyến của tôi, tôi có thể cho rằng mức tối thiểu này cao hơn nhiều, vì vậy tôi sẽ đặt nó thành 10,
trong đó nhiệt độ tối đa tôi sẽ đặt là 80. Cao hơn nữa và thiết bị sẽ không hoạt động
của đơn đặt hàng.
Đối với tốc độ xe của tôi, tôi sẽ không bao giờ mong đợi số âm và tôi cũng không mong đợi
tốc độ cao hơn 230. Bất cứ điều gì khác, và chắc chắn đã có lỗi. Nhớ cái gì đó
điều ngược lại là không đúng, nếu các con số vượt qua kiểm tra này, điều đó không có nghĩa là chúng
Chính xác. Luôn đánh giá biểu đồ với một liều lượng nghi ngờ lành mạnh nếu nó có vẻ kỳ lạ đối với bạn.
Ngày Lấy mẫu lại
Một tính năng quan trọng của RRDtool vẫn chưa được giải thích: hầu như không thể
thu thập dữ liệu và đưa nó vào RRDtool vào những khoảng thời gian chính xác. Do đó RRDtool nội suy
dữ liệu, vì vậy chúng được lưu trữ trên các khoảng thời gian chính xác. Nếu bạn không biết điều này có nghĩa là gì hoặc như thế nào
nó hoạt động, sau đó đây là trợ giúp bạn tìm kiếm:
Giả sử một bộ đếm tăng chính xác một trong mỗi giây. Bạn muốn đo nó trong 300
khoảng thời gian giây. Bạn nên truy xuất các giá trị cách nhau chính xác 300. Tuy nhiên, do
các trường hợp khác nhau, bạn đến trễ một vài giây và khoảng thời gian là 303. Đồng bằng sẽ
cũng là 303 trong trường hợp đó. Rõ ràng, RRDtool không nên đưa 303 vào cơ sở dữ liệu và làm cho
bạn tin rằng bộ đếm tăng 303 trong 300 giây. Đây là nơi RRDtool
nội suy: nó thay đổi giá trị 303 như thể nó sẽ được lưu trữ trước đó và nó sẽ
là 300 trong 300 giây. Lần tới, bạn đang ở đúng thời điểm. Điều này có nghĩa là
khoảng thời gian hiện tại là 297 giây và bộ đếm cũng tăng lên 297. Một lần nữa, RRDtool
nội suy và lưu trữ 300 như nó phải như vậy.
ở ĐBSH trong thực tế
time + 000: 0 delta = "U" time + 000: 0 delta = "U"
time + 300: 300 delta = 300 time + 300: 300 delta = 300
time + 600: 600 delta = 300 time + 603: 603 delta = 303
time + 900: 900 delta = 300 time + 900: 900 delta = 297
Hãy tạo hai cơ sở dữ liệu giống nhau. Tôi đã chọn phạm vi thời gian 920805000 đến 920805900 là
điều này rất phù hợp với các con số ví dụ.
rrdtool tạo giây1.rrd \
- bắt đầu 920804700 \
DS: giây: COUNTER: 600: U: U \
RRA: TRUNG BÌNH: 0.5: 1: 24
Tạo một bản sao
cho Unix: cp seconds1.rrd seconds2.rrd
cho Dos: sao chép giây1.rrd giây2.rrd
cho vms: làm sao tôi biết được :)
Đưa vào một số dữ liệu
cập nhật rrdtool seconds1.rrd \
920805000:000 920805300:300 920805600:600 920805900:900
cập nhật rrdtool seconds2.rrd \
920805000:000 920805300:300 920805603:603 920805900:900
Tạo đầu ra
biểu đồ rrdtool seconds1.png \
- bắt đầu 920804700 - kết thúc 920806200 \
- chiều cao 200 \
--upper-limit 1.05 --lower-limit 0.95 --rigid \
DEF: seconds = seconds1.rrd: seconds: AVERAGE \
CDEF: không xác định = giây, UN \
LINE2: giây # 0000FF \
VÙNG: không xác định # FF0000
biểu đồ rrdtool seconds2.png \
- bắt đầu 920804700 - kết thúc 920806200 \
- chiều cao 200 \
--upper-limit 1.05 --lower-limit 0.95 --rigid \
DEF: seconds = seconds2.rrd: seconds: AVERAGE \
CDEF: không xác định = giây, UN \
LINE2: giây # 0000FF \
VÙNG: không xác định # FF0000
Xem cả hai hình ảnh cùng nhau (thêm chúng vào tệp index.html của bạn) và so sánh. Cả hai đồ thị
sẽ hiển thị giống nhau, mặc dù đầu vào khác nhau.
GÓI (LẠI
Bây giờ là lúc để kết thúc hướng dẫn này. Chúng tôi đã đề cập đến tất cả những điều cơ bản để bạn có thể
làm việc với RRDtool và đọc các tài liệu bổ sung có sẵn. Còn rất nhiều nữa
để khám phá về RRDtool và bạn sẽ tìm thấy ngày càng nhiều cách sử dụng cho gói này. Bạn có thể
dễ dàng tạo đồ thị chỉ bằng các ví dụ được cung cấp và chỉ sử dụng RRDtool. Bạn cũng có thể
sử dụng một trong các giao diện người dùng để RRDtool có sẵn.
DANH SÁCH GỬI THƯ
Hãy nhớ đăng ký vào danh sách gửi thư RRDtool. Ngay cả khi bạn không trả lời thư
do đó, nó sẽ giúp ích cho cả bạn và những người dùng còn lại. Rất nhiều thứ mà tôi biết
về MRTG (và do đó là về RRDtool) mà tôi đã học được khi chỉ đọc danh sách mà không có
đăng lên nó. Tôi không cần phải hỏi những câu hỏi cơ bản vì chúng được trả lời trong Câu hỏi thường gặp
(đọc nó!) và trong các thư khác nhau của những người dùng khác. Với hàng nghìn người dùng trên khắp
thế giới, sẽ luôn có những người đặt câu hỏi mà bạn có thể trả lời vì bạn đã đọc
tài liệu này và tài liệu khác và họ đã không.
Sử dụng rrdtutorial trực tuyến bằng các dịch vụ onworks.net