M3 Documentation

Quickstart

Read more arrow-right-circle

Create a Cluster

Read more arrow-right-circle

Overview

Read more arrow-right-circle

Kubernetes Operator

Read more arrow-right-circle

M3DB, a distributed time series database

About M3DB, inspired by Gorilla and Cassandra, is a distributed time series database released as open source by Uber Technologies. It can be used for storing realtime metrics at long retention. Here are some attributes of the project: Distributed time series storage, single nodes use a WAL commit log and persists time windows per shard independently Cluster management built on top of etcd Built-in synchronous replication with configurable durability and read consistency (one, majority, all, etc) M3TSZ float64 compression inspired by Gorilla TSZ compression, configurable as lossless or lossy Arbitrary time precision configurable from seconds to nanoseconds precision, able to switch precision with any write Configurable out of order writes, currently limited to the size of the configured time window’s block size Current Limitations Due to the nature of the requirements for the project, which are primarily to reduce the cost of ingesting and storing billions of timeseries and providing fast scalable reads, there are a few limitations currently that make M3DB not suitable for use as a general purpose time series database.
Read more arrow-right-circle

M3 Coordinator, API for reading/writing metrics and management

M3 Coordinator is a service that coordinates reads and writes between upstream systems, such as Prometheus, and downstream systems, such as M3DB. It also provides management APIs to setup and configure different parts of M3. The coordinator is generally a bridge for read and writing different types of metrics formats and a management layer for M3. Note: M3DB by default includes the M3 Coordinator accessible on port 7201. For production deployments it is recommended to deploy it as a dedicated service to ensure you can scale the write coordination role separately and independently to database nodes as an isolated application separate from the M3DB database role.
Read more arrow-right-circle

M3 Query, a stateless query server for M3DB and Prometheus

M3 Query is a service that exposes all metrics query endpoints along with metrics time series metadata APIs that return dimensions and labels of metrics that reside in a M3DB cluster. Note: M3 Coordinator, and by proxy M3DB, by default includes the M3 Query endpoints accessible on port 7201. For production deployments it is recommended to deploy it as a dedicated service to ensure you can scale the memory heavy query role separately from the metrics ingestion write path of writes through M3 Coordinator to M3DB database role nodes.
Read more arrow-right-circle

How To Guides

Read more arrow-right-circle

Operational Guides

This list of operational guides provide documentation for operating M3.
Read more arrow-right-circle

Integrations

Read more arrow-right-circle

Troubleshooting

Some common problems and resolutions Ports 9001-9004 aren’t open after starting m3db. These ports will not open until a namespace and placement have been created and the nodes have bootstrapped. Bootstrapping is slow Double check your configuration against the bootstrapping guide. The nodes will log what bootstrapper they are using and what time range they are using it for. If you’re using the commitlog bootstrapper, and it seems to be slow, ensure that snapshotting is enabled for your namespace.
Read more arrow-right-circle

FAQs

Is there a way to disable M3DB embedded etcd and just use an external etcd cluster? Yes, you can definitely do that. It’s all just about setting the etcd endpoints in config as etcd hosts instead of M3DB hosts. See these docs for more information on configuring an external etcd cluster. Is there a client that lets me send metrics to m3coordinator without going through Prometheus? Yes, you can use the Prometheus remote write client.
Read more arrow-right-circle