apiVersion: influxdata.com/v2alpha1
kind: Bucket
metadata:
    name: oss-metrics
spec:
    name: oss_metrics
    retentionRules:
      - everySeconds: 604800
        type: expire
---
apiVersion: influxdata.com/v2alpha1
kind: Label
metadata:
    name: influxdb2
spec:
    name: InfluxDB2
    color: '#326BBA'
---
apiVersion: influxdata.com/v2alpha1
kind: Label
metadata:
    name: prometheus
spec:
    name: prometheus
    color: '#326BBA'
---
apiVersion: influxdata.com/v2alpha1
kind: Dashboard
metadata:
    name: influxdb-oss-metrics
spec:
    charts:
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: _field
            fieldName: _field
            visible: true
          - displayName: _measurement
            fieldName: _measurement
            visible: true
          - displayName: _start
            fieldName: _start
            visible: true
          - displayName: _stop
            fieldName: _stop
            visible: true
          - displayName: _time
            fieldName: _time
            visible: true
          - displayName: _value
            fieldName: _value
            visible: true
          - displayName: host
            fieldName: host
            visible: true
          - displayName: id
            fieldName: id
            visible: true
          - displayName: url
            fieldName: url
            visible: true
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: URL
            fieldName: URL
            visible: true
          - displayName: Hours
            fieldName: Hours
            visible: true
          - displayName: Instance ID
            fieldName: Instance ID
            visible: true
          - displayName: Uptime Hours
            fieldName: Uptime Hours
            visible: true
        height: 3
        kind: Table
        name: Uptime
        queries:
          - query: |-
                import "math"
 
                from(bucket: "oss_metrics")
                    |> range(start:v.timeRangeStart, stop: v.timeRangeStop)
                    |> filter(fn: (r) =>r._measurement == "influxdb_uptime_seconds")
                    |> filter(fn:(r) => r._field == "gauge")
                    |> last()
                    |> drop(columns:[
                        "_start",
                        "_stop",
                        "_time",
                        "_measurement",
                        "_field",
                        "url",
                    ])
                    |> map(fn: (r)=> ({r with _value: math.round(x: float(v: r._value) / 60.0 / 60.0* 100.0) / 100.0}))
                    |> group()
                    |> rename(columns: {host:"Host", _value: "Uptime Hours", id: "Instance ID"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 4
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: _start
            fieldName: _start
            visible: true
          - displayName: _stop
            fieldName: _stop
            visible: true
          - displayName: _time
            fieldName: _time
            visible: true
          - displayName: _value
            fieldName: _value
            visible: true
          - displayName: _field
            fieldName: _field
            visible: true
          - displayName: _measurement
            fieldName: _measurement
            visible: true
          - displayName: host
            fieldName: host
            visible: true
          - displayName: url
            fieldName: url
            visible: true
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: URL
            fieldName: URL
            visible: true
          - displayName: '# of Orgs'
            fieldName: '# of Orgs'
            visible: true
        height: 2
        kind: Table
        name: Organizations
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "influxdb_organizations_total")
                  |> last()
                  |> drop(columns: ["_start", "_stop","_time","_measurement", "_field", "url"])
                  |> group()
                  |> rename(columns: {host: "Host", _value: "# of Orgs"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 3
        yPos: 3
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: '# of Orgs'
            fieldName: '# of Orgs'
            visible: true
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: URL
            fieldName: URL
            visible: true
          - displayName: '# of Telegraf Configs'
            fieldName: '# of Telegraf Configs'
            visible: true
        height: 2
        kind: Table
        name: Telegraf Configs
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "influxdb_telegrafs_total")
                  |> last()
                  |> drop(columns: ["_start", "_stop","_time","_measurement", "_field", "url"])
                  |> group()
                  |> rename(columns: {host: "Host", _value: "# of Telegraf Configs"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 3
        yPos: 5
      - axes:
          - base: "10"
            name: x
            scale: linear
          - base: "10"
            name: "y"
            scale: linear
        colors:
          - hex: '#31C0F6'
            id: 2df496c5-614d-4d42-8590-0bf106d711e7
            name: Nineteen Eighty Four
            type: scale
          - hex: '#A500A5'
            id: 817fd4b1-56fd-4687-a93a-b8659677796b
            name: Nineteen Eighty Four
            type: scale
          - hex: '#FF7E27'
            id: 64e7fa3e-3633-4992-8296-2f8fe8ea84c7
            name: Nineteen Eighty Four
            type: scale
        geom: line
        height: 5
        hoverDimension: auto
        kind: Xy
        legendColorizeRows: true
        legendOpacity: 1
        legendOrientationThreshold: 1e+08
        name: Local Object Store Reads
        position: overlaid
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "boltdb_reads_total")
                  |> derivative(unit: 1s, nonNegative: true)
                  |> drop(columns: ["url", "_measurement"])
        staticLegend: {}
        width: 6
        xCol: _time
        yCol: _value
        yPos: 7
      - axes:
          - base: "10"
            name: x
            scale: linear
          - base: "10"
            name: "y"
            scale: linear
        colors:
          - hex: '#31C0F6'
            id: 519954ff-d935-42f0-b016-f2dacd0614d9
            name: Nineteen Eighty Four
            type: scale
          - hex: '#A500A5'
            id: a8672357-f006-4aa4-a7d3-0e30229cb218
            name: Nineteen Eighty Four
            type: scale
          - hex: '#FF7E27'
            id: e5020d9e-cbf3-47ed-b8a4-e9def5c6e9ba
            name: Nineteen Eighty Four
            type: scale
        geom: line
        height: 4
        hoverDimension: auto
        kind: Xy
        legendColorizeRows: true
        legendOpacity: 1
        legendOrientationThreshold: 1e+08
        name: Query Requests
        position: overlaid
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "http_api_requests_total")
                  |> filter(fn: (r) => r.path == "/api/v2/query")
                  |> derivative(unit: 1s, nonNegative: true)
        staticLegend: {}
        width: 12
        xCol: _time
        yCol: _value
        yPos: 12
      - axes:
          - base: "10"
            name: x
            scale: linear
          - base: "10"
            name: "y"
            scale: linear
        geom: line
        height: 3
        kind: Xy
        name: Memory Allocations (Bytes)
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "go_memstats_alloc_bytes_total")
                  |> derivative(unit: 1s, nonNegative: true)
        staticLegend: {}
        width: 4
        xCol: _time
        yCol: _value
        yPos: 16
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: URL
            fieldName: URL
            visible: true
          - displayName: '# of Orgs'
            fieldName: '# of Orgs'
            visible: true
          - displayName: '# of Users'
            fieldName: '# of Users'
            visible: true
        height: 2
        kind: Table
        name: Users
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "influxdb_users_total")
                  |> last()
                  |> drop(columns: ["_start", "_stop","_time","_measurement", "_field", "url"])
                  |> group()
                  |> rename(columns: {host: "Host", _value: "# of Users"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 3
        xPos: 3
        yPos: 3
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: '# of Orgs'
            fieldName: '# of Orgs'
            visible: true
          - displayName: '# of Dashboards'
            fieldName: '# of Dashboards'
            visible: true
        height: 2
        kind: Table
        name: Dashboards
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "influxdb_dashboards_total")
                  |> last()
                  |> drop(columns: ["_start", "_stop","_time","_measurement", "_field", "url"])
                  |> group()
                  |> rename(columns: {host: "Host", _value: "# of Dashboards"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 3
        xPos: 3
        yPos: 5
      - colors:
          - hex: '#00C9FF'
            name: laser
            type: text
        fieldOptions:
          - displayName: Architecture
            fieldName: Architecture
            visible: true
          - displayName: Build Date
            fieldName: Build Date
            visible: true
          - displayName: Github Commit
            fieldName: Github Commit
            visible: true
          - displayName: CPUs
            fieldName: CPUs
            visible: true
          - displayName: OS
            fieldName: OS
            visible: true
          - displayName: Version
            fieldName: Version
            visible: true
          - displayName: _start
            fieldName: _start
            visible: true
          - displayName: _stop
            fieldName: _stop
            visible: true
          - displayName: _time
            fieldName: _time
            visible: true
          - displayName: _value
            fieldName: _value
            visible: true
          - displayName: _field
            fieldName: _field
            visible: true
          - displayName: _measurement
            fieldName: _measurement
            visible: true
          - displayName: host
            fieldName: host
            visible: true
          - displayName: url
            fieldName: url
            visible: true
          - displayName: le
            fieldName: le
            visible: true
          - displayName: method
            fieldName: method
            visible: true
          - displayName: arch
            fieldName: arch
            visible: true
          - displayName: build_date
            fieldName: build_date
            visible: true
          - displayName: commit
            fieldName: commit
            visible: true
          - displayName: cpus
            fieldName: cpus
            visible: true
          - displayName: os
            fieldName: os
            visible: true
          - displayName: version
            fieldName: version
            visible: true
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: URL
            fieldName: URL
            visible: true
        height: 3
        kind: Table
        name: Instance Info
        note: This cell gives you information about your running instance of InfluxDB
            2, but you probably already knew that.
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "influxdb_info")
                  |> last()
                  |> group()
                  |> drop(columns: ["_start", "_stop","_time","_field","_value","_measurement"])
                  |> rename(columns: {host: "Host", url: "URL", arch: "Architecture", build_date: "Build Date", commit: "Github Commit", cpus: "CPUs", os: "OS", version: "Version"})
        staticLegend: {}
        tableOptions:
            fixFirstColumn: true
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 8
        xPos: 4
      - axes:
          - base: "10"
            name: x
            scale: linear
          - base: "10"
            name: "y"
            scale: linear
        colors:
          - hex: '#31C0F6'
            id: 1e40d1f8-5ef8-4de8-b6d3-8b72ef56edde
            name: Nineteen Eighty Four
            type: scale
          - hex: '#A500A5'
            id: f0321a25-31ce-43a6-8411-b894293ace66
            name: Nineteen Eighty Four
            type: scale
          - hex: '#FF7E27'
            id: d2f7a375-d96a-444b-ab7e-f65f2ed9d57d
            name: Nineteen Eighty Four
            type: scale
        geom: line
        height: 3
        hoverDimension: auto
        kind: Xy
        legendColorizeRows: true
        legendOpacity: 1
        legendOrientationThreshold: 1e+08
        name: Memory Usage (%)
        position: overlaid
        queries:
          - query: |-
                bytes_used = from(bucket: "oss_metrics")
                    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                    |> filter(fn: (r) => r._measurement == "go_memstats_alloc_bytes")
                    |> drop(columns: ["_start", "_stop"])

                total_bytes = from(bucket: "oss_metrics")
                    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                    |> filter(fn: (r) => r._measurement == "go_memstats_sys_bytes")
                    |> drop(columns: ["_start", "_stop"])

                join(tables: {key1: bytes_used, key2: total_bytes}, on: ["_time", "host"], method: "inner")
                    |> map(
                        fn: (r) => ({
                            _time: r._time,
                            host: r.host,
                            _value: float(v: r._value_key1) / float(v: r._value_key2) * 100.0,
                            _field: "Memory Usage Percent",
                        }),
                    )
        staticLegend: {}
        width: 4
        xCol: _time
        xPos: 4
        yCol: _value
        yPos: 16
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: '# of Orgs'
            fieldName: '# of Orgs'
            visible: true
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: URL
            fieldName: URL
            visible: true
          - displayName: '# of Buckets'
            fieldName: '# of Buckets'
            visible: true
        height: 2
        kind: Table
        name: Buckets (Including System)
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "influxdb_buckets_total")
                  |> last()
                  |> drop(columns: ["_start", "_stop","_time","_measurement", "_field", "url"])
                  |> group()
                  |> rename(columns: {host: "Host", _value: "# of Buckets"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 3
        xPos: 6
        yPos: 3
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: '# of Orgs'
            fieldName: '# of Orgs'
            visible: true
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: '# of Scrapers'
            fieldName: '# of Scrapers'
            visible: true
        height: 2
        kind: Table
        name: Scrapers
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "influxdb_scrapers_total")
                  |> last()
                  |> drop(columns: ["_start", "_stop","_time","_measurement", "_field", "url"])
                  |> group()
                  |> rename(columns: {host: "Host", _value: "# of Scrapers"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 3
        xPos: 6
        yPos: 5
      - axes:
          - base: "10"
            name: x
            scale: linear
          - base: "10"
            name: "y"
            scale: linear
        colors:
          - hex: '#31C0F6'
            id: 2df496c5-614d-4d42-8590-0bf106d711e7
            name: Nineteen Eighty Four
            type: scale
          - hex: '#A500A5'
            id: 817fd4b1-56fd-4687-a93a-b8659677796b
            name: Nineteen Eighty Four
            type: scale
          - hex: '#FF7E27'
            id: 64e7fa3e-3633-4992-8296-2f8fe8ea84c7
            name: Nineteen Eighty Four
            type: scale
        geom: line
        height: 5
        hoverDimension: auto
        kind: Xy
        legendColorizeRows: true
        legendOpacity: 1
        legendOrientationThreshold: 1e+08
        name: Local Object Store Writes
        position: overlaid
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "boltdb_writes_total")
                  |> derivative(unit: 1s, nonNegative: true)
                  |> drop(columns: ["url", "_measurement"])
        staticLegend: {}
        width: 6
        xCol: _time
        xPos: 6
        yCol: _value
        yPos: 7
      - axes:
          - base: "10"
            name: x
            scale: linear
          - base: "10"
            name: "y"
            scale: linear
        colors:
          - hex: '#31C0F6'
            id: 1e40d1f8-5ef8-4de8-b6d3-8b72ef56edde
            name: Nineteen Eighty Four
            type: scale
          - hex: '#A500A5'
            id: f0321a25-31ce-43a6-8411-b894293ace66
            name: Nineteen Eighty Four
            type: scale
          - hex: '#FF7E27'
            id: d2f7a375-d96a-444b-ab7e-f65f2ed9d57d
            name: Nineteen Eighty Four
            type: scale
        geom: line
        height: 3
        hoverDimension: auto
        kind: Xy
        legendColorizeRows: true
        legendOpacity: 1
        legendOrientationThreshold: 1e+08
        name: Memory Allocs & Frees (Bytes)
        position: overlaid
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "go_memstats_mallocs_total" or r._measurement == "go_memstats_frees_total")
                  |> derivative(unit: 1s, nonNegative: false)
        staticLegend: {}
        width: 4
        xCol: _time
        xPos: 8
        yCol: _value
        yPos: 16
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: '# of Orgs'
            fieldName: '# of Orgs'
            visible: true
          - displayName: Host
            fieldName: Host
            visible: true
          - displayName: URL
            fieldName: URL
            visible: true
          - displayName: '# of Tokens'
            fieldName: '# of Tokens'
            visible: true
        height: 2
        kind: Table
        name: Tokens
        queries:
          - query: |-
                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "influxdb_tokens_total")
                  |> last()
                  |> drop(columns: ["_start", "_stop","_time","_measurement", "_field", "url"])
                  |> group()
                  |> rename(columns: {host: "Host", _value: "# of Tokens"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 3
        xPos: 9
        yPos: 3
      - colors:
          - hex: '#ffffff'
            id: base
            name: white
            type: text
        fieldOptions:
          - displayName: _time
            fieldName: _time
            visible: true
          - displayName: _value
            fieldName: _value
            visible: true
          - displayName: _field
            fieldName: _field
            visible: true
          - displayName: _measurement
            fieldName: _measurement
            visible: true
          - displayName: status
            fieldName: status
            visible: true
          - displayName: task_type
            fieldName: task_type
            visible: true
          - displayName: '# of Task Runs'
            fieldName: '# of Task Runs'
            visible: true
          - displayName: Host
            fieldName: Host
            visible: true
        height: 2
        kind: Table
        name: Successful Task Runs
        queries:
          - query: |-
                import "csv"

                from(bucket: "oss_metrics")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r._measurement == "task_executor_total_runs_complete")
                  |> filter(fn: (r) => r.status == "success")
                  |> filter(fn: (r) => r.task_type == "system")
                  |> last()
                  |> drop(columns: ["_start", "_stop","_time","_measurement", "_field", "url"])
                  |> group()
                  |> rename(columns: {host: "Host", _value: "# of Task Runs"})
        staticLegend: {}
        tableOptions:
            verticalTimeAxis: true
        timeFormat: YYYY-MM-DD HH:mm:ss
        width: 3
        xPos: 9
        yPos: 5
    description: A collection of useful visualizations for monitoring your local InfluxDB
        2.0 OSS instance.
    name: InfluxDB OSS Metrics
---
apiVersion: influxdata.com/v2alpha1
kind: Telegraf
metadata:
    name: scrape-influxdb-oss-telegraf
spec:
    config: |-
        # Telegraf Configuration
        #
        # Telegraf is entirely plugin driven. All metrics are gathered from the
        # declared inputs, and sent to the declared outputs.
        #
        # Plugins must be declared in here to be active.
        # To deactivate a plugin, comment out the name and any variables.
        #
        # Use 'telegraf -config telegraf.conf -test' to see what metrics a config
        # file would generate.
        #
        # Environment variables can be used anywhere in this config file, simply surround
        # them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"),
        # for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR})


        # Global tags can be specified here in key="value" format.
        [global_tags]
          # dc = "us-east-1" # will tag all metrics with dc=us-east-1
          # rack = "1a"
          ## Environment variables can be used as tags, and throughout the config file
          # user = "$USER"


        # Configuration for telegraf agent
        [agent]
          ## Default data collection interval for all inputs
          interval = "10s"
          ## Rounds collection interval to 'interval'
          ## ie, if interval="10s" then always collect on :00, :10, :20, etc.
          round_interval = true

          ## Telegraf will send metrics to outputs in batches of at most
          ## metric_batch_size metrics.
          ## This controls the size of writes that Telegraf sends to output plugins.
          metric_batch_size = 1000

          ## Maximum number of unwritten metrics per output.  Increasing this value
          ## allows for longer periods of output downtime without dropping metrics at the
          ## cost of higher maximum memory usage.
          metric_buffer_limit = 10000

          ## Collection jitter is used to jitter the collection by a random amount.
          ## Each plugin will sleep for a random time within jitter before collecting.
          ## This can be used to avoid many plugins querying things like sysfs at the
          ## same time, which can have a measurable effect on the system.
          collection_jitter = "0s"

          ## Default flushing interval for all outputs. Maximum flush_interval will be
          ## flush_interval + flush_jitter
          flush_interval = "10s"
          ## Jitter the flush interval by a random amount. This is primarily to avoid
          ## large write spikes for users running a large number of telegraf instances.
          ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
          flush_jitter = "0s"

          ## By default or when set to "0s", precision will be set to the same
          ## timestamp order as the collection interval, with the maximum being 1s.
          ##   ie, when interval = "10s", precision will be "1s"
          ##       when interval = "250ms", precision will be "1ms"
          ## Precision will NOT be used for service inputs. It is up to each individual
          ## service input to set the timestamp at the appropriate precision.
          ## Valid time units are "ns", "us" (or "µs"), "ms", "s".
          precision = ""

          ## Log at debug level.
          # debug = false
          ## Log only error level messages.
          # quiet = false

          ## Log target controls the destination for logs and can be one of "file",
          ## "stderr" or, on Windows, "eventlog".  When set to "file", the output file
          ## is determined by the "logfile" setting.
          # logtarget = "file"

          ## Name of the file to be logged to when using the "file" logtarget.  If set to
          ## the empty string then logs are written to stderr.
          # logfile = ""

          ## The logfile will be rotated after the time interval specified.  When set
          ## to 0 no time based rotation is performed.  Logs are rotated only when
          ## written to, if there is no log activity rotation may be delayed.
          # logfile_rotation_interval = "0d"

          ## The logfile will be rotated when it becomes larger than the specified
          ## size.  When set to 0 no size based rotation is performed.
          # logfile_rotation_max_size = "0MB"

          ## Maximum number of rotated archives to keep, any older logs are deleted.
          ## If set to -1, no archives are removed.
          # logfile_rotation_max_archives = 5

          ## Override default hostname, if empty use os.Hostname()
          hostname = ""
          ## If set to true, do no set the "host" tag in the telegraf agent.
          omit_hostname = false


        ###############################################################################
        #                            OUTPUT PLUGINS                                   #
        ###############################################################################

        # # Configuration for sending metrics to InfluxDB
        [[outputs.influxdb_v2]]
          ## The URLs of the InfluxDB cluster nodes.
          ##
          ## Multiple URLs can be specified for a single cluster, only ONE of the
          ## urls will be written to each interval.
          ##   ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
          urls = ["$INFLUX_URL"]

          ## Token for authentication.
          token = "$INFLUX_TOKEN"

          ## Organization is the name of the organization you wish to write to; must exist.
          organization = "$INFLUX_ORG"

          ## Destination bucket to write into.
          bucket = "oss_metrics"

          ## The value of this tag will be used to determine the bucket.  If this
          ## tag is not set the 'bucket' option is used as the default.
          # bucket_tag = ""

          ## If true, the bucket tag will not be added to the metric.
          # exclude_bucket_tag = false

          ## Timeout for HTTP messages.
          # timeout = "5s"

          ## Additional HTTP headers
          # http_headers = {"X-Special-Header" = "Special-Value"}

          ## HTTP Proxy override, if unset values the standard proxy environment
          ## variables are consulted to determine which proxy, if any, should be used.
          # http_proxy = "http://corporate.proxy:3128"

          ## HTTP User-Agent
          # user_agent = "telegraf"

          ## Content-Encoding for write request body, can be set to "gzip" to
          ## compress body or "identity" to apply no encoding.
          # content_encoding = "gzip"

          ## Enable or disable uint support for writing uints influxdb 2.0.
          # influx_uint_support = false

          ## Optional TLS Config for use on HTTP connections.
          # tls_ca = "/etc/telegraf/ca.pem"
          # tls_cert = "/etc/telegraf/cert.pem"
          # tls_key = "/etc/telegraf/key.pem"
          ## Use TLS but skip chain & host verification
          # insecure_skip_verify = false


        ###############################################################################
        #                            INPUT PLUGINS                                    #
        ###############################################################################

        # Read metrics from one or many prometheus clients
        [[inputs.prometheus]]
          ## An array of urls to scrape metrics from.
          urls = ["http://localhost:8086/metrics"]

          ## Metric version controls the mapping from Prometheus metrics into
          ## Telegraf metrics.  When using the prometheus_client output, use the same
          ## value in both plugins to ensure metrics are round-tripped without
          ## modification.
          ##
          ##   example: metric_version = 1; deprecated in 1.13
          ##            metric_version = 2; recommended version
          metric_version = 1

          ## Url tag name (tag containing scrapped url. optional, default is "url")
          # url_tag = "scrapeUrl"

          ## HTTP Basic Authentication username and password. ('bearer_token' and
          ## 'bearer_token_string' take priority)
          # username = ""
          # password = ""

          ## Specify timeout duration for slower prometheus clients (default is 3s)
          # response_timeout = "3s"

          ## Optional TLS Config
          # tls_ca = /path/to/cafile
          # tls_cert = /path/to/certfile
          # tls_key = /path/to/keyfile
          ## Use TLS but skip chain & host verification
          # insecure_skip_verify = false
    name: Scrape InfluxDB OSS Metrics
    description: A Telegraf config that can be used to scrape data from most InfluxDB OSS instances.
---
apiVersion: influxdata.com/v2alpha1
kind: CheckDeadman
metadata:
    name: influxdb-oss-deadman-check
spec:
    every: 1m0s
    level: CRIT
    name: InfluxDB OSS Deadman
    query: |-
        from(bucket: "oss_metrics")
          |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
          |> filter(fn: (r) => r["_measurement"] == "go_info")
          |> filter(fn: (r) => r["_field"] == "gauge")
    staleTime: 10m0s
    status: active
    statusMessageTemplate: 'InfluxDB OSS Host: ${r.host} is ${r._level}. Url: ${r.url}'
    timeSince: 1m30s