Skip to content
M3 monorepo - Distributed TSDB, Aggregator and Query Engine, Prometheus Sidecar, Metrics Platform
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite [ci] check for docker build on init queue Mar 13, 2019
.ci @ 3af0995 [ci] migrate Docker build to common ci-scripts (#1455) Mar 13, 2019
docker [ci] migrate Docker build to common ci-scripts (#1455) Mar 13, 2019
docs [docs] Update docs, fix typo and add a link to fanout docs (#1485) Mar 21, 2019
integrations [integrations] grafana: add m3snch dashboard (#1401) Feb 22, 2019
kube [m3nsch] script to more easily run on k8s (#1422) Mar 13, 2019
m3db.io [m3db.io] redirect /talks to media page (#1228) Dec 4, 2018
scripts [scripts] health: set curl timeouts (#1473) Mar 19, 2019
specs Add TLA+ specification for future M3DB version-based flushing (#1223) Jan 16, 2019
src Use a single index Results when querying across blocks (#1474) Mar 21, 2019
.codecov.yml Optimize serialize.TagDecoder internal pooling usage (#1114) Oct 19, 2018
.dockerignore Enforce mockgen is installed at retool installed version (#1257) Dec 20, 2018
.excludecoverage Merge m3aggregator into monorepo Oct 9, 2018
.excludefmt Update m3x and use code generated maps instead of ident.Hash based ma… Apr 17, 2018
.excludelint Update m3x and use code generated maps instead of ident.Hash based ma… Apr 17, 2018
.excludemetalint Ignore autogenerated grammar peg file from metalinting (#1284) Jan 4, 2019
.fossa.yml Add FOSSA license scan to CI (#1131) Nov 19, 2018
.gitattributes [k8s] Initial Kube manifests + docs (#733) May 30, 2018
.gitignore ignore emacs temp files (#1414) Feb 28, 2019
.gitmodules Start using the ci-scripts submodule (#232) Jan 25, 2017
.goreleaser.yml Use new quay docker repos with m3query, update docs, add m3query to g… Aug 7, 2018
.metalinter.json Merge m3aggregator into monorepo Oct 9, 2018
.nvmrc Merge m3ctl into monorepo Feb 25, 2019
CHANGELOG.md 0.7.2 changelog (#1467) Mar 16, 2019
CONTRIBUTING.md Rename import paths, Makefile paths, etc to reflect repository name c… Aug 4, 2018
DEVELOPER.md Add instructions for cutting a release (#1445) Mar 12, 2019
LICENSE Update license to Apache 2 (#664) May 18, 2018
Makefile Fix release process to include LD flags properly (#1466) Mar 16, 2019
NOTICES.txt Copy cors from etcd, since they eliminated the package (#1320) Jan 30, 2019
README.md [query] Docs improvements: migration and roadmap (#1457) Mar 14, 2019
TESTING.md Clean up files after monorepo merge (#734) May 30, 2018
docker-compose.yml [ci] remove dependency on docker CI base image (#1194) Nov 26, 2018
glide.lock Update t-channel dependency (#1454) Mar 15, 2019
glide.yaml Update t-channel dependency (#1454) Mar 15, 2019
issue_template.md Create an M3 issue template (#1172) Nov 14, 2018
mkdocs.yml [docs] Update docs, fix typo and add a link to fanout docs (#1485) Mar 21, 2019
tools.json [kube] validate manifests in CI (#1456) Mar 14, 2019

README.md

M3 GoDoc Build Status Coverage Status FOSSA Status Gitter chat

M3 Logo

Distributed TSDB and Query Engine, Prometheus Sidecar, Metrics Aggregator, and more. "More" now includes Graphite storage and query engine!

More information:

Test it out

(For a fully comprehsensive getting started guide, see our single node how-to).

Starting a node

# 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.

Creating a namespace to store metrics

curl -X POST http://localhost:7201/api/v1/database/create -d '{
  "type": "local",
  "namespaceName": "default",
  "retentionTime": "2h"
}'

Test RPC

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.

Write a datapoint

curl http://localhost:9003/writetagged -s -X POST -d '{
  "namespace": "default",
  "id": "foo",
  "tags": [
    {
      "name": "city",
      "value": "new_york"
    },
    {
      "name": "endpoint",
      "value": "/request"
    }
  ],
  "datapoint": {
    "timestamp":'"$(date +"%s")"',
    "value": 42.123456789
  }
}'

Query for reverse indexed time series data

curl http://localhost:9003/query -s -X POST -d '{
  "namespace": "default",
  "query": {
    "regexp": {
      "field": "city",
      "regexp": ".*"
    }
  },
  "rangeStart": 0,
  "rangeEnd":'"$(date +"%s")"'
}' | jq .

Building with Docker

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 .

Configuration

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.

You can’t perform that action at this time.