Following commit makes enhancements to the
keystone handling inside monasca-agent:
* using generic password approach that abstracts from underlying
keystone version thus allows agent to be used seamlessly with
either v2.0 or v3. The only relevant part is the set of parameters
that one needs to supply to either monasca-reconfigure or agent.yaml
configuration file
* using keystone discovery - it simply means that agent will no longer
enforce particular keystone version but will allow keystoneauth
to pick the best match for given environment
Extra:
* extracted methods get_session and get_client utilize an aproach
presented above and can be used outside of monasca_agent.common.keystone
inside checks or detection plugins
* make imports to import only modules instead specific objects
* removed some redundant methods
Story: 2000995
Task: 4191
Needed-By: I579f6bcd5975a32af2a255be41c9b6c4043fa1dc
Needed-By: Ifee5b88ccb632222310aafb1081ecb9c9d085150
Change-Id: Iec97e50089ed31ae7ad8244b37cec128817871a5
update where ```iteritems``` is used
1.As mentioned in [1], we should avoid using
six.iteritems to achieve iterators. We can
use dict.items instead, as it will return
iterators in PY3 as well. And dict.items/keys
will more readable. 2.In py2, the performance
about list should be negligible, see the link [2].
[1] https://wiki.openstack.org/wiki/Python3
[2] http://lists.openstack.org/pipermail/openstack-dev/2015-June/066391.html
Change-Id: Ic82c26e0f37bd3ecea98bc85bd98bd62c8d762a2
At the end of monasca setup run, the agent service is started.
This, however, assumes that the service name is 'monasca-agent'.
As this is not always the case, let's add an extra argument
to control that. Needless to say, the default value is left
untouched.
Change-Id: I66029329dcf7bf014436e64d96c26ed522c268d4
JSON was used to support names that contain special characters.
New json argument type for monasca-setup (inspired by review from
Alexis Lee https://review.openstack.org/339023/)
Note: The json argument would help solve a problem
with file_size.py (https://bugs.launchpad.net/bugs/1625966),
but file_size.py would still need modifications to accept
json kwargs in its __init__ method.
Change-Id: Id56a81d8f424be079a683d95c59c3e2a7d6b20d5
Monasca URL is pulled from Keystone Service Catalog when not given
explicitly in agent.yaml, but only the URL with service_type=monitoring
and endpoint_type=publicURL will be retrieved.
These two options together with the region_name have been included in
the agent.yaml template and may be configured by monasca-setup, so that
the KSClient object is initialized with such keywords. This client will
retrieve the URL from Catalog accordingly.
Change-Id: Icfbfa7c46db648e3d3c27f8e5c72d02957c778f1
Closes-Bug: #1625573
Add config option monasca_statsd_port to configure statsd port
via monasca-setup.
Fixes-Bug: #1628401
Change-Id: Ie7b517f06f7b93e5929776ab4a77a388458e3b4b
Size of messages may vary based on the number of metrics the
agent is generating, limiting by measurements will be more stable.
Store messages as json strings when queuing to save space
Change-Id: If6dc0a272a26ac951a5d8823dafd32cab69a3981
http check is not detecting changes when search_pattern was changed
but url keeps the same.
Add unit test for modify_config
Change-Id: I0762e963429ec9e5c7df0d9aef7e9ef1b9b57626
Allow the value of sub_collection_warn to be configurable using
monasca_setup. However, use the name plugin_collect_time_warn
as the configuration option since that is easier to understand
Change-Id: I769ec9dd1dcfb1fba5a6da9b59cf03376707c4a6
This is to handle the case of long running plugins that
added together can exceed the collection frequency. Running
the plugins on multiple threads should bring the collection
time down close to the longest running plugin
A Thread pool is created and used if the new parameter
collector_threads is greater than 1
Due to the Global Interpreter Lock, this will only work well
if the checks are I/O bound which seems to be the case so far
Changed the logging messages to reference plugins instead of
checks to match the usage in docs/Agent.md
Plugins are run in reverse order of last collection time.
Plugins that are still running at the end of a collection cycle
are skipped in the next cycle. If all of the pool threads are
blocked too long by plugins, the collector will exit
Plugins are always run in the thread pool even if pool_size is
1 so that the other changes above still work
Change-Id: Ib50f7fe50a26c949a0066baa3d73ff4a25a8de84
Use user that monasca-agent run as for creating
plugins configuration files as well as agent.yaml
instead of 'root' user.
Change-Id: I34691607a983b5b84a825f2ba2a6ce595a8d2c4d
When using monasca-setup -r -d <plugin name>, if there is no -a with
arguments, all the checks with built_by=<plugin name> will be removed.
If there are input arguments passed with -a <args>, remove this one specific
check if it 100% matches the input args.
Change-Id: I7c78d44770a1619d0302e698a8c06493bfd296b4
== is for value equality
"is" is for reference equality
During testing in padawan, agent was always restarting
even there were no changes and turned out misusing "is"
was the problem.
Change-Id: Ibb63c6675974259981bb92c3aa17945b25e631c3
Add collector_restart_interval in agent.yaml
Fix a table format in agent documentation
Add boundary check for the value of collector_restart_interval
Delete --collector_restart_interval and --sub_collection_warn
from monasca-setup
Change-Id: I909e392ed04bc5b2aebc5875860dd6725a00711f
In monasca agent, detect protocol changes on urls in http check.
If the protocal changed, remove the old instance in http_check.yaml and
merge in the new one.
Change-Id: I16a1ee10cfad0bcdd624328cf4a54a34a8038f36
Restart the collector every 24 hours by default will
prevent the collection time growing over 15 seconds
Change-Id: I8e26ba703d13adaa685e397e9dbec749b2ed843d
Add collection time in millisecond for each check in log file (DEBUG).
If the collection time for a single check is larger than the threshold value
for warning (5second as default), a warning message will be created in log file.
Change-Id: Ieb4949fbdd6b3db79de13b52abe2a367afceaa9e
In addition to configuring monitoring plugins, the monasca-setup code
currently attempts to automatically configure and start users and services,
which may not be desirable if other mechanisms are used for this, so add
"--install_plugins_only" option to disable all changes to user and service
configuration.
Change-Id: I79d2f9dc8ac17895918620e7a062441bdde93477
The ability to remove config is useful when calling monasca-setup via
Ansible.
Various refactoring for the main method to make things cleaner.
Fixed overwrite.
Change-Id: I37805e3ef68d794f7cba8fc40e7156e67118b556
Changed some places to templates to make it possible to change agent
user using monasca_setup. There is one place that it is still
hard coded
The deb creation now uses a hardcoded mon-agent user instead of
monasca-agent
Change-Id: I8f2ee8903289d74c0397ccf911701c89e7a1b691
For the agent I just modified to the config to use the new standard location for custom checks.
For monasca-setup I added automatic plugin detection.
Fixed config compare so order changes don't register as a config change.
Change-Id: I7ab17c894bb0496e30d7f5aa5a1b1cf9684bdf87
Skip config writing and restart if there are no changes to the config.
Added names to various config instances to aid in repeat runs of setup.
Change-Id: Idd29f8abe29b4889868a9044116cbdcdfdba6262