These port numbers are used when running Abacus in a local dev environment.
port | component |
---|---|
9080 | abacus-usage-collector |
9088 | abacus-usage-reporting |
9100 | abacus-usage-meter |
9200 | abacus-usage-accumulator |
9300 | abacus-usage-aggregator |
9500 | abacus-cf-applications |
9501 | abacus-cf-renewer |
9502 | abacus-cf-services |
9880 | abacus-provisioning-plugin |
9881 | abacus-account-plugin |
9882 | abacus-authserver-plugin |
9990 | abacus-eureka-plugin |
9883 | abacus-ext-housekeeper |
9884 | abacus-ext-healthchecker |
Follow these configuration steps.
Logs are controlled via the DEBUG
environment variable. There are 3 types of logs:
- debug logs (starting with
abacus-
) - exception logs (
e-abacus-
) - performance logs (
p-abacus-
)
For example to monitor the inner working of the abacus-breaker
module you need to set DEBUG=abacus-breaker
.
You can also configure logging for multiple modules like this DEBUG=abacus-breaker,abacus-retry
.
The logs are DEBUG logs so they will produce a lot of entries in production. Usually you'll want to use the exception logs DEBUG=e-*
🚨 Warning: Enabling debug logging with high visibility (abacus-*
) may lead to increased memory consumption and eventually to out of memory errors (OOM).
Dynamic/Remote configuration
The debug log can be configured dynamically (remotely). To get the current debug log config:
curl http://<host><:port>/debug
To enable abacus-breaker
and abacus-retry
for example:
curl http://<host><:port>/debug?config=abacus-breaker,abacus-retry
Abacus supports MongoDB. The DB is configured using these environment variables:
DB
- URL of the MongoDB (default:localhost:27017
)DB_OPTS
- DB-specific connections configuration. Accepts JSON with Mongo connection settings.
To select the DB:
- start MongoDB on your machine
- use the
bin/local*
scripts to set the proper environment - start Abacus
yarn run build
yarn start
yarn run demo
Note: The local*
scripts sets JOBS=1
to force serial execution of tests and prevent multiple tests working with the same DB.
Modify all of the application manifests (manifest.yml
) to include the DB environment variables:
env:
DB: mongodb://mydbhost.com:27017
You can use Cloud Foundry service instance, instead of hard-coded DB URL. To do so omit the DB
environment variable above, create a DB service instance (we'll call it db
) and execute:
-
Linux:
yarn run cfstage large cf apps | tail -n +5 | awk '{print $1}' | xargs -n1 | xargs -P 5 -i cf bind-service {} db yarn run cfstart large
-
OS X:
yarn cfpush cfstage large cf apps | tail -n +5 | awk '{print $1}' | xargs -n1 | xargs -P 5 -n 1 -J {} cf bind-service {} db yarn run cfstart large
This will stage all Abacus applications without starting them. Then we'll bind the db
service instance to all of them, and finally we'll start the applications so they can make use of the bound service instance.
To extend the Abacus pipeline, configure the aggregator's application sink, using the following variables:
SINK
specifies the host to post toAGGREGATOR_SINK_APPS
is required if you are distributing the requests based on they key. This parameter is optional. The path to which the data will be posted is/v1/metering/aggregated/usage
To post the documents to http://example.com/v1/metering/aggregated/usage
export the SINK
variable and start Abacus:
export SINK=http://example.com
yarn run start
For Cloud Foundry deployment you need to add SINK
and AGGREGATOR_SINK_APPS
variables to the aggregator's manifest.