A command line client for Wavefront inspired by kubectl and git command line tools.
A short list of common usages. For more details Use Cases section.
$ wavectl show alert
ID NAME STATUS SEVERITY
1530723441304 Kubernetes - Node Network Utilization - HIGH (Prod) CHECKING WARN
1530723441442 Kubernetes - Node Cpu Utilization - HIGH (Prod) CHECKING WARN
1530723441589 Kubernetes - Node Memory Swap Utilization - HIGH (Prod) SNOOZED WARN
...
$ wavectl show -o json alert
{
"additionalInformation": "This alert tracks the used network bandwidth percentage for all the compute-* (compute-master and compute-node) machines. If the cpu utilization exceeds 80%, this alert fires.",
"condition": "ts(proc.net.percent,server_type=\"compute-*\" and env=\"live\") > 80",
"displayExpression": "ts(proc.net.percent,server_type=\"compute-*\" and env=\"live\")",
"id": "1530723441304",
"minutes": 2,
"name": "Kubernetes - Node Network Utilization - HIGH (Prod)",
"resolveAfterMinutes": 2,
"severity": "WARN",
"tags": {
"customerTags": [
"kubernetes",
"skynet"
]
},
"target": "pd: 07fe9ebacf8c44e881ea2f6e44dbf2d2"
}
{
"additionalInformation": "This alert tracks the used cpu percentage for all the compute-* (compute-master and compute-node) machines. If the cpu utilization exceeds 80%, this alert fires.",
...
$> vim ./metadata-dashboard.json # Modify the json state of a dashboard
$> wavectl push ./metadata-dashboard.json dashboard # Write the new version to Wavefront
Replaced dashboard(s):
ID NAME DESCRIPTION
metadata-php Metadata PHP Monitors for Metadata in the PHP webapp
To install the latest release:
pip install wavectl
To install from the master branch in github:
pip install git+https://github.com/box/wavectl.git
The master branch may contain unreleased features or bug fixes. The master branch should always stay stable.
wavectl
's execution time depends on the number of alerts or dashboards you have in Wavefront. All resource filtering except the --customerTag, -t
option is done on the client side. This enables the powerful regular expression matching on your results. But if your organization has thousands of alerts and dashboards, the data size may overwhelm the wavectl
execution time.
If your organization has a lot of alerts and dashboards in Wavefront we strongly recommend to use --customerTag
option in your commands. The filtering based on customerTag is done on the Wavefront server side. With --customerTags
option, wavectl client will only receive data about alerts/dashboards if they are tagged with all of the specified tags. This reduces the data size processed by wavectl and results in faster execution.
If you could not find what you were looking for please consider contributing. You could also take a look at another CLI implementation for Wavefront. That one is written by Wavefront and mirrors their web api more closely. This wavectl
CLI has evolved from our use cases.
wavectl
is designed to add automation, command line access to Wavefront data that is human generated. Initial examples are alerts and dashboards. We see those as more permanent, slow changing state in Wavefront. wavectl
is not optimized to read, write time series data to Wavefront or any other data that is ingested by Wavefront at real time production workload scale.
Need to contact us directly? Email oss@box.com and be sure to include the name of this project in the subject.
Copyright 2018 Box, Inc. All rights reserved.
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.