Better Stack Community
Learn from the experts
Explore in-depth guides on scaling apps in production, observability, DevOps, and more.
Scaling Containers
Learn everything you need to know about building, deploying and scaling containerized applications in production.
Docker Swarm vs Kubernetes: A Practical Comparison
Explore the pros and cons of Docker Swarm and Kubernetes and gain valuable insights to help you choose the right solution for your infrastructure needs.
A Comprehensive Guide to Logging in Python
Python provides a built-in logging module in its standard library that provides comprehensive logging capabilities for Python programs
Log Formatting in Production: 9 Best Practices
Learn 9 best practices for formatting your logs in production to make them easy to read, parse, and troubleshoot.
The Top 7 Log Shippers and How to Choose One
This article will help you choose the right log shipper for your needs, and will also provide a comparison of the top 6 log shippers on the market
How to Create a Developer-Friendly On-Call Schedule in 7 steps
Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way.
Logging
Learn everything you want to know about logging. Go from basics to best practices in no time.
Filebeat vs Logstash: How to Choose in 2025
Examine log collectors Filebeat and Logstash, comparing features and performance to identify the best choice for your log collection and management requirements.
Fluentd vs Fluent Bit: How to Choose in 2025
Discover Fluentd and Fluent Bit log collectors, examining their features and performance to identify the ideal solution for your log collection and management requirements.
Using Morgan for Request Logging in Express Apps
This article describes how to add request logging to your Express.js applications with Morgan.
How to Collect, Process, and Ship Log Data with Rsyslog
Learn how to collect, process, and centralize logs with Rsyslog in this comprehensive tutorial. Configure Rsyslog to read application logs, transform them with JSON templates, add custom fields, and forward everything to Better Stack for centralized monitoring.
How to Reduce Logging Costs with Log Sampling
Redundant logs in large systems inflate data costs. Log sampling efficiently reduces this by randomly selecting logs, maintaining insights with less data.
Observability
Learn everything about monitoring and gaining insights into your systems. Understand metrics, traces, logs, dashboards, and alerting strategies.
A Beginner's Guide to the OpenTelemetry Collector
This article explores why the OpenTelemetry Collector is a popular choice for building efficient and adaptable observability pipelines
Distributed Tracing for Developers: A Primer
This article explains distributed tracing basics: how it works, benefits and challenges, and practices to help you get started
New to OpenTelemetry Metrics? Start Here
Learn key OpenTelemetry metrics concepts to effectively instrument your applications and gain valuable insights into their performance and behavior.
Monitoring Node.js Apps with OpenTelemetry Metrics
Learn how to set up OpenTelemetry metrics in a Node.js application, track key metrics, and send data to a backend for analysis and visualization
Sampling in OpenTelemetry: A Beginner's Guide
Monitoring
Learn everything you need to know about monitoring and observability. Go from basics to best practices in no time.
How to Increase Prometheus Storage Retention
Learn how to increase Prometheus storage retention beyond the default 15 days. This guide covers configuration methods for systemd, Docker, and Kubernetes.
A Comprehensive Guide to Prometheus Exporters
A complete guide to Prometheus exporters: Learn what they are, how they work, how to customize them, and how to create your own for advanced monitoring
Monitoring Linux with Prometheus and Node Exporter
This guide will teach you how to install and configure Prometheus and Node Exporter for monitoring your Linux servers
What is DNS Monitoring?
Learn what is DNS monitoring, how does it work, what are the benefits and drawbacks and how to set it up.
How to Monitor if Your Cron Jobs Run Correctly
Learn what is Cron Job monitoring, how does it work, what are the benefits and drawbacks and how to set it up.
Incident Management
Learn everything you want to know about incident management. Go from basics to best practices in no time.
What Is Incident Management? Beginner’s Guide
Learn what is incident management, why is it important, what are specific steps from incident detection to incident resolution and postmortems.
7 Great Status Page Examples to Learn From
Since the status page has plenty of small details that can make a huge difference for its users we will have a look at 7 different status pages that are doing something different. Let's have a look at our selection.
What Is a Status Page? (And 5 Benefits of Getting One)
Learn what is status page, how does it work, what are the benefits and drawbacks and how to set it up.
Why Are Status Pages Important: 5 Reasons (And How to Get Started)
How to Design Escalation Policies (for Easy Incident Management)?
Scaling Containers
Learn everything you need to know about building, deploying and scaling containerized applications in production.
Exploring Podman: A More Secure Docker Alternative
This article explore Podman's features and benefits, comparing it to Docker and describing a step-by-step migration guide
Running GitHub Actions Locally with Act
Learn how to test GitHub Actions workflows locally using Act with practical examples for faster workflow development and fewer debugging iterations
Automating Docker Container Updates with Watchtower
Podman Compose Tutorial for Beginners
Learn how to use Podman Compose to manage multi-container applications with this beginner-friendly tutorial. Includes practical examples and step-by-step instructions.
Getting Started with Kind for Local Kubernetes Development
Scaling Node.js Applications
Take your Node.js applications to production: Learn building, deployment, and scaling essentials
Understanding Declaration Files in TypeScript
Learn how TypeScript declaration files (.d.ts) add type safety to JavaScript code, enable IDE autocomplete for untyped modules, and provide type checking without rewriting existing JavaScript
Understanding the verbatimModuleSyntax Option in TypeScript
Learn how TypeScript's verbatimModuleSyntax option enforces explicit type imports, prevents side effect issues, and makes module code more predictable by eliminating automatic import elision.
Getting Started with the sourceMap Option in TypeScript
Learn how TypeScript’s sourceMap compiler option generates .map files that connect compiled JavaScript back to your TypeScript source, improving breakpoints and stack traces. See what changes in build output, how Node and browsers consume source maps, and when to enable or disable them for deployment.
Type-Safe JSON in TypeScript: Parsing, Typing, and Runtime Validation
Learn how to work with JSON safely in TypeScript: why JSON.parse returns any, how to add types with interfaces and assertions, and how to validate incoming data at runtime using type guards to prevent mismatches from reaching production.
Fix Next.js Build Failures on Small Servers with Swap
Learn how to solve Next.js build crashes on low-memory servers by creating a swap file. This step-by-step guide shows you how to configure swap space on Ubuntu to handle memory-intensive builds without upgrading your server, saving costs while ensuring successful deployments.
Scaling PHP Applications
Learn everything you need to know about building, deploying and scaling PHP applications in production.
12 Common Errors in PHP and How to Fix Them
This article covers 12 common PHP errors and offers strategies to effectively resolve them
Get Started with Job Scheduling in PHP
Learn how to create and monitor PHP scheduled tasks in a production environment
Building Production-Ready Docker Images for PHP Apps
Learn about Docker images and containers, putting together a `Dockerfile`, and building a fully custom Docker image for deploying PHP apps to production
Containerizing Laravel Applications with Docker
A Complete Guide to Task Scheduling in Laravel
Learn how to create and monitor scheduled tasks in a Laravel application
Scaling Python Applications
Learn everything you need to know about building, deploying and scaling python applications in production.
Getting Started with Pyrefly
Learn how to get started with Pyrefly, a fast static type checker for Python, including installation, project configuration, running checks, handling Optional types, using generics and protocols, and gradually introducing type safety into existing codebases.
Introduction to Django 6.0 Background Tasks
A practical guide to Django 6.0's built-in background tasks framework. Learn to define tasks, configure backends, run workers, and handle async operations like email sending and image processing without Celery.
Ripple UI: Building Reactive Frontends for Python Backends
Learn how Ripple UI simplifies frontend development for Python developers. Explore fine-grained reactivity with track(), build dynamic UIs without JSX, and integrate seamlessly with FastAPI backends.
What's New in Python 3.14
Learn what’s new in Python 3.14: deferred annotations, subinterpreters, template strings, and free-threaded builds for faster, safer, parallel code.
Mise vs uv: Choosing the Right Python Package and Version Manager
Compare uv and Mise for Python development. Learn which tool fits your workflow based on package management, version switching, and multi-language support
Scaling Ruby Applications
ERB vs Haml: Syntax, Structure, and How They Shape Your Rails Views
A practical comparison of ERB and Haml in Rails, covering syntax, readability, structure, performance, and how each templating language affects developer workflow and template maintenance.
ERB vs Slim: Which Rails Template Language Should You Use?
A practical comparison of ERB and Slim for Rails views, explaining their syntax, readability, HTML compatibility, performance, and how each template language affects collaboration between developers and designers.
RailsAdmin vs Trestle: Automatic Admin Panels vs Explicit Control
Compare RailsAdmin’s auto-generated admin panel with Trestle’s explicit, code-driven resources. Learn how each handles setup, customization, and long-term flexibility so you can choose between fast setup and full control over your Rails admin
RailsAdmin vs ActiveAdmin: Centralized vs Modular Admin Configuration
Compare RailsAdmin and ActiveAdmin: RailsAdmin centralizes config in one initializer, while ActiveAdmin splits settings into per-resource files in `app/admin/`.
Haml vs Slim
Compare Haml vs Slim for Ruby and Rails views. Learn how their syntax, attributes, whitespace, and readability differ so you can choose the right template engine.
Scaling Go Applications
Learn everything you need to know about building, deploying and scaling Go applications in production.
A Comprehensive Guide to Using JSON in Go
How to Work with SQL Databases in Go
The article will discuss the use of the database/sql package in Go to connect to a database, execute SQL statements, and handle returned results. It will also cover advanced topics like prepared statements, transactions, and connection pooling.
Dockerizing Go Applications: A Step-by-Step Guide
Learn how to run Go applications confidently within Docker containers either locally or on your chosen deployment platform
Database migrations in Go with golang-migrate
Learn how to effectively manage database schema changes in Go applications using golang-migrate, including creation, execution, rollbacks, and CI/CD integration.
The Fundamentals of Error Handling in Go
Testing
Learn about the different types of automated tests that can be created for software , how they differ from each other, and when to use each one.
9 Playwright Best Practices and Pitfalls to Avoid
Explore 9 essential Playwright best practices to enhance the reliability, efficiency, and effectiveness of your end-to-end tests
A Beginner's Guide to RSpec
Learn RSpec testing for Ruby applications with this comprehensive beginner's guide. Master behavior-driven development, test organization, filtering, mocking, and setup methods to write reliable, maintainable tests that catch bugs before production.
Testing with Cucumber
Learn Cucumber for Ruby with hands-on BDD examples. Write plain-language tests, align developers and stakeholders, and build reliable, maintainable apps.
Getting Started with Minitest
Learn Ruby testing with Minitest. Start with simple assertions, explore advanced patterns, and build maintainable apps with confidence.
A Beginner's Guide to Unit Testing with Hypothesis
Discover how to use Hypothesis with pytest to write smarter Python tests, catch edge cases, and improve code quality with less effort. This guide covers setup, examples, and advanced testing tips.
Linux
Learn how to use various command-line utilities to perform simple and advanced administrative tasks on Linux-based systems
Understanding VPN Virtual Locations and Their Impact on Privacy
A comprehensive analysis reveals that most VPN providers route your traffic through countries you never selected. Explore the science behind server geolocation, understand virtual locations, and learn what this means for your privacy and security.
A Look into eza, the Modern ls Replacement
Learn how to install and master eza, a modern replacement for the ls command. Discover Git integration, advanced color theming, intelligent sorting, rich icons, and powerful filtering options to transform your terminal file navigation experience.
Nix vs asdf: Which Version Manager Should You Use?
Compare Nix and asdf for managing programming language versions. Learn the key differences in version switching, dependency isolation, team collaboration, and find out which tool fits your development workflow.
Homebrew vs Nix: Which Package Manager Should You Use?
Compare Homebrew and Nix package managers for macOS. Learn the key differences in dependency handling, reproducibility, team collaboration, and find out which tool fits your development workflow.
TUFW vs GUFW: Choosing a Terminal or GUI Interface for UFW
Compare TUFW and GUFW, two UFW interfaces for Linux firewalls. Learn how they differ in workflow, remote access, error handling, and who each fits best.
AI
Learn about the essentials of deploying and managing AI models in production, including model training, scaling, and performance optimization.
Olmo 3.1: A Look into the Open-Source LLM
Explore Olmo 3.1, the fully open-source LLM from AI2. Learn about its model variants, OlmoTrace for debugging, complete training transparency, and how it compares to proprietary models in performance and capabilities.
A Look into Gemini 3 Flash: Speed, Smarts, and Hallucination Rate
Explore Gemini 3 Flash's impressive speed and coding capabilities, but discover its critical hallucination rate that makes it unsuitable for factual tasks.
TanStack AI: Building Type-Safe, Provider-Agnostic AI Applications
Learn how TanStack AI provides a unified, type-safe interface for building AI applications with multiple providers. Explore streaming chat endpoints, tool usage, and function calling with full TypeScript support.
Beads: A Git-Friendly Issue Tracker for AI Coding Agents
Learn how Beads solves the context window problem for AI coding agents through a Git-native issue tracker with SQLite storage, JSON-L synchronization, and explicit dependency management for persistent project memory across development sessions.
Open-Source Workflow Automation with Activepieces
Learn how Activepieces provides self-hosted workflow automation with no per-task pricing. Explore its architecture, Docker deployment, AI integrations, and practical considerations for teams evaluating alternatives to Zapier and Make.com.
Databases
How Turso Eliminates SQLite's Single-Writer Bottleneck
Discover how Turso's Rust-based rewrite of SQLite introduces Multi-Version Concurrency Control (MVCC) to handle thousands of concurrent writes per second. This deep dive explains the single-writer problem, row-level versioning, and the performance gains that make SQLite viable for high-throughput applications.
How AWS S3 Achieves 1 Petabyte Per Second on Hard Disk Drives
Learn how AWS S3 delivers petabyte-scale performance using HDDs. Explore the architecture behind erasure coding, parallelism, and distributed storage at scale.
What is PocketBase? Features, Limitations, and Use Cases
Explore PocketBase: an open-source, self-hosted backend with SQLite database, authentication, and file storage in a single file. Learn its features and limitations
FaunaDB vs MongoDB
Compare **FaunaDB vs MongoDB** to find the best database for your project. Learn how FaunaDB offers strong consistency, global transactions, and easy setup, while MongoDB provides flexibility, control, and powerful scaling options.
CouchDB vs MongoDB
Compare CouchDB and MongoDB to see which NoSQL database fits your project. Learn how their replication models, consistency, and conflict handling differ, and find out which one works best for offline apps, distributed systems, or high-traffic web platforms.
Explore more

Guides
Explore our in-depth technical guides and tutorials and learn about scaling apps, observability, DevOps and more.

Questions
Find answers to frequently asked development questions. For information about Better Stack products, explore our docs.

Comparisons
Explore different tools, compare alternatives and find the best software solutions for your specific use case.
Improve your setup with community projects
See the full list of amazing projects on github
Supporting
open-source builders
Supporting the
We are proud to give back to open source and impact makers around the world.
Apply for a discounted non-profit plan at hello@betterstack.com