integration_test/third_party_apps_test/applications/cassandra/metadata.yaml (233 lines of code) (raw):

# 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. public_url: "https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/third-party/cassandra" app_url: "http://cassandra.apache.org/" short_name: Cassandra long_name: Apache Cassandra logo_path: /stackdriver/images/cassandra.png # supplied by google technical writer description: |- The Apache Cassandra integration collects request, task, and storage metrics that highlight the load on an instance. Optionally, the integration can also collect general JVM metrics related to memory and garbage collection. The integration also collects system, debug, and garbage-collection logs. These logs are parsed into a JSON payload, which includes fields for the message, Java class, and line number. configure_integration: |- To expose a JMX endpoint, you must set the `com.sun.management.jmxremote.port` system property when starting the JVM. We also recommend setting the `com.sun.management.jmxremote.rmi.port` system property to the same port. To expose a JMX endpoint remotely, you must also set the `java.rmi.server.hostname` system property. By default, these properties are set in a Cassandra deployment's `cassandra-env.sh` file. To set system properties by using command-line arguments, prepend the property name with `-D` when starting the JVM. For example, to set `com.sun.management.jmxremote.port` to port `7199`, specify the following when starting the JVM: <pre> -Dcom.sun.management.jmxremote.port=7199 </pre> minimum_supported_agent_version: metrics: 2.6.0 logging: 2.5.0 supported_operating_systems: linux # TODO: Fix errors and enable tests on all platforms. platforms_to_skip: - debian-cloud:debian-12 # QueryLog() failed: cassandra_system not found, exhausted retries; QueryLog() failed: cassandra_debug not found, exhausted retries; QueryLog() failed: cassandra_gc not found, exhausted retries - debian-cloud:debian-12-arm64 # QueryLog() failed: cassandra_system not found, exhausted retries; QueryLog() failed: cassandra_debug not found, exhausted retries; QueryLog() failed: cassandra_gc not found, exhausted retries supported_app_version: ["3.11", "4.0"] expected_metrics: - type: workload.googleapis.com/cassandra.client.request.count value_type: INT64 kind: CUMULATIVE monitored_resources: [gce_instance] labels: - name: operation value_regex: .* representative: true - type: workload.googleapis.com/cassandra.client.request.error.count value_type: INT64 kind: CUMULATIVE monitored_resources: [gce_instance] labels: - name: operation value_regex: .* - name: status value_regex: .* - type: workload.googleapis.com/cassandra.client.request.range_slice.latency.50p value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.client.request.range_slice.latency.99p value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.client.request.range_slice.latency.max value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.client.request.read.latency.50p value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.client.request.read.latency.99p value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.client.request.read.latency.max value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.client.request.write.latency.50p value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.client.request.write.latency.99p value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.client.request.write.latency.max value_type: DOUBLE kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.compaction.tasks.completed value_type: INT64 kind: CUMULATIVE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.compaction.tasks.pending value_type: INT64 kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.storage.load.count value_type: INT64 kind: GAUGE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.storage.total_hints.count value_type: INT64 kind: CUMULATIVE monitored_resources: [gce_instance] - type: workload.googleapis.com/cassandra.storage.total_hints.in_progress.count value_type: INT64 kind: GAUGE monitored_resources: [gce_instance] expected_logs: - log_name: cassandra_system fields: - name: jsonPayload.message value_regex: .*Startup complete.* type: string description: Log message, including detailed stacktrace where provided - name: jsonPayload.level value_regex: INFO type: string description: Log entry level - name: jsonPayload.module value_regex: main type: string description: Module of cassandra where the log originated - name: jsonPayload.javaClass value_regex: CassandraDaemon.java type: string description: Java class where the log originated - name: jsonPayload.lineNumber type: string description: Line number of the source file where the log originated - name: severity type: string description: '' - log_name: cassandra_debug fields: - name: jsonPayload.message value_regex: .*Loading settings from file.* type: string description: Log message - name: jsonPayload.level value_regex: DEBUG type: string description: Log entry level - name: jsonPayload.module value_regex: main type: string description: Module of cassandra where the log originated - name: jsonPayload.javaClass value_regex: YamlConfigurationLoader.java type: string description: Java class where the log originated - name: jsonPayload.lineNumber type: string description: Line number of the source file where the log originated - name: severity type: string description: '' - log_name: cassandra_gc fields: - name: jsonPayload.message value_regex: (?s).*Total time for which application threads were stopped.* # The (?s) part will make the . match with newline as well. See https://github.com/google/re2/blob/main/doc/syntax.txt#L65,L68 type: string description: Log message - name: jsonPayload.uptime type: string description: Seconds the JVM has been active - name: jsonPayload.timeStopped type: string description: Seconds the JVM was stopped for garbage collection - name: jsonPayload.timeStopping type: string description: Seconds the JVM took to stop threads before garbage collection # Level, pid and tid are only available for GC logs with Java 11 and above - name: jsonPayload.level type: string optional: true description: Level of the log entry - name: jsonPayload.pid type: string optional: true description: Process ID of the Java process logging the message - name: jsonPayload.tid type: string optional: true description: Thread ID of the Java process logging the message - name: severity type: string description: '' configuration_options: logs: - type: cassandra_system fields: - name: type default: null description: This value must be `cassandra_system`. - name: include_paths default: '[/var/log/cassandra/system*.log]' description: A list of filesystem paths to read by tailing each file. A wild card (`*`) can be used in the paths; for example, `/var/log/cassandra/system*.log`. - name: exclude_paths default: null description: A list of filesystem path patterns to exclude from the set matched by `include_paths`. - name: record_log_file_path default: false description: If set to `true`, then the path to the specific file from which the log record was obtained appears in the output log entry as the value of the `agent.googleapis.com/log_file_path` label. When using a wildcard, only the path of the file from which the record was obtained is recorded. - name: wildcard_refresh_interval default: 60s description: The interval at which wildcard file paths in `include_paths` are refreshed. Given as a [time duration](https://pkg.go.dev/time#ParseDuration), for example `30s` or `2m`. This property might be useful under high logging throughputs where log files are rotated faster than the default interval. - type: cassandra_debug fields: - name: type default: null description: This value must be `cassandra_debug`. - name: include_paths default: '[/var/log/cassandra/debug*.log]' description: A list of filesystem paths to read by tailing each file. A wild card (`*`) can be used in the paths; for example, `/var/log/cassandra/system*.log`. - name: exclude_paths default: null description: A list of filesystem path patterns to exclude from the set matched by `include_paths`. - name: record_log_file_path default: false description: If set to `true`, then the path to the specific file from which the log record was obtained appears in the output log entry as the value of the `agent.googleapis.com/log_file_path` label. When using a wildcard, only the path of the file from which the record was obtained is recorded. - name: wildcard_refresh_interval default: 60s description: The interval at which wildcard file paths in `include_paths` are refreshed. Given as a [time duration](https://pkg.go.dev/time#ParseDuration), for example `30s` or `2m`. This property might be useful under high logging throughputs where log files are rotated faster than the default interval. - type: cassandra_gc fields: - name: type default: null description: This value must be `cassandra_gc`. - name: include_paths default: '[/var/log/cassandra/gc.log.*.current]' description: A list of filesystem paths to read by tailing each file. A wild card (`*`) can be used in the paths; for example, `/var/log/cassandra/system*.log`. - name: exclude_paths default: null description: A list of filesystem path patterns to exclude from the set matched by `include_paths`. - name: record_log_file_path default: false description: If set to `true`, then the path to the specific file from which the log record was obtained appears in the output log entry as the value of the `agent.googleapis.com/log_file_path` label. When using a wildcard, only the path of the file from which the record was obtained is recorded. - name: wildcard_refresh_interval default: 60s description: The interval at which wildcard file paths in `include_paths` are refreshed. Given as a [time duration](https://pkg.go.dev/time#ParseDuration), for example `30s` or `2m`. This property might be useful under high logging throughputs where log files are rotated faster than the default interval. metrics: - type: cassandra fields: - name: type default: null description: This value must be `cassandra`. - name: endpoint default: localhost:7199 description: The [JMX Service URL](https://docs.oracle.com/javase/8/docs/api/javax/management/remote/JMXServiceURL.html) or host and port used to construct the service URL. This value must be in the form of `service:jmx:<protocol>:<sap>` or `host:port`. Values in `host:port` form are used to create a service URL of `service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi`. - name: collect_jvm_metrics default: true description: Configures the receiver to also collect the supported JVM metrics. - name: username default: null description: The configured username if JMX is configured to require authentication. - name: password default: null description: The configured password if JMX is configured to require authentication. - name: collection_interval default: 60s description: A [time duration](https://pkg.go.dev/time#ParseDuration) value, such as `30s` or `5m`.