SODBASE应用示例:通过Restful接口采集数据

来源:互联网 发布:梅雨知时节作品 编辑:程序博客网 时间:2024/06/06 03:34

开发者社区活动,使用SODBASE产品的程序员现在可以领礼品啦 

功能:监测某些进程是否在运行

1.建立数据采集脚本

vi monitor.sh

t=`ps aux | grep myprogram | wc -l`curl -d "username=admin&password=cep&modelspacename=firstuser&streamname=monitor.input&data=appnum:${t},machine:16&datatypes=integer,string" http://192.168.1.10:16111/sodbase-cep-server-webservice-1.0.1/insertevent

其中的192.168.1.10换成自己CEP Server的IP地址

加入crontab 

crontab -e*/2 * * * * nohup sh /home/user/monitor.sh


2. CEP模型

可以用Studio建模,就一个级联输入,一个Filter,一个打印输出。

vi monitor.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><GraphModelData>    <CEPSoftwareVersion>2</CEPSoftwareVersion>    <inputAdaptors>        <inputAdaptorClassName>com.sodbase.inputadaptor.StubInputAdaptor</inputAdaptorClassName>        <adaptorParams>monitor.input</adaptorParams>        <isExternal>false</isExternal>    </inputAdaptors>    <SODSQLs>CREATE QUERY monitor SELECT * FROM T1:monitor.input PATTERN T1  WITHIN 0 </SODSQLs>    <outputAdaptors>        <isOutputAsSelection>true</isOutputAsSelection>        <outputAdaptorClassName>com.sodbase.outputadaptor.PrintEventOutputAdaptor</outputAdaptorClassName>        <adaptorParams>false</adaptorParams>        <adaptorParams>true</adaptorParams>        <isExternal>false</isExternal>        <queryName>monitor</queryName>    </outputAdaptors>    <modelName>monitor</modelName>    <modelVersion>1.0</modelVersion>    <modelDescription></modelDescription></GraphModelData>

在SODBASE CEP Admin的bin目录下

运行命令

./xmltosoddata.sh -i monitor.xml -o monitor.soddata  
也可以在Studio中建模


安装运行CEP模型,用firstuser用户

./installmodel.sh -h 192.168.1.10 -P 16111 -f "monitor.soddata" -u firstuser -p cep  ./startmodel.sh -h 192.168.1.10 -P 16111 -m monitor -v 1.0 -u firstuser -p cep 

3.稍复杂的多行数据采集

wc命令就输出一行数据,向ls的命令会输出多行数据,有个简单的方法,处理如下

vi monitor.sh

ls -l |  awk  '{print "curl -d\"username=admin&password=cep&modelspacename=firstuser&streamname=monitor.input&data=filename:"$1",machine:16,command:ls&datatypes=string,string,string\" http://192.168.1.10:16111/sodbase-cep-server-webservice-1.0.1/insertevent"}'> /home/user/event.shsh /home/user/event.sh


注意,如果数据中包含':'、'&'、'='、',',可先用awk的sub函数转为其他字符。如果确实数据中确实需要这些字符,可以使用/insertEventJson 接口,数据使用json格式转义。

ls -l |  awk  '{print "curl -d \"username=admin&password=cep&modelspacename=firstuser&streamname=monitor.input&data={\\\"d1\\\":\\\""$0"\\\",\\\"machine\\\":\\\"16\\\",\\\"command\\\":\\\"ls\\\"}\" http://192.168.1.10:16111/sodbase-cep-server-webservice-1.0.1/insertEventJson"}' >/home/user/event.shsh /home/user/event.sh


当然,大量数据的传输还是建议网络直连编程实现。


0 0
原创粉丝点击