Hello @RylandHerrick ,
Thank you for you answer.
I've tried to modify my EQL query according to your recommendation, but I get an ‘Unsupported join key’ error on the ‘by’ with the event.wlan-src field which exists in the packages. For your information, the unique field that identifies the traffic light is ‘event.wlan-src’, which is why I wanted to do the join on that field. Am I doing something wrong?
sequence by event.wlan-src
[ any where event.light_state in ("dark", "stop-Then-Proceed", "permissive-clearance") ]
[ any where event.light_state != "stop-And-Remain" ]
Here is my json document coming from my traffic light:
{
"_index": ".ds-filebeat-9.0.0-2024.12.06-000002",
"_id": "0nuFzpMBHKffx07uVSvf",
"_version": 1,
"_score": 0,
"_source": {
"@timestamp": "2024-12-16T08:11:03.380Z",
"log": {
"offset": 4626092,
"file": {
"path": "/home/user/workspace/traffic_light_state.json"
},
"original": "Traffic light state",
"level": "info",
"logger": "traffic_light_state",
"origin": {
"function": "<module>",
"file": {
"name": "print-traffic-light-state.py",
"line": 52
}
}
},
"process": {
"thread": {
"name": "MainThread",
"id": 1996342032
},
"name": "MainProcess",
"pid": 23495
},
"ecs": {
"version": "1.6.0"
},
"message": "Traffic light state",
"event": {
"wlan-src": "00:0d:41:12:19:78",
"MID": "00:0d:41:12:19:78",
"light_state": "permissive-Movement-Allowed",
"timestamp": "2024-12-16T08:11:03.375923"
},
"input": {
"type": "log"
},
"agent": {
"type": "filebeat",
"version": "9.0.0",
"ephemeral_id": "ed18c6ea-1919-4590-a503-c852ca6f3e94",
"id": "59d71abc-5da2-4ba8-a21b-a779a9d8e026",
"name": "MK5-RSU"
},
"host": {
"name": "mk5-rsu",
"os": {
"kernel": "4.14.98-00009-g815aa81f1",
"codename": "focal",
"type": "linux",
"platform": "ubuntu",
"version": "20.04.5 LTS (Focal Fossa)",
"family": "debian",
"name": "Ubuntu"
},
"id": "4db9660272c5a45f2a85d922631a7952",
"containerized": false,
"ip": [
"160.98.26.181",
"fe80::6e5:48ff:fe10:c924",
"10.1.1.3",
"fe80::b0b0:9dff:fed6:299e"
],
"mac": [
"00-44-4F-54-33-00",
"00-44-4F-54-34-00",
"02-24-31-2D-A2-39",
"04-E5-48-10-C9-24",
"04-E5-48-10-C9-25",
"0A-3F-71-A3-3F-E3",
"12-BA-D7-BC-A7-C6",
"2E-FB-69-24-41-BE",
"32-24-5A-72-23-AA",
"36-85-E7-26-0C-CD",
"4A-3A-1B-E6-61-B3",
"4A-5A-71-2B-EE-34",
"4E-8C-5A-A6-D2-90",
"62-06-40-44-30-A7",
"6E-DB-5C-1E-72-EA",
"8A-44-CF-75-9D-33",
"8A-CA-87-0A-CB-C9",
"A6-F7-72-FC-58-9C",
"B2-B0-9D-D6-29-9E",
"BA-32-AF-D2-D4-72",
"BA-CA-9B-D6-49-B3",
"CE-42-F6-F9-9C-35",
"DE-ED-D7-61-2B-F1",
"E2-27-6A-43-AF-2D",
"E6-17-C9-45-E3-1E",
"EA-59-31-68-D0-D9"
],
"hostname": "MK5-RSU",
"architecture": "armv7l"
}
},
"fields": {
"process.name.text": [
"MainProcess"
],
"host.os.name.text": [
"Ubuntu"
],
"host.hostname": [
"MK5-RSU"
],
"process.pid": [
23495
],
"host.mac": [
"00-44-4F-54-33-00",
"00-44-4F-54-34-00",
"02-24-31-2D-A2-39",
"04-E5-48-10-C9-24",
"04-E5-48-10-C9-25",
"0A-3F-71-A3-3F-E3",
"12-BA-D7-BC-A7-C6",
"2E-FB-69-24-41-BE",
"32-24-5A-72-23-AA",
"36-85-E7-26-0C-CD",
"4A-3A-1B-E6-61-B3",
"4A-5A-71-2B-EE-34",
"4E-8C-5A-A6-D2-90",
"62-06-40-44-30-A7",
"6E-DB-5C-1E-72-EA",
"8A-44-CF-75-9D-33",
"8A-CA-87-0A-CB-C9",
"A6-F7-72-FC-58-9C",
"B2-B0-9D-D6-29-9E",
"BA-32-AF-D2-D4-72",
"BA-CA-9B-D6-49-B3",
"CE-42-F6-F9-9C-35",
"DE-ED-D7-61-2B-F1",
"E2-27-6A-43-AF-2D",
"E6-17-C9-45-E3-1E",
"EA-59-31-68-D0-D9"
],
"log.logger": [
"traffic_light_state"
],
"host.ip": [
"160.98.26.181",
"fe80::6e5:48ff:fe10:c924",
"10.1.1.3",
"fe80::b0b0:9dff:fed6:299e"
],
"agent.type": [
"filebeat"
],
"event.light_state": [
"permissive-Movement-Allowed"
],
"host.os.version": [
"20.04.5 LTS (Focal Fossa)"
],
"host.os.kernel": [
"4.14.98-00009-g815aa81f1"
],
"host.os.name": [
"Ubuntu"
],
"event.MID": [
"00:0d:41:12:19:78"
],
"log.level": [
"info"
],
"agent.name": [
"MK5-RSU"
],
"host.name": [
"mk5-rsu"
],
"host.id": [
"4db9660272c5a45f2a85d922631a7952"
],
"log.original": [
"Traffic light state"
],
"process.thread.name": [
"MainThread"
],
"log.origin.file.line": [
52
],
"host.os.type": [
"linux"
],
"event.wlan-src": [
"00:0d:41:12:19:78"
],
"host.os.codename": [
"focal"
],
"input.type": [
"log"
],
"log.offset": [
4626092
],
"agent.hostname": [
"MK5-RSU"
],
"event.timestamp": [
"2024-12-16T08:11:03.375923"
],
"message": [
"Traffic light state"
],
"host.architecture": [
"armv7l"
],
"process.name": [
"MainProcess"
],
"@timestamp": [
"2024-12-16T08:11:03.380Z"
],
"log.origin.file.name": [
"print-traffic-light-state.py"
],
"log.origin.function": [
"<module>"
],
"agent.id": [
"59d71abc-5da2-4ba8-a21b-a779a9d8e026"
],
"ecs.version": [
"1.6.0"
],
"host.containerized": [
false
],
"host.os.platform": [
"ubuntu"
],
"log.file.path": [
"/home/user/workspace/traffic_light_state.json"
],
"agent.ephemeral_id": [
"ed18c6ea-1919-4590-a503-c852ca6f3e94"
],
"agent.version": [
"9.0.0"
],
"host.os.family": [
"debian"
],
"process.thread.id": [
1996342032
]
}
}
The current response is empty.
The expected behavior is to detect incorrect transitions from the previous state. If I am currently in the "Stop-And-Remain" state, I need to check that the previous state was either "dark," "permissive-clearance," or "Stop-Then-Proceed."
Thanks