开发者社区活动,使用SODBASE产品的程序员现在可以领礼品啦
功能:监测某些进程是否在运行
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可以用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 cepwc命令就输出一行数据,向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
当然,大量数据的传输还是建议网络直连编程实现。
