Skip to content
M3 monorepo - Distributed TSDB, Aggregator and Query Engine, Prometheus Sidecar, Graphite Compatible, Metrics Platform
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite [ci] ensure (again) clean checkout in docs builds (#1544) Apr 10, 2019
.ci @ 4cb3c72 [ci] pull in latest ci scripts (#1503) Mar 27, 2019
.github Add pull request template (#1575) Apr 19, 2019
docker Add query/coordinator dashboards to start_m3 (#1535) Apr 12, 2019
docs Add tips for writing docs, tweak doc scripts (#1554) Apr 19, 2019
integrations
kube [m3snch] kube script: add warmup between starts (#1529) Apr 3, 2019
m3db.io [m3db.io] redirect /talks to media page (#1228) Dec 4, 2018
scripts Add tips for writing docs, tweak doc scripts (#1554) Apr 19, 2019
specs
src [query] Offset function (#1561) Apr 20, 2019
.codecov.yml Optimize serialize.TagDecoder internal pooling usage (#1114) Oct 19, 2018
.dockerignore
.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
.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 [gitignore] include xml files from static sites Mar 25, 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
.nvmrc Merge m3ctl into monorepo Feb 25, 2019
CHANGELOG.md Update changelog for 0.8.4 Apr 20, 2019
CONTRIBUTING.md Add pull request template (#1575) Apr 19, 2019
DEVELOPER.md
LICENSE
Makefile Add tips for writing docs, tweak doc scripts (#1554) Apr 19, 2019
NOTICES.txt
README.md Add community meeting to repository readme (#1526) Apr 2, 2019
TESTING.md
docker-compose.yml [ci] remove dependency on docker CI base image (#1194) Nov 26, 2018
glide.lock Support mid stream schema changes in the protobuf encoder/iterator + … Apr 19, 2019
glide.yaml Support mid stream schema changes in the protobuf encoder/iterator + … Apr 19, 2019
issue_template.md Create an M3 issue template (#1172) Nov 14, 2018
mkdocs.yml Add tips for writing docs, tweak doc scripts (#1554) Apr 19, 2019
tools.json

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:

Community meetings

M3 contributors and maintainers have monthly (every four weeks) meetings at 11:00 AM (USA Pacific) on Tuesday.

An initial agenda is posted to the community meeting shared Google doc a day before each meeting, and everyone is welcome to suggest additional topics or other agendas.

Please download and import the following iCalendar (.ics) files to calendar system.

Monthly: us04web.zoom.us/meeting/519434268/ics?icsToken=0509418cef48c753d095f78eabc177f7ee2ced032a53913644bc86bb88b54862

Join Zoom Meeting: us04web.zoom.us/j/519434268

Test it out

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.

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.