Mainflux.mainflux/readers/mongodb/README.md

83 lines
3.4 KiB
Markdown
Raw Normal View History

# MongoDB reader
MongoDB reader provides message repository implementation for MongoDB.
## 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.
2019-07-18 21:01:09 +08:00
| Variable | Description | Default |
|--------------------------------|------------------------------------------------|----------------|
| MF_THINGS_URL | Things service URL | localhost:8181 |
| MF_MONGO_READER_PORT | Service HTTP port | 8180 |
| MF_MONGO_READER_DB_NAME | MongoDB database name | mainflux |
| MF_MONGO_READER_DB_HOST | MongoDB database host | localhost |
| MF_MONGO_READER_DB_PORT | MongoDB database port | 27017 |
| MF_MONGO_READER_CLIENT_TLS | Flag that indicates if TLS should be turned on | false |
| MF_MONGO_READER_CA_CERTS | Path to trusted CAs in PEM format | |
| MF_JAEGER_URL | Jaeger server URL | localhost:6831 |
| MF_MONGO_READER_THINGS_TIMEOUT | Things gRPC request timeout in seconds | 1 |
## Deployment
```yaml
MF-780 - Use Normalizer as a lib (#915) * Use Normalizer as a lib To normalize messages on the consumer side, Normalizer is moved to the internal pkgs. Writers being message consumers are modified to do message normalization instead of subscribing to normalized messages subject. Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Fix logging middleware for readers and writers Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Remove normalizer interface Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Use Normalizer in writers As we agreed on #919, we'll use normalizer as an interface and provide the default SenML implementation. Because of that, Normalizer is removed from `internal` and we'll use the project structure proposed in the aforementioned issue. Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Fix tests Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Remove unused batch settings from influxDB reader Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update docs Move Normalizer service to `addons`. Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Rename channels input topic Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update Noramlizer docs Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Remove commented code Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update readers logging Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update addons docker-compose files Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com> * Update topcis explanations Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
2019-10-31 21:04:47 +08:00
version: "3.7"
mongodb-reader:
image: mainflux/mongodb-reader:[version]
container_name: [instance name]
expose:
- [Service HTTP port]
restart: on-failure
environment:
MF_THINGS_URL: [Things service URL]
MF_MONGO_READER_PORT: [Service HTTP port]
MF_MONGO_READER_DB_NAME: [MongoDB name]
MF_MONGO_READER_DB_HOST: [MongoDB host]
MF_MONGO_READER_DB_PORT: [MongoDB port]
MF_MONGO_READER_CLIENT_TLS: [Flag that indicates if TLS should be turned on]
MF_MONGO_READER_CA_CERTS: [Path to trusted CAs in PEM format]
2019-07-18 21:01:09 +08:00
MF_JAEGER_URL: [Jaeger server URL]
MF_MONGO_READER_THINGS_TIMEOUT: [Things gRPC request timeout in seconds]
ports:
- [host machine port]:[configured HTTP port]
```
To start the service, execute the following shell script:
```bash
# download the latest version of the service
git clone https://github.com/mainflux/mainflux
cd mainflux
# compile the mongodb reader
make mongodb-reader
# copy binary to bin
make install
# Set the environment variables and run the service
2019-07-18 21:01:09 +08:00
MF_THINGS_URL=[Things service URL] MF_MONGO_READER_PORT=[Service HTTP port] MF_MONGO_READER_DB_NAME=[MongoDB database name] MF_MONGO_READER_DB_HOST=[MongoDB database host] MF_MONGO_READER_DB_PORT=[MongoDB database port] MF_MONGO_READER_CLIENT_TLS=[Flag that indicates if TLS should be turned on] MF_MONGO_READER_CA_CERTS=[Path to trusted CAs in PEM format] MF_JAEGER_URL=[Jaeger server URL] MF_MONGO_READER_THINGS_TIMEOUT=[Things gRPC request timeout in seconds] $GOBIN/mainflux-mongodb-reader
```
### Using docker-compose
This service can be deployed using docker containers. Docker compose file is
available in `<project_root>/docker/addons/mongodb-reader/docker-compose.yml`.
In order to run all Mainflux core services, as well as mentioned optional ones,
execute following command:
```bash
docker-compose -f docker/docker-compose.yml up -d
docker-compose -f docker/addons/mongodb-reader/docker-compose.yml up -d
```
## Usage
Service exposes [HTTP API][doc] for fetching messages.
[doc]: ../swagger.yml