write down,forget

Graphite修改默认端口

<Category: DevOPS>

graphite默认使用8080端口,被占了,如何修改呢?

vi /opt/graphite/bin/run-graphite-devel-server.py

修改8080为你的端口就行了。

启动graphite-web

django修改方法
python manage.py runserver 80
python manage.py runserver 0.0.0.0:80

本文来自: Graphite修改默认端口

ESCC#1 ElasticSearch国内开发者线下交流活动

<Category: Diving Into ElasticSearch, 小道消息>

第一届elasticsearch国内开发者线下交流活动圆满结束了,尽管当天外面下着小雪,还是到场了30几位童鞋,甚至有不远从天津远道而来的,感谢大家的捧场,另外还要大力感谢人人网的饶兄,是他提供的场地。
这次线下交流吧,说是线下交流,其实主要是我给大家做培训,希望下次再搞线下交流,一定要多一点人分享,好东西,要分享。
下面是培训的内容,第一部分是基础的关于ES的介绍,后面的部分是ES分布式架构设计和调优的一些东西。
以前是参加过各种交流活动,但是组织这个线下交流活动还是头一次,哈哈,最后应该合影留念的,哎,搞忘记了。

示例程序及fiddler调试记录下载:
misc




Elastic Search Training#1 (Brief Tutorial)-ESCC#1

ElasticSearch Training#2 (Advanced Concepts)-ESCC#1

本文来自: ESCC#1 ElasticSearch国内开发者线下交流活动

FreeSwitch工作的3种模式

<Category: FreeSwitch>

阅读这篇文章的其余部分

本文来自: FreeSwitch工作的3种模式

Multi Field Type 介绍及使用方法

<Category: Diving Into ElasticSearch>

洋洋洒洒写了几千字,结果发布提交丢了,很郁闷。
捡起来重新写吧,尼玛。

翻译了一下multi-field,在线在这里http://www.elasticsearch.cn/guide/reference/mapping/multi-field-type.html
以后翻译的文章都贴到博客里面吧,省的藏得太深,大家都找不到。
博客里面会补充详细的使用方法。
下面是multi-field的介绍:

阅读这篇文章的其余部分

本文来自: Multi Field Type 介绍及使用方法

freeswitch&ESL事件处理

<Category: FreeSwitch>

FreeSwitch里面有一系列的事件,有通道级别的,如channel的创建、销毁、挂断、接听,又或者freeswitch系统级别的事件,如重新加载xml配置文件,freeswitch服务关闭等等,都有相应的事件发出,你使用mod_event模块,并订阅相应事件。
完整的事件列表:http://wiki.freeswitch.org/wiki/Event_List

有了这些事件之后,你就可以灵活控制freeswitch了,非常灵活,在通话的每个阶段,处理相应的业务逻辑,想实现什么功能都没有问题了,比如计费、入库、定时提醒、强插、转移,各种复杂的业务逻辑基本上都能实现,哈哈,嗷嗷强悍。
阅读这篇文章的其余部分

本文来自: freeswitch&ESL事件处理

freeswitch桥接

<Category: FreeSwitch>

话务落地之后的号码桥接,实现软电话号码之间,传统电话之间,软电话与传统电话之间的桥接,ESL命令如下:

ref:http://wiki.freeswitch.org/wiki/Freeswitch_IVR_Originate

本文来自: freeswitch桥接

freeswitch对接sip trunk实现话务落地

<Category: FreeSwitch>

下午尝试了下对freeswitch的话务落地,在网友的帮助下终于对接成功,期间遇到不少问题,注意是端口不一致的问题。
一般sip trunk服务提供商会提供有需要密码和不需要密码两种,对方都会询问你的ip和端口来进行绑定,并提供一个ip给你。
下面是不需要密码的配置方法。

1.添加sip 代理网关,注意是external下面:
/usr/local/freeswitch/conf/sip_profiles/external/gw1.xml

2.添加一个dialplan:
/usr/local/freeswitch/conf/dialplan/default/call_out.xml

3.使用sip账号登陆,呼叫以0开头的手机号码就可以拨通了。
注意服务端必须打开对应端口的权限。
对接的过程中如果不能确定到底是那方出现了问题,可以在fs端抓包进行分析,看往来请求,sip协议类似http,很好分析。
使用tcpdump来抓,然后wireshark看就行了。

本文来自: freeswitch对接sip trunk实现话务落地

发布俩elasticsearch插件

<Category: Diving Into ElasticSearch>

中文简繁体转换:
https://github.com/medcl/elasticsearch-analysis-stconvert
简体和繁体互相转换,比如可以通过简体来查找繁体的文档内容,或者通过繁体来在简体文档里面查找,或者不区分简繁体实现查询功能。

字符转数字:
https://github.com/medcl/elasticsearch-analysis-string2int
思路很简单,如果你的term或者field都是中文的短语,并且唯一的term很多,在做facet的时候,内存占用将会非常高,一般来说,做facet的字段的值,都是不经常变的,可以理解为常量,或者理解为实体(entity),当内存不够的情况下,会大大影响查询的效率,另外集群内带宽开销也是大大的,但是如果转换成数字来存储,即把相同的词语或者短语,通过词典,映射为唯一的数字id,然后使用数字来做标示,内存使用量会急剧下降,在客户实际的使用中,使用string2int之前,做facet查询,需要耗费10G+以上的filedcache,使用string2int之后,内存可在100M内,效果非常明显,另外查询速度也是从几十秒甚至几分钟或者直接出不来,直接变成到ms级别,效果很不错。

本文来自: 发布俩elasticsearch插件

lua-resty-weedfs 1.0

<Category: lua>

号外:weedfs小文件后处理服务程序发布鸟。。

github地址:https://github.com/medcl/lua-resty-weedfs

最近研究了下resty,发现lua和resty使用起来真是简单粗暴啊,简单的写了一个用来后处理weedfs小文件的服务,目前提供了图片的缩放和语音的转换。
缩略图和语音都是在线实时转换,速度很快。

小文件存储使用weefs,简单方便,性能不错,适合存放图片文件和语音文件,
图片请求一般还需要缩略图处理,使用graphicsmagick.org,语音一般还需要格式转换,那就用ffmpeg,这些都集成到了一起就是 lua-resty-weedfs了。
服务端使用openresty,简单介绍就是基于nginx的集成了lua脚本运行环境的的功能完整的版本。

相关程序附链接:
weedfs(http://code.google.com/p/weed-fs/)是一个小文件服务器,最近支持了副本功能,很不错,然后resty(http://github.com/lzyy/resty)是一个基于nginx,封装了lua语言引擎及一系列常用包的nginx发行版。
graphicsmagick(http://graphicsmagick.org)是一个图片缩放程序,支持各种图片格式,ffmpeg(http://ffmpeg.org)是一个语音视频转换程序,也是支持多种格式。

使用方式:
1.上传图片文件
2.返回图片地址
3.访问图片
原始图片:http://192.168.1.1/img/orig/3,2711f0c5341e.png
80×80格式:http://192.168.1.1/img/80×80/3,2711f0c5341e.png
100×100格式:http://192.168.1.1/img/100×100/3,2711f0c5341e.png
500×400格式:http://192.168.1.1/img/500×400/3,2711f0c5341e.png
等等,格式自定义,或者固定限制为几种。

语音文件类似,访问地址有点变化
原始文件:http://192.168.1.1/audio/orig/3,2711f0c5341e
mp3格式文件:http://192.168.1.1/audio/mp3/3,2711f0c5341e

视频在线转换,理论上也是可以做的,只是目前没有实现。
转换需要临时目录来存放文件,可以是系统的shm内存盘来提高速度,定期进行清理即可

附内存盘操作方法,内存盘可用来存放临时文件,提升速度,处理完原始文件之后,可以直接删掉,处理之后的小文件,可以缓存起来,另外建议在前端再加一层通用的静态文件缓存层,如varnish。

本文来自: lua-resty-weedfs 1.0

zabbix agent自动部署

<Category: DevOPS>

使用方式:
#./zabbixagent.sh 10.112.1.1 10.112.1.2
第一个参数为zabbix服务器地址,第二个为本机zabbix agent监听ip
建议替换脚本中zabbix agent安装包围内网自己的下载服务器地址,提升安装速度
验证测试通过:zabbix-2.0.2

本文来自: zabbix agent自动部署