Search code examples
google-cloud-platformstackdriver

How are log-based metrics priced in Google Stackdriver?


I'm evaluating app logging solutions, and I'm unclear on stackdriver pricing.

Right now, my logging is node.js apps -> fluentd server -> hosted elasticsearch -> kibana

In my apps, I log events in json, keyed on an eventType field, eg,

{
  eventType: 'ARBITRARY_JOB_COMPLETE',
  field2: 'etc'
  //...
}

Then, in Kibana, it's a trivial matter to make queries on those events to filter/count/etc. and build dashboards. All told, I'm currently counting ~30 different events for dashboards.

I'm trying to translate this to stackdriver's pricing model. According to their current pricing page (italicized emphasis is mine):

Basic Tier: $0.10 per time series/month, and $1.00 per metric descriptor/month.

To understand the allotment and overage charges, you must understand how Stackdriver uses metric descriptors and time series:

A metric descriptor defines a metric type and any associated labels used to parameterize the metric. A single metric descriptor can be responsible for any number of time series. For example, only a single descriptor is needed for time series data from all of your VM instances.

A time series holds time-stamped data for the combination of a metric type, a monitored resource such as a VM instance or database, and values for any labels the metric defines. Data points in a time series expire at the end of their retention period. A logs-based metric is a custom metric descriptor created by Stackdriver Logging. It counts the number of log entries that match a filter.

For example, suppose you have 180 VM instances and you want to write a custom measurement for each of them every minute. You define a custom metric descriptor, custom.googleapis.com/my_measurement. On each VM instance, every minute, you write a data point to this metric, specifying both the metric's name and the name of the VM instance. This will create a separate time series for each VM instance. In the Premium Tier, you have used one time series (out of 500) in each of your 180 chargeable resources, and one metric descriptor (out of 250) in your project. In the Basic Tier, the overage cost for this custom data is $19.00 per month: $1.00 for the metric descriptor, and $18.00 for the 180 time series. If you stop writing data to the metric, all the time series eventually expire and you are left with the $1.00 per month charge for the descriptor, which you can delete.

The example deals with VMs, so it's hard to apply to my use case. I can think of 2 possible interpretations:

  1. Each eventType I count costs $ 1.10/month ($ 1 for descriptor, $ 0.10 for the resultant time-series). So, 30 events = $ 33.00/mo
  2. Each eventType I count is considered a separate time series, resulting in $ 1/month for the descriptor, and $ 0.10 * 30 for each eventType's time-series.

Number 2 seems like a reasonable interpretation, given the VM example (i.e., 1 'descriptor' and 180 'series', 1 for each VM), but I'm aware I might just be optimistic in my reading.


Solution

  • I am a PM on the Stackdriver team. If I understand correctly - you want to create a metric from the filter such that for each disparate eventType value you get a separate timeseries.

    Today, this would each me a different metric descriptor and timeseries. We are actively working on support for labels, so in the future you can have a single metric descriptor with an eventType label so you get various timeseries with that single descriptor.

    Also note that: 1. Today there is not charge for any logs based or user defined metrics in general until the end of Q1. 2. In the Premium Tier these will be included up to 250 metric descriptors (as you do point to above).

    Thanks, Deepak