diff --git a/pipeline/inputs/someip.md b/pipeline/inputs/someip.md new file mode 100644 index 000000000..5fd975594 --- /dev/null +++ b/pipeline/inputs/someip.md @@ -0,0 +1,113 @@ +# SOMEIP + +The `someip` input plugin is used to interact with a `SOME/IP` communication network to subscribe to events and to exchange request/response with `SOME/IP` services. + +This plugin uses the [`vsomeip`](https://github.com/COVESA/vsomeip) library (built-in dependency). + +## Configuration parameters + +The plugin supports the following configuration parameters: + +| Key | Description | +| ------------ | ----------- | +| `event` | `SOME/IP` event to subscribe to. The configuration can have multiple events, one on each line. An event is identified by a comma-separated list with, `service_ID, event_ID, event_group_ID_1, event_group_ID_2, ...`. The event must include at least one `event_group_ID`, but can be associated with multiple. | +| `rpc` | `SOME/IP` request to send when service is available. The configuration can have multiple RPC entries, one on each line. An RPC is composed as a comma-separated list with, `service_ID, service_instance, method_ID, request_payload`. The request payload should be base64 encoded. | + +## Get started + +To subscribe to `SOME/IP` events or send request/receive `SOME/IP` response, run the plugin from the command line or through the configuration file: + +### Command line + +The `someip` plugin can be enabled with options from the command line: + +```shell +./fluent-bit -i someip -p Event=4,1,32768,1 -o stdout +``` + +### Configuration file + +In your main configuration file append the following sections: + +{% tabs %} +{% tab title="fluent-bit.yaml" %} +```yaml +pipeline: + inputs: + - name: someip + event: + - '4,1,32768,1' + - '4,1,32769,2' + rpc: '4,1,1,CgAQAw==' +``` +{% endtab %} +{% tab title="fluent-bit.conf" %} +```text +[INPUT] + Name someip + Tag in.someip + + Event 4,1,32768,1 + Event 4,1,32769,2 + RPC 4,1,1,CgAQAw== + +[OUTPUT] + Name stdout +``` +{% endtab %} +{% endtabs %} + +## Testing + +Once Fluent Bit is running, you can send some `SOME/IP` messages using the `SOME/IP` test service provided. + +```shell +$ bin/someip_test_service +2025-02-06 22:18:06.211337 [info] Parsed vsomeip configuration in 0ms +... +Sending event with message Event Number 1 +Sent notification for service 4, event 32768 +Sending event with message Event Number 2 +Sent notification for service 4, event 32768 +``` + +The following output displays in [Fluent Bit](https://fluentbit.io): + +```shell +$ bin/fluent-bit -i someip -p Event=4,1,32768,1 -o stdout +Fluent Bit v3.2.0 +* Copyright (C) 2015-2024 The Fluent Bit Authors +* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd +* https://fluentbit.io + +______ _ _ ______ _ _ _____ _____ +| ___| | | | | ___ (_) | |____ |/ __ \ +| |_ | |_ _ ___ _ __ | |_ | |_/ /_| |_ __ __ / /`' / /' +| _| | | | | |/ _ \ '_ \| __| | ___ \ | __| \ \ / / \ \ / / +| | | | |_| | __/ | | | |_ | |_/ / | |_ \ V /.___/ /./ /___ +\_| |_|\__,_|\___|_| |_|\__| \____/|_|\__| \_/ \____(_)_____/ + + +[2025/02/06 22:12:23] [ info] [fluent bit] version=3.2.0, commit=239b46be20, pid=51044 +[2025/02/06 22:12:23] [ info] [storage] ver=1.5.2, type=memory, sync=normal, checksum=off, max_chunks_up=128 +[2025/02/06 22:12:23] [ info] [simd ] disabled +[2025/02/06 22:12:23] [ info] [cmetrics] version=0.9.8 +[2025/02/06 22:12:23] [ info] [ctraces ] version=0.5.7 +[2025/02/06 22:12:23] [ info] [input:someip:someip.0] initializing +[2025/02/06 22:12:23] [ info] [input:someip:someip.0] storage_strategy='memory' (memory only) +[2025/02/06 22:12:23] [ info] [input:someip:someip.0] Received 1 configured events +[2025/02/06 22:12:23] [ info] [input:someip:someip.0] No RPC configured. +... +2025-02-06 22:18:03.130557 [info] vSomeIP 3.5.1 | (default) +2025-02-06 22:18:06.223714 [info] Application/Client 0101 is registering. +2025-02-06 22:18:06.225581 [info] Client [100] is connecting to [101] at /tmp/vsomeip-101 endpoint > 0x79a50c000e30 +2025-02-06 22:18:06.230477 [info] REGISTERED_ACK(0101) +2025-02-06 22:18:06.236103 [info] Port configuration missing for [4.1]. Service is internal. +2025-02-06 22:18:06.236923 [info] OFFER(0101): [0004.0001:0.0] (true) +2025-02-06 22:18:06.240237 [info] SUBSCRIBE ACK(0101): [0004.0001.0001.ffff] +Received message for service 4 event = 32768 +[0] someip.0: [[1738880288.622425534, {}], {"record type"=>"event", "service"=>4, "instance"=>1, "event"=>32768, "payload"=>"RXZlbnQgTnVtYmVyIDE="}] +Received message for service 4 event = 32768 +[0] someip.0: [[1738880290.622781511, {}], {"record type"=>"event", "service"=>4, "instance"=>1, "event"=>32768, "payload"=>"RXZlbnQgTnVtYmVyIDI="}] +... +```