Top Related Projects
A scalable, distributed Time Series Database.
The Prometheus monitoring system and time series database.
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.
Free and Open Source, Distributed, RESTful Search Engine
Quick Overview
Netflix/atlas is an in-memory time series database and graphing system. It's designed to manage dimensional time series data at scale, providing a query language for data manipulation and a web interface for graph creation and exploration. Atlas is particularly suited for monitoring and operational intelligence in cloud environments.
Pros
- Highly scalable and efficient for handling large volumes of time series data
- Flexible query language for data manipulation and analysis
- Integrated graphing system with a web-based user interface
- Designed for cloud-native environments and microservices architectures
Cons
- Steep learning curve for the query language and advanced features
- Limited documentation for some advanced use cases
- Primarily focused on in-memory storage, which may not be suitable for all use cases
- Requires significant resources for large-scale deployments
Code Examples
- Creating a simple line graph:
/api/v1/graph?q=name,jvm.gc.pause,:eq,:sum,(,nf.cluster,),:by&s=e-3h&e=2012-01-01T07:00&tz=US/Pacific
This query creates a line graph showing the sum of JVM GC pause times, grouped by the "nf.cluster" tag, for the last 3 hours.
- Using mathematical operations in a query:
/api/v1/graph?q=name,cpu.usage,:eq,:sum,4,:div
This query retrieves CPU usage data, sums it up, and then divides the result by 4.
- Applying moving average to smooth out data:
/api/v1/graph?q=name,http.requests,:eq,:sum,:dup,10,:mvavg
This query fetches HTTP request data, sums it up, and then applies a 10-point moving average to smooth out the graph.
Getting Started
To get started with Netflix/atlas:
-
Clone the repository:
git clone https://github.com/Netflix/atlas.git
-
Build the project:
cd atlas ./gradlew build
-
Run the standalone server:
./gradlew :atlas-standalone:run
-
Access the web interface at
http://localhost:7101/
For more detailed instructions and configuration options, refer to the project's documentation.
Competitor Comparisons
A scalable, distributed Time Series Database.
Pros of OpenTSDB
- Designed for massive scalability, capable of handling billions of data points per day
- Built on top of HBase, providing robust distributed storage and processing
- Supports a wide range of data collection agents and integrations
Cons of OpenTSDB
- Steeper learning curve and more complex setup compared to Atlas
- Less focus on real-time alerting and visualization capabilities
- Requires additional components like HBase, which increases operational complexity
Code Comparison
OpenTSDB query example:
http://example.com/api/query?start=1h-ago&m=sum:cpu.load{host=*}
Atlas query example:
/api/v1/graph?q=name,cpu.load,:eq,:sum
Key Differences
- Atlas is designed specifically for cloud-native environments, while OpenTSDB is more general-purpose
- Atlas provides a more integrated solution with built-in visualization and alerting features
- OpenTSDB offers greater flexibility in terms of data storage and querying options
- Atlas uses a custom stack-based query language, while OpenTSDB uses a more traditional REST API approach
Both systems have their strengths, with OpenTSDB excelling in raw scalability and Atlas providing a more streamlined experience for cloud environments. The choice between them depends on specific use cases and infrastructure requirements.
The Prometheus monitoring system and time series database.
Pros of Prometheus
- More widely adopted and has a larger community, leading to better support and resources
- Offers a powerful query language (PromQL) for flexible data analysis
- Provides built-in alerting capabilities
Cons of Prometheus
- Can be more complex to set up and configure compared to Atlas
- May require additional components (e.g., Alertmanager) for full functionality
Code Comparison
Atlas:
DefaultGraphEngine engine = new DefaultGraphEngine();
GraphResult result = engine.eval(graph, context);
Prometheus:
promql.Engine{
Timeout: 5 * time.Minute,
MaxSamples: 50000000,
}.NewInstantQuery(queryable, "sum(http_requests_total)", time.Now())
Both Atlas and Prometheus are powerful time series databases and monitoring systems. Atlas, developed by Netflix, is designed for high scalability and performance, particularly suited for cloud environments. Prometheus, on the other hand, has gained widespread adoption in the Kubernetes ecosystem and offers a more comprehensive feature set out-of-the-box.
While Atlas provides a simpler setup process and excels in handling high-cardinality data, Prometheus offers more flexibility in terms of querying and alerting. The choice between the two often depends on specific use cases, existing infrastructure, and team expertise.
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Pros of Grafana
- More versatile and supports a wide range of data sources
- Highly customizable dashboards with a user-friendly interface
- Large and active community with extensive plugin ecosystem
Cons of Grafana
- Can be resource-intensive for large-scale deployments
- Learning curve for advanced features and query languages
Code Comparison
Atlas (Java):
public class TimeSeriesExpr implements Expr {
private final TimeSeriesDataset dataset;
public TimeSeriesExpr(TimeSeriesDataset dataset) {
this.dataset = dataset;
}
}
Grafana (TypeScript):
export interface DataQuery {
refId: string;
hide?: boolean;
key?: string;
queryType?: string;
datasource?: DataSourceRef | null;
}
Summary
Atlas is a specialized time series database and graphing system developed by Netflix, while Grafana is a more general-purpose observability platform. Grafana offers greater flexibility in data sources and visualization options, making it suitable for a wider range of use cases. However, Atlas may provide better performance for specific time series data scenarios within Netflix's ecosystem. The code comparison shows Atlas's focus on time series data structures, while Grafana's code reflects its more generic approach to data queries across various sources.
Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.
Pros of Telegraf
- More versatile and supports a wider range of input plugins and data sources
- Actively maintained with frequent updates and a large community
- Designed to work seamlessly with InfluxDB and other time-series databases
Cons of Telegraf
- Can be more complex to configure due to its extensive feature set
- May have higher resource usage for simple monitoring tasks
- Lacks some of the advanced visualization capabilities of Atlas
Code Comparison
Atlas (Java):
public class AtlasServer {
public static void main(String[] args) {
ConfigManager.get().start();
HttpServer.start();
}
}
Telegraf (Go):
func main() {
config := flag.String("config", "", "configuration file to load")
flag.Parse()
if err := agent.Run(config); err != nil {
log.Fatal(err)
}
}
Both projects serve different purposes in the monitoring ecosystem. Atlas focuses on in-memory dimensional time series data with a strong emphasis on alerting and visualization. Telegraf, on the other hand, is a plugin-driven server agent for collecting and reporting metrics from a wide variety of sources. While Atlas is tailored for Netflix's specific needs, Telegraf offers more flexibility and integration options for general-purpose monitoring and metrics collection.
Free and Open Source, Distributed, RESTful Search Engine
Pros of Elasticsearch
- More versatile and widely adopted for full-text search and analytics
- Extensive documentation and large community support
- Scalable distributed architecture for handling large datasets
Cons of Elasticsearch
- Higher resource requirements and complexity
- Steeper learning curve for configuration and optimization
- Less specialized for time-series metrics compared to Atlas
Code Comparison
Atlas (Java):
DefaultGraphEngine engine = new DefaultGraphEngine();
GraphDef graph = new GraphDef();
graph.addDataExpr("name,sps,:eq,:sum");
engine.eval(graph, step, start, end);
Elasticsearch (Java):
SearchRequest searchRequest = new SearchRequest("index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("field", "value"));
searchRequest.source(searchSourceBuilder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
Atlas is more focused on time-series data and graph generation, while Elasticsearch provides a broader search and analytics platform. Atlas offers simpler setup for specific use cases, whereas Elasticsearch provides more flexibility but requires more configuration. Both have their strengths depending on the specific requirements of the project.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Atlas
Backend for managing dimensional time series data.
Links
License
Copyright 2014-2024 Netflix, Inc.
Licensed under the Apache License, Version 2.0 (the âLicenseâ); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an âAS ISâ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Top Related Projects
A scalable, distributed Time Series Database.
The Prometheus monitoring system and time series database.
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.
Free and Open Source, Distributed, RESTful Search Engine
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot