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

    xiaoxiao2026-09-26  11

    开发者社区活动,使用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

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

    转载请注明原文地址: https://ju.6miu.com/read-1312338.html
    最新回复(0)