
* send and receive span context Signed-off-by: SammyOina <sammyoina@gmail.com> * initilize tracer in cmd Signed-off-by: SammyOina <sammyoina@gmail.com> * add span context to mainflux message Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate span context from adapters Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * fix linting error Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to coap service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to http service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to mqtt service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to broker Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing middleware to ws service Signed-off-by: SammyOina <sammyoina@gmail.com> * add tracing to services Signed-off-by: SammyOina <sammyoina@gmail.com> * fix naming convention of functions Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracer from mqtt svc Signed-off-by: SammyOina <sammyoina@gmail.com> * format code and removed unused code Signed-off-by: SammyOina <sammyoina@gmail.com> * rename tracing files Signed-off-by: SammyOina <sammyoina@gmail.com> * - rename nats tracer - intialize tracing at the broker Signed-off-by: SammyOina <sammyoina@gmail.com> * check for nil spans Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate spans to consumers writers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove unused variable Signed-off-by: SammyOina <sammyoina@gmail.com> * propagate traces to notifiers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove comments Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * remove span from message Signed-off-by: SammyOina <sammyoina@gmail.com> * trace over rabbitmq and mqtt Signed-off-by: SammyOina <sammyoina@gmail.com> * fix failing build Signed-off-by: SammyOina <sammyoina@gmail.com> * trace subscribe and unsuscribe ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add create span method Signed-off-by: SammyOina <sammyoina@gmail.com> * pass context from main Signed-off-by: SammyOina <sammyoina@gmail.com> * add span tags Signed-off-by: SammyOina <sammyoina@gmail.com> * restore coap transport.go Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to ops Signed-off-by: SammyOina <sammyoina@gmail.com> * add cancel to tracing Signed-off-by: SammyOina <sammyoina@gmail.com> * refactor handler Signed-off-by: SammyOina <sammyoina@gmail.com> * add comments to exported functions return interfaces Signed-off-by: SammyOina <sammyoina@gmail.com> * remove channel span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * add pub sub tracer Signed-off-by: SammyOina <sammyoina@gmail.com> * remove prefixes from operations Signed-off-by: SammyOina <sammyoina@gmail.com> * perpetuate context from root remove protocol from span tag Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder functions Signed-off-by: SammyOina <sammyoina@gmail.com> * create span function Signed-off-by: SammyOina <sammyoina@gmail.com> * add suffixes add pubsub tags Signed-off-by: SammyOina <sammyoina@gmail.com> * move from if to switch Signed-off-by: SammyOina <sammyoina@gmail.com> * add jaeger url to docker compose Signed-off-by: SammyOina <sammyoina@gmail.com> * remove snake case variables add comments to exported functions Signed-off-by: SammyOina <sammyoina@gmail.com> * check for empty sub topics Signed-off-by: SammyOina <sammyoina@gmail.com> * remove tracing on consumers Signed-off-by: SammyOina <sammyoina@gmail.com> * remove duplicate tracers Signed-off-by: SammyOina <sammyoina@gmail.com> * clean up unused variables Signed-off-by: SammyOina <sammyoina@gmail.com> * remove empty lines Signed-off-by: SammyOina <sammyoina@gmail.com> * write better comments Signed-off-by: SammyOina <sammyoina@gmail.com> * update readme jaeger url Signed-off-by: SammyOina <sammyoina@gmail.com> * initialize tracing midlleware on main update readme jaeger urls Signed-off-by: SammyOina <sammyoina@gmail.com> * reorder arguments for tracing middleware Signed-off-by: SammyOina <sammyoina@gmail.com> * add context to subscribe Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com>
HTTP adapter
HTTP adapter provides an HTTP API for sending messages through the platform.
Configuration
The service is configured using the environment variables presented in the following table. Note that any unset variables will be replaced with their default values.
Variable | Description | Default |
---|---|---|
MF_HTTP_ADAPTER_LOG_LEVEL | Log level for the HTTP Adapter | info |
MF_HTTP_ADAPTER_PORT | Service HTTP port | 80 |
MF_BROKER_URL | Message broker instance URL | nats://localhost:4222 |
MF_HTTP_ADAPTER_CLIENT_TLS | Flag that indicates if TLS should be turned on | false |
MF_HTTP_ADAPTER_CA_CERTS | Path to trusted CAs in PEM format | |
MF_JAEGER_URL | Jaeger server URL | localhost:6831 |
MF_THINGS_AUTH_GRPC_URL | Things service Auth gRPC URL | localhost:7000 |
MF_THINGS_AUTH_GRPC_TIMEOUT | Things service Auth gRPC request timeout in seconds | 1s |
Deployment
The service itself is distributed as Docker container. Check the http-adapter
service section in
docker-compose to see how service is deployed.
To start the service outside of the container, execute the following shell script:
# download the latest version of the service
git clone https://github.com/mainflux/mainflux
cd mainflux
# compile the http
make http
# copy binary to bin
make install
# set the environment variables and run the service
MF_BROKER_URL=[Message broker instance URL] \
MF_HTTP_ADAPTER_LOG_LEVEL=[HTTP Adapter Log Level] \
MF_HTTP_ADAPTER_PORT=[Service HTTP port] \
MF_HTTP_ADAPTER_CA_CERTS=[Path to trusted CAs in PEM format] \
MF_JAEGER_URL=[Jaeger server URL] \
MF_THINGS_AUTH_GRPC_URL=[Things service Auth gRPC URL] \
MF_THINGS_AUTH_GRPC_TIMEOUT=[Things service Auth gRPC request timeout in seconds] \
$GOBIN/mainflux-http
Setting MF_HTTP_ADAPTER_CA_CERTS
expects a file in PEM format of trusted CAs. This will enable TLS against the Things gRPC endpoint trusting only those CAs that are provided.
Usage
HTTP Authorization request header contains the credentials to authenticate a Thing. The authorization header can be a plain Thing key or a Thing key encoded as a password for Basic Authentication. In case the Basic Authentication schema is used, the username is ignored. For more information about service capabilities and its usage, please check out the API documentation.