agl-service-xds
An AGL binding used to control collected data. Those data may come from
agl-low-collector
or from AGL supervision
.
UNDER DEVELOPMENT - this binding is not fully functional, it's a proof of concept for now
Setup
git clone https://gerrit.automotivelinux.org/gerrit/apps/agl-service-xds-monitoring
cd agl-server-xds
Build for AGL
#setup your build environment
. /xdt/sdk/environment-setup-aarch64-agl-linux
#build your application
./conf.d/autobuild/agl/autobuild package
Build for 'native' Linux distros (Fedora, openSUSE, Debian, Ubuntu, ...)
./conf.d/autobuild/linux/autobuild package
You can also use binary package from OBS: [opensuse.org/LinuxAutomotive][opensuse.org/LinuxAutomotive]
Test
Native setup
Here are commands used to build and setup some AGL services/bindings in order to test on xds
service natively on a Linux host.
Build
cd $ROOT_DIR/agl-service-xds
./conf.d/autobuild/linux/autobuild build
Run services/bindings
# Setup supervisor to supervise AGL system
afs-supervisor --port 1712 --token HELLO --ws-server=unix:/tmp/supervisor -vv
# Start harverster to save data in a TSDB
cd $ROOT_DIR/agl-service-harvester
afb-daemon --port=1234 --name=afb-harvester --workdir=./build/package --ldpaths=lib --roothttp=htdocs --token= --tracereq=common --ws-server unix:/tmp/harvester -vv
# Start XDS collector to control supervisor
cd $ROOT_DIR/agl-service-xds
afb-daemon --port=5678 --name=afb-xds --workdir=./build/package --ldpaths=lib --roothttp=htdocs --token= --ws-client=unix:/tmp/supervisor --ws-client=unix:/tmp/harvester -vvv
Example 1 : Demo based on simple helloworld AGL service
cd $ROOT_DIR/app-framework-binder
afb-daemon -t '' -p 5555 -M --roothttp test --ws-server unix:ave --name test_server -vvv
afb-daemon -t '' -p 4444 -M --roothttp test --no-ldpaths --ws-client unix:ave --name test_client -vvv
# Get bindings list
afb-client-demo --raw 'localhost:5678/api?token=1977&uuid=magic' xds list | jq .response[].pid
# Request monitoring of socket "unix:ave"
afb-client-demo 'localhost:5678/api?token=HELLO&uuid=c' xds trace '{"ws":"unix:ave"}'
# Call ping verb of hello api (should be spy by supervision/monitoring)
afb-client-demo 'localhost:5555/api?token=toto&uuid=magic' hello ping
# Same call some other verbs of hello api
afb-client-demo 'localhost:5555/api?token=toto&uuid=magic' hello eventadd '{"tag":"x","name":"event"}'
afb-client-demo 'localhost:5555/api?token=toto&uuid=magic' hello eventsub '{"tag":"x"}'
afb-client-demo 'localhost:5555/api?token=toto&uuid=magic' hello eventpush '{"tag":"x","data":true}'
# Dump data from TSDB
influx -database 'agl-garner' -execute 'show series'
influx -database 'agl-garner' -execute 'select * from "xds/supervisor/trace"'
Example 2: Demo based on AGL mockup services
# Monitor AGL mockup services
cd $ROOT_DIR/agl-services-mockup && start_agl_mockup.sh 1
# ... at this point script stop and wait user...
# In another shell, execute following commands to request monitoring of can_emul and gps_emul sockets
afb-client-demo 'localhost:5678/api?token=HELLO&uuid=c' xds trace/start '{"ws":"can_emul"}'
afb-client-demo 'localhost:5678/api?token=HELLO&uuid=c' xds trace/start '{"ws":"gps_emul"}'
# Press any key in 1 shell to continue start_agl_mockup.sh script
# Dump data from TSDB
influx -database 'agl-garner' -execute 'select * from "xds/supervisor/trace"'
# Drop data
# influx -database 'agl-garner' -execute 'drop measurement "xds/supervisor/trace"'
Deploy
AGL
TBD