Module is based on Cloud Function called by Cloud Scheduler. Each call says which endpoint should be pushed to Google Cloud Monitoring custom metrics.
For further setup, use variable scrape_jobs, e.g.:
module "metrics_push" {
source = "../" # use correct module path
project_id = var.project
scrape_jobs = {
testing : {
schedule : "* * * * *"
endpoint : "https://example.com/metrics"
}
}
region = var.region
}Each key in scrape_jobs can contain following keys:
schedule(required) - cronlineendpoint(required) - url to metrics endpointdescription- used for scheduler descriptiontime_zone- time zone, default "Europe/Prague"
Kuddos for https://github.com/google/go-metrics-stackdriver/blob/main/stackdriver.go on how to handle histograms.
Currently supported Prometheus metrics are:
- Gauge,
- Counter,
- Histogram.
Metrics are kept in Google Cloud Monitoring under following path: custom.googleapis.com/<key>/<metric>, e.g. custom.googleapis.com/testing/app_info
where testing was given as a key in scrape_jobs variable.
Install pre-commit hooks by running following commands:
brew install pre-commit terraform-docs
pre-commit install| Name | Version |
|---|---|
| terraform | >= 0.13 |
| Name | Version |
|---|---|
| archive | n/a |
| n/a | |
| random | n/a |
No modules.
| Name | Type |
|---|---|
| google_cloud_scheduler_job.scrape_job | resource |
| google_cloudfunctions_function.function | resource |
| google_cloudfunctions_function_iam_member.invoker | resource |
| google_project_iam_member.monitoring | resource |
| google_service_account.sa | resource |
| google_storage_bucket.bucket | resource |
| google_storage_bucket_object.archive | resource |
| random_string.random | resource |
| archive_file.dotfiles | data source |
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| project_id | Project ID | string |
n/a | yes |
| region | GCP region | string |
n/a | yes |
| scrape_jobs | Metrics scraping setup, each item needs key schedule (e.g. * * * * *) and endpoint (https://example.com/metrics) | map(map(string)) |
n/a | yes |
| Name | Description |
|---|---|
| sa | Service account used for Cloud Function runtime email |