The Mirages

樱桃沟夹事

垦丁是近几年才流行起来的一个地方,因为在台湾岛的最南端,同时又是电影《海角7号》的拍摄地,所以现在人也是非常多。 去垦丁的路线有两种,一种是高铁左营站直接下来坐垦丁快线,另外一种是坐台铁到枋寮站,然后还是坐垦丁快线。 看来这个突出去的半岛是没有直接到的火车了,要是有直接到的火车,估计人会更多。 我们是从花莲坐火车到枋寮站的,一路上经过了池上这个站,特地赶着下去买了2份池上便当吃,真没白花这钱啊,这是TMD在台湾最好的一餐。这上面的广告纸一下子让人感觉来到了30年代的上海。关键是价格便宜啊,一份菜70新台币,比帝都的火车快餐便宜多了。 内嵌图片 1 到了垦丁,一下子天就蓝了,但是马上就多云了。 枋寮车站看着还是非常老的,青天白日旗在蓝天白云下舞动着。 内嵌图片 2 在垦丁也是住民俗啦,这边民俗都是各种小别墅,我们住的这个还离垦丁牧场很近哦,牛啊马的都爱懒洋洋的趟在大草地上。 内嵌图片 3 内嵌图片 4 收拾完房间,我们就来到了垦丁夜市,真是热闹啊,因为这边白天太热了,所以大家都爱晚上出来。由于垦丁处于恒春半岛上,所以这里的天气变化可比台北夸张多了,走着走着下5分钟大雨,然后又好了,过了一会又下个3分钟,问了下当地人,说最近就是这样,而白天就一直很晴朗的,路上居然又碰到2个雨神。这边的水果还是非常多的,吃了很多很多。 内嵌图片 5 这就是刚下了大雨的垦丁夜市。 吃了一点小吃, 也就原住民的烤鱿鱼还不错,其他都挺难吃的,也吃了传说中巨好吃的戎将军包子,没啥人,也不怎么样。 好了,第一天就这样了吧。好好休息明日继续。

花莲旁边就是巴士海峡,至于为什么叫这个名字不清楚,只知道对岸就是菲律宾了,这个海峡也真是够大的了。 巴士海峡里会流经一条暖流,当地人叫黑潮。 其实应该是叫日本暖流。 由于暖流的出现,导致这边渔类资源丰富。 所以我们可以在花莲看到很多鱼类,海豚鲸鱼。 于是我们这2个土鳖也看看自然在海洋中的鲸鱼是什么样的。可惜那天不巧只看到了海豚,有100多只吧,品类应该长吻飞旋海豚。然后去的时候大家看到很多飞鱼还很好奇,可等看完海豚回来大家就觉得没啥好奇的了。 内嵌图片 1 大部分海豚都是这样自由的游着,还有的调皮点的在空中翻滚,这个才是飞旋的名字来由。更有甚者居然当着那么的观众造起了小海豚。 第2天有人在同样的水域看到了鲸鱼,据说每年的7月初是鲸鱼出没最多的时候。可那时候不是台风季节吗? 第2天我们就包了小黄出租车去了太鲁阁,清水段崖等等。 这天开始就碰到雨神了,去哪哪下雨。 大家千万别包这种小黄出租车,这业务水平,什么都不介绍,一到景点,直接下车我们自己玩,他自己坐车里,一点服务意思都没有。这点跟我们民宿的老板娘差远了。 清水短崖,这个可一定要大晴天去才好,而且最好一早去,我们去的时候就是天气不好,所以照片效果比较差。效果有点乌突突的,哪里有清水的感觉啊。 内嵌图片 2 直接去太鲁阁吧,可最终也没有去成燕子口,真是遗憾,只能骂一句sb司机。 在下着雨的天气里,只走了砂卡礑步道,然后走到了五间屋,两个倒霉雨神吵着要回去了,结果下午没事干。 内嵌图片 3 这峡谷里的景色还是很漂亮的,清澈的溪流,还有很少的原住民,大部分都搬出去了,因为这里面都没有电。 内嵌图片 4 好了,sb司机为了补偿我们,于是带我们去长春祠,这个是为了纪念那些修建中横公路建设的死难者的。而中横公路是横穿了整个台湾的中央山脉,但是现在也经常塌方,这个就跟四川似的,那么多的山,还必须要穿过去,沿着山造的山路没有办法的,除非通过隧道过去。 内嵌图片 5 好了,去燕子口的山路被封锁了,2个小时才能走10分钟进的车辆,sb司机居然不知道,害我们都没法进去看绝美的风景,只好原路返回去七星潭了,这个昨日没有去,说什么也得去一次。 七星潭可以远看中央山脉,而今天下雨,整个山脉朦朦胧胧的。 内嵌图片 6 七星潭的鹅卵石有些看着还是挺好玩的,而且这边浪还是挺大的,所以没啥人真的在这边玩,看来人还是喜欢去沙滩,这种鹅卵石多的海滩还是咯脚啊。 参观完了这个就去旁边的七星潭博物馆,其实这里都是介绍了一些花莲的知识,而很多都是介绍了各种的鱼,你都可以在博物馆里触碰海星呢,还有如何做鱼干啊啥的。 内嵌图片 2 参观完博物馆,时间还是很多,这就去城里的松园别馆,享受一下当日本将军的味道。 这里是城里的最高处,所以很适合暸望,当年是日军的一个将军府。里面大树参天。别馆还是保留了之前的样子,但是也开了一些纪念品商店。 内嵌图片 3 好了,花莲逛的差不多。可恨的司机,热情的民宿老板娘,好玩的海豚,NB的蚊子。 然后我们就去吃小吃去了,这个也是感觉台湾小吃里还是能够吃的,虽然不知道含不含毒淀粉,但是人都开了几十年的小店了。 然后又吃了戴记扁食,其实就是馄饨,照片里的老板娘还是30岁的样子,还跟蒋经国握手呢,而现在居然还在店里,只是白发增多了,而扁食的价格也上去了。 内嵌图片 4 cleardot.gif

花莲这地方名字不错,不像台湾其他地方名字都那么简单,什么台北,台中,台南,台东,新北这样的。 花莲是台湾最大的一个地区,但是80%都是山区。而且花莲离日本最近的那个岛才150公里。真是够近的,往前推可都属于琉球了。所以我们不能放弃钓鱼岛啊,不然东海就出不去了。 言归正传,花莲的山区主要是中央山脉,然后海边也是一个什么山脉,然后花莲就在2个山脉当中的峡谷地带,其中最短的那块就3公里。花莲比较有名的是鲤鱼潭(我没看出来像鲤鱼),七星潭,太鲁阁国家公园,花东纵谷。 鲤鱼潭这天我们是骑自行车去的,总共来回走了60公里,这个我还行,我们家球子可累的够呛啊。 这个是早上骑车过去呢,鲤鱼潭就是远处的山里。这路上还碰到一次交通事故,一对情侣开着一辆机车,不知道怎么着就撞树上了。还好两人都带着头盔,但是身上的伤都不轻,留着好多血。于是我们也一起加入了急救的队伍中,我还给999打了电话叫救护车。 内嵌图片 1 终于到了鲤鱼潭,拿了个地图,也没感觉像是鲤鱼啊。 内嵌图片 1 还是因为旁边是鲤鱼山的缘故呢?今天刚好是端午节期间,于是台湾到处是划龙舟的,鲤鱼潭也不例外。也没注意比赛怎么样,只是知道最后好像是花莲警察局获胜了。 蔚蓝的天色加上不错的风景 内嵌图片 2 龙舟比赛进行中。 后来看了报纸,居然还有队伍划着划着船沉了,因为台湾是个小岛,受各种风向影响比较大,所以经常5分钟前下雨,1分钟后就马上停了。 内嵌图片 3 看完了鲤鱼潭,骑车继续往白鲍溪走,传说那边出台湾玉,于是我们也兴高采烈的去了,真是要小心啊,一路山路又上又下的,到了白鲍溪,一堆人在那边了,还有人居然在那边潜水呢。小心那边的水蛭和台湾小黑蚊,居然把我脚叮的都是包,确实吓人啊。 说说售货吧。捡了好多绿色的石头,但是应该都不是台湾玉,但是都特别润滑,应该是常年被河水冲刷的结果了。有一块大的现在都被我当成是书房的镇纸了。 内嵌图片 4 骑车延着两潭路一直往七星潭骑行。 这条路人好少啊,而且貌似不是很近啊,在山里一会上坡一会下坡的,有2个下坡还特别陡,真得小心刹车,注意安全可别掉山窟窿里了。 沿着两潭路一直走到了海滨边,南滨公园,北滨公园这样一路骑行着,球子说实在太累了,怕到了七星潭回不了市区了,于是就直接从北滨公园转弯进市区了。 内嵌图片 5 吃了非常有名的公正包子铺,老实说不知道为什么那么有名,但是在这样繁华的街上,价格倒是很亲民,台湾这点跟国外很像,不会因为热闹的旅游景点啥的导致价格暴涨。而且基本都是几十年如一日的老店,这点比我们好多了。 内嵌图片 6

野柳和九份都在台北周边,应该算是基隆和新北市吧。 所以直接是从台北出发的。由于住在台北车站旁边没多远,所以很方便。 台北–野柳 票价可够贵的96新台币一个人, 台湾的公交实在太贵了,没有办法,都是私人公司,没有什么我们这边公交集团啥的。 野柳总称为野柳地质公园,就是因为地质的特殊才会显的很特别,其中最著名的就是女王头。 下了公交车站还看见一个小庙–保安宫。 发现当地人都是特别相信这个,这个应该是保佑当地渔民的。所以香火都很旺。这是世界有信仰就好。 内嵌图片 1 下了车这雨就停了,在这里我还算是个太阳神,出门基本马上雨停,直到有一天碰到2个雨神。 整个野柳地质公园分为两块,真的和假的。假的就在公园门口,里面有各种真货的模拟,真够坑人的。整个公园类似是一个半岛,当然比半岛可小多了,过几天去的墾丁就是属于恒春半岛。 内嵌图片 2 上图中看到一堆人排队的地方就是女王头照相的排队,当中被石头半圆型包围的那个就是女王头。而野柳最有名的就是这些奇怪的石头。哦忘记说了,这个进来是收费的,说是环境卫生费。 这些岩石都是严禁触碰的,当然你要好好保护好这些自然资源。 内嵌图片 3 上面这个就是近距离拍摄的这些各窟窿石,应该都是珊瑚吧看样子。看来台湾应该出产很多珊瑚,只是没有看到哪里有卖的市场,不然也带点回家。 要说野柳都是自然风光,那九份就是属于人造的了。九份以前是产黄金的,然后就在这山上周边形成了一些商业设施,比如商店剧院火车等等。在60年代是十分繁华的。但是由于它在山里,而且又是在半山腰,所以等着金子没有了之后就一下子没落了。 一直到了有一部电影在这里取景,然后一堆小资游客来了。 内嵌图片 4 上面这个是从九份拍的整个半山腰,看着房子还是都是比较破旧的,山路也比较窄。左下角那个房子就是九份金矿博物馆,没有进去我。九份现在人最多最多的就是那个九份老街。而这条街卖的都是各种吃的。 最有名: 九份鱼丸。 好了,就这一个,其他的最好不要瞎尝,反正我是吃不惯,先来个鱼丸特写吧,感觉闽南地区就鱼丸不错,靠海就是好啊。 内嵌图片 1 难道来次老街,虽然不怎么样,但是还是来个中景吧。 内嵌图片 2 好了,回台北了。

redis是一个很NB的nosql,吞吐量很高,在对服务器做benchmark的时候10W qps都没有问题。 但是这样一个大杀器要是用的地方不对就问题也挺多。 然后用了 redis-faina.py 这个工具去检查到底有多慢,发现真的很慢啊,这个时候还没有怀疑是这个python脚本的问题。这个是后话了 然后用strace -rp 进行检查,发现每个get, set都非常慢,有时候居然要100ms来完成,查询了一下,这个get的结果是空啊。 看了下这个redis的qps才2啊, 一台可以支持10W qps的redis服务器怎么在2个qps的情况下会那么慢呢。赶紧检查配置。从头看到尾就发现如下这个不熟悉的配置。 ```c

Redis calls an internal function to perform many background tasks, like # closing connections of clients in timeot, purging expired keys that are # never requested, and so forth. # # Not all tasks are perforemd with the same frequency, but Redis checks for # tasks to perform accordingly to the specified "hz" value. # # By default "hz" is set to 10. Raising the value will use more CPU when # Redis is idle, but at the same time will make Redis more responsive when # there are many keys expiring at the same time, and timeouts may be # handled with more precision. # # The range is between 1 and 500, however a value over 100 is usually not # a good idea. Most users should use the default of 10 and raise this up to # 100 only in environments where very low latency is required. hz 10


台湾游记之台北 办理签证就不说了,很简单,出入境办公室和淘宝都可以搞定。 只是台湾不承认我们的入台证,而我们也不承认《中华民国台湾地区入处境许可证》 内嵌图片 4 出了桃园机场,心情有点失落,天没那么蓝,地也没那么干净,发展水平也一般。想着这里是桃园县,台北应该还是不错的。坐上国光巴士直接到了台北车站。所谓台北车站,这里又是地铁站,也是高铁站,也是普通火车车站。 内嵌图片 1 台北车站依然保留着几十年前的风格。去的当天刚好是台北车站建成多少周年。一群小孩子在那边合唱中,也没有我们的整齐划一,很多孩子都是各顾各的。 在台北车站换了之前网上预订的车票,台铁和高铁居然还要在2个不同的地方换票,这个也太不人性化了,这个就不能合并吗? 还是根本就是2个机构啊。 在台北,当然要去故宫啊,据说这里由于地方受限制,每次只能展出3%的作品,但是翠玉白菜,五花肉和鼎这3个是每次都会展出的,属于镇馆之宝,可惜这里不能进行照相,这个要求也太严格了吧,很多时候我觉得只要不开闪光灯就可以了,难道是怕有人出去仿造? 所以只能在外面照了一个像。应该说北京故宫里能搬的估计都过来了。从史料记载中我们还是发现丢失了很多,几乎是1/3的东西在抗日战争中给丢失了。 也不知道啥时候两个故宫可以合并起来看,所有的东西都放到它原来的位置上去。 内嵌图片 2 傍晚的台北故宫有点冷清,不像这边无论什么时候都是人山人海的。后面的山里据说藏了所有的宝贝,看来这山也都掏空了,但是上面的绿树还都不错。还有居然故宫对面还有盖居民楼的,真是无法无天啊。 逛完了故宫,当然是去士林夜市啊,非常的有名,也非常的让人失望啊。门口就是一家豪大鸡排,整个市场我看虽然是人很多,可是对于一个很注重健康的人来说,真是没啥可吃的。只能是饿着肚子了。这里的东西基本都是油炸出来的。最后就吃了一个鸡排和蚵仔煎以及棺材板,都是够难吃的。 内嵌图片 1 台湾因为都是山,很容易理解,岛屿的形成都是板块互相挤压形成的,所以只要是岛就必定有山。于是这边路上开的最多的就是机车了。烧汽油的应该是,车速可以达到80km每小时,还是够快的。这路上也到处有停机车的地方,而很少有停自行车的地方,只有在台大的时候才很多学生骑自行车的。 内嵌图片 2 在台湾,千万要住民宿哦,民宿就是私人旅店,这个还是让人感觉很美好的,一扫我以前对于私人旅店那种脏乱差的印象。都太干净了,还没进门都得脱鞋了,还好没啥小偷偷这个,每家每户的安保系统都做的很到位,而且都跟保安公司联网的,都是防小人的。 内嵌图片 3 好了,第一天台北的感觉就是这样了,一般。没有特别大的惊奇,本是同根生啊。

《1984》对我们造成的冲击刚刚结束,这个世界近期也不大可能出现那种局面,至少表面上是不会出现,也许我们一直都被监控着呢,比如最近的棱镜门事件。 在尼尔波兹曼在书中写道“奥威尔害怕的是那些强行禁书的人,赫胥黎担心的是失去任何禁书的理由,因为再也没有人愿意读书,奥威尔害怕的是那些剥夺我们信息的人,赫胥黎担心的是人们在汪洋如海的信息中日益变得被动和自私; 奥威尔害怕的是真理被隐瞒,赫胥黎害怕的是真理被淹没在无聊烦琐的世事中。” 作者写的还是电视文化对于传统媒体的冲击,其实在电视文化的时候,读书还是很容易的,因为电视并不能满足我们对于知识的渴求。而现在已经是信息时代了。 在信息时代这几年,我们创造出来的信息已经超过1900年以前的总和了。我们正被淹没在信息的海洋中。而信息时代的信息特征比电视时代更短小,很多人更是只是搜索出来结果就直接关闭了,很少有人去搞清楚前因后果。而这也是作者最为担心的。 而书本主要是为了把前因后果写出来的一种媒体,但是其实很多实用的计算机书籍也不是这样的。当你知道一件事务的前因后果,那你就会有更多的想法,当你看了多本类似的书籍的时候,你就会横向去比较这些书籍的内容,最终形成自己的想法。 虽然作者前面说了很多由于电视媒体的属性,导致观众看电视或者广告都被形象所吸引,而根本不关心它说的是什么内容,为什么是这样的,等等这些深入思考的内容。 这本书给我的最大思考就是别被媒体的表象所蒙蔽了,要有自己的思考才可以,而思考的前提就是你要充分了解这个事情。

领导要求在响应失败的时候也返回200以保证不影响客户网站,这个在F5中很容易的实现,只要一句话就可以了,但是nginx中稍微麻烦了点,要答案的直接看下面这个语句就可以了,加到每个server中就可以了。

1
2
3
4
5
6
proxy_intercept_errors on; 
error_page  404 400 500 503 502 =200 @handler;
location @handler {
default_type text/plain;
return 200;
}

至于为什么,还有没有别的方法且看下面。 本来想用 if语句来实现,但是发现根本不生效,因为无论server_status还是upstream_status出来的时候都已经返回给用户端了。所以下面的代码根本没有效果

1
2
3
4
if ($upstream_status ~ (400|404|500|503|502)){ 
returen 200;
break;
}
1
2
3
4
if ($server_status ~ (400|404|500|503|502)){ 
returen 200;
break;
}

上面两种代码都是没有效果的。那error_page还有别的实现方式吗? 当然有。

阅读全文 »

先说graphite,这个比较复杂点,是python写的。 首先我们了解一下graphite具体是如何工作的。

  1. carbon - 一个Twisted守护进程,监听时间序列数据
  2. whisper - 一个简单的数据库库,用来存储时间序列数据,在设计上类似于RRD
  3. graphite webapp - Django webapp,使用 Cairo来根据需要呈现图形

Graphite-High-Level-458x600 官方的安装文档:http://graphite.wikidot.com/installation 但是这里缺少了一些依赖包。 最好是python2.6 或者以上,虽然官方说2.4也可以,但是出现各种问题最后。 ** 安装graphite** 先导入epel源,我的centos6.4版本,然后yum安装下列包 c yum install -y bitmap bitmap-fonts-compat Django django-tagging fontconfig cairo python-devel python-memcached python-twisted pycairo mod_python python-ldap python-simplejson memcached python-zope-interface mod_wsgi python-sqlite2 python-rrdtool git python-pip 然后git下载如下几个项目 c git clone https://github.com/graphite-project/graphite-web.git git clone https://github.com/graphite-project/carbon.git git clone https://github.com/graphite-project/whisper.git git clone git://github.com/graphite-project/ceres 安装上述几个项目 c cd graphite-web python setup.py install cd .. cd carbon python setup.py install cd .. cd whisper python setup.py install cd .. cd ceres python setup.py install 默认安装路径为/opt/graphite 安装完成后可以是用如下命令检查是否安装成功,不成功的根据提示来安装对应的包 c python check-dependencies.py 其中特别注意pyparsing的版本必须是1.5.7,因为更高的版本是针对Python3的 c pip-python install pyparsing==1.5.7 我的python插件和版本如下 c Conch==8.2.0 Django==1.4.5 PyXML==0.8.4 SOAPpy==0.11.6 Twisted==13.0.0 Twisted-Core==8.2.0 Twisted-Lore==8.2.0 Twisted-Mail==8.2.0 Twisted-Names==8.2.0 Twisted-News==8.2.0 Twisted-Runner==8.2.0 Twisted-Web==8.2.0 Twisted-Words==8.2.0 ceres==0.10.0 distribute==0.6.46 django-tagging==0.3.1 fpconst==0.7.3 iniparse==0.3.1 iotop==0.3.2 mock==1.0.1 mod-python==3.3.1 nagios-plugins-rhev==1.0.0 nose==1.2.1 paramiko==1.7.5 pexpect==2.3 pssh==2.3.1 py-rrdtool==0.2.1 pyOpenSSL==0.10 pycrypto==2.0.1 pycurl==7.19.0 pygpgme==0.1 pyparsing==1.5.7 pysqlite==2.3.5 python-dateutil==1.4.1 python-ldap==2.3.10 python-memcached==1.43 pytz==2013b pyxdg==0.18 simplejson==2.0.9 txAMQP==0.6.2 urlgrabber==3.9.1 whisper==0.9.9 yum-metadata-parser==1.1.2 zope.interface==4.0.5 配置graphite c cd /opt/graphite/conf/ cp carbon.conf.example carbon.conf cp storage-schemas.conf.example storage-schemas.conf cp graphite.wsgi.example graphite.wsgi 复制examples下的apache配置文件到对应的conf.d目录下 c cp /opt/graphite/examples/example-graphite-vhost.conf /etc/http/conf.d/graphite.conf 记得给graphite.conf中的WSGISocketPrefix的目录给创建好就可。 当然你可以不用apache来启动,用python自带的web server也可以 c python /opt/graphite/bin/run-graphite-devel-server.py /opt/graphite & 初始化数据库和本地配置 c cd /opt/graphite/webapp/graphite python manage.py syncdb chown apache:apache /opt/graphite/storage/ cd /opt/graphite/webapp/graphite cp local_settings.py.example local_settings.py 记得修改local_settings.py中时区为Asia/Shanghai, 其他为默认就可以了。 启动apache和carbon c /etc/init.d/httpd reload python /opt/graphite/carbon-cache.py start 好了,这个时候graphite是安装完成了,但是graphite是只负责绘图,不负责收集数据,收集数据使用collectd来完成的。collectd分为服务器端和客户端。在这里,我们服务器端放在跟graphite同一台机器上。安装方法一样 ** 安装collectd** 安装依赖包 c yum install rrdtool rrdtool-devel rrdtool-perl libgcrypt-devel gcc make gcc-c++ 默认epel源里有collectd,但是版本太低,我们还是从官方网站上下载后手动进行安装 c wget http://collectd.org/files/collectd-5.3.0.tar.bz2 tar jxvf collectd-5.3.0.tar.bz2 cd collectd-5.3.0 ./configure --prefix=/opt/server/collectd --enable-all-plugins make make install 安装启动脚本 vim /etc/init.d/collectd c #!/bin/bash # # collectd Startup script for the Collectd statistics gathering daemon # chkconfig: - 99 01 # description: Collectd is a statistics gathering daemon used to collect # system information ie. cpu, memory, disk, network # processname: collectd # config: /etc/collectd.conf # config: /etc/sysconfig/collectd # pidfile: /var/run/collectd.pid # Source function library. . /etc/init.d/functions PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/server/collectd/sbin RETVAL=0 ARGS="" prog="collectdmon" service="collectd" CONFIG=/opt/server/collectd/etc/collectd.conf COLLECTD=/opt/server/collectd/sbin/collectd COLLECTDMONPID=/var/run/collectdmon.pid if \[ -r /etc/sysconfig/$service \]; then . /etc/sysconfig/$service fi check_config() { if test ! -r "$CONFIG"; then return 2 fi if ! $COLLECTD -t -C "$CONFIG"; then return 1 fi return 0 } start () { echo -n $"Starting collectd: " check_config rc="$?" if test "$rc" -ne 0; then RETVAL=6 echo $"not starting due to configuration error" failure $"not starting $service due to configuration error" else daemon $prog -P $COLLECTDMONPID -c $COLLECTD -- -C "$CONFIG" $ARGS RETVAL=$? echo \[ $RETVAL -eq 0 \] && touch /var/lock/subsys/$service fi } stop () { echo -n $"Stopping collectd: " killproc $prog RETVAL=$? echo \[ $RETVAL -eq 0 \] && rm -f /var/lock/subsys/$service } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status $prog ;; restart|reload) check_config rc="$?" if test "$rc" -ne 0; then RETVAL=6 echo $"not restarting due to configuration error" failure $"not restarting $service due to configuration error" else stop start fi ;; condrestart) \[ -f /var/lock/subsys/$prog \] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" exit 1 esac exit $? # vim:syntax=sh 修改collectd配置文件 首先看客户端的配置文件 c LoadPlugin network <Plugin network> # # client setup: Server "10.1.1.240" "25827" # 10.1.1.240 为collectd服务器端的地址, 25827为监听的端口 # <Server "239.192.74.66" "25826"> # SecurityLevel Encrypt # Username "user" # Password "secret" # Interface "eth0" # TimeToLive "128" </Plugin> 启动collectd就可以了 服务器端配置文件 c LoadPlugin network <Plugin network> # # server setup: Listen "10.1.1.240" "25827" </Plugin> 如果启动没有问题的话,那理论上在服务器端的/opt/server/collectd/var/lib/collectd 目录下可以看到client的目录,和默认load的模块比如cpu的一些rrd文件。 现在我们只能collectd来收集数据,grapite还没有跟collectd连通并进行绘图。我们需要有一个插件将collectd传递给carbon 安装collecd-carbon c mkdir /opt/server/collectd/plugin/ cd /opt/server/collectd/plugin/ git cloen git://github.com/indygreg/collectd-carbon 修改collecd.conf配置文件加载collectd-carbon c <LoadPlugin "python"> Globals true </LoadPlugin> <Plugin "python"> # carbon_writer.py is at path /opt/collectd-plugins/carbon_writer.py ModulePath "/opt/server/collectd/plugin/collectd-carbon/" Import "carbon_writer" <Module "carbon_writer"> LineReceiverHost "10.1.1.240" LineReceiverPort 2003 LineReceiverProtocol "tcp" DifferentiateCountersOverTime true LowercaseMetricNames true TypesDB "/opt/server/collectd/share/collectd/types.db" </Module> </Plugin> 重新启动collectd就可以了,然后就会往服务器端的2003端口写入数据了。 最后,自定义脚本 虽然collectd默认自带了很多的脚本, 但是还是没法完全覆盖我们自己的要求,所以需要自己编写脚本去执行结果,并进行画图。 下面这个是我的事例脚本,很简单,就是吐出2个值,一个是上2秒的qps和最近10000次请求的超时时间的请求数量。 c #!/bin/bash #count the qps and error id=$HOSTNAME while true; do TIME=$(date -d "2 seconds ago" +%Y:%H:%M:%S) start_run=$(date +%s) abc_qps=$(tail -n50000 /opt/server/nginx/logs/abc.access.log | grep -c "$TIME") abc_err=$(tail -n10000 /opt/server/nginx/logs/abc.access.log | awk -F'|' '{if($14 > 0.08) print}'| wc -l) echo 'PUTVAL '"$id"'/qps/gauge-abc_qps '"$start_run"':'"$abc_qps" echo 'PUTVAL '"$id"'/timeout/gauge-abc_err '"$start_run"':'"$abc_err" sleep 10 done 其中最主要的就是输出时候的定义 id/qps/gauge-abc_qps 分别对应下面这个 c <instance-id>/<plugin>-<plugin_instance>/<type>-<type_instance> 其中instance-id我这里用主机名来表示 plugin是qps和timeout两种 gauge是表示type的一种。总计有很多种type: c Generic Graph Types :blank :countr :bytes_txrx :recv_sent :requests :cache Plugin-specific Graph Types :haproxy_sessions :haproxy_traffic :haproxy_status :apache_bytes :apache_requests :apache_scoreboard charge charge_percent cpu current df disk disk_octets disk_merged disk_ops disk_time dns_opscode dns_qtype dns_rcode dns_octets email email_size spam_score spam_check entropy fanspeed frequency frequency_offset gauge hddtemp if_errors if_packets irq load load_percent mails memory old_memory memcached_connections memcached_items memcached_octets memcached_ops mysql_commands mysql_handler mysql_octets mysql_qcache mysql_threads nfs_procedure nfs3_procedures nginx_connections nginx_requests opcode operations partition passenger_instances passenger_processes passenger_queued passenger_requests percent ping processes ps_rss ps_cputime ps_count ps_pagefaults ps_state queue_length qtype rcode swap ols_swap temperature timeleft time_offset if_octets cpufreq multimeter users voltage vs_threads vs_memory vs_processes 写好扩展脚本,把它放入到/opt/server/collectd/plugin/目录,加入可执行权限。 修改collectd.conf文件加载扩展脚本 ```c
LoadPlugin exec Exec “apache” “/opt/server/collectd/plugin/qps_err.sh” # apache为执行这个脚本的用户名 # NotificationExec “user:group” “/path/to/exec”


批评不自由,则评论无意义。读《批评官员的尺度有感》   上面这句是封面的小字,其实是说明美国现在的状态。   美国的民主并不是一下子到达现有的状态,而是通过人民自由争取来的,并不是三权分立的结果,而是人民争取得来的,不然为什么实施同样制度的菲律宾依然腐败严重,人民不自由呢。   而本书是讲述了法律系统中这些自由的案件。最终将第一修正案的解释更加明确化。这都是靠各个法官和公民最终确立下来的。都是根据实际的案例来阐明的。   霍姆斯大法官在一个案件的异议意见中如此写道:“如果我们想确定一种思想是否正确,就应让它在思想市场的竞争中接受检验。” 而汉德法官也发表过如下的意见来说明传媒的重要性:“不管这些作品是适度的政治推论,还是过激,不当的谩骂,在美国这个以自由言论为权利最终根源的国家里,人人皆享有批评政府的自由……钳制这些可能动摇人民一直的言论,无异于镇压所有对立评论和意见……言论自由在直接煽动叛乱,反抗等行为时,才构成犯罪,如果把合法的政治言论当作挑唆煽动,就是驱逐了民主政治的守护神,是最大的不宽容。”   而美国也产生过一些恶法,比如《防治煽动法》这些的法律,但是很快在各种案件中败下阵来。   而本书说的主要一个案子是来源于批评官员的,而官员的武器是所谓的个人的诽谤。虽然地方法院支持了官员的诉求,而最终布伦南裁定了,除非事先已知自己说的发表的内容是虚构的,不然人民享有批评官员的一切权利,就算是谩骂也行。而原话如下:“对公共事务的辩论应该不受抑制,充满活力并广泛公开,它可能包含了对政府或官员的激烈,刻薄,甚至尖锐的攻击。”   我们国家非常担心这个,怕媒体一旦完全开放导致自己垮台。而麦蒂逊当年针对《防治煽动法》的报告说过:“任何事务一旦实际运转,总难避免某种程度上的滥用,这类情形在新闻界体现的尤为明显。不过,我始终认为,留存一些芜枝杂叶,任其自由凋敝,会比直接剪除更有利于树木的生长。”

0%