From caac3eb3dc11a30954fb4adbdbe0bcd175e757ae Mon Sep 17 00:00:00 2001 From: gary-hessler Date: Fri, 8 Aug 2014 09:16:00 -0600 Subject: [PATCH] Additional documentation updates Change-Id: Ibca521b49549432a3f27c53ac77bb8bf54b09fc3 --- README.md | 829 +++++++++++++------- monasca-agent_arch.graffle | 1504 ++++++++++++++++++++++++++++++++++++ monasca-agent_arch.png | Bin 65193 -> 75525 bytes monsetup/main.py | 2 + 4 files changed, 2059 insertions(+), 276 deletions(-) create mode 100644 monasca-agent_arch.graffle diff --git a/README.md b/README.md index ccc6ba60..77bbd29e 100644 --- a/README.md +++ b/README.md @@ -1,60 +1,76 @@ -**Table of Contents** +**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)* - [Introduction](#introduction) - [Architecture](#architecture) - [Installing](#installing) - [Configuring](#configuring) - - [Configuration Options](#configuration-options) - - [Configuring Plugins](#configuring-plugins) - - [monasca-setup](#monasca-setup) - - [Configuration Options](#configuration-options-1) + - [monasca-setup (Recommended)](#monasca-setup-recommended) + - [Explanation of monasca-setup command-line parameters:](#explanation-of-monasca-setup-command-line-parameters) + - [Manual Configuration of the Agent](#manual-configuration-of-the-agent) + - [Manual Configuration of Plugins](#manual-configuration-of-plugins) - [Chef Cookbook](#chef-cookbook) - [monasca-alarm-manager](#monasca-alarm-manager) - [Running](#running) - [Running from the command-line](#running-from-the-command-line) - [Running as a daemon](#running-as-a-daemon) -- [Trouble-shooting](#trouble-shooting) +- [Troubleshooting](#troubleshooting) - [Naming conventions](#naming-conventions) - [Common Naming Conventions](#common-naming-conventions) - [Metric Names](#metric-names) - - [Dimensions](#dimensions) + - [System Dimensions](#system-dimensions) - [OpenStack Specific Naming Conventions](#openstack-specific-naming-conventions) - [Metric Names](#metric-names-1) - - [Dimensions](#dimensions-1) -- [Checks](#checks) + - [OpenStack Dimensions](#openstack-dimensions) +- [System Checks](#system-checks) - [System Metrics](#system-metrics) - - [Nagios](#nagios) - - [Statsd](#statsd) - - [Log Parsing](#log-parsing) - - [Host alive](#host-alive) - - [Process exists](#process-exists) - - [Http Endpoint checks](#http-endpoint-checks) - - [MySQL](#mysql) - - [RabbitMQ](#rabbitmq) - - [Kafka](#kafka) - - [Other](#other) - - [OpenStack](#openstack) - - [Nova](#nova) - - [Swift](#swift) - - [Glance](#glance) - - [Cinder](#cinder) - - [Neutron](#neutron) - - [Keystone](#keystone) - - [Seed Controller](#seed-controller) -- [Developing New Checks](#developing-new-checks) - - [AgentCheck Interface](#agentcheck-interface) - - [ServicesCheck interface](#servicescheck-interface) - - [Sending Metrics](#sending-metrics) - - [Plugin Configuration](#plugin-configuration) - - [init_config](#init_config) - - [instances](#instances) - - [Plugin Documentation](#plugin-documentation) +- [Plugin Checks](#plugin-checks) + - [Developing New Checks](#developing-new-checks) + - [AgentCheck Interface](#agentcheck-interface) + - [ServicesCheck interface](#servicescheck-interface) + - [Sending Metrics](#sending-metrics) + - [Plugin Configuration](#plugin-configuration) + - [init_config](#init_config) + - [instances](#instances) + - [Plugin Documentation](#plugin-documentation) + - [Nagios Checks](#nagios-checks) + - [Host Alive Checks](#host-alive-checks) + - [Process Checks](#process-checks) + - [Http Endpoint Checks](#http-endpoint-checks) + - [MySQL Checks](#mysql-checks) + - [ZooKeeper Checks](#zookeeper-checks) + - [Kafka Checks](#kafka-checks) + - [RabbitMQ Checks](#rabbitmq-checks) + - [OpenStack Monitoring](#openstack-monitoring) + - [Nova Checks](#nova-checks) + - [Nova Processes Monitored](#nova-processes-monitored) + - [Example Nova Metrics](#example-nova-metrics) + - [Swift Checks](#swift-checks) + - [Swift Processes Monitored](#swift-processes-monitored) + - [Example Swift Metrics](#example-swift-metrics) + - [Glance Checks](#glance-checks) + - [Glance Processes Monitored](#glance-processes-monitored) + - [Example Glance Metrics](#example-glance-metrics) + - [Cinder Checks](#cinder-checks) + - [Cinder Processes Monitored](#cinder-processes-monitored) + - [Example Cinder Metrics](#example-cinder-metrics) + - [Neutron Checks](#neutron-checks) + - [Neutron Processes Monitored](#neutron-processes-monitored) + - [Example Neutron Metrics](#example-neutron-metrics) + - [Keystone Checks](#keystone-checks) + - [Keystone Processes Monitored](#keystone-processes-monitored) + - [Example Keystone Metrics](#example-keystone-metrics) + - [Ceilometer Checks](#ceilometer-checks) + - [Ceilometer Processes Monitored](#ceilometer-processes-monitored) + - [Example Ceilometer Metrics](#example-ceilometer-metrics) +- [Statsd](#statsd) +- [Log Parsing](#log-parsing) - [License](#license) + # Introduction The Monasca Agent is a modern Python monitoring agent for gathering metrics and sending them to the Monasca API. The Agent supports collecting metrics from a variety of sources as follows: @@ -63,45 +79,54 @@ The Monasca Agent is a modern Python monitoring agent for gathering metrics and * Statsd. The Monasca Agent supports an integrated Statsd daemon which can be used by applications via a statsd client library. * Retrieving metrics from log files written in a specific format. * Host alive. The Monasca Agent can perform active checks on a host to determine if it is alive using ping(ICMP) or SSH. -* Process exists checks. The Monasca Agent can check if a process is up or down. +* Process checks. The Monasca Agent can check a process and return several metrics on the process such as number of instances, memory, io and threads. * Http Endpoint checks. The Monasca Agent can perform active checks on http endpoints by sending an HTTP request to an API. * Service checks. The Agent can check service such as MySQL, RabbitMQ, and many more. +* OpenStack metrics. The agent can perform checks on OpenStack processes. +* The Agent can automatically detect and setup checks on certain processes and resources. For the complete list of metrics that the Monasca Agent supports see "Checks" below. The Agent is extensible through configuration of additional plugins, written in Python. # Architecture -This section describes the overall architecture of the Monasca Agent. - -* Agent -* Checks +This section describes the overall architecture of the Monasca Agent. The agent consists of the supervisor, collector, forwarder and statsd daemon. This diagram illustrates the monasca-agent architecture, and the table which follows it explains each component. ![alt text](monasca-agent_arch.png) -A metric is identified by a name and dimensions. +The flow of the agent application goes like this: + +* The collector runs based on a configurable interval and collects the base system metrics such as cpu or disk utilization as well as any metrics from additional configured plugins such as mySQL or Kafka. +* The statsd daemon allows users to send statsd type messages to the agent at any time. These messages are flushed periodically to the forwarder. +* The forwarder, is a Tornado web server application that takes the metrics from the collector and statsd daemon, normalizes the metric names and forwards them on to the Monasca-API. +* Once sent to the Monasca-API, the metrics continue through the Monasca pipeline and end up in the Metrics Database. +* The collector then waits for the configured interval and restarts the collection process. The Agent is composed of the following components: * Supervisor (supervisord): Manages the lifecycle of the Collector, Forwarder and Statsd Daemon. * Collector (monasca-collector): Collects system and other metrics and sends to the Forwarder. * Forwarder (monasca-forwarder): Sends metrics to the API. -* Statsd nDaemon (monasca-statsd): Statsd daemon. +* Statsd Daemon (monasca-statsd): Statsd daemon. +* Monasca Setup (monasca-setup) | Component Name | Process Name | Description | | -------------- | ------------ | ----------- | -| Supervisor | supervisord | Runs as root, launches all other processes as the "monasca-agent" user | -| Collector | monasca-collector | Gathers system & application metrics | -| Monstatsd | monasca-statsd | Statsd engine capable of handling dimensions associated with metrics submitted by a client that supports them. Also supports metrics from the standard statsd client. (udp/8125) | -| Forwarder | monasca-forwarder | Gathers data from statsd and submits it to Monasca API over SSL (tcp/17123) | -| Agent Checks | checks.d/*.py | Python-based user-configured checks | +| Supervisor | supervisord | Runs as root, launches all other processes as the "monasca-agent" user. This process manages the lifecycle of the Collector, Forwarder and Statsd Daemon. It allows Start, Stop and Restart of all the agent processes together. | +| Collector | monasca-collector | Gathers system & application metrics on a configurable interval and sends them to the Forwarder process. | +| Forwarder | monasca-forwarder | Gathers data from the collector and statsd and submits it to Monasca API over SSL (tcp/17123) | +| Statsd Daemon | monasca-statsd | Statsd engine capable of handling dimensions associated with metrics submitted by a client that supports them. Also supports metrics from the standard statsd client. (udp/8125) | +| Monasca Setup | monasca-setup | The monasca-setup script collects command-line arguments and configures the and starts the agent. the Monasca Setup program can also auto-detect and configure certain agent plugins | +| Agent Checks | checks.d/*.py | Python-based user-configured checks. These checks can be for other applications or services to verify functionality or gather statistics on things such as messages processed, etc. Each additional agent check must be configured using a yaml file for a specific plugin that provides the additional functionality located in the conf.d directory. | -The Agent includes the script "monasca-setup", that can be used for automatically configuring the agent to generate metrics that are sent to the API. It creates the agent.conf file locate in /etc/monasca/agent directory. It also sets up additional checks based on what is running locally on that machine. For instance, if this is a compute node, the agent will setup checks to monitor the Nova processes and setup a http_status check on the nova-api. It can also detect other servers such as mySQL and Kafka and setup checks for them as well. +The Agent includes the "monasca-setup" script, that can be used for automatically configuring the agent to generate metrics that are sent to the API. It creates the agent.conf file locate in /etc/monasca/agent directory. It also sets up additional checks based on what is running locally on that machine. For instance, if this is a compute node, the agent will setup checks to monitor the Nova processes and setup a http_status check on the nova-api. It can also detect other servers such as mySQL and Kafka and setup checks for them as well. -The [monasca-alarm-manager](**https://github.com/hpcloud-mon/monasca-alarm-manager**) is a utility that can be used for configuring a default set of alarms when monitoring a OpenStack deployment. +A metric is identified by a name and dimensions. The fields required in a metric are name, timestamp, and value. A metric can also have 0..n dimensions. Some standard dimensions are sent with all metrics that are sent by the agent. Reference the section on [Dimensions](#dimensions) for more details. + +The [monasca-alarm-manager](**https://github.com/hpcloud-mon/monasca-alarm-manager**) is a utility that is under development that can be used for configuring a default set of alarms when monitoring a OpenStack deployment. # Installing The Agent (monasca-agent) is available for installation from the Python Package Index (PyPI). To install it, you first need `pip` installed on the node to be monitored. Instructions on installing pip may be found at https://pip.pypa.io/en/latest/installing.html. The Agent will NOT run under any flavor of Windows or Mac OS at this time but has been tested thoroughly on Ubuntu and should work under most flavors of Linux. Support may be added for Mac OS and Windows in the future. Example of an Ubuntu or Debian based install: @@ -128,7 +153,7 @@ sudo pip install monasca-agent The Agent requires configuration in order to run. There are two ways to configure the agent, either using the [monasca-setup](#monasca-setup) script or manually. ## monasca-setup (Recommended) -The Monasca agent has a script, called "monasca-setup", that should be used to automatically configure the Agent to send metrics to a Monasca API. This script will create the agent.conf configuration file as well as any plugin configuration yaml files needed to monitor the processes on the local machine. The agent configuration files are located in /etc/monasca/agent. The plugin configuration files are located in located in /etc/monasca/agent/conf.d. +The Monasca agent has a script, called "monasca-setup", that should be used to automatically configure the Agent to send metrics to a Monasca API. This script will create the agent.conf configuration file as well as any plugin configuration yaml files needed to monitor the processes on the local machine. The mon-setup script will auto-detect certain applications and OpenStack processes that are running on the machine. The agent configuration files are located in /etc/monasca/agent. The plugin configuration files are located in located in /etc/monasca/agent/conf.d. To run monasca-setup: @@ -254,27 +279,19 @@ To help configure a default set of alarms for monitoring an OpenStack deployment The Agent can be run from the command-line or as a daemon. ## Running from the command-line -To run the agent from the command-line, you will need to start at least 2 processes in order to send metrics. These are the collector and forwarder. If you have already installed the monasca-agent package and run the monasca-setup configuration script, run the following commands from the Linux command-line: - - * From a terminal window, use netcat to listen for metrics on a local port: - nc -lk 8080 - * From a second terminal window, launch the forwarder in the background: - python ddagent.py & - * From the second terminal window, launch the collector in the foreground: - python agent.py foreground --use-local-forwarder - * Metric payloads will start to appear in the first terminal window running netcat +TBD ## Running as a daemon To control the monasca-agent daemon, you can use the init.d commands that are listed below: - * To start the agent: + * To start the agent daemon: sudo service monasca-agent start - * To stop the agent: + * To stop the agent daemon: sudo service monasca-agent stop - * To restart the agent if it is already running: + * To restart the agent daemon if it is already running: sudo service monasca-agent restart -# Trouble-shooting +# Troubleshooting TBD # Naming conventions @@ -285,11 +302,11 @@ TBD Although metric names in the Monasca API can be any string the Monasca Agent uses several naming conventions as follows: * All lowercase characters. -* '.' is used to hierarchially group. This is done for compabilty with Graphite as Graphite assumes a '.' as a delimiter. -* '_' is used to separate words in long names that are not meant to be hierarchial. +* '.' is used to hierarchially group. This is done for compatabilty with Graphite as Graphite assumes a '.' as a delimiter. +* '_' is used to separate words in long names that are not meant to be hierarchal. -### Dimensions -Dimensions are a dictionary of (key, value) pairs that can be used to describe metrics. Dimensions are supplied to the API by Agent. +### System Dimensions +Dimensions are a dictionary of (key, value) pairs that can be used to describe metrics. Dimensions are supplied to the API by the Agent. This section documents some of the common naming conventions for dimensions that should observed by the monitoring agents/checks to improve consistency and make it easier to create alarms and perform queries. @@ -308,7 +325,7 @@ This section documents some of the naming conventions that are used for monitori ### Metric Names Where applicable, each metric name will list the name of the service, such as "compute", component, such as "nova-api", and check that is done, such as "process_exists". For example, "nova.api.process_exists". -### Dimensions +### OpenStack Dimensions This section documents the list of dimensions that are used in monitoring OpenStack. | Name | Description | Examples | @@ -319,46 +336,126 @@ This section documents the list of dimensions that are used in monitoring OpenSt | service | The name of the OpenStack service being measured. | `compute` or `image` or `monitoring` | | component | The component in the OpenStack service being measured. |`nova-api`, `nova-scheduler`, `mysql` or `rabbitmq`. | | resource_id | The resource ID of an OpenStack resource. | | -| tenant_id | The tenant/project ID of the owner of an OpenStack resource. | | +| tenant_name | The tenant name of the owner of an OpenStack resource. | | -# Checks +# System Checks This section documents all the checks that are supported by the Agent. ## System Metrics -This section documents the system metrics that are sent by the Agent. +This section documents the system metrics that are sent by the Agent. This section includes checks by the network plugin as these are considered more system level checks. | Metric Name | Dimensions | Semantics | | ----------- | ---------- | --------- | -| system.cpu.idle_perc | | Percentage of time the CPU is idle when no I/O requests are in progress | -| system.cpu.iowait_perc | | Percentage of time the CPU is idle AND there is at least one I/O request in progress | -| system.cpu.stolen_perc | | Percentage of stolen CPU time, i.e. the time spent in other OS contexts when running in a virtualized environment | -| system.cpu.system_perc | | Percentage of time the CPU is used at the system level | -| system.cpu.user_perc | | Percentage of time the CPU is used at the user level | -| system.disk.usage | device | | -| system.mountpoint | | (OS dependent) The amount of disk space being used -| system.inodes | device | | -| system.mountpoint | | (OS dependent) inodes remaining in a filesystem -| system.inodes_perc | device | | -| system.mountpoint | | (OS dependent) Percentage of inodes remaining in a filesystem -| system.io_read_kbytes_sec device | | Kbytes/sec read by an io device -| system.io.read_req_sec | device | Number of read requests/sec to an io device -| system.io.write_kbytes_sec |device | Kbytes/sec written by an io device -| system.io.write_req_sec | device | Number of write requests/sec to an io device -| system.cpu.load_avg_1min | | The average system load over a 1 minute period -| system.cpu.load_avg_5min | | The average system load over a 5 minute period -| system.cpu.load_avg_15min | | The average system load over a 15 minute period -| system.mem.free_mb | | Megabytes of free memory -| system.mem.swap_free_mb | | Megabytes of free swap memory that is free -| system.mem.swap_total_mb | | Megabytes of total physical swap memory -| system.mem.swap_used_mb | | Megabytes of total swap memory used -| system.mem.total_mb | | Total megabytes of memory -| system.mem.usable_mb | | Total megabytes of usable memory -| system.mem.usable_perc | | Percentage of total memory that is usable -| system.mem.used_buffers | | Number of buffers being used by the kernel for block io -| system.mem_used_cached | | Memory used for the page cache -| system.mem.used_shared | | Memory shared between separate processes and typically used for inter-process communication +| cpu.idle_perc | | Percentage of time the CPU is idle when no I/O requests are in progress | +| cpu.wait_perc | | Percentage of time the CPU is idle AND there is at least one I/O request in progress | +| cpu.stolen_perc | | Percentage of stolen CPU time, i.e. the time spent in other OS contexts when running in a virtualized environment | +| cpu.system_perc | | Percentage of time the CPU is used at the system level | +| cpu.user_perc | | Percentage of time the CPU is used at the user level | +| disk.free_inodes | device | The number of inodes that are free on a device | +| disk.used_inodes | device | The number of inodes that are used on a device | +| disk.total_inodes | device | The total number of inodes that are available on a device | +| disk.used_kbytes | device | The number of kilobytes of disk space that are used on a device | +| disk.total_kbytes | device | The total number of kilobytes of disk space that are available on a device | +| disk.free_kbytes | device | The number of kilobytes of disk space that are free on a device| +| io.read_kbytes_sec | device | Kbytes/sec read by an io device +| io.read_req_sec | device | Number of read requests/sec to an io device +| io.write_kbytes_sec |device | Kbytes/sec written by an io device +| io.write_req_sec | device | Number of write requests/sec to an io device +| cpu.load_avg_1min | | The average system load over a 1 minute period +| cpu.load_avg_5min | | The average system load over a 5 minute period +| cpu.load_avg_15min | | The average system load over a 15 minute period +| mem.free_mb | | Megabytes of free memory +| mem.swap_free_perc | | Percentage of free swap memory that is free +| mem.swap_free_mb | | Megabytes of free swap memory that is free +| mem.swap_total_mb | | Megabytes of total physical swap memory +| mem.swap_used_mb | | Megabytes of total swap memory used +| mem.total_mb | | Total megabytes of memory +| mem.usable_mb | | Total megabytes of usable memory +| mem.usable_perc | | Percentage of total memory that is usable +| mem.used_buffers | | Number of buffers being used by the kernel for block io +| mem_used_cached | | Memory used for the page cache +| mem.used_shared | | Memory shared between separate processes and typically used for inter-process communication +| net.bytes_in | device | Number of network bytes received +| net.bytes_out | device | Number of network bytes sent +| net.packets_in | device | Number of network packets received +| net.packets_out | device | Number of network packets sent +| net.errors_in | device | Number of network errors on incoming network traffic +| net.errors_out | device | Number of network errors on outgoing network traffic +| collector.threads.count | service=monasca component=agent | Number of threads that the collector is consuming for this collection run +| collector.emit.time | service=monasca component=agent | Amount of time that the collector took for sending the collected metrics to the Forwarder for this collection run +| collector.collection.time | service=monasca component=agent | Amount of time that the collector took for this collection run -## Nagios +# Plugin Checks +Plugins are the way to extend the Monasca Agent. Plugins add additional functionality that allow the agent to perform checks on other applications, servers or services. + +## Developing New Checks + +Developers can extend the functionality of the Agent by writing custom plugins. Plugins are written in Python according to the conventions described below. The plugin script is placed in /etc/monasca/agent/checks.d, and a YAML file containing the configuration for the plugin is placed in /etc/monasca/agent/conf.d. The YAML file must have the same stem name as the plugin script. + +### AgentCheck Interface +Most monasca-agent plugin code uses the AgentCheck interface. All custom checks inherit from the AgentCheck class found in monagent/collector/checks/__init__.py and require a check() method that takes one argument, instance, which is a dict specifying the configuration of the instance on behalf of the plugin being executed. The check() method is run once per instance defined in the check's configuration (discussed later). + +### ServicesCheck interface +Some monasca-agent plugins use the ServicesCheck class found in monagent/collector/services_checks.py. These require a _check() method that is similar to AgentCheck's check(), but instead of being called once per iteration in a linear fashion, it is run against a threadpool to allow concurrent instances to be checked. Also, _check() must return a tuple consisting of either Status.UP or 'Status.DOWN(frommonagent.collector.checks.services_checks`), plus a text description. + +The size of the threadpool is either 6 or the total number of instances, whichever is lower. This may be adjusted with the threads_count parameter in the plugin's init_config (see Plugin Configuration below). + +### Sending Metrics +Sending metrics in a check is easy, and is very similar to submitting metrics using a statsd client. The following methods are available: + +``` +self.gauge( ... ) # Sample a gauge metric + +self.increment( ... ) # Increment a counter metric + +self.decrement( ... ) # Decrement a counter metric + +self.histogram( ... ) # Sample a histogram metric + +self.rate( ... ) # Sample a point, with the rate calculated at the end of the check +``` + +All of these methods take the following arguments: + +* metric: The name of the metric +* value: The value for the metric (defaults to 1 on increment, -1 on decrement) +* dimensions: (optional) A list of dimensions (name:value pairs) to associate with this metric +* hostname: (optional) A hostname to associate with this metric. Defaults to the current host +* device_name: (optional) A device name to associate with this metric + +These methods may be called from anywhere within your check logic. At the end of your check function, all metrics that were submitted will be collected and flushed out with the other Agent metrics. + +As part of the parent class, you're given a logger at self.log>. The log handler will be checks.{name} where {name} is the stem filename of your plugin. + +Of course, when writing your plugin you should ensure that your code raises meaningful exceptions when unanticipated errors occur. + +### Plugin Configuration +Each plugin has a corresponding YAML configuration file with the same stem name as the plugin script file. + +The configuration file has the following structure: + +``` +init_config: + key1: value1 + key2: value2 + +instances: + - username: john_smith + password: 123456 + - username: jane_smith + password: 789012 +``` + +#### init_config +In the init_config section you can specify an arbitrary number of global name:value pairs that will be available on every run of the check in self.init_config. + +#### instances +The instances section is a list of instances that this check will be run against. Your actual check() method is run once per instance. The name:value pairs for each instance specify details about the instance that are necessary for the check. + +#### Plugin Documentation +Your plugin should include an example YAML configuration file to be placed in /etc/monasca/agent/conf.d/ which has the name of the plugin YAML file plus the extension '.example', so the example configuration file for the process plugin would be at /etc/monasca/agent/conf.d/process.yaml.example. This file should include a set of example init_config and instances clauses that demonstrate how the plugin can be configured. + +## Nagios Checks The Agent can run Nagios plugins. A YAML file (nagios_wrapper.yaml) contains the list of Nagios checks to run, including the check name, command name with parameters, and desired interval between iterations. A Python script (nagios_wrapper.py) runs each command in turn, captures the resulting exit code (0 through 3, corresponding to OK, warning, critical and unknown), and sends that information to the Forwarder, which then sends the Monitoring API. Currently, the Agent can only send the exit code from a Nagios plugin. Any accompanying text is not sent. Similar to all plugins, the configuration is done in YAML, and consists of two keys: init_config and instances. @@ -391,65 +488,7 @@ instances: * check_interval (optional) If unspecified, the checks will be run at the regular collector interval, which is 15 seconds by default. You may not want to run some checks that frequently, especially if they are resource-intensive, so check_interval lets you force a delay, in seconds, between iterations of that particular check. The state for these are stored in temp_file_path with file names like nagios_wrapper_19fe42bc7cfdc37a2d88684013e66c7b.pck where the hash is an md5sum of the service_name (to accommodate odd characters that the filesystem may not like). -## Statsd -The Agent ships with a Statsd daemon implementation called monstatsd. A statsd client can be used to send metrics to the Forwarder via the Statsd daemon. - -monstatsd will accept metrics submitted by functions in either the standard statsd Python client library, or monasca-agent's monstatsd-python Python client library. The advantage of using the monstatsd-python library is that it is possible to specify dimensions on submitted metrics. Dimensions are not handled by the standard statsd client. - -Statsd metrics are not bundled along with the metrics gathered by the Collector, but are flushed to the agent Forwarder on a separate schedule (every 10 seconds by default, rather than 15 seconds for Collector metrics). - -Here is an example of metrics submitted using the standard statsd Python client library. - -``` -import statsd - -statsd.increment('processed', 5) # Increment 'processed' metric by 5 -statsd.timing('pipeline', 2468.34) # Pipeline took 2468.34 ms to execute -statsd.gauge('gaugething', 3.14159265) # 'gauge' would be the preferred metric type for Monitoring -``` - -The monstatsd-python library provides client support for dimensions. - -Metrics submission to monstatsd using the monstatsd-python Python client library may look like this: - -``` -from monstatsd import statsd - -statsd.gauge('withdimensions', 6.283185, dimensions=['name1:value1', 'name2:value2']) -``` - -Here are some examples of how code can be instrumented using calls to monstatsd. - -``` -# Import the module once it's installed. -from monstatsd import statsd - -# Optionally, configure the host and port if you're running Statsd on a -# non-standard port. -statsd.connect('localhost', 8125) - -# Increment a counter. -statsd.increment('page.views') - -# Record a gauge 50% of the time. -statsd.gauge('users.online', 123, sample_rate=0.5) - -# Sample a histogram. -statsd.histogram('file.upload.size', 1234) - -# Time a function call. -@statsd.timed('page.render') -def render_page(): - # Render things ... - -# Tag a metric. -statsd.histogram('query.time', 10, dimensions = ["version:1"]) -``` - -## Log Parsing -TBD - -## Host alive +## Host Alive Checks An extension to the Agent can provide basic "aliveness" checks of other systems, verifying that the remote host (or device) is online. This check currently provides two methods of determining connectivity: * ping (ICMP) @@ -498,7 +537,7 @@ The instances section contains the hostname/IP to check, and the type of check t alive_test: ssh ``` -## Process exists +## Process Checks Process checks can be performed to verify that a set of named processes are running on the local system. The YAML file `process.yaml` contains the list of processes that are checked. The processes can be identified using a pattern match or exact match on the process name. A Python script `process.py` runs each execution cycle to check that required processes are alive. If the process is running a value of 0 is sent, otherwise a value of 1 is sent to the Monasca API. Each process entry consists of two primary keys: name and search_string. Optionally, if an exact match on name is required, the exact_match boolean can be added to the entry and set to True. @@ -514,15 +553,36 @@ instances: search_string: ['mysql'] exact_match: True ``` +The process checks return the following metrics: -## Http Endpoint checks +| Metric Name | Dimensions | Semantics | +| ----------- | ---------- | --------- | +| processes.mem.real | process_name | Amount of real memory a process is using +| processes.mem.rss | process_name | Amount of rss memory a process is using +| processes.io.read_count | process_name | Number of reads by a process +| processes.io.write_count | process_name | Number of writes by a process +| processes.io.read_bytes | process_name | Bytes read by a process +| processes.io.write_bytes | process_name | Bytes written by a process +| processes.threads | process_name | Number of threads a process is using +| processes.cpu_perc | process_name | Percentage of cpu being consumed by a process +| processes.vms | process_name | Amount of virtual memory a process is using +| processes.open_file_decorators | process_name | Number of files being used by a process +| processes.involuntary_ctx_switches | process_name | Number of involuntary context switches for a process +| processes.voluntary_ctx_switches | process_name | Number of voluntary context switches for a process +| processes.pid_count | process_name | Number of processes that exist with this process name + +## Http Endpoint Checks This section describes the http endpoint check that can be performed by the Agent. Http endpoint checks are checks that perform simple up/down checks on services, such as HTTP/REST APIs. An agent, given a list of URLs can dispatch an http request and report to the API success/failure as a metric. The Agent supports additional functionality through the use of Python scripts. A YAML file (http_check.yaml) contains the list of URLs to check (among other optional parameters). A Python script (http_check.py) runs checks each host in turn, returning a 0 on success and a 1 on failure in the result sent through the Forwarder and on the Monitoring API. Similar to other checks, the configuration is done in YAML, and consists of two keys: init_config and instances. The former is not used by http_check, while the later contains one or more URLs to check, plus optional parameters like a timeout, username/password, pattern to match against the HTTP response body, whether or not to include the HTTP response in the metric (as a 'detail' dimension), whether or not to also record the response time, and more. +Sample config: + ``` +init_config: + instances: url: http://192.168.0.254/healthcheck timeout: 1 @@ -531,133 +591,350 @@ instances: match_pattern: '.*OK.*OK.*OK.*OK.*OK' ``` -Example Output +The http_status checks return the following metrics: + +| Metric Name | Dimensions | Semantics | +| ----------- | ---------- | --------- | +| http_status | url, detail | The status of the http endpoint call (0 = success, 1 = failure) +| http_response_time | url | The response time of the http endpoint call -``` - "metrics" : [ - [ - "http_status", - 1394833060, - 0, - { - "type" : "gauge", - "hostname" : "agenthost.domain.net", - "dimensions" : [ - "url:http://192.168.0.254/healthcheck", - "detail:\"* deadlocks: OK\\n* mysql-db: OK\\n* rabbitmq-api: OK\\n* rabbitmq-external: OK\\n* rabbitmq-internal: OK\\n\"" - ] - } - ], - [ - "http_response_time", - 1394833060, - 0.251352787017822, - { - "type" : "gauge", - "hostname" : "agenthost.domain.net", - "dimensions" : [ - "url:http://192.168.0.254/healthcheck" - ] - } - ], - ], -``` -## MySQL -## RabbitMQ -## Kafka -## Other -## OpenStack -The `monasca-setup` script when run on a system that is running OpenStack services configures the Agent to send the following list of metrics. +## MySQL Checks +This section describes the mySQL check that can be performed by the Agent. The mySQL check requires a configuration file called mysql.yaml to be available in the agent conf.d configuration directory. -### Nova -This section documents all the checks done for the OpenStack Nova service. - -| Component | Metric Name | Metric Type | Check Type | Unit | Plugin | Description | Notes | -| --------- | ----------- | ----------- | ---------- | ---- | ------ | ----------- | ----- | -| nova-api | nova.api.process_exists | Gauge | Passive | Binary | process | nova-api process exists | -| nova-api | nova.api.http_status | Gauge | Passive | Binary | process | nova-api http endpoint is alive | This check should be executed on multiple systems.| -| nova-compute | nova.compute.process_exists | Gauge | Passive | Binary | process | nova-api process exists | - - -### Swift - -### Glance - -### Cinder - -### Neutron - -### Keystone - -### Seed Controller - -# Developing New Checks - -Developers can extend the functionality of the Agent by writing custom plugins. Plugins are written in Python according to the conventions described below. The plugin script is placed in /etc/monasca/agent/checks.d, and a YAML file containing the configuration for the plugin is placed in /etc/monasca/agent/conf.d. The YAML file must have the same stem name as the plugin script. - -## AgentCheck Interface -Most monasca-agent plugin code uses the AgentCheck interface. All custom checks inherit from the AgentCheck class found in monagent/collector/checks/__init__.py and require a check() method that takes one argument, instance, which is a dict specifying the configuration of the instance on behalf of the plugin being executed. The check() method is run once per instance defined in the check's configuration (discussed later). - -## ServicesCheck interface -Some monasca-agent plugins use the ServicesCheck class found in monagent/collector/services_checks.py. These require a _check() method that is similar to AgentCheck's check(), but instead of being called once per iteration in a linear fashion, it is run against a threadpool to allow concurrent instances to be checked. Also, _check() must return a tuple consisting of either Status.UP or 'Status.DOWN(frommonagent.collector.checks.services_checks`), plus a text description. - -The size of the threadpool is either 6 or the total number of instances, whichever is lower. This may be adjusted with the threads_count parameter in the plugin's init_config (see Plugin Configuration below). - -## Sending Metrics -Sending metrics in a check is easy, and is very similar to submitting metrics using a statsd client. The following methods are available: - -``` -self.gauge( ... ) # Sample a gauge metric - -self.increment( ... ) # Increment a counter metric - -self.decrement( ... ) # Decrement a counter metric - -self.histogram( ... ) # Sample a histogram metric - -self.rate( ... ) # Sample a point, with the rate calculated at the end of the check -``` - -All of these methods take the following arguments: - -* metric: The name of the metric -* value: The value for the metric (defaults to 1 on increment, -1 on decrement) -* dimensions: (optional) A list of dimensions (name:value pairs) to associate with this metric -* hostname: (optional) A hostname to associate with this metric. Defaults to the current host -* device_name: (optional) A device name to associate with this metric - -These methods may be called from anywhere within your check logic. At the end of your check function, all metrics that were submitted will be collected and flushed out with the other Agent metrics. - -As part of the parent class, you're given a logger at self.log>. The log handler will be checks.{name} where {name} is the stem filename of your plugin. - -Of course, when writing your plugin you should ensure that your code raises meaningful exceptions when unanticipated errors occur. - -## Plugin Configuration -Each plugin has a corresponding YAML configuration file with the same stem name as the plugin script file. - -The configuration file has the following structure: +Sample config: ``` init_config: - key1: value1 - key2: value2 instances: - - username: john_smith - password: 123456 - - username: jane_smith - password: 789012 + defaults_file: /root/.my.cnf + server: localhost + user: root +``` + +The mySQL checks return the following metrics: + +| Metric Name | Dimensions | Semantics | +| ----------- | ---------- | --------- | +| mysql.performance.questions | hostname, mode, service=mysql | | +| mysql.performance.qcache_hits | hostname, mode, service=mysql | | +| mysql.performance.open_files | hostname, mode, service=mysql | | +| mysql.performance.created_tmp_tables | hostname, mode, service=mysql | | +| mysql.performance.user_time | hostname, mode, service=mysql | | +| mysql.performance.com_replace_select | hostname, mode, service=mysql | | +| mysql.performance.kernel_time | hostname, mode, service=mysql | | +| mysql.performance.com_insert | hostname, mode, service=mysql | | +| mysql.performance.threads_connected | hostname, mode, service=mysql | | +| mysql.performance.com_update_multi | hostname, mode, service=mysql | | +| mysql.performance.table_locks_waited | hostname, mode, service=mysql | | +| mysql.performance.com_insert_select | hostname, mode, service=mysql | | +| mysql.performance.slow_queries | hostname, mode, service=mysql | | +| mysql.performance.com_delete | hostname, mode, service=mysql | | +| mysql.performance.com_select | hostname, mode, service=mysql | | +| mysql.performance.queries | hostname, mode, service=mysql | | +| mysql.performance.created_tmp_files | hostname, mode, service=mysql | | +| mysql.performance.com_update | hostname, mode, service=mysql | | +| mysql.performance.com_delete_multi | hostname, mode, service=mysql | | +| mysql.performance.created_tmp_disk_tables | hostname, mode, service=mysql | | +| mysql.innodb.mutex_spin_rounds | hostname, mode, service=mysql | | +| mysql.innodb.current_row_locks | hostname, mode, service=mysql | | +| mysql.innodb.mutex_os_waits | hostname, mode, service=mysql | | +| mysql.innodb.buffer_pool_used | hostname, mode, service=mysql | | +| mysql.innodb.data_writes | hostname, mode, service=mysql | | +| mysql.innodb.data_reads | hostname, mode, service=mysql | | +| mysql.innodb.row_lock_waits | hostname, mode, service=mysql | | +| mysql.innodb.os_log_fsyncs | hostname, mode, service=mysql | | +| mysql.innodb.buffer_pool_total | hostname, mode, service=mysql | | +| mysql.innodb.row_lock_time | hostname, mode, service=mysql | | +| mysql.innodb.mutex_spin_waits | hostname, mode, service=mysql | | +| mysql.innodb.buffer_pool_free | hostname, mode, service=mysql | | +| mysql.net.max_connections | hostname, mode, service=mysql | | +| mysql.net.connections | hostname, mode, service=mysql | | + + +## ZooKeeper Checks +This section describes the Zookeeper check that can be performed by the Agent. The Zookeeper check requires a configuration file called zk.yaml to be available in the agent conf.d configuration directory. + +Sample config: + +``` +init_config: + +instances: + host: localhost + port: 2181 + timeout: 3 +``` + +The Zookeeper checks return the following metrics: + +| Metric Name | Dimensions | Semantics | +| ----------- | ---------- | --------- | +| zookeeper.latency.max | hostname, mode, service=zookeeper | | +| zookeeper.latency.min | hostname, mode, service=zookeeper | | +| zookeeper.latency.avg | hostname, mode, service=zookeeper | | +| zookeeper.bytes_sent | hostname, mode, service=zookeeper | | +| zookeeper.bytes_outstanding | hostname, mode, service=zookeeper | | +| zookeeper.bytes_received | hostname, mode, service=zookeeper | | +| zookeeper.connections | hostname, mode, service=zookeeper | | +| zookeeper.nodes | hostname, mode, service=zookeeper | | +| zookeeper.zxid.count | hostname, mode, service=zookeeper | | +| zookeeper.zxid.epoch | hostname, mode, service=zookeeper | | + + +## Kafka Checks +This section describes the Kafka check that can be performed by the Agent. The Kafka check requires a configuration file called kafka.yaml to be available in the agent conf.d configuration directory. + +Sample config: + +``` +init_config: + +instances: +- consumer_groups: + '1_alarm-state-transitions': + 'alarm-state-transitions': ['3', '2', '1', '0'] + '1_metrics': + 'metrics': &id001 ['3', '2', '1', '0'] + 'test': + 'healthcheck': ['1', '0'] + 'thresh-event': + 'events': ['3', '2', '1', '0'] + 'thresh-metric': + 'metrics': *id001 + kafka_connect_str: localhost:9092 + zk_connect_str: localhost:2181 +``` + +The Kafka checks return the following metrics: + +| Metric Name | Dimensions | Semantics | +| ----------- | ---------- | --------- | +| TBD | | | + + +## RabbitMQ Checks +TBD + +## OpenStack Monitoring +The `monasca-setup` script when run on a system that is running OpenStack services, configures the Agent to send the following list of metrics: + +* The setup program creates process checks for each process that is part of an OpenStack service. A few sample metrics from the process check are provided. For the complete list of process metrics, see the [Process Checks](#Process Checks) section. +* Additionally, an http_status check will be setup on the api for the service, if there is one. + +PLEASE NOTE: The monasca-setup program will only install checks for OpenStack services it detects when it is run. If an additional service is added to a particular node or deleted, monasca-setup must be re-run to add monitoring for the additional service or remove the service that is no longer there. + +### Nova Checks +This section documents a *sampling* of the metrics generated by the checks setup automatically by the monasca-setup script for the OpenStack Nova service. + +The following nova processes are monitored, if they exist when the monasca-setup script is run: + +##### Nova Processes Monitored +* nova-compute +* nova-conductor +* nova-cert +* nova-network +* nova-scheduler +* nova-novncproxy +* nova-xvpncproxy +* nova-consoleauth +* nova-objectstore +* nova-api + +##### Example Nova Metrics + +| Component | Metric Name | Metric Type | Check Type | Dimensions | Plugin | Description | Notes | +| --------- | ----------- | ----------- | ---------- | ---- | ------ | ----------- | ----- | +| nova-compute | processes.process_pid_count | Gauge | Passive | service=nova, component=nova-compute | process | nova-compute process exists | This is only one of the process checks performed | +| nova-api | processes.process_pid_count | Gauge | Passive | service=nova, component=nova-api | process | nova-api process pid count | This is only one of the process checks performed | +| nova-api | http_status | Gauge | Active | service=nova, component=nova-api url=url_to_nova_api | http_status | nova-api http endpoint is alive | This check should be executed on multiple systems.| + + +### Swift Checks +This section documents a sampling of the metrics generated by the checks setup automatically by the monasca-setup script for the OpenStack Swift service. + +The following swift processes are monitored, if they exist when the monasca-setup script is run: + +##### Swift Processes Monitored +* swift-container-updater +* swift-account-auditor +* swift-object-replicator +* swift-container-replicator +* swift-object-auditor +* swift-container-auditor +* swift-account-reaper +* swift-container-sync +* swift-account-replicator +* swift-object-updater +* swift-object-server +* swift-account-server +* swift-container-server +* swift-proxy-server + + +##### Example Swift Metrics + +| Component | Metric Name | Metric Type | Check Type | Dimensions | Plugin | Description | Notes | +| --------- | ----------- | ----------- | ---------- | ---- | ------ | ----------- | ----- | +| swift-container-updater | processes.process_pid_count | Gauge | Passive | service=swift, component=swift-container-updater | process | swift-container-updater process exists | This is only one of the process checks performed | +| swift-proxy-server | processes.process_pid_count | Gauge | Passive | service=swift, component=swift-proxy-server | process | swift-proxy-server process pid count | This is only one of the process checks performed | +| swift-proxy-server | http_status | Gauge | Active | service=swift, component=swift-proxy-server url=url_to_swift_proxy_server | http_status | swift-proxy-server http endpoint is alive | This check should be executed on multiple systems.| + +### Glance Checks +This section documents a sampling of the metrics generated by the checks setup automatically by the monasca-setup script for the OpenStack Glance service. + +The following glance processes are monitored, if they exist when the monasca-setup script is run: + +##### Glance Processes Monitored +* glance-registry +* glance-api + +##### Example Glance Metrics + +| Component | Metric Name | Metric Type | Check Type | Dimensions | Plugin | Description | Notes | +| --------- | ----------- | ----------- | ---------- | ---- | ------ | ----------- | ----- | +| glance-registry | processes.process_pid_count | Gauge | Passive | service=glance, component=glance-registry | process | glance-registry process exists | This is only one of the process checks performed | +| glance-api | processes.process_pid_count | Gauge | Passive | service=glance, component=glance-api | process | glance-api process pid count | This is only one of the process checks performed | +| glance-api | http_status | Gauge | Active | service=glance, component=glance-api url=url_to_glance_api | http_status | glance-api http endpoint is alive | This check should be executed on multiple systems.| + + +### Cinder Checks +This section documents a sampling of the metrics generated by the checks setup automatically by the monasca-setup script for the OpenStack Cinder service. + +The following cinder processes are monitored, if they exist when the monasca-setup script is run: + +##### Cinder Processes Monitored +* cinder-volume +* cinder-scheduler +* cinder-api + +##### Example Cinder Metrics + +| Component | Metric Name | Metric Type | Check Type | Dimensions | Plugin | Description | Notes | +| --------- | ----------- | ----------- | ---------- | ---- | ------ | ----------- | ----- | +| cinder-volume | processes.process_pid_count | Gauge | Passive | service=cinder, component=cinder-volume | process | cinder-volume process exists | This is only one of the process checks performed | +| cinder-api | processes.process_pid_count | Gauge | Passive | service=cinder, component=cinder-api | process | cinder-api process pid count | This is only one of the process checks performed | +| cinder-api | http_status | Gauge | Active | service=cinder, component=cinder-api url=url_to_cinder_api | http_status | cinder-api http endpoint is alive | This check should be executed on multiple systems.| + + +### Neutron Checks +This section documents a sampling of the metrics generated by the checks setup automatically by the monasca-setup script for the OpenStack Neutron service. + +The following neutron processes are monitored, if they exist when the monasca-setup script is run: + +##### Neutron Processes Monitored +* neutron-server +* neutron-openvswitch-agent +* neutron-rootwrap +* neutron-dhcp-agent +* neutron-vpn-agent +* neutron-metadata-agent +* neutron-metering-agent +* neutron-ns-metadata-proxy + +##### Example Neutron Metrics + +| Component | Metric Name | Metric Type | Check Type | Dimensions | Plugin | Description | Notes | +| --------- | ----------- | ----------- | ---------- | ---- | ------ | ----------- | ----- | +| neutron-server | processes.process_pid_count | Gauge | Passive | service=neutron, component=neutron-server | process | neutron-server process exists | This is only one of the process checks performed | +| neutron-ns-metadata-proxy | processes.process_pid_count | Gauge | Passive | service=neutron, component=neutron-ns-metadata-proxy | process | neutron-ns-metadata-proxy process pid count | This is only one of the process checks performed | +| neutron-ns-metadata-proxy | http_status | Gauge | Active | service=neutron, component=neutron-ns-metadata-proxy url=url_to_neutron_api | http_status | neutron-ns-metadata-proxy http endpoint is alive | This check should be executed on multiple systems.| + + +### Keystone Checks +This section documents a sampling of the metrics generated by the checks setup automatically by the monasca-setup script for the OpenStack Keystone service. + +The following keystone processes are monitored, if they exist when the monasca-setup script is run: + +##### Keystone Processes Monitored +* keystone-all + +##### Example Keystone Metrics + +| Component | Metric Name | Metric Type | Check Type | Dimensions | Plugin | Description | Notes | +| --------- | ----------- | ----------- | ---------- | ---- | ------ | ----------- | ----- | +| keystone-all | processes.process_pid_count | Gauge | Passive | service=keystone, component=keystone-all | process | keystone-all process pid count | This is only one of the process checks performed | +| keystone-all | http_status | Gauge | Active | service=keystone, component=keystone-all url=url_to_keystone_api | http_status | keystone-all http endpoint is alive | This check should be executed on multiple systems.| + + +### Ceilometer Checks +This section documents a sampling of the metrics generated by the checks setup automatically by the monasca-setup script for the OpenStack Ceilometer service. + +The following ceilometer processes are monitored, if they exist when the monasca-setup script is run: + +##### Ceilometer Processes Monitored +* ceilometer-agent-compute +* ceilometer-agent-central +* ceilometer-agent-notification +* ceilometer-collector +* ceilometer-alarm-notifier +* ceilometer-alarm-evaluator +* ceilometer-api + +##### Example Ceilometer Metrics + +| Component | Metric Name | Metric Type | Check Type | Dimensions | Plugin | Description | Notes | +| --------- | ----------- | ----------- | ---------- | ---- | ------ | ----------- | ----- | +| ceilometer-agent-compute | processes.process_pid_count | Gauge | Passive | service=ceilometer, component=ceilometer-agent-compute | process | ceilometer-agent-compute process exists | This is only one of the process checks performed | +| ceilometer-api | processes.process_pid_count | Gauge | Passive | service=ceilometer, component=ceilometer-api | process | ceilometer-api process pid count | This is only one of the process checks performed | +| ceilometer-api | http_status | Gauge | Active | service=ceilometer, component=ceilometer-api url=url_to_ceilometer_api | http_status | ceilometer-api http endpoint is alive | This check should be executed on multiple systems.| + + +# Statsd +The Monasca Agent ships with a Statsd daemon implementation called monasca-statsd. A statsd client can be used to send metrics to the Forwarder via the Statsd daemon. + +monascastatsd will accept metrics submitted by functions in either the standard statsd Python client library, or the monasca-agent's [python-monasca-statsd Python client library](https://github.com/hpcloud-mon/python-monascastatsd). The advantage of using the python-monasca-statsd library is that it is possible to specify dimensions on submitted metrics. Dimensions are not handled by the standard statsd client. + +Statsd metrics are not bundled along with the metrics gathered by the Collector, but are flushed to the agent Forwarder on a separate schedule (every 10 seconds by default, rather than 15 seconds for Collector metrics). + +Here is an example of metrics submitted using the standard statsd Python client library. + +``` +import statsd + +statsd.increment('processed', 5) # Increment 'processed' metric by 5 +statsd.timing('pipeline', 2468.34) # Pipeline took 2468.34 ms to execute +statsd.gauge('gaugething', 3.14159265) # 'gauge' would be the preferred metric type for Monitoring ``` -### init_config -In the init_config section you can specify an arbitrary number of global name:value pairs that will be available on every run of the check in self.init_config. +The [python-monasca-statsd](https://github.com/hpcloud-mon/python-monascastatsd) library provides a python based implementation of a statsd client but also adds the ability to add dimensions to the the statsd metrics for the client. -### instances -The instances section is a list of instances that this check will be run against. Your actual check() method is run once per instance. The name:value pairs for each instance specify details about the instance that are necessary for the check. +Here are some examples of how code can be instrumented using calls to python-monascastatsd. +``` -## Plugin Documentation -Your plugin should include an example YAML configuration file to be placed in /etc/monasca/agent/conf.d/ which has the name of the plugin YAML file plus the extension '.example', so the example configuration file for the process plugin would be at /etc/monasca/agent/conf.d/process.yaml.example. This file should include a set of example init_config and instances clauses that demonstrate how the plugin can be configured. + * Import the module once it's installed. + from monascastatsd import monascastatsd + + * Optionally, configure the host and port if you're running Statsd on a non-standard port. + monascastatsd.connect('localhost', 8125) + + * Increment a counter. + monascastatsd.increment('page_views') + + With dimensions: + monascastatsd.increment('page_views', 5, dimensions={'Hostname': 'prod.mysql.abccorp.com'}) + + * Record a gauge 50% of the time. + monascastatsd.gauge('users_online', 91, sample_rate=0.5) + + With dimensions: + monascastatsd.gauge('users_online', 91, dimensions={'Origin': 'Dev', 'Environment': 'Test'}) + + * Sample a histogram. + monascastatsd.histogram('file.upload_size', 20456) + + With dimensions: + monascastatsd.histogram('file.upload_size', 20456, sample_rate=0.5, dimensions={'Name': 'MyFile.pdf', 'Version': '1.0'}) + + * Time a function call. + @monascastatsd.timed('page.render') + def render_page(): + # Render things ... +``` + +# Log Parsing +TBD # License Copyright (c) 2014 Hewlett-Packard Development Company, L.P. diff --git a/monasca-agent_arch.graffle b/monasca-agent_arch.graffle new file mode 100644 index 00000000..a75a6e3e --- /dev/null +++ b/monasca-agent_arch.graffle @@ -0,0 +1,1504 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {575.99999904632568, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2014-05-02 06:52:18 +0000 + Creator + Dave Shurtleff + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Bounds + {{37.067495559502639, 34.000000000000007}, {82.145648312611016, 36.101408450704227}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 1603 + Shape + Rectangle + Style + + fill + + Color + + b + 1 + g + 0.985627 + r + 0.674806 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs20 \cf0 External Statsd Client} + + + + Bounds + {{82.147424511545296, 88.465492957746477}, {62.110124333925405, 12.033802816901408}} + Class + ShapedGraphic + ID + 1602 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Cylinder + Style + + fill + + Color + + b + 0 + g + 0.5 + r + 1 + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 tcp/8125} + VerticalPad + 0 + + TextRelativeArea + {{0, 0}, {1, 1}} + + + Class + LineGraphic + Head + + ID + 1598 + + ID + 1607 + Points + + {77.792720840235788, 70.601320722372733} + {77.138543516873895, 105.51338028169015} + {76.609332032315081, 131.90211303298867} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + + + Tail + + ID + 1603 + + + + Class + Group + Graphics + + + Class + LineGraphic + Head + + ID + 1597 + + ID + 1573 + Points + + {133.23801065719363, 281.06901408450705} + {112.20071047957371, 282.07183098591554} + {89.05071953114242, 243.8659804573694} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + + + + + Bounds + {{2.0000000000000284, 109.21126760563379}, {333.59147424511542, 280.78873239436621}} + Class + ShapedGraphic + ID + 1574 + Shape + Rectangle + Style + + fill + + Draws + NO + + stroke + + Pattern + 1 + + + + + Class + LineGraphic + ID + 1575 + Points + + {424.75488454706925, 157.97323943661971} + {424.75488454706925, 134.90845070422534} + + Style + + stroke + + HeadArrow + 0 + Legacy + + TailArrow + FilledArrow + + + + + Class + LineGraphic + ID + 1576 + Points + + {381.67850799289522, 156.46901408450705} + {381.67850799289522, 133.40422535211266} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + + + + + Bounds + {{451.30195381882771, 161.7338028169014}, {43.076376554174068, 12.033802816901408}} + Class + ShapedGraphic + ID + 1577 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Cylinder + Style + + fill + + Color + + b + 0 + g + 0.5 + r + 1 + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 tcp/443} + VerticalPad + 0 + + TextRelativeArea + {{0, 0}, {1, 1}} + + + Class + LineGraphic + ID + 1578 + Points + + {448.79751332149203, 175.77323943661972} + {497.88454706927178, 176.77605633802816} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + + + + + Class + LineGraphic + ID + 1579 + Points + + {316.56305506216694, 175.77323943661972} + {359.63943161634097, 176.27464788732394} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + + + + + Bounds + {{155.27708703374779, 150.70281690140845}, {56.600355239786857, 12.033802816901408}} + Class + ShapedGraphic + ID + 1580 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Cylinder + Style + + fill + + Color + + b + 0 + g + 0.5 + r + 1 + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 tcp/17123} + VerticalPad + 0 + + TextRelativeArea + {{0, 0}, {1, 1}} + + + Bounds + {{160.78685612788632, 198.33661971830986}, {56.600355239786857, 12.033802816901408}} + Class + ShapedGraphic + ID + 1581 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Cylinder + Style + + fill + + Color + + b + 0 + g + 0.5 + r + 1 + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 tcp/17123} + VerticalPad + 0 + + TextRelativeArea + {{0, 0}, {1, 1}} + + + Class + LineGraphic + ID + 1582 + Points + + {123.71024286570528, 205.49725236734955} + {163.291296625222, 192.94647887323944} + {162.28952042628774, 192.94647887323944} + {222.39609236234458, 191.81830985915494} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + + + Tail + + ID + 1597 + + + + Class + LineGraphic + ID + 1583 + Points + + {135.03887780033926, 164.29403608837649} + {164.7939609236235, 168.75352112676055} + {164.7939609236235, 168.75352112676055} + {222.39609236234463, 168.75352112676055} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + + + Tail + + ID + 1598 + + + + Bounds + {{411.73179396092371, 313.15915492957748}, {98.174067495559513, 12.033802816901408}} + Class + ShapedGraphic + ID + 1584 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Cylinder + Style + + fill + + Color + + b + 0 + g + 0.5 + r + 1 + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 Other Components} + VerticalPad + 0 + + TextRelativeArea + {{0, 0}, {1, 1}} + + + Bounds + {{408.72646536412088, 332.71408450704229}, {154.2735346358792, 12.033802816901408}} + Class + ShapedGraphic + ID + 1585 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Cylinder + Style + + fill + + Color + + b + 0 + g + 0.5 + r + 1 + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 monasca-agent Components} + VerticalPad + 0 + + TextRelativeArea + {{0, 0}, {1, 1}} + + + Bounds + {{382.68028419182951, 332.71408450704223}, {31.055062166962703, 13.03661971830986}} + Class + ShapedGraphic + ID + 1586 + Shape + Rectangle + Style + + fill + + Color + + b + 1 + g + 0.490118 + r + 0.157192 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + + + Bounds + {{382.68028419182951, 313.15915492957748}, {31.055062166962703, 12.033802816901408}} + Class + ShapedGraphic + ID + 1587 + Shape + Rectangle + Style + + fill + + Color + + b + 1 + g + 0.985627 + r + 0.674806 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + + + Bounds + {{267.4760213143872, 345.75070422535214}, {65.115452930728239, 12.033802816901408}} + Class + ShapedGraphic + ID + 1588 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Cylinder + Style + + fill + + Color + + b + 0 + g + 0.5 + r + 1 + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 supervisord} + VerticalPad + 0 + + TextRelativeArea + {{0, 0}, {1, 1}} + + + Bounds + {{142.25399644760213, 287.08591549295778}, {82.145648312611016, 57.661971830985912}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 10 + + ID + 1589 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + DocumentShape + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\b\fs20 \cf0 Agent Checks\ +- checks.d/*.py\ +- conf.d/*.yaml} + VerticalPad + 0 + + + + Bounds + {{147.26287744227355, 277.05774647887318}, {82.145648312611016, 54.15211267605634}} + Class + ShapedGraphic + ID + 1590 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + DocumentShape + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{140.25044404973357, 266.02676056338026}, {82.145648312611016, 54.15211267605634}} + Class + ShapedGraphic + ID + 1591 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + DocumentShape + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{133.23801065719363, 254.99577464788732}, {82.145648312611016, 54.15211267605634}} + Class + ShapedGraphic + ID + 1592 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + DocumentShape + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + VerticalPad + 0 + + + + Bounds + {{497.88454706927178, 162.73661971830987}, {65.115452930728239, 36.101408450704227}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica-Bold + Size + 10 + + ID + 1593 + Shape + Rectangle + Style + + fill + + Color + + b + 1 + g + 0.985627 + r + 0.674806 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs20 \cf0 MONASCA API} + + + + Bounds + {{348.11900532859681, 117.86056338028169}, {113.70159857904086, 17.047887323943662}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 10 + + ID + 1594 + Shape + Rectangle + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs20 \cf0 Normalization Engine} + + + + Bounds + {{359.63943161634103, 156.21830985915491}, {89.158081705150977, 46.129577464788731}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 10 + + ID + 1595 + Shape + Circle + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs20 \cf0 Emitter} + VerticalPad + 0 + + + + Bounds + {{222.39609236234458, 151.95633802816903}, {94.166962699822392, 54.15211267605634}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 10 + + ID + 1596 + Shape + Rectangle + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs20 \cf0 Forwarder} + + + + Bounds + {{11.02131438721139, 197.83521126760564}, {128.22735346358792, 46.129577464788731}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 10 + + ID + 1597 + Shape + Circle + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs20 \cf0 Collector} + VerticalPad + 0 + + + + Bounds + {{13.024866785079901, 132.40140845070422}, {126.22380106571937, 46.129577464788731}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 10 + + ID + 1598 + Shape + Circle + Style + + fill + + Color + + b + 1 + g + 0.427032 + r + 0.0823773 + + FillType + 2 + GradientAngle + 90 + GradientColor + + w + 0.666667 + + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\b\fs20 \cf0 Monasca-statsd} + VerticalPad + 0 + + + + ID + 1572 + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2014-08-13 16:38:59 +0000 + Modifier + gary + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {611.99999904632568, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{1216, 226}, {1097, 872}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{-193, 0}, {962, 733}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff --git a/monasca-agent_arch.png b/monasca-agent_arch.png index 59a1952de2068c5aa612aafd907e8d89d9836bee..c91e2af1e070bbf8559fbe34f4bc80090b39d509 100644 GIT binary patch delta 72951 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�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 NgVr(8{#(;7`hSUUDCYnG delta 62538 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Α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

H#4WamKXR>`E=P0vPT;5 z$=YX!j-FHdWIF4yZZGoX%84~f@$qx-n`nPpbpVRLD4tlgld?fmtF^*VG~?s+yD71) zBLz#V^p!&>>h29`ORWU!9Oo>xmZ@+8*D(K z0a3jA!F2XS8 zwuE15LTqyvKvhAH>TI(8bSh0YT|*}sLyxGwdH&yPTJw$q^E@3#*TD6|`a@pMKFTg% z*wnb+)f;n9M1m>!n&s4gg;OHVF2)7EX0ra3kVvK|ty5%XzY#cP0EhA;s$d|vl7C5~ z=$2@~78xA*Ah=pGF;Xcaqs0qoW80NW*>{96cV*`R$$lfb>{^^+JWolS>{t2NfFsX9Nv-MW zqR@W>2W*@`#R3-`#_pGe{QpW5x1>>LJj-V&LX(J)bTEye<%=qN^%<-mI7)4y@O{DE z{{A^thZwL1IK^)~B_;Cb7z0wOKxgZJ%>?!mDuQdyeox^=q_;sDBBC3Entvk8^BZ*i zOxFtLXZv=5E9Ac+|8FGqhl}eEYEgeoXL>2w*Ym$0Bgkcg2-4~P&ToG_syhDr(*IhS zAF+T2T&3Rj3b+5?huqd+YJ+DtYnAjEEd2lBJ>dWK#s5$5k^fis0-BR2PwX9xH%kYJ Q&%i$g8CB^@$@gFW7bHRNF#rGn diff --git a/monsetup/main.py b/monsetup/main.py index e8a91f95..f78b272e 100644 --- a/monsetup/main.py +++ b/monsetup/main.py @@ -71,6 +71,8 @@ def main(argv=None): elif detected_os == 'Windows': print("Windows is not currently supported by the Monasca Agent") sys.exit() + else: + print("{0} is not currently supported by the Monasca Agent".format(detected_os)) # Service enable, includes setup of users/config directories so must be # done before configuration