2016-06-20 3 views
0

J'ai un récepteur d'événements avec un mappage d'entrée personnalisé car mon format d'événement était un peu différent. Il n'a pas d'attributs de méta ou de corrélation. Exemple est:Mappages d'entrée personnalisés JSON: Impossible de trouver des correspondances pour l'événement entrant avec JSONPath

{ "ts":"2016-05-08T08:59:47.363764Z", 
    "uid":"CLuCgz3HHzG7LpLwH9", 
    "id.orig_h":"172.30.26.119", 
    "id.orig_p":51976, 
    "id.resp_h":"172.30.26.160", 
    "id.resp_p":22, 
    "version":2, 
    "client":"SSH-2.0-OpenSSH_5.0", 
    "server":"SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6", 
    "cipher_alg":"arcfour256", 
    "mac_alg":"hmac-md5", 
    "compression_alg":"none", 
    "kex_alg":"diffie-hellman-group-exchange-sha1", 
    "host_key_alg":"ssh-rsa", 
    "host_key":"8d:df:71:ac:29:1f:67:6f:f3:dd:c3:e5:2e:5f:3e:b4"} 

Il n'y a pas de nouvelle ligne, je l'ai ajouté pour le rendre lisible. En conséquence, je créé un récepteur d'événements avec une carte d'entrée personnalisée:

<?xml version="1.0" encoding="UTF-8"?> 
<eventReceiver name="sshlogreceiver" statistics="disable" 
trace="disable" xmlns="http://wso2.org/carbon/eventreceiver"> 
<from eventAdapterType="http"> 
    <property name="transports">all</property> 
</from> 
<mapping customMapping="enable" type="json"> 
    <property> 
     <from jsonPath="$.ts"/> 
     <to name="ts" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.uid"/> 
     <to name="uid" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.id.orig_h"/> 
     <to name="id_orig_h" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.id.orig_p"/> 
     <to name="id_orig_p" type="int"/> 
    </property> 
    <property> 
     <from jsonPath="$.id.resp_h"/> 
     <to name="id_resp_h" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.id.resp_p"/> 
     <to name="id_resp_p" type="int"/> 
    </property> 
    <property> 
     <from jsonPath="$.version"/> 
     <to name="version" type="int"/> 
    </property> 
    <property> 
     <from jsonPath="$.client"/> 
     <to name="client" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.server"/> 
     <to name="server" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.cipher_alg"/> 
     <to name="cipher_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.mac_alg"/> 
     <to name="mac_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.compression_alg"/> 
     <to name="compression_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.kex_alg"/> 
     <to name="kex_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.host_key_alg"/> 
     <to name="host_key_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.host_key"/> 
     <to name="host_key" type="string"/> 
    </property> 
</mapping> 
<to streamName="SSHInStream" version="1.0.0"/> 
</eventReceiver> 

L'événement échantillon de flux d'entrée est:

{ 
"event": { 
    "payloadData": { 
     "ts": "data5", 
     "uid": "data5", 
     "id_orig_h": "data1", 
     "id_orig_p": 70, 
     "id_resp_h": "data3", 
     "id_resp_p": 4, 
     "version": 50, 
     "client": "data1", 
     "server": "data2", 
     "cipher_alg": "data5", 
     "mac_alg": "data3", 
     "compression_alg": "data3", 
     "kex_alg": "data4", 
     "host_key_alg": "data4", 
     "host_key": "data4" 
    } 
} 
} 

Je n'ai pas event et payload balises dans mes événements car il est un journal simple, fichier. Lorsque je tente d'envoyer des événements, je suis une erreur sur la console en disant:

erreur

{org.wso2.carbon.event.receiver.core.internal.type.json.JSONInputMapper} - Could not find any matches for the incoming event with JSONPath : [email protected] ,hence dropping the event 

Ai-je fait de mal ou ce que la cartographie personnalisée entrée autre que je dois faire?

Répondre

0

La raison de cette erreur était la présence de points (.) Dans les paramètres de mon événement. Dès que je les ai remplacés avec l'autre personnage, dans mon cas, j'ai choisi les traits de soulignement, ça a bien fonctionné.