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

开发者社区活动,使用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.sh
sh /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.sh
sh /home/user/event.sh


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

 
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值