Logs are an essential part of observing any service; without them you are flying blind. But collecting and analyzing them can be a real challenge -- especially at scale. Not only do you need to solve the basic task of collecting your logs, but you must do it in a reliable, performant, and robust manner. Nothing is more frustrating than having your logs pipeline fall on it's face during an outage, or even worse, disrupt more important services!
Fear not! In this guide we'll show you how to send send logs to GCP Cloud Storage (GCS) and build a logs pipeline that will be the backbone of your observability strategy.
What is GCP Cloud Storage (GCS)?
Google Cloud Storage is a RESTful online file storage web service for storing and accessing data on Google Cloud Platform infrastructure. The service combines the performance and scalability of Google's cloud with advanced security and sharing capabilities. This makes it a prime candidate for log data.
How This Guide Works
We'll be using Vector to accomplish this task. Vector is a popular open-source utility for building observability pipelines. It's written in Rust, making it lightweight, ultra-fast and highly reliable. And we'll be deploying Vector as a daemon.
The daemon deployment strategy is designed for data
collection on a single host. Vector runs in the background, in its own process,
collecting all data for that host.
Typically data is collected from a process manager, such as Journald via
journald source, but can be collected
through any of Vector's sources.
The following diagram demonstrates how it works.
What We'll Accomplish
To be clear, here's everything we'll accomplish in this short guide:
Install Vectorcurl --proto '=https' --tlsv1.2 -sSf https://sh.vector.dev | shexplain this command
Or choose your preferred method.
Configure Vectorcat <<-VECTORCFG > vector.toml[sources.in]include = ["/var/log/nginx/*.log"] # requiredtype = "file" # required[sinks.out]# Generalbucket = "my-bucket" # requiredinputs = ["in"] # requiredtype = "gcp_cloud_storage" # required# Encodingencoding.codec = "ndjson" # requiredVECTORCFGexplain this command
Start Vectorvector --config vector.toml
That's it! Simple and to the point. Hit
Vector is powerful utility and we're just scratching the surface in this guide. Here are a few pages we recommend that demonstrate the power and flexibility of Vector: