# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

app_url: "https://aerospike.com/"
short_name: Aerospike
long_name: Aerospike
logo_path: "/stackdriver/images/integrations/aerospike.png"
description: |-
  The Aerospike integration collects key namespace and system metrics, such as disk and memory usage, scans,
  and connections. The integration collects these metrics using the official
  client API provided by Aerospike.
supported_app_version: ["4.9", "5.x", "6.x"]
configure_integration: |-
  Aerospike logs are automatically ingested on systems where Aerospike runs as
  a `systemd` service. On other systems such as SLES, you can manually
  configure a
  [`files`](/stackdriver/docs/solutions/agents/ops-agent/configuration#logging-receivers)
  receiver which points to Aerospike's log file, which is usually located at
  `$HOME/aerospike-server/var/log/aerospike.log`.
expected_metrics:
  - kind: CUMULATIVE
    labels:
      - name: result
        value_regex: error|filtered_out|not_found|success|timeout
      - name: type
        value_regex: delete|read|udf|write
      - name: node_name
        value_regex: .*
      - name: namespace_name
        value_regex: .*
    monitored_resources: [gce_instance]
    type: workload.googleapis.com/aerospike.namespace.transaction.count
    value_type: INT64
  - kind: GAUGE
    labels:
      - name: node_name
        value_regex: .*
      - name: namespace_name
        value_regex: .*
    monitored_resources: [gce_instance]
    type: workload.googleapis.com/aerospike.namespace.disk.available
    optional: true
    value_type: INT64
  - kind: GAUGE
    labels:
      - name: node_name
        value_regex: .*
      - name: namespace_name
        value_regex: .*
    monitored_resources: [gce_instance]
    type: workload.googleapis.com/aerospike.namespace.memory.free
    value_type: INT64
  - kind: GAUGE
    labels:
      - name: component
        value_regex: data|index|set_index|secondary_index
      - name: node_name
        value_regex: .*
      - name: namespace_name
        value_regex: .*
    monitored_resources: [gce_instance]
    type: workload.googleapis.com/aerospike.namespace.memory.usage
    value_type: INT64
  - kind: CUMULATIVE
    labels:
      - name: result
        value_regex: abort|complete|error
      - name: type
        value_regex: aggregation|basic|ops_background|udf_background
      - name: node_name
        value_regex: .*
      - name: namespace_name
        value_regex: .*
    monitored_resources: [gce_instance]
    type: workload.googleapis.com/aerospike.namespace.scan.count
    optional: true # This aerospike metric is broken for aerospike 6.X - see issue raised https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/21834
    value_type: INT64
  - kind: CUMULATIVE
    labels:
      - name: operation
        value_regex: close|open
      - name: type
        value_regex: client|fabric|heartbeat
      - name: node_name
        value_regex: .*
    monitored_resources: [gce_instance]
    type: workload.googleapis.com/aerospike.node.connection.count
    value_type: INT64
  - kind: GAUGE
    labels:
      - name: type
        value_regex: client|fabric|heartbeat
      - name: node_name
        value_regex: .*
    monitored_resources: [gce_instance]
    type: workload.googleapis.com/aerospike.node.connection.open
    value_type: INT64
    representative: true
  - kind: GAUGE
    labels:
      - name: node_name
        value_regex: .*
    monitored_resources: [gce_instance]
    type: workload.googleapis.com/aerospike.node.memory.free
    value_type: INT64
expected_logs:
  - log_name: syslog
    fields:
      - name: jsonPayload.message
        value_regex: ' asd(\[[0-9]+\])*:'
        type: string
        description: Aerospike application logs written to Journald.
configuration_options:
  metrics:
    - type: aerospike
      fields:
        - name: type
          default: aerospike
          description: This value must be `aerospike`.
        - name: collection_interval
          default: 60s
          description: A [time duration](https://pkg.go.dev/time#ParseDuration) value, such as `30s` or `5m`.
        - name: endpoint
          default: localhost:3000
          description: Address of the Aerospike system, formatted as host:port.
        - name: collect_cluster_metrics
          default: true
          description: Configures the receiver to collect metrics from peer nodes of the Aerospike system.
        - name: username
          default: null
          description: The configured username if Aerospike is configured to require authentication.
        - name: password
          default: null
          description: The configured password if Aerospike is configured to require authentication.
        - name: timeout
          default: 20s
          description: Timeout for requests to the Aerospike system, a [time duration](https://pkg.go.dev/time#ParseDuration) value such as `30s` or `5m`.
minimum_supported_agent_version:
  metrics: 2.18.2
  logging: 2.23.0
supported_operating_systems: linux
platforms_to_skip:
  # Unable to install Aerospike on various distros.
  - debian-cloud:debian-12
  - debian-cloud:debian-12-arm64
  - suse-cloud:sles-12
  - rocky-linux-cloud:rocky-linux-8-optimized-gcp-arm64
  - rocky-linux-cloud:rocky-linux-9
  - rocky-linux-cloud:rocky-linux-9-optimized-gcp
  - rocky-linux-cloud:rocky-linux-9-arm64
  - rocky-linux-cloud:rocky-linux-9-optimized-gcp-arm64
  - ubuntu-os-cloud:ubuntu-2404-lts-amd64
  - ubuntu-os-cloud:ubuntu-2404-lts-arm64
  - ubuntu-os-cloud:ubuntu-2410-amd64 # Possible support in the future
  - ubuntu-os-cloud:ubuntu-minimal-2410-amd64 # Possible support in the future
  - ubuntu-os-cloud:ubuntu-2410-arm64 # Possible support in the future
  - ubuntu-os-cloud:ubuntu-minimal-2410-arm64 # Possible support in the future
public_url: https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/third-party/aerospike
