2012年11月23日星期五

自定义 Cacti 模板

cacti-0.8.8a 终于把 Cacti 插件管理器(PIA)给集成了,唉,早该这么干了,省事多了。

===== 1. Cacti 中的几种模板简介 =====
  - 数据模板(Data templates),它描述了 Cacti 存储哪些数据到指定类型的 RRD 文件。该模板与 RRDTool 工具的 create 命令相关。
  - 数据输入方法(Data input methods),数据模板基于数据输入方法,数据输入方法描述了 Cacti 获取监控数据的各种方法。其中最常用的就是 SNMP,但这里我们要用到一些自定义的模板。
  - 图像模板(Graph templates),描述了生成的一张图像应该是什么样子的。包括使用哪些数据模板、展示哪些元素、是否使用 CDEF 进行计算汇总。
  - 机器模板(Host templates),它是图像模板和数据查询的一个集合,描述了监控某一类型的机器需要生成那些图像。
  - 数据查询(Data queries),它是一种特殊的获取监控数据的方式,它所获取的监控数据一般是某一方面的一系列数据,比如网络接口信息。一般包括一个 XML 文件,其中定义了要获取的数据,以及获取方法(一般是一个命令或脚本)。

===== 2. 从头开始,定义一个基于自定义脚本的图像模板 =====
从前面对各个模板的功能描述中可以知道,要定义一个基于自定义脚本的图像模板,就要先从最初的数据输入方法(Data input methods)开始。

创建顺序:
<file>
  数据输入方法 --> 数据模板 --> 图像模板 --> 机器模板
</file>

==== 2.1 创建 数据输入方法 ====
数据输入方法只是定义了 Cacti 如何去获取监控数据。包括:
  - 使用什么方法获取(Input Strings),这一般是两大类:SNMP 或者自定义的脚本;
  - 有没有输入项(Input Fields),自定义脚本一般需要一些输入参数,比如远程机器的 IP 信息。
  - 最后是输出项(Output Fields),也就是使用前面定义的方法从远程主机获取的监控信息。

对于输入,Cacti 设置里面有一项 Special Type Code ,如果有设置,就可以把这个输入与 Cacti 定义的系统变量联系起来,比如,我们可以直接使用远程主机的 IP ,只要在这里填入 hostname 即可。

对于输出项,由于是自定义的脚本,因此这里就有个脚本输出内容的结构问题。并不是随随便便输出的。一般是这样:
<file>
MemFree:125 SwapUsed:10
</file>
这里要注意,脚本的输出应该是一行内容,最后不能有换行,否则出错;每个输出项目,就是你在 Cacti 中要定义的那些输出项,格式应该是 OutPutName:OutPut ,OutPutName 要与 Cacti 中定义的一致,各个输出项目以空格隔开。

==== 2.2 创建 数据模板 ====
下面是定义数据模板,模板名的格式建议参考 Cacti 自带的,这样较规范。
  * 在数据源配置(Data Source)那一块,数据输入方法(Data Input Method)选择刚才定义的那个。Associated RRA's 就不要选 Hourly (1 Minute Average) 了,因为是间隔 5 分钟抓取的数据。
  * 之后就是添加数据源(Data Source Item)了,输出项(Output Field)对应数据输入方法中定义的那些输出项,一项一项地添加,但并不需要把所有的输出项都填加到一个数据模板中,根据需要添加即可。
  * 如果输入方法需要输入项,则要在 Custom Data 那块添加。在每个输入项下,都有 "Use Per-Data Source Value (Ignore this Value)" 的选项 ,这表示为某一机器创建图像的时候才指定。如果你在前面定义数据输入方法时给输入项设定了 Special Type Code ,那么此时可以不填,这表示 Cacti 将直接使用对应的系统变量,比如远程机器的 IP ,此时 Cacti 会提示 "Value will be derived from the host if this field is left empty." 。

每个输入项设定完毕后都应该点击保存,避免遗漏。

==== 2.3 创建 图像模板 ====
同样模板名格式请参考 Cacti 自带的图像模板。
在 Graph Template Items 那块,逐一添加要显示的图像元素,每个图像元素,要配置如下信息:
  - 数据源(Data Source),对每一个图像元素,这是首先要选择的,这些数据源都是上一步定义的数据模板中的,也就是说,一个数据模板会有多个数据源(Data Source),这与在数据模板中定义的数据源数目(Data Source Item)有关。
  - 颜色,如果是画图的话,也可以不选择,如果显示元素只是说明信息;
  - Opacity/Alpha Channel 定义显示元素的透明度;
  - Graph Item Type 中定义显示元素的类型,一般图像是 AREA 或者 LINE,COMMENT 是说明,GPRINT 用于显示一些汇总信息,比如平均值、最大最小值之类的。
  - CDEF Function ,自定义的计算方程式,对获取的监控数据进行汇总和计算。这个如有必要可以自行定义 CDEF 并添加。
  - GPRINT Type,选择汇总的类型,一般 Normal 即可。
  - Text Format,显示在图下方的说明文字,最好填上。
  - Insert Hard Return,强制图下方的说明文字进行换行,请根据需要的显示效果选择。注:勾选上之后,会发现这个图像元素后面有个鲜红的 <HR> 标识。

定义结束后选择保存,一个图像模板中可以根据需要,定义多个显示元素。

==== 2.4 创建 主机模板 ====
这个就不多说了……

2012年11月19日星期一

狗日的中国共产党~~~

你大爷的,好不容易翻过来,立贴留念:狗日的中国共产党!!!

2012年10月30日星期二

愚蠢的十八大,艰难地翻墙……

土共愚蠢的十八大召开了,正所谓:“胡混十年,温情一抹戏子泪。习以为常,强把欢颜说未来。”
现在就开始了各种封网,GAE 的 GoAgent 是彻底不能用了,不能连接远程的服务器,大火墙直接封掉了 IP ,好吧,只好另寻其他的梯子——SSH 隧道,虽然一直使用 SSH 连接远程服务器,今天则是第一次知道原来这个还可以做隧道翻墙,花了 2 块钱买了一个星期的免费 SSH 帐号使用,现在这是第一篇通过 SSH 隧道过来写的东西。
感慨一下。

2012年10月14日星期日

EmEditor : 保存、恢复并保持撤销信息

用 EmEditor 三年了,主要是因为这个编辑器打开大文件快速,支持标签,支持正则表达式。最重要的一点是,它支持“保存、恢复并保持撤销信息”这个功能。

这个功能说起来很简单,就是在你关闭这个编辑器,下次再打开的时候,它会自动还原为上次关闭时的最后状态。对于我这个喜欢以文本记录东西的人来说,这个是最方便不过的了。

因为 EmEditor 功能强大,配置起来就很繁琐,好吧,我现在还整不明白它那以文件保存配置到底怎么搞,搞到最后我直接用了默认设置。EmEditor 有一个很好的地方——如果不知道会是令人很费解困惑的地方,那就是支持“全局属性配置”和“当前属性配置”。“全局属性配置”可以配置所有类型文件共有的属性,使它们表现的类似;而“当前属性配置”则只针对当前文件类型进行配置。这使针对不同类型的文件既有共性又有个性。

默认设置下,EmEditor 在关闭时会提示用户选择退出保存模式,这时就可以选择“保存、恢复并保持撤销信息”,但是如果你不小心点了对话框上的“不再询问”,那么下次就再也见不到这个提示对话框了,再想改变退出保存模式就很折腾了。

以前不知道怎么弄,甚至比对过配置文件。这次还是同样的问题,终于误打误撞让我找到了设置的地方,事实上这也是 GUI 的一点不好的地方,配置简单的时候还好说,配置一旦像 EmEditor 这么复杂的话,就很容易迷失在“选项菜单的丛林”中——还不如文本的配置文件来的方便和简洁。

好吧,这样配置这个退出保存模式(适用于 EmEditor Pro 12 ):

EmEditor 程序菜单栏 --> 工具 --> 自定义 ,弹出自定义配置窗口。

选择“窗口选项卡”,看到了吗,见下:

2012年9月21日星期五

糗事:2012-09-22 14:00

近来最糗的一件事。
租住在恶臭大街大爷牌贫民窟,周末洗衣服,因为热,只穿一条内裤,洗完后要晾到临街的晾衣绳上,当时洗的时候就一直想,一会去晾衣服的时候一定要穿上裤子,结果拧干衣服的时候太专注了,忘了,于是我就只穿一条内裤,拿着衣服走到了大街上~~~直到把衣服全挂好了才突然发现自己只穿一条内裤~~~

2012年4月23日星期一

获取 nohup 放置后台的程序的 PID

可以使用 nohup 将某一程序放置在后台一直运行,就像一个服务那样。

如果在一个脚本中这么做,想要获得被放置在后台的服务 PID 的话,可以这样做:

#!/bin/sh

Server=(my_server_1 my_server_2 ... )
for server in ${Server[*]}
do
    > ../Server_PID.now
    nohup ./$server &
    ps -elf | awk '$5=='$$' && $NF~/^\.\/'$server'$/ {print "'$server'",$4}' >> ../Server_PID.now
done

这样,每启动一个服务,那么该服务的服务名和 PID 就都被写入了 ../Server_PID.now 文件中。

2012年2月28日星期二

和流浪汉同桌而食

从家乡到北京,中间要在保定换乘火车,因为是下午1时的特快,于是在保定商城吃的午饭。一盒饭才要6块,与北京相比确实便宜。我随便找了个座位,一旁叠放着别人没吃完的三份炒面——中午人多服务员忙不过来,但这并不影响我的食欲。刚吃了两口,去买了瓶可乐,回来发现我对面已经坐上了一位老兄,三份炒面被他收敛在面前,拿着筷子正在那里小心谨慎地往口中拨着面条,杂乱的胡须上很快沾满了面条和菜渣。我好奇地仔细瞅了他一眼,蓝色的旧军装裹在身上,鼓鼓囊囊的,头发蓬乱,沾着土和纸屑,脸上油腻腻的不曾洗过,因为还是初春,气温低,也并不觉得有异味。他突然回看了我一眼,有些心虚,做贼一样地把三个盘子向自己手里拢了拢,然后埋头,继续吃着。
他是个流浪汉,我想,而且他知道哪里可以找到免费的午餐。我突然发现,他的衣服虽然破旧肮脏,但应该在进这个商场之前有整理过,所以也不至于像乞丐(中国的乞丐,你懂的)一般,因此他只是一个流浪汉,这算是他的职业,也是一种别样的生活方式——在中国这片土地上。
我想起了前段时间在网上看到的那个“幸福”的流浪汉,相比这个和我同桌而食的流浪汉,“微笑哥”更加的超然吧。

饥饿急躁症以及其他

今天去蓝汛面试,也许是一天没吃饭的缘故,在被问到一个技术问题时,竟然紧张急躁了起来。不过我的运气很好,我遇到了一个通情达理的面试人员,不但没有让我立马走人——如果是我的话肯定会是这样的反应,反而给了我一些很好的建议,这让我很感激,算是很有收获吧。

2012年2月26日星期日

原来 Google 也是有 Blogger 服务的

RT,感觉挺不错的,界面清爽,功能也算是完善吧,恩,以后就在这里了,呵呵。

使用 Charles 及旧版本 iTunes 下载旧版本 iOS APP

注意:吾爱破解论坛发布的一系列自动化下载软件,比如 iOS APP Store 旧版应用下载 5.1 什么的都不好用,目前只能手动通过 Charles 截留并修改旧版本 iTunes HTTPS 请求达到下载旧版本应用的目的。 从 iOS APP Store 下载的软件都是与用户...