[Docs] Initial docs for monitorstack

This patch adds some initial docs for monitorstack. This is by no
means an exhaustive set of documentation, but it's a good place
to start.

Change-Id: Ia028bd51f145093c42eec91314a0a0e124170be0
This commit is contained in:
Major Hayden 2017-03-29 15:59:10 -05:00
parent b616091eb9
commit 57d1fb9651
No known key found for this signature in database
GPG Key ID: 737051E0C1011FB1
6 changed files with 215 additions and 13 deletions

View File

@ -128,8 +128,9 @@ html_theme = 'openstackdocs'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
html_theme_options = {
"display_toc": False
}
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = [openstackdocstheme.get_html_theme_path()]

9
doc/source/configure.rst Normal file
View File

@ -0,0 +1,9 @@
Configuration
=============
The OpenStack monitoring plugins within monitorstack require basic
configuration that provides URLs for endpoints and credentials for those
endpoints. The following example provides configuration details for various
OpenStack services:
.. literalinclude:: ../../tests/files/test-openstack.ini

41
doc/source/develop.rst Normal file
View File

@ -0,0 +1,41 @@
===============
Developer guide
===============
One of the design goals of monitorstack is to make it easy to develop new
monitoring plugins.
Writing plugins
---------------
Start by adding a new python script in the ``plugins`` directory. The plugin
will inherit the same name as the file. For example, creating a plugin file
called ``my_plugin.py`` will create a new plugin called ``my_plugin``.
Use the ``uptime`` plugin as a guide for developing new plugins:
.. literalinclude:: ../../monitorstack/plugins/uptime.py
Every plugin will have a ``cli()`` method that is the equivalent of
``___main___`` in other Python scripts.
Testing plugins
---------------
Add tests in the ``tests`` directory and follow the ``uptime`` example. Here
are the contents of ``tests/test_plugin_uptime.py`` as an example:
.. literalinclude:: ../../tests/test_plugin_uptime.py
Running tests
-------------
There are two main sets of tests: pep8/flake8 tests and unit tests:
.. code-block:: console
# PEP8 and flake8 checks
tox -e linters
# Unit tests
tox -e functional

View File

@ -1,15 +1,19 @@
Welcome to monitorstack's documentation!
========================================
==============================
Documentation for monitorstack
==============================
The monitorstack project provides a framework for writing monitoring plugins
that output data in various formats for different monitoring systems.
Developers can quickly add new monitoring plugins (along with tests) without
worrying about how to format the data.
Documentation sections
----------------------
.. toctree::
:maxdepth: 2
:caption: Contents:
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
install
configure
usage
develop

19
doc/source/install.rst Normal file
View File

@ -0,0 +1,19 @@
Installation
============
The project is conveniently packaged as a Python package that is installed with
``pip``.
Installing from pypi with ``pip``
---------------------------------
*The pypi-based installation is coming soon.*
Installing from git
-------------------
Install monitorstack with ``pip``:
.. code-block:: console
pip install git+https://github.com/openstack/monitorstack

128
doc/source/usage.rst Normal file
View File

@ -0,0 +1,128 @@
Usage
=====
Run the ``monitorstack`` command without any arguments to review a list of
available commands and options:
.. code-block:: console
$ monitorstack
Usage: monitorstack [OPTIONS] COMMAND [ARGS]...
A complex command line interface.
Options:
-f, --format [json|line|telegraf|rax-maas]
Output format (valid options: json, line,
telegraf, rax-maas
-v, --verbose Enables verbose mode.
--help Show this message and exit.
Commands:
kvm Get metrics from a KVM hypervisor.
os_block_pools_totals Get block storage totals from the available pools.
os_block_pools_usage Get block storage usage from the available pools.
os_vm_quota_cores Get nova cores quotas.
os_vm_quota_instance Get nova instance quotas.
os_vm_quota_ram Get nova ram quotas.
os_vm_used_cores Get nova used cores.
os_vm_used_disk Get nova used disk.
os_vm_used_instance Get nova used instances.
os_vm_used_ram Get nova used ram.
process Check if a process is running.
uptime Get system uptime.
Executing simple plugins
------------------------
The most simple plugins do not require any arguments. For example, to get the
system uptime, use the ``uptime`` command to run the corresponding ``uptime``
plugin:
.. code-block:: console
$ monitorstack uptime
{
"variables": {
"uptime": "22613.26"
},
"message": "uptime is ok",
"meta": {
"platform": "Linux-4.10.5-200.fc25.x86_64-x86_64-with-fedora-25-Twenty_Five"
},
"exit_code": 0,
"measurement_name": "system_uptime"
}
The default output type is json, but this is configured with the ``-f,
--format`` option. Here is another example that outputs data in telegraf
format:
.. code-block:: console
$ monitorstack -f telegraf uptime
system_uptime platform=Linux-4.10.5-200.fc25.x86_64-x86_64-with-fedora-25-Twenty_Five uptime=23005.05 1490819061833774080
Executing plugins with arguments
--------------------------------
The ``process`` plugin searches the current list of running processes to find
any that match a string provided as an argument. Execute the plugin without any
arguments for some usage help:
.. code-block:: console
$ monitorstack process
Usage: monitorstack process [OPTIONS] PROCESS_NAME
Error: Missing argument "process_name".
In this example, we want to ensure that the ``chronyd`` process is running:
.. code-block:: console
$ monitorstack process chronyd
{
"variables": {
"chronyd": 1
},
"message": "process check is ok",
"meta": {
"platform": "Linux-4.10.5-200.fc25.x86_64-x86_64-with-fedora-25-Twenty_Five"
},
"exit_code": 0,
"measurement_name": "process"
}
We can also see a negative result if we check for a non-existent process called
``processdoesntexist``:
.. code-block:: console
$ monitorstack process processdoesntexist
{
"variables": {
"processdoesntexist": 0
},
"message": "process failed -- Process processdoesntexist not found",
"meta": {
"platform": "Linux-4.10.5-200.fc25.x86_64-x86_64-with-fedora-25-Twenty_Five"
},
"exit_code": 1,
"measurement_name": "process"
}
Executing plugins with configuration files
------------------------------------------
Many of the OpenStack plugins require a configuration file that specifies the
URLs of OpenStack endpoints as well as valid credentials for those endpoints.
For more information on the format of these configuration files, refer to the
documentation on `configuration <configure.html>`_.
Here is an example with the ``os_vm_quota_ram`` plugin with a configuration
file in ``/home/user/openstack.ini``:
.. code-block:: console
$ monitorstack os_vm_quota_ram --config-file=/etc/openstack/openstack.ini