Skip to content

Commit

Permalink
feat: support log monitor data sources (#87)
Browse files Browse the repository at this point in the history
  • Loading branch information
obs-gh-konstantintikhonov authored Dec 14, 2023
1 parent bdbc37a commit c8f2278
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 0 deletions.
14 changes: 14 additions & 0 deletions docs/data-sources/monitor.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ Read-Only:
- `count` (Block List) (see [below for nested schema](#nestedblock--rule--count))
- `facet` (Block List) (see [below for nested schema](#nestedblock--rule--facet))
- `group_by_group` (Block List) (see [below for nested schema](#nestedblock--rule--group_by_group))
- `log` (List of Object) (see [below for nested schema](#nestedatt--rule--log))
- `promote` (Block List) (see [below for nested schema](#nestedblock--rule--promote))
- `source_column` (String)

Expand Down Expand Up @@ -115,6 +116,19 @@ Read-Only:
- `group_name` (String)


<a id="nestedatt--rule--log"></a>
### Nested Schema for `rule.log`

Read-Only:

- `compare_function` (String)
- `compare_values` (List of Number)
- `expression_summary` (String)
- `log_stage_id` (String)
- `lookback_time` (String)
- `source_log_dataset` (String)


<a id="nestedblock--rule--promote"></a>
### Nested Schema for `rule.promote`

Expand Down
40 changes: 40 additions & 0 deletions observe/data_source_monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,46 @@ func dataSourceMonitor() *schema.Resource {
},
},
},
"log": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"compare_function": {
Type: schema.TypeString,
Computed: true,
},
"compare_values": {
Type: schema.TypeList,
Optional: true,
Computed: true,
Elem: &schema.Schema{Type: schema.TypeFloat},
},
"lookback_time": {
Type: schema.TypeString,
Computed: true,
},
"expression_summary": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Description: descriptions.Get("monitor", "schema", "rule", "log", "expression_summary"),
},
"log_stage_id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Description: descriptions.Get("monitor", "schema", "rule", "log", "log_stage_id"),
},
"source_log_dataset": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Description: descriptions.Get("monitor", "schema", "rule", "log", "source_log_dataset"),
},
},
},
},
},
},
},
Expand Down
76 changes: 76 additions & 0 deletions observe/data_source_monitor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,79 @@ func TestAccObserveSourceMonitorLookup(t *testing.T) {
},
})
}

func TestAccObserveSourceMonitorLog(t *testing.T) {
randomPrefix := acctest.RandomWithPrefix("tf")

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: fmt.Sprintf(monitorConfigPreamble+`
resource "observe_dataset" "first" {
workspace = data.observe_workspace.default.oid
name = "%[1]s-first"
inputs = {
"test" = observe_datastream.test.dataset
}
stage {
pipeline = <<-EOF
make_col vt:BUNDLE_TIMESTAMP
make_interval vt
EOF
}
}
resource "observe_monitor" "first" {
workspace = data.observe_workspace.default.oid
name = "%[1]s"
inputs = {
"test" = observe_dataset.first.oid
}
stage {
pipeline = <<-EOF
filter OBSERVATION_INDEX != 0
EOF
}
stage {
pipeline = "timechart 1m, frame(back:10m), A_ContainerLogsClean_count:count(), group_by()"
}
rule {
source_column = "A_ContainerLogsClean_count"
log {
compare_function = "greater"
compare_values = [1]
lookback_time = "1m"
expression_summary = "Some text"
source_log_dataset = observe_dataset.first.oid
log_stage_id = "stage-0"
}
}
notification_spec {
merge = "separate"
}
}
data "observe_monitor" "lookup" {
id = observe_monitor.first.id
}`, randomPrefix),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("data.observe_monitor.lookup", "name", randomPrefix),
resource.TestCheckResourceAttr("data.observe_monitor.lookup", "rule.0.log.0.compare_function", "greater"),
resource.TestCheckResourceAttr("data.observe_monitor.lookup", "rule.0.log.0.compare_values.0", "1"),
resource.TestCheckResourceAttr("data.observe_monitor.lookup", "rule.0.log.0.lookback_time", "1m0s"),
resource.TestCheckResourceAttr("data.observe_monitor.lookup", "rule.0.log.0.expression_summary", "Some text"),
resource.TestCheckResourceAttr("data.observe_monitor.lookup", "rule.0.log.0.log_stage_id", "stage-0"),
),
},
},
})
}

0 comments on commit c8f2278

Please sign in to comment.