3.传输阶段
, x2 ~, J0 w k- `6 F 监控数据几乎总是按一个层次结构组织起来。传输阶段的任务就是将层次数据进行有效的编码,形成一种能高效传输的数据格式。Java拥有的文件格式是存储层次数据的有效方法,并且用提供的Java APIs很轻易完成。S-Expressions已经被认为是传输这种数据的另一个有效的方法。
0 e0 U9 c/ m. N* @" k- F 关于传输监控数据普遍讨论的问题是,数据应该按二进制编码还是按文本格式编码。二进制数据更轻易压缩,因此也能更有效地传输。但是,当采用/proc文件系统时,监控数据通常以人们易读的格式存储。在传输之前,将数据转换为二进制格式将需要更多的处理资源与时间。以文本格式保留收集的数据,结点资源能被用于更多非监控性的相关工作。0 P; T! o8 C* M6 d# L4 _# G4 |
采用文本格式的数据将提供如下额外的益处:& a2 f* I( w+ U9 D0 J) _
平台独立性
" Q0 n1 q; W! r; c1 I( L8 l$ |9 T) j 当监控异构集群时,机器之间数据字节指令的配置不是永远相同的。文本格式的使用在代码方面解决了这个问题,而且体系结构独立不会影响更多的处理需求。
" U0 x* G$ k. \6 }5 ? 易读的格式1 O5 n' H1 W) m5 N8 |; Q# q
文本数据能以人们易读的格式进行组织。假如需要的话,这种特征能轻易地进行程序调试或答应用户观看数据流。
- |6 ?) T. L, @3 X. [# J+ H 有效压缩2 a+ P/ W. S0 P3 R9 C
数值数据的文本表示由来自10个字节集中的字符组成,而不是二进制下的256个字节集。它们产生的数字及模式的相对频率答应有效地使用基于压缩算法的字典及熵(平均量)。
) n# s8 E8 l: ?) l /proc虚拟文件系统" _8 D8 o$ A; W- S3 t! L
/proc虚拟文件系统(也叫procfs)是Unix操作系统所使用的虚拟文件系统的Linux实现,包括Sun Solaris、LinuxBSD。在/proc开始时,它以一个标准文件系统出现,并包含与正在运行的进程IDs同样名字的文件。然而,在/proc中的文件不占用磁盘空间,它们存在于工作存储器(内存)中。/proc最初的目的是便于进程的存取,但是现在,在Linux中,它可被内核的每一部分使用来报告某些事情。
. G0 x7 E+ w5 B, }9 P- C 在/proc文件系统提供的成百上千的值当中,我们将集中考虑集群监控所需的最小集,它们包括:
# Z5 m. v3 [1 X; y /proc/loadavg:包含系统负载平均值;
/ X A" j$ n2 k /proc/meminfo:包含存储治理统计量;1 V. `4 z& h9 t" l; M' I- ^
/proc/net/dev:包含网卡度量;
' S8 S6 e8 i6 K! H' O. z8 O /proc/stat:包含内核统计量;
. ]) o8 z8 Z) [ /proc/uptime:包含总的系统正常工作时间及空闲时间。
+ {' \& y% Y5 [4 v" } 每个文件提供的值的数量是不同的。这些文件的完整有效值列表如下。% V- n: m5 _+ V# N* k
/proc/loadavg提供以下数据:
# [" Q7 L* _3 f0 H' b- T& {! U8 k+ N 1秒钟平均负载;( m* ?7 S: Z" f5 }
5秒钟平均负载;1 ^7 I: E& J$ G: n3 d5 G- k+ @- l
15秒钟平均负载;1 P. C6 s# `. t9 Z7 @+ @
总作业数;
5 O! q2 o# a* g7 I: N' T# `! M9 M# h 正在运行的作业总数。- T- ~# ?* N4 m1 Z' E8 t: h. V
/proc/meminfo提供的存储器包括:
2 j/ @+ p5 N$ K, t8 d8 h3 x 活动存储器;. _) W- A; `5 s$ M
不活动存储器;
) C+ h( e2 I0 s 缓冲存储器;4 w/ C! v2 _$ ~+ ` A9 o0 y6 W4 e/ I
高速缓冲存储器;
" ]" m6 o& l, Y2 [' d 总的自由存储器;6 j( s$ @9 U/ Y& m5 i4 B
总的高位存储器;
7 S* P/ o4 X2 k3 t. x 自由高位存储器;
. R2 f5 M/ @2 d 总的低位存储器;
& B8 K) s9 s/ U. }& p7 r+ a 自由低位存储器;
8 f, u6 b0 \" h/ D7 I8 ]$ d 共享存储器;
7 @$ M5 C( R! {& B3 d 交换存储器;
$ [% l( U- o3 [- w! c2 g 交换高速缓冲存储器;
$ M/ Q1 q# \; F% t8 O9 J 交换自由存储器;
; c \% w9 k R8 b2 r2 H% ^ 总存储器。
, [4 w9 i3 ~4 Z" V# g /proc/net/dev中包括每个网卡的如下数据:- d3 P' N" L8 T, C
接收到的字节;/ g* |1 e% P ~5 [! D2 ~& }5 h; ]
接收到的压缩字节;
6 M8 _; m: l: b: @$ T& y8 n/ g( o- z* A 收到的误码数;
1 `2 A o; C8 v 收到的漏失误码;/ F1 P, W$ I7 X7 X; j6 q, H
收到的FIFO误码;
- J/ m3 T6 k8 U+ S 收到的帧误码;
5 ^0 t& M! ^! Y% C$ J% z9 z) D 收到的多播误码;
! I5 V @/ q. n& c0 Y& H 收到的总包数;
+ j- }; ]! Q5 v( D 已传输的字节;9 {1 h9 B8 o3 i( Q, ~0 p- f
已传输的压缩字节;
! o; s" d; w: q- E1 X 传输误码总数;
8 `) I1 c6 W D) a& i+ k 传输载波误码;
. P8 `* v2 g$ A7 z' d \ 传输冲突误码; l- U$ k5 |; u6 G& p5 g
传输漏失误码;
' E1 _1 ^6 ~5 O1 |# Y( e4 p; n 传输FIFO误码;; Q6 I( Q( U, D
传输的总包数。
) |' Y# M$ ?8 Z' S9 y /proc/stat提供:
+ k* g/ B) }8 x1 h0 W 引导时间; |