Distributed TSDB and Query Engine, Prometheus Sidecar, Metrics Aggregator, and more such as Graphite storage and query engine.
More information:
M3 contributors and maintainers have monthly (every four weeks) meetings. Join our M3 meetup group to receive notifications on upcoming meetings: https://www.meetup.com/M3-Community/.
Recordings of past meetups can be found here: https://vimeo.com/user/120001164/folder/2290331.
Members of the M3 team will hold office hours on the third Thursday of every month from 11-1pm EST. In order to join, make sure to sign up for a slot here: https://calendly.com/chronosphere-intro/m3-community-office-hours.
The easiest way to testing out M3 is to follow one of the guides from the documentation. For a fully comprehensive getting started guide, see our single node how-to.
# to build a local m3dbnode process
make m3dbnode (note that we currently require at least Go 1.10 or higher)
# run it with the sample configuration
./bin/m3dbnode -f ./src/dbnode/config/m3dbnode-local-etcd.yml
To cross-compile and build for Linux AMD64 build with make m3dbnode-linux-amd64
.
curl -X POST http://localhost:7201/api/v1/database/create -d '{
"type": "local",
"namespaceName": "default",
"retentionTime": "2h"
}'
To test out some of the functionality of M3DB there are some user friendly HTTP JSON APIs that you can use. These use the DB node cluster service endpoints.
Note: performance sensitive users are expected to use the more performant endpoints via either the Go src/dbnode/client/Session
API, or the GRPC endpoints exposed via src/coordinator
.
curl http://localhost:9003/writetagged -s -X POST -d '{
"namespace": "default",
"id": "foo",
"tags": [
{
"name": "__name__",
"value": "user_login"
},
{
"name": "city",
"value": "new_york"
},
{
"name": "endpoint",
"value": "/request"
}
],
"datapoint": {
"timestamp":'"$(date +"%s")"',
"value": 42.123456789
}
}'
curl http://localhost:9003/query -s -X POST -d '{
"namespace": "default",
"query": {
"regexp": {
"field": "city",
"regexp": ".*"
}
},
"rangeStart": 0,
"rangeEnd":'"$(date +"%s")"'
}' | jq .
A Dockerfile is included for both development and production deployment purposes. It uses a multi-stage build in order to produce a lightweight production image from a single Dockerfile. Accordingly, it requires Docker 17.05 or later to build.
docker build -f docker/m3dbnode/Dockerfile -t m3dbnode:$(git rev-parse head) .
docker run --name m3dbnode m3dbnode:$(git rev-parse head)
If you wish to build an image with the source code included you can stop the build after the
builder
stage:
docker build -f docker/m3dbnode/Dockerfile -t m3dbnode:$(git rev-parse head) --target builder .
The default Docker image will start a single m3dbnode
process with an embedded etcd instance to
mimic a production environment. If you would like to further customize the configuration, you must
provide your own and mount it into the container:
docker run --name m3dbnode -v /host/config.yml:/etc/m3dbnode/myconfig.yml m3dbnode:tag -f /etc/m3dbnode/myconfig.yml
This project is released under the Apache License, Version 2.0.