Skip to content
M3 monorepo - Distributed TSDB, Aggregator and Query Engine, Prometheus Sidecar, Graphite Compatible, Metrics Platform
Go Shell JavaScript Makefile TLA HTML Other
Branch: master
Clone or download

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite [all] Upgrade Go runtime to 1.13, use go modules, remove glide and us… Jun 3, 2020
.ci @ 96907c2 [ci] Update ci-scripts w/ codecov changes (#2350) May 21, 2020
.github [docs] Add draft PR instructions to PR template doc (#1659) May 22, 2019
config Add changelog for 0.14.2 (#2014) Oct 25, 2019
docker [all] Upgrade Go runtime to 1.13, use go modules, remove glide and us… Jun 3, 2020
docs [all] Upgrade Go runtime to 1.13, use go modules, remove glide and us… Jun 3, 2020
examples/dbnode/proto_client [m3coordinator] Support annotations in writer (#2022) Oct 28, 2019
integrations [dbnode] Ignore Dupe ID Errors Earlier and Add Metrics/Error Logs to … May 8, 2020
kube [docs] Add StorageClass volumeBindingMode guidance (#2234) Apr 3, 2020
m3db.io [dbnode] Sort by unmarked index entries for indexing (#2328) May 11, 2020
scripts [query] Return M3-Results-Limited header when series limit is reached… Jun 3, 2020
specs Add TLA+ specification for future M3DB version-based flushing (#1223) Jan 16, 2019
src [dbnode] Add documentation on flushing/snapshotting (#2385) Jun 4, 2020
.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 [tools] CLI tool to simplify some tasks, and eliminate the curl comma… Apr 15, 2020
.gitattributes [m3coordinator] Support annotations in writer (#2022) Oct 28, 2019
.gitignore [all] Upgrade Go runtime to 1.13, use go modules, remove glide and us… Jun 3, 2020
.gitmodules Start using the ci-scripts submodule (#232) Jan 25, 2017
.goreleaser.yml [goreleaser] Only build amd64 architecture for m3query releases (#2202) Mar 10, 2020
.metalinter.json Merge m3aggregator into monorepo Oct 9, 2018
.nvmrc Merge m3ctl into monorepo Feb 25, 2019
CHANGELOG.md [changelog] Update changelog for 0.15 release (#2387) Jun 3, 2020
CONTRIBUTING.md Add pull request template (#1575) Apr 19, 2019
DEVELOPER.md [etcd] Upgrade etcd client library to 3.4.3 to fix data race in tests ( Jan 12, 2020
LICENSE Update license to Apache 2 (#664) May 18, 2018
Makefile [all] Upgrade Go runtime to 1.13, use go modules, remove glide and us… Jun 3, 2020
NOTICES.txt Copy cors from etcd, since they eliminated the package (#1320) Jan 30, 2019
README.md [m3comparator] query without metric name (#2335) May 29, 2020
TESTING.md Clean up files after monorepo merge (#734) May 30, 2018
docker-compose.yml [all] Upgrade Go runtime to 1.13, use go modules, remove glide and us… Jun 3, 2020
go.mod [dtest] Initial docker integration test migration (#2340) Jun 4, 2020
go.sum [dtest] Initial docker integration test migration (#2340) Jun 4, 2020
issue_template.md Create an M3 issue template (#1172) Nov 14, 2018
mkdocs.yml [query] Native PromQL integration into m3coordinator (#2343) May 26, 2020
tools.go [all] Upgrade Go runtime to 1.13, use go modules, remove glide and us… Jun 3, 2020

README.md

M3 GoDoc Build Status Coverage Status FOSSA Status

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. Join our M3 meetup group to receive notifications on upcoming meetings: https://www.meetup.com/M3-Community/.

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": "__name__",
      "value": "user_login"
    },
    {
      "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.