├── .coveragerc ├── .gitignore ├── .gitreview ├── .mailmap ├── .pre-commit-config.yaml ├── .stestr.conf ├── .zuul.yaml ├── CONTRIBUTING.rst ├── HACKING.rst ├── LICENSE ├── MAINTAINERS ├── README.rst ├── bindep.txt ├── ceilometer ├── __init__.py ├── agent.py ├── alarm │ ├── __init__.py │ ├── aodh.py │ └── discovery.py ├── cache_utils.py ├── cmd │ ├── __init__.py │ ├── agent_notification.py │ ├── polling.py │ ├── sample.py │ ├── status.py │ └── storage.py ├── compute │ ├── __init__.py │ ├── discovery.py │ ├── pollsters │ │ ├── __init__.py │ │ ├── disk.py │ │ ├── instance_stats.py │ │ ├── net.py │ │ └── util.py │ └── virt │ │ ├── __init__.py │ │ ├── inspector.py │ │ └── libvirt │ │ ├── __init__.py │ │ ├── inspector.py │ │ └── utils.py ├── data │ └── meters.d │ │ └── meters.yaml ├── declarative.py ├── event │ ├── __init__.py │ ├── converter.py │ ├── models.py │ └── trait_plugins.py ├── gnocchi_client.py ├── hacking │ ├── __init__.py │ └── checks.py ├── i18n.py ├── image │ ├── __init__.py │ ├── discovery.py │ └── glance.py ├── ipmi │ ├── __init__.py │ ├── notifications │ │ ├── __init__.py │ │ └── ironic.py │ ├── platform │ │ ├── __init__.py │ │ ├── exception.py │ │ ├── ipmi_sensor.py │ │ └── ipmitool.py │ └── pollsters │ │ ├── __init__.py │ │ └── sensor.py ├── keystone_client.py ├── locale │ ├── de │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── en_GB │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── es │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── fr │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── it │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── ja │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── ko_KR │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── pt_BR │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── ru │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ ├── zh_CN │ │ └── LC_MESSAGES │ │ │ └── ceilometer.po │ └── zh_TW │ │ └── LC_MESSAGES │ │ └── ceilometer.po ├── messaging.py ├── meter │ ├── __init__.py │ └── notifications.py ├── middleware.py ├── network │ ├── __init__.py │ ├── floatingip.py │ └── services │ │ ├── __init__.py │ │ ├── base.py │ │ ├── discovery.py │ │ ├── fwaas.py │ │ └── vpnaas.py ├── neutron_client.py ├── notification.py ├── nova_client.py ├── objectstore │ ├── __init__.py │ ├── rgw.py │ ├── rgw_client.py │ └── swift.py ├── opts.py ├── pipeline │ ├── __init__.py │ ├── base.py │ ├── data │ │ ├── event_definitions.yaml │ │ ├── event_pipeline.yaml │ │ └── pipeline.yaml │ ├── event.py │ └── sample.py ├── polling │ ├── __init__.py │ ├── discovery │ │ ├── __init__.py │ │ ├── endpoint.py │ │ ├── localnode.py │ │ ├── non_openstack_credentials_discovery.py │ │ └── tenant.py │ ├── dynamic_pollster.py │ ├── manager.py │ ├── plugin_base.py │ └── prom_exporter.py ├── privsep │ ├── __init__.py │ └── ipmitool.py ├── publisher │ ├── __init__.py │ ├── data │ │ └── gnocchi_resources.yaml │ ├── file.py │ ├── gnocchi.py │ ├── http.py │ ├── messaging.py │ ├── opentelemetry_http.py │ ├── prometheus.py │ ├── tcp.py │ ├── test.py │ ├── udp.py │ ├── utils.py │ └── zaqar.py ├── sample.py ├── service.py ├── telemetry │ ├── __init__.py │ └── notifications.py ├── tests │ ├── __init__.py │ ├── base.py │ └── unit │ │ ├── __init__.py │ │ ├── alarm │ │ ├── __init__.py │ │ └── test_aodh.py │ │ ├── cmd │ │ ├── __init__.py │ │ └── test_status.py │ │ ├── compute │ │ ├── __init__.py │ │ ├── pollsters │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── test_cpu.py │ │ │ ├── test_disk.py │ │ │ ├── test_diskio.py │ │ │ ├── test_location_metadata.py │ │ │ ├── test_memory.py │ │ │ ├── test_net.py │ │ │ └── test_perf.py │ │ ├── test_discovery.py │ │ └── virt │ │ │ ├── __init__.py │ │ │ └── libvirt │ │ │ ├── __init__.py │ │ │ └── test_inspector.py │ │ ├── event │ │ ├── __init__.py │ │ ├── test_converter.py │ │ ├── test_endpoint.py │ │ └── test_trait_plugins.py │ │ ├── image │ │ ├── __init__.py │ │ └── test_glance.py │ │ ├── ipmi │ │ ├── __init__.py │ │ ├── notifications │ │ │ ├── __init__.py │ │ │ ├── ipmi_test_data.py │ │ │ └── test_ironic.py │ │ ├── platform │ │ │ ├── __init__.py │ │ │ ├── fake_utils.py │ │ │ ├── ipmitool_test_data.py │ │ │ └── test_ipmi_sensor.py │ │ └── pollsters │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ └── test_sensor.py │ │ ├── meter │ │ ├── __init__.py │ │ ├── test_meter_plugins.py │ │ └── test_notifications.py │ │ ├── network │ │ ├── __init__.py │ │ ├── services │ │ │ ├── __init__.py │ │ │ ├── test_fwaas.py │ │ │ └── test_vpnaas.py │ │ └── test_floating_ip.py │ │ ├── objectstore │ │ ├── __init__.py │ │ ├── test_rgw.py │ │ ├── test_rgw_client.py │ │ └── test_swift.py │ │ ├── pipeline_base.py │ │ ├── polling │ │ ├── __init__.py │ │ ├── test_discovery.py │ │ ├── test_dynamic_pollster.py │ │ ├── test_heartbeat.py │ │ ├── test_manager.py │ │ ├── test_non_openstack_credentials_discovery.py │ │ └── test_non_openstack_dynamic_pollster.py │ │ ├── publisher │ │ ├── __init__.py │ │ ├── test_file.py │ │ ├── test_gnocchi.py │ │ ├── test_http.py │ │ ├── test_messaging_publisher.py │ │ ├── test_opentelemetry_http.py │ │ ├── test_prometheus.py │ │ ├── test_tcp.py │ │ ├── test_udp.py │ │ ├── test_utils.py │ │ └── test_zaqar.py │ │ ├── test_bin.py │ │ ├── test_cache_utils.py │ │ ├── test_declarative.py │ │ ├── test_decoupled_pipeline.py │ │ ├── test_event_pipeline.py │ │ ├── test_messaging.py │ │ ├── test_middleware.py │ │ ├── test_neutronclient.py │ │ ├── test_notification.py │ │ ├── test_novaclient.py │ │ ├── test_polling.py │ │ ├── test_prom_exporter.py │ │ ├── test_sample.py │ │ └── volume │ │ ├── __init__.py │ │ └── test_cinder.py ├── utils.py ├── version.py └── volume │ ├── __init__.py │ ├── cinder.py │ └── discovery.py ├── devstack ├── README.rst ├── files │ └── rpms │ │ └── ceilometer ├── local.conf.sample ├── plugin.sh ├── settings └── upgrade │ ├── settings │ ├── shutdown.sh │ └── upgrade.sh ├── doc ├── requirements.txt └── source │ ├── admin │ ├── index.rst │ ├── telemetry-best-practices.rst │ ├── telemetry-data-collection.rst │ ├── telemetry-data-pipelines.rst │ ├── telemetry-dynamic-pollster.rst │ ├── telemetry-events.rst │ ├── telemetry-measurements.rst │ ├── telemetry-system-architecture.rst │ └── telemetry-troubleshooting-guide.rst │ ├── cli │ ├── ceilometer-status.rst │ └── index.rst │ ├── conf.py │ ├── configuration │ └── index.rst │ ├── contributor │ ├── 1-agents.png │ ├── 2-1-collection-notification.png │ ├── 2-2-collection-poll.png │ ├── 2-accessmodel.png │ ├── 3-Pipeline.png │ ├── 5-multi-publish.png │ ├── 6-storagemodel.png │ ├── architecture.rst │ ├── ceilo-arch.png │ ├── ceilo-gnocchi-arch.png │ ├── devstack.rst │ ├── events.rst │ ├── gmr.rst │ ├── index.rst │ ├── measurements.rst │ ├── new_resource_types.rst │ ├── overview.rst │ ├── plugins.rst │ └── testing.rst │ ├── glossary.rst │ ├── index.rst │ ├── install │ ├── cinder │ │ ├── install-cinder-config-common.inc │ │ ├── install-cinder-rdo.rst │ │ └── install-cinder-ubuntu.rst │ ├── get_started.rst │ ├── glance │ │ ├── install-glance-rdo.rst │ │ └── install-glance-ubuntu.rst │ ├── heat │ │ ├── install-heat-rdo.rst │ │ └── install-heat-ubuntu.rst │ ├── index.rst │ ├── install-base-config-common.inc │ ├── install-base-prereq-common.inc │ ├── install-base-rdo.rst │ ├── install-base-ubuntu.rst │ ├── install-compute-common.inc │ ├── install-compute-rdo.rst │ ├── install-compute-ubuntu.rst │ ├── install-compute.rst │ ├── install-controller.rst │ ├── install-gnocchi.inc │ ├── neutron │ │ ├── install-neutron-rdo.rst │ │ └── install-neutron-ubuntu.rst │ ├── next-steps.rst │ ├── swift │ │ ├── install-swift-config-common.inc │ │ ├── install-swift-prereq-common.inc │ │ ├── install-swift-rdo.rst │ │ └── install-swift-ubuntu.rst │ └── verify.rst │ └── releasenotes │ ├── folsom.rst │ └── index.rst ├── etc └── ceilometer │ ├── ceilometer-config-generator.conf │ ├── examples │ └── osprofiler_event_definitions.yaml │ ├── polling.yaml │ ├── polling_all.yaml │ ├── rootwrap.conf │ └── rootwrap.d │ └── ipmi.filters ├── pyproject.toml ├── releasenotes ├── notes │ ├── .placeholder │ ├── add-aodh-metrics-afbe9b780fd137d6.yaml │ ├── add-availability_zone-gnocchi-instance-15170e4966a89d63.yaml │ ├── add-db-legacy-clean-tool-7b3e3714f414c448.yaml │ ├── add-disk-latency-metrics-9e5c05108a78c3d9.yaml │ ├── add-disk-size-pollsters-6b819d067f9cf736.yaml │ ├── add-full-snmpv3-usm-support-ab540c902fa89b9d.yaml │ ├── add-ipmi-sensor-data-gnocchi-70573728499abe86.yaml │ ├── add-json-output-to-file-publisher-786380cb7e21b56b.yaml │ ├── add-loadbalancer-resource-type-a73c29594b72f012.yaml │ ├── add-magnum-event-4c75ed0bb268d19c.yaml │ ├── add-map-trait-plugin-0d969f5cc7b18175.yaml │ ├── add-memory-swap-metric-f1633962ab2cf0f6.yaml │ ├── add-parameter-for-disabled-projects-381da4543fff071d.yaml │ ├── add-pool-size-metrics-cdecb979135bba85.yaml │ ├── add-power-state-metric-cdfbb3098b50a704.yaml │ ├── add-swift-storage_policy-attribute-322fbb5716c5bb10.yaml │ ├── add-tenant-name-discovery-668260bb4b2b0e8c.yaml │ ├── add-tool-for-migrating-data-to-gnocchi-cea8d4db68ce03d0.yaml │ ├── add-upgrade-check-framework-d78858c54cb85f91.yaml │ ├── add-volume-pollster-metadata-d7b435fed9aac0aa.yaml │ ├── add-volume_type_id-attr-f29af86534907941.yaml │ ├── aggregator-transformer-timeout-e0f42b6c96aa7ada.yaml │ ├── always-requeue-7a2df9243987ab67.yaml │ ├── batch-messaging-d126cc525879d58e.yaml │ ├── bug-1929178-a8243526ce2311f7.yaml │ ├── bug-2007108-dba7163b245ad8fd.yaml │ ├── cache-json-parsers-888307f3b6b498a2.yaml │ ├── ceilometer-api-deprecate-862bfaa54e80fa01.yaml │ ├── ceilometer-api-removal-6bd44d3eab05e593.yaml │ ├── ceilometer-event-api-removed-49c57835e307b997.yaml │ ├── cinder-capacity-samples-de94dcfed5540b6c.yaml │ ├── cinder-volume-size-poller-availability_zone-2d20a7527e2341b9.yaml │ ├── compute-discovery-interval-d19f7c9036a8c186.yaml │ ├── configurable-data-collector-e247aadbffb85243.yaml │ ├── cors-support-70c33ba1f6825a7b.yaml │ ├── deprecate-aggregated-disk-metrics-54a395c05e74d685.yaml │ ├── deprecate-ceilometer-collector-b793b91cd28b9e7f.yaml │ ├── deprecate-contrail-256177299deb6926.yaml │ ├── deprecate-events-6561f4059fa25c02.yaml │ ├── deprecate-file-dispatcher-2aff376db7609136.yaml │ ├── deprecate-generic-hardware-declarative-pollstar-dfa418bf6a5e0459.yaml │ ├── deprecate-http-control-exchanges-026a8de6819841f8.yaml │ ├── deprecate-http-dispatcher-dbbaacee8182b550.yaml │ ├── deprecate-http_timeout-ce98003e4949f9d9.yaml │ ├── deprecate-kafka-publisher-17b4f221758e15da.yaml │ ├── deprecate-neutron-fwaas-e985afe956240c08.yaml │ ├── deprecate-neutron-lbaas-5a36406cbe44bbe3.yaml │ ├── deprecate-odl-07e3f59165612566.yaml │ ├── deprecate-pollster-list-ccf22b0dea44f043.yaml │ ├── deprecate-vmware-ae49e07e40e74577.yaml │ ├── deprecate-windows-support-d784b975ce878864.yaml │ ├── deprecate-xen-support-27600e2bf7be548c.yaml │ ├── deprecated_database_event_dispatcher_panko-607d558c86a90f17.yaml │ ├── drop-collector-4c207b35d67b2977.yaml │ ├── drop-image-meter-9c9b6cebd546dae7.yaml │ ├── drop-instance-meter-1b657717b21a0f55.yaml │ ├── drop-kwapi-b687bc476186d01b.yaml │ ├── drop-py-2-7-87352d5763131c13.yaml │ ├── drop-python-3-6-and-3-7-f67097fa6894da52.yaml │ ├── dynamic-pollster-system-6b45c8c973201b2b.yaml │ ├── dynamic-pollster-system-for-non-openstack-apis-4e06694f223f34f3.yaml │ ├── dynamic-pollster-url-joins-6cdb01c4015976f7.yaml │ ├── enable-promethus-exporter-tls-76e78d4f4a52c6c4.yaml │ ├── event-type-race-c295baf7f1661eab.yaml │ ├── fix-1940660-5226988f2e7ae1bd.yaml │ ├── fix-agent-coordination-a7103a78fecaec24.yaml │ ├── fix-aggregation-transformer-9472aea189fa8f65.yaml │ ├── fix-floatingip-pollster-f5172060c626b19e.yaml │ ├── fix-network-lb-bytes-sample-5dec2c6f3a8ae174.yaml │ ├── fix-notification-batch-9bb42cbdf817e7f9.yaml │ ├── fix-radosgw-name-6de6899ddcd7e06d.yaml │ ├── gnocchi-cache-1d8025dfc954f281.yaml │ ├── gnocchi-cache-b9ad4d85a1da8d3f.yaml │ ├── gnocchi-client-42cd992075ee53ab.yaml │ ├── gnocchi-host-metrics-829bcb965d8f2533.yaml │ ├── gnocchi-no-metric-by-default-b643e09f5ffef2c4.yaml │ ├── gnocchi-orchestration-3497c689268df0d1.yaml │ ├── gnocchi-udp-collector-00415e6674b5cc0f.yaml │ ├── handle-malformed-resource-definitions-ad4f69f898ced34d.yaml │ ├── http-dispatcher-batching-4e17fce46a196b07.yaml │ ├── http-dispatcher-verify-ssl-551d639f37849c6f.yaml │ ├── http-publisher-authentication-6371c5a9aa8d4c03.yaml │ ├── http_proxy_to_wsgi_enabled-616fa123809e1600.yaml │ ├── improve-events-rbac-support-f216bd7f34b02032.yaml │ ├── include-monasca-publisher-1f47dde52af50feb.yaml │ ├── index-events-mongodb-63cb04200b03a093.yaml │ ├── instance-discovery-new-default-7f9b451a515dddf4.yaml │ ├── instance-record-launched-created-deleted-d7f44df3bbcf0790.yaml │ ├── keystone-v3-fab1e257c5672965.yaml │ ├── kwapi_deprecated-c92b9e72c78365f0.yaml │ ├── less-nova-polling-ac56687da3f8b1a3.yaml │ ├── lookup-meter-def-vol-correctly-0122ae429275f2a6.yaml │ ├── make-instance-host-optional-972fa14405c1e2f6.yaml │ ├── manager-based-ipc-queues-85e3bf59ffdfb0ac.yaml │ ├── memory-bandwidth-meter-f86cf01178573671.yaml │ ├── mongodb-handle-large-numbers-7c235598ca700f2d.yaml │ ├── network-statistics-from-opendaylight-787df77484d8d751.yaml │ ├── openstack-dynamic-pollsters-metadata-enrichment-703cf5914cf0c578.yaml │ ├── parallel_requests_option-a3f901b6001e26e4.yaml │ ├── parallels-virt_type-ee29c4802fdf5c8e.yaml │ ├── pecan-debug-removed-dc737efbf911bde7.yaml │ ├── perf-events-meter-b06c2a915c33bfaf.yaml │ ├── pipeline-fallback-polling-3d962a0fff49ccdd.yaml │ ├── polling-batch-size-7fe11925df8d1221.yaml │ ├── polling-definition-efffb92e3810e571.yaml │ ├── polling-deprecation-4d5b83180893c053.yaml │ ├── prometheus-bcb201cfe46d5778.yaml │ ├── publish-network-resources-with-invalid-state-6693c6fa1fefa097.yaml │ ├── refresh-legacy-cache-e4dbbd3e2eeca70b.yaml │ ├── remove-alarms-4df3cdb4f1fb5faa.yaml │ ├── remove-batch_polled_samples-b40241c8aad3667d.yaml │ ├── remove-cadf-http-f8449ced3d2a29d4.yaml │ ├── remove-ceilometer-dbsync-53aa1b529f194f15.yaml │ ├── remove-check_watchers-a7c955703b6d9f57.yaml │ ├── remove-compute-disk-meters-264e686622886ff0.yaml │ ├── remove-compute-rate-deprecated-meters-201893c6b686b04a.yaml │ ├── remove-compute-workload-partitioning-option-26538bc1e80500e3.yaml │ ├── remove-direct-publisher-5785ee7edd16c4d9.yaml │ ├── remove-eventlet-6738321434b60c78.yaml │ ├── remove-exchange-control-options-75ecd49423639068.yaml │ ├── remove-file-dispatcher-56ba1066c20d314a.yaml │ ├── remove-generic-hardware-declarative-pollster-e05c614f273ab149.yaml │ ├── remove-gnocchi-dispatcher-dd588252976c2abb.yaml │ ├── remove-gnocchi-dispatcher-options-4f4ba2a155c1a766.yaml │ ├── remove-http-dispatcher-1afdce1d1dc3158d.yaml │ ├── remove-intel-cmt-perf-meters-15d0fe72b2804f48.yaml │ ├── remove-intel-node-manager-0889de66dede9ab0.yaml │ ├── remove-kafka-broker-publisher-7026b370cfc831db.yaml │ ├── remove-meter-definitions-cfg-file-config-476596fc86c36a81.yaml │ ├── remove-meter-definitions-cfg-file-d57c726d563d805f.yaml │ ├── remove-monasca-d5ceda231839d43d.yaml │ ├── remove-neutron-lbaas-d3d4a5327f6a167a.yaml │ ├── remove-notification-workload-partitioning-2cef114fb2478e39.yaml │ ├── remove-nova-http-log-option-64e97a511e58da5d.yaml │ ├── remove-opencontrail-88656a9354179299.yaml │ ├── remove-opendaylight-c3839bbe9aa2a227.yaml │ ├── remove-pollster-list-bda30d747fb87c9e.yaml │ ├── remove-publisher-topic-options-7a40787a3998921d.yaml │ ├── remove-py38-80670bdcfd4dd135.yaml │ ├── remove-refresh-pipeline-618af089c5435db7.yaml │ ├── remove-rpc-collector-d0d0a354140fd107.yaml │ ├── remove-sahara-9254593d4fb137b9.yaml │ ├── remove-service-type-volume-v2-08c81098dc7c0922.yaml │ ├── remove-shuffle_time_before_polling_task-option-05a4d225236c64b1.yaml │ ├── remove-transformers-14e00a789dedd76b.yaml │ ├── remove-uml-e86feeabdd16c628.yaml │ ├── remove-vsphere-support-411c97b66bdcd264.yaml │ ├── remove-windows-support-0d280cc7c7fffc61.yaml │ ├── remove-xen-support-7cb932b7bc621269.yaml │ ├── removed-rgw-ae3d80c2eafc9319.yaml │ ├── rename-ceilometer-dbsync-eb7a1fa503085528.yaml │ ├── rename-tenant_name_discovery-1675a236bb51176b.yaml │ ├── save-rate-in-gnocchi-66244262bc4b7842.yaml │ ├── scan-domains-for-tenants-8f8c9edcb74cc173.yaml │ ├── selective-pipeline-notification-47e8a390b1c7dcc4.yaml │ ├── ship-yaml-files-33aa5852bedba7f0.yaml │ ├── single-thread-pipelines-f9e6ac4b062747fe.yaml │ ├── skip-duplicate-meter-def-0420164f6a95c50c.yaml │ ├── snmp-cpu-util-055cd7704056c1ce.yaml │ ├── snmp-diskio-samples-fc4b5ed5f19c096c.yaml │ ├── sql-query-optimisation-ebb2233f7a9b5d06.yaml │ ├── support-None-query-45abaae45f08eda4.yaml │ ├── support-cinder-volume-snapshot-backup-metering-d0a93b86bd53e803.yaml │ ├── support-lbaasv2-polling-c830dd49bcf25f64.yaml │ ├── support-meter-batch-recording-mongo-6c2bdf4fbb9764eb.yaml │ ├── support-multiple-meter-definition-files-e3ce1fa73ef2e1de.yaml │ ├── support-snmp-cpu-util-5c1c7afb713c1acd.yaml │ ├── support-unique-meter-query-221c6e0c1dc1b726.yaml │ ├── switch-to-oslo-privsep-b58f20a279f31bc0.yaml │ ├── thread-safe-matching-4a635fc4965c5d4c.yaml │ ├── tooz-coordination-system-d1054b9d1a5ddf32.yaml │ ├── transformer-ed4b1ea7d1752576.yaml │ ├── unify-timestamp-of-polled-data-fbfcff43cd2d04bc.yaml │ ├── use-glance-v2-in-image-pollsters-137a315577d5dc4c.yaml │ ├── use-notification-transport-url-489f3d31dc66c4d2.yaml │ ├── use-usable-metric-if-available-970ee58e8fdeece6.yaml │ ├── volume-metrics-01ddde0180bc21cb.yaml │ └── zaqar-publisher-f7efa030b71731f4.yaml └── source │ ├── 2023.1.rst │ ├── 2023.2.rst │ ├── 2024.1.rst │ ├── 2024.2.rst │ ├── 2025.1.rst │ ├── _static │ └── .placeholder │ ├── conf.py │ ├── index.rst │ ├── liberty.rst │ ├── locale │ ├── en_GB │ │ └── LC_MESSAGES │ │ │ └── releasenotes.po │ └── fr │ │ └── LC_MESSAGES │ │ └── releasenotes.po │ ├── mitaka.rst │ ├── newton.rst │ ├── ocata.rst │ ├── pike.rst │ ├── queens.rst │ ├── rocky.rst │ ├── stein.rst │ ├── train.rst │ ├── unreleased.rst │ ├── ussuri.rst │ ├── victoria.rst │ ├── wallaby.rst │ ├── xena.rst │ ├── yoga.rst │ └── zed.rst ├── reno.yaml ├── requirements.txt ├── setup.cfg ├── setup.py ├── test-requirements.txt ├── tools ├── __init__.py └── send_test_data.py └── tox.ini /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | source = ceilometer 4 | omit = ceilometer/tests/* 5 | 6 | [report] 7 | ignore_errors = True 8 | 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.egg* 2 | *.mo 3 | *.pyc 4 | .coverage 5 | .stestr 6 | .tox 7 | AUTHORS 8 | build/* 9 | ChangeLog 10 | cover/* 11 | dist/* 12 | doc/build 13 | doc/source/_static/ 14 | doc/source/api 15 | etc/ceilometer/ceilometer.conf 16 | subunit.log 17 | 18 | # Files created by releasenotes build 19 | releasenotes/build 20 | 21 | #swap file 22 | *.swp 23 | 24 | #IntelJ Idea 25 | .idea/ 26 | 27 | #venv 28 | venv/ 29 | 30 | #Pyenv files 31 | .python-version 32 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.opendev.org 3 | port=29418 4 | project=openstack/ceilometer.git 5 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | # Format is: 2 | # 3 | # 4 | Adam Gandelman 5 | Alan Pevec 6 | Alexei Kornienko 7 | ChangBo Guo(gcb) Chang Bo Guo 8 | Chinmaya Bharadwaj chinmay 9 | Clark Boylan 10 | Doug Hellmann 11 | Fei Long Wang 12 | Fengqian Gao Fengqian 13 | Fengqian Gao Fengqian.Gao 14 | Gordon Chung gordon chung 15 | Gordon Chung Gordon Chung 16 | Gordon Chung gordon chung 17 | Ildiko Vancsa Ildiko 18 | John H. Tran John Tran 19 | Julien Danjou 20 | LiuSheng liu-sheng 21 | Mehdi Abaakouk 22 | Nejc Saje 23 | Nejc Saje 24 | Nicolas Barcet (nijaba) 25 | Pádraig Brady 26 | Rich Bowen 27 | Sandy Walsh 28 | Sascha Peilicke 29 | Sean Dague 30 | Shengjie Min shengjie-min 31 | Shuangtai Tian shuangtai 32 | Swann Croiset 33 | ZhiQiang Fan 34 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | rev: v5.0.0 4 | hooks: 5 | - id: trailing-whitespace 6 | # Replaces or checks mixed line ending 7 | - id: mixed-line-ending 8 | args: ['--fix', 'lf'] 9 | exclude: '.*\.(svg)$' 10 | # Forbid files which have a UTF-8 byte-order marker 11 | - id: check-byte-order-marker 12 | # Checks that non-binary executables have a proper shebang 13 | - id: check-executables-have-shebangs 14 | # Check for files that contain merge conflict strings. 15 | - id: check-merge-conflict 16 | # Check for debugger imports and py37+ breakpoint() 17 | # calls in python source 18 | - id: debug-statements 19 | - id: check-yaml 20 | files: .*\.(yaml|yml)$ 21 | - repo: https://opendev.org/openstack/hacking 22 | rev: 7.0.0 23 | hooks: 24 | - id: hacking 25 | additional_dependencies: [] 26 | - repo: https://github.com/PyCQA/doc8 27 | rev: v1.1.2 28 | hooks: 29 | - id: doc8 30 | - repo: https://github.com/asottile/pyupgrade 31 | rev: v3.18.0 32 | hooks: 33 | - id: pyupgrade 34 | args: [--py3-only] 35 | -------------------------------------------------------------------------------- /.stestr.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | test_path=${OS_TEST_PATH:-ceilometer/tests/unit} 3 | top_dir=./ -------------------------------------------------------------------------------- /.zuul.yaml: -------------------------------------------------------------------------------- 1 | - job: 2 | name: grenade-ceilometer 3 | parent: grenade 4 | voting: false 5 | required-projects: 6 | - opendev.org/openstack/grenade 7 | - opendev.org/openstack/ceilometer 8 | - name: gnocchixyz/gnocchi 9 | override-checkout: stable/4.6 10 | vars: 11 | configure_swap_size: 8192 12 | grenade_devstack_localrc: 13 | shared: 14 | CEILOMETER_BACKEND: gnocchi 15 | devstack_plugins: 16 | ceilometer: https://opendev.org/openstack/ceilometer 17 | devstack_services: 18 | ceilometer-acompute: true 19 | ceilometer-acentral: true 20 | ceilometer-aipmi: true 21 | ceilometer-anotification: true 22 | irrelevant-files: &ceilometer-irrelevant-files 23 | - ^\.gitreview$ 24 | - ^(test-|)requirements.txt$ 25 | - ^setup.cfg$ 26 | - ^doc/.*$ 27 | - ^.*\.rst$ 28 | - ^releasenotes/.*$ 29 | - ^ceilometer/locale/.*$ 30 | - ^ceilometer/tests/.*$ 31 | 32 | - project: 33 | queue: telemetry 34 | templates: 35 | - openstack-cover-jobs 36 | - openstack-python3-jobs 37 | - publish-openstack-docs-pti 38 | - periodic-stable-jobs 39 | - release-notes-jobs-python3 40 | - check-requirements 41 | check: 42 | jobs: 43 | - grenade-ceilometer 44 | - telemetry-dsvm-integration: 45 | irrelevant-files: *ceilometer-irrelevant-files 46 | - telemetry-dsvm-integration-ipv6-only: 47 | irrelevant-files: *ceilometer-irrelevant-files 48 | gate: 49 | jobs: 50 | - grenade-ceilometer 51 | - telemetry-dsvm-integration: 52 | irrelevant-files: *ceilometer-irrelevant-files 53 | - telemetry-dsvm-integration-ipv6-only: 54 | irrelevant-files: *ceilometer-irrelevant-files 55 | -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | If you would like to contribute to the development of OpenStack, 2 | you must follow the steps documented at: 3 | 4 | https://docs.openstack.org/infra/manual/developers.html#development-workflow 5 | 6 | Once those steps have been completed, changes to OpenStack 7 | should be submitted for review via the Gerrit tool, following 8 | the workflow documented at: 9 | 10 | https://docs.openstack.org/infra/manual/developers.html#development-workflow 11 | 12 | Pull requests submitted through GitHub will be ignored. 13 | 14 | Bugs should be filed on Launchpad, not GitHub: 15 | 16 | https://bugs.launchpad.net/ceilometer 17 | -------------------------------------------------------------------------------- /HACKING.rst: -------------------------------------------------------------------------------- 1 | Ceilometer Style Commandments 2 | ============================= 3 | 4 | - Step 1: Read the OpenStack Style Commandments 5 | https://docs.openstack.org/hacking/latest/ 6 | - Step 2: Read on 7 | 8 | Ceilometer Specific Commandments 9 | -------------------------------- 10 | 11 | - [C301] LOG.warn() is not allowed. Use LOG.warning() 12 | - [C302] Deprecated library function os.popen() 13 | 14 | Creating Unit Tests 15 | ------------------- 16 | For every new feature, unit tests should be created that both test and 17 | (implicitly) document the usage of said feature. If submitting a patch for a 18 | bug that had no unit test, a new passing unit test should be added. If a 19 | submitted bug fix does have a unit test, be sure to add a new one that fails 20 | without the patch and passes with the patch. 21 | 22 | All unittest classes must ultimately inherit from testtools.TestCase. 23 | 24 | All setUp and tearDown methods must upcall using the super() method. 25 | tearDown methods should be avoided and addCleanup calls should be preferred. 26 | Never manually create tempfiles. Always use the tempfile fixtures from 27 | the fixture library to ensure that they are cleaned up. 28 | -------------------------------------------------------------------------------- /MAINTAINERS: -------------------------------------------------------------------------------- 1 | = Generalist Code Reviewers = 2 | 3 | The current members of ceilometer-core are listed here: 4 | 5 | https://launchpad.net/~ceilometer-drivers/+members#active 6 | 7 | This group can +2 and approve patches in Ceilometer. However, they may 8 | choose to seek feedback from the appropriate specialist maintainer before 9 | approving a patch if it is in any way controversial or risky. 10 | 11 | = IRC handles of maintainers = 12 | gordc 13 | jd__ 14 | lhx 15 | pradk 16 | sileht 17 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ========== 2 | Ceilometer 3 | ========== 4 | 5 | 6 | -------- 7 | Overview 8 | -------- 9 | 10 | Ceilometer is a data collection service that collects event and metering 11 | data by monitoring notifications sent from OpenStack services. It publishes 12 | collected data to various targets including data stores and message queues. 13 | 14 | Ceilometer is distributed under the terms of the Apache 15 | License, Version 2.0. The full terms and conditions of this 16 | license are detailed in the LICENSE file. 17 | 18 | ------------- 19 | Documentation 20 | ------------- 21 | 22 | Release notes are available at 23 | https://releases.openstack.org/teams/telemetry.html 24 | 25 | Developer documentation is available at 26 | https://docs.openstack.org/ceilometer/latest/ 27 | 28 | Launchpad Projects 29 | ------------------ 30 | - Server: https://launchpad.net/ceilometer 31 | 32 | Code Repository 33 | --------------- 34 | - Server: https://github.com/openstack/ceilometer 35 | 36 | Bug Tracking 37 | ------------ 38 | - Bugs: https://bugs.launchpad.net/ceilometer/ 39 | 40 | Release Notes 41 | ------------- 42 | - Server: https://docs.openstack.org/releasenotes/ceilometer/ 43 | 44 | IRC 45 | --- 46 | IRC Channel: #openstack-telemetry on `OFTC`_. 47 | 48 | Mailinglist 49 | ----------- 50 | Project use http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss 51 | as the mailinglist. Please use tag ``[Ceilometer]`` in the subject for new 52 | threads. 53 | 54 | 55 | .. _OFTC: https://oftc.net/ 56 | 57 | -------------------------------------------------------------------------------- /bindep.txt: -------------------------------------------------------------------------------- 1 | libxml2-dev [platform:dpkg test] 2 | libxslt-devel [platform:rpm test] 3 | libxslt1-dev [platform:dpkg test] 4 | build-essential [platform:dpkg] 5 | libffi-dev [platform:dpkg] 6 | gettext [platform:dpkg] 7 | -------------------------------------------------------------------------------- /ceilometer/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 eNovance 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | 16 | class NotImplementedError(NotImplementedError): 17 | pass 18 | -------------------------------------------------------------------------------- /ceilometer/alarm/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/alarm/__init__.py -------------------------------------------------------------------------------- /ceilometer/alarm/aodh.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2025 Red Hat, Inc 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """Common code for working with alarm metrics 16 | """ 17 | from ceilometer.polling import plugin_base 18 | from ceilometer import sample 19 | 20 | DEFAULT_GROUP = "service_credentials" 21 | 22 | 23 | class _Base(plugin_base.PollsterBase): 24 | @property 25 | def default_discovery(self): 26 | return 'alarm' 27 | 28 | 29 | class EvaluationResultPollster(_Base): 30 | @staticmethod 31 | def get_evaluation_results_metrics(metrics): 32 | evaluation_metrics = [] 33 | if "evaluation_results" in metrics: 34 | for metric in metrics["evaluation_results"]: 35 | for state, count in metric["state_counters"].items(): 36 | evaluation_metrics.append({ 37 | "name": "evaluation_result", 38 | "state": state, 39 | "count": count, 40 | "project_id": metric['project_id'], 41 | "alarm_id": metric['alarm_id'] 42 | }) 43 | return evaluation_metrics 44 | 45 | def get_samples(self, manager, cache, resources): 46 | metrics = self.get_evaluation_results_metrics(resources[0]) 47 | for metric in metrics: 48 | yield sample.Sample( 49 | name='alarm.' + metric['name'], 50 | type=sample.TYPE_GAUGE, 51 | volume=int(metric['count']), 52 | unit='evaluation_result_count', 53 | user_id=None, 54 | project_id=metric['project_id'], 55 | resource_id=metric['alarm_id'], 56 | resource_metadata={"alarm_state": metric['state']}, 57 | ) 58 | -------------------------------------------------------------------------------- /ceilometer/alarm/discovery.py: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | # not use this file except in compliance with the License. You may obtain 4 | # a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | # License for the specific language governing permissions and limitations 12 | # under the License. 13 | 14 | from aodhclient import client as aodh_client 15 | from oslo_config import cfg 16 | 17 | from ceilometer import keystone_client 18 | from ceilometer.polling import plugin_base 19 | 20 | SERVICE_OPTS = [ 21 | cfg.StrOpt('aodh', 22 | default='alarming', 23 | help='Aodh service type.'), 24 | ] 25 | 26 | 27 | class AlarmDiscovery(plugin_base.DiscoveryBase): 28 | def __init__(self, conf): 29 | super().__init__(conf) 30 | creds = conf.service_credentials 31 | self.aodh_client = aodh_client.Client( 32 | version='2', 33 | session=keystone_client.get_session(conf), 34 | region_name=creds.region_name, 35 | interface=creds.interface, 36 | service_type=conf.service_types.aodh) 37 | 38 | def discover(self, manager, param=None): 39 | """Discover resources to monitor.""" 40 | return [self.aodh_client.metrics.get(all_projects=True)] 41 | -------------------------------------------------------------------------------- /ceilometer/cmd/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/cmd/__init__.py -------------------------------------------------------------------------------- /ceilometer/cmd/agent_notification.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2014 OpenStack Foundation 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | import cotyledon 17 | from cotyledon import oslo_config_glue 18 | from oslo_log import log 19 | 20 | from ceilometer import notification 21 | from ceilometer import service 22 | 23 | LOG = log.getLogger(__name__) 24 | 25 | 26 | def main(): 27 | conf = service.prepare_service() 28 | conf.log_opt_values(LOG, log.DEBUG) 29 | 30 | sm = cotyledon.ServiceManager() 31 | sm.add(notification.NotificationService, 32 | workers=conf.notification.workers, args=(conf,)) 33 | oslo_config_glue.setup(sm, conf) 34 | sm.run() 35 | -------------------------------------------------------------------------------- /ceilometer/cmd/status.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 NEC, Corp. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | import sys 16 | 17 | from oslo_config import cfg 18 | from oslo_upgradecheck import upgradecheck 19 | 20 | from ceilometer.i18n import _ 21 | 22 | CONF = cfg.CONF 23 | 24 | 25 | class Checks(upgradecheck.UpgradeCommands): 26 | 27 | """Contains upgrade checks 28 | 29 | Various upgrade checks should be added as separate methods in this class 30 | and added to _upgrade_checks tuple. 31 | """ 32 | 33 | def _sample_check(self): 34 | """This is sample check added to test the upgrade check framework 35 | 36 | It needs to be removed after adding any real upgrade check 37 | """ 38 | return upgradecheck.Result(upgradecheck.Code.SUCCESS, 'Sample detail') 39 | 40 | _upgrade_checks = ( 41 | # Sample check added for now. 42 | # Whereas in future real checks must be added here in tuple 43 | (_('Sample Check'), _sample_check), 44 | ) 45 | 46 | 47 | def main(): 48 | return upgradecheck.main( 49 | CONF, project='ceilometer', upgrade_command=Checks()) 50 | 51 | 52 | if __name__ == '__main__': 53 | sys.exit(main()) 54 | -------------------------------------------------------------------------------- /ceilometer/cmd/storage.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2014 OpenStack Foundation 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | from oslo_config import cfg 17 | from oslo_log import log 18 | import tenacity 19 | 20 | from ceilometer import service 21 | 22 | LOG = log.getLogger(__name__) 23 | 24 | 25 | def upgrade(): 26 | conf = cfg.ConfigOpts() 27 | conf.register_cli_opts([ 28 | cfg.BoolOpt('skip-gnocchi-resource-types', 29 | help='Skip gnocchi resource-types upgrade.', 30 | default=False), 31 | cfg.IntOpt('retry', 32 | min=0, 33 | help='Number of times to retry on failure. ' 34 | 'Default is to retry forever.'), 35 | ]) 36 | 37 | service.prepare_service(conf=conf) 38 | if conf.skip_gnocchi_resource_types: 39 | LOG.info("Skipping Gnocchi resource types upgrade") 40 | else: 41 | LOG.debug("Upgrading Gnocchi resource types") 42 | from ceilometer import gnocchi_client 43 | from gnocchiclient import exceptions 44 | if conf.retry is None: 45 | stop = tenacity.stop_never 46 | else: 47 | stop = tenacity.stop_after_attempt(conf.retry) 48 | tenacity.Retrying( 49 | stop=stop, 50 | retry=tenacity.retry_if_exception_type(( 51 | exceptions.ConnectionFailure, 52 | exceptions.UnknownConnectionError, 53 | exceptions.ConnectionTimeout, 54 | exceptions.SSLError, 55 | )) 56 | )(gnocchi_client.upgrade_resource_types, conf) 57 | -------------------------------------------------------------------------------- /ceilometer/compute/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/compute/__init__.py -------------------------------------------------------------------------------- /ceilometer/compute/virt/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/compute/virt/__init__.py -------------------------------------------------------------------------------- /ceilometer/compute/virt/libvirt/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/compute/virt/libvirt/__init__.py -------------------------------------------------------------------------------- /ceilometer/event/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/event/__init__.py -------------------------------------------------------------------------------- /ceilometer/hacking/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/hacking/__init__.py -------------------------------------------------------------------------------- /ceilometer/hacking/checks.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2016 OpenStack Foundation 2 | # All Rights Reserved. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | """ 17 | Guidelines for writing new hacking checks 18 | 19 | - Use only for Ceilometer specific tests. OpenStack general tests 20 | should be submitted to the common 'hacking' module. 21 | - Pick numbers in the range X3xx. Find the current test with 22 | the highest allocated number and then pick the next value. 23 | - Keep the test method code in the source file ordered based 24 | on the C3xx value. 25 | - List the new rule in the top level HACKING.rst file 26 | 27 | """ 28 | 29 | from hacking import core 30 | 31 | 32 | @core.flake8ext 33 | def no_log_warn(logical_line): 34 | """Disallow 'LOG.warn(' 35 | 36 | https://bugs.launchpad.net/tempest/+bug/1508442 37 | 38 | C301 39 | """ 40 | if logical_line.startswith('LOG.warn('): 41 | yield (0, 'C301 Use LOG.warning() rather than LOG.warn()') 42 | 43 | 44 | @core.flake8ext 45 | def no_os_popen(logical_line): 46 | """Disallow 'os.popen(' 47 | 48 | Deprecated library function os.popen() Replace it using subprocess 49 | https://bugs.launchpad.net/tempest/+bug/1529836 50 | 51 | C302 52 | """ 53 | 54 | if 'os.popen(' in logical_line: 55 | yield (0, 'C302 Deprecated library function os.popen(). ' 56 | 'Replace it using subprocess module. ') 57 | -------------------------------------------------------------------------------- /ceilometer/i18n.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Huawei Technologies Co., Ltd. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | """oslo.i18n integration module. 16 | 17 | See https://docs.openstack.org/oslo.i18n/latest/user/usage.html 18 | 19 | """ 20 | 21 | import oslo_i18n 22 | 23 | DOMAIN = 'ceilometer' 24 | 25 | _translators = oslo_i18n.TranslatorFactory(domain=DOMAIN) 26 | 27 | # The primary translation function using the well-known name "_" 28 | _ = _translators.primary 29 | 30 | 31 | def translate(value, user_locale): 32 | return oslo_i18n.translate(value, user_locale) 33 | 34 | 35 | def get_available_languages(): 36 | return oslo_i18n.get_available_languages(DOMAIN) 37 | -------------------------------------------------------------------------------- /ceilometer/image/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/image/__init__.py -------------------------------------------------------------------------------- /ceilometer/image/discovery.py: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | # not use this file except in compliance with the License. You may obtain 4 | # a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | # License for the specific language governing permissions and limitations 12 | # under the License. 13 | 14 | import glanceclient 15 | from oslo_config import cfg 16 | 17 | from ceilometer import keystone_client 18 | from ceilometer.polling import plugin_base 19 | 20 | SERVICE_OPTS = [ 21 | cfg.StrOpt('glance', 22 | default='image', 23 | help='Glance service type.'), 24 | ] 25 | 26 | 27 | class ImagesDiscovery(plugin_base.DiscoveryBase): 28 | def __init__(self, conf): 29 | super().__init__(conf) 30 | creds = conf.service_credentials 31 | self.glance_client = glanceclient.Client( 32 | version='2', 33 | session=keystone_client.get_session(conf), 34 | region_name=creds.region_name, 35 | interface=creds.interface, 36 | service_type=conf.service_types.glance) 37 | 38 | def discover(self, manager, param=None): 39 | """Discover resources to monitor.""" 40 | return self.glance_client.images.list() 41 | -------------------------------------------------------------------------------- /ceilometer/image/glance.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2012 New Dream Network, LLC (DreamHost) 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """Common code for working with images 16 | """ 17 | 18 | from ceilometer.polling import plugin_base 19 | from ceilometer import sample 20 | 21 | 22 | class _Base(plugin_base.PollsterBase): 23 | @property 24 | def default_discovery(self): 25 | return 'images' 26 | 27 | @staticmethod 28 | def extract_image_metadata(image): 29 | return { 30 | k: getattr(image, k) 31 | for k in [ 32 | "status", 33 | "visibility", 34 | "name", 35 | "container_format", 36 | "created_at", 37 | "disk_format", 38 | "updated_at", 39 | "min_disk", 40 | "protected", 41 | "checksum", 42 | "min_ram", 43 | "tags", 44 | "virtual_size" 45 | ] 46 | } 47 | 48 | 49 | class ImageSizePollster(_Base): 50 | def get_samples(self, manager, cache, resources): 51 | for image in resources: 52 | yield sample.Sample( 53 | name='image.size', 54 | type=sample.TYPE_GAUGE, 55 | unit='B', 56 | volume=image.size, 57 | user_id=None, 58 | project_id=image.owner, 59 | resource_id=image.id, 60 | resource_metadata=self.extract_image_metadata(image), 61 | ) 62 | -------------------------------------------------------------------------------- /ceilometer/ipmi/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/ipmi/__init__.py -------------------------------------------------------------------------------- /ceilometer/ipmi/notifications/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/ipmi/notifications/__init__.py -------------------------------------------------------------------------------- /ceilometer/ipmi/platform/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/ipmi/platform/__init__.py -------------------------------------------------------------------------------- /ceilometer/ipmi/platform/exception.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Intel Corporation. 2 | # All Rights Reserved. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | 17 | class IPMIException(Exception): 18 | pass 19 | -------------------------------------------------------------------------------- /ceilometer/ipmi/pollsters/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Intel Corporation. 2 | # All Rights Reserved. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | """Pollsters for IPMI and Intel Node Manager 17 | """ 18 | 19 | from oslo_config import cfg 20 | 21 | OPTS = [ 22 | cfg.IntOpt('polling_retry', 23 | default=3, 24 | help='Tolerance of IPMI/NM polling failures ' 25 | 'before disable this pollster. ' 26 | 'Negative indicates retrying forever.') 27 | ] 28 | -------------------------------------------------------------------------------- /ceilometer/meter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/meter/__init__.py -------------------------------------------------------------------------------- /ceilometer/middleware.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2013 eNovance 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | from ceilometer.pipeline import sample as endpoint 17 | from ceilometer import sample 18 | 19 | 20 | class HTTPRequest(endpoint.SampleEndpoint): 21 | event_types = ['http.request'] 22 | 23 | def build_sample(self, message): 24 | yield sample.Sample.from_notification( 25 | name=message['event_type'], 26 | type=sample.TYPE_DELTA, 27 | volume=1, 28 | unit=message['event_type'].split('.')[1], 29 | user_id=message['payload']['request'].get('HTTP_X_USER_ID'), 30 | project_id=message['payload']['request'].get('HTTP_X_PROJECT_ID'), 31 | resource_id=message['payload']['request'].get( 32 | 'HTTP_X_SERVICE_NAME'), 33 | message=message) 34 | 35 | 36 | class HTTPResponse(HTTPRequest): 37 | event_types = ['http.response'] 38 | -------------------------------------------------------------------------------- /ceilometer/network/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/network/__init__.py -------------------------------------------------------------------------------- /ceilometer/network/services/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/network/services/__init__.py -------------------------------------------------------------------------------- /ceilometer/network/services/base.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2014 Cisco Systems,Inc. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | from ceilometer.polling import plugin_base 17 | 18 | 19 | # status map for converting metric status to volume int 20 | STATUS = { 21 | 'inactive': 0, 22 | 'active': 1, 23 | 'pending_create': 2, 24 | 'down': 3, 25 | 'created': 4, 26 | 'pending_update': 5, 27 | 'pending_delete': 6, 28 | 'error': 7, 29 | } 30 | 31 | 32 | class BaseServicesPollster(plugin_base.PollsterBase): 33 | 34 | FIELDS = [] 35 | 36 | def extract_metadata(self, metric): 37 | return {k: metric[k] for k in self.FIELDS} 38 | 39 | @staticmethod 40 | def get_status_id(value): 41 | if not value: 42 | return -1 43 | status = value.lower() 44 | return STATUS.get(status, -1) 45 | -------------------------------------------------------------------------------- /ceilometer/network/services/discovery.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014 Cisco Systems, Inc 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | from ceilometer import neutron_client 17 | from ceilometer.polling import plugin_base 18 | 19 | 20 | class _BaseServicesDiscovery(plugin_base.DiscoveryBase): 21 | KEYSTONE_REQUIRED_FOR_SERVICE = 'neutron' 22 | 23 | def __init__(self, conf): 24 | super().__init__(conf) 25 | self.neutron_cli = neutron_client.Client(conf) 26 | 27 | 28 | class VPNServicesDiscovery(_BaseServicesDiscovery): 29 | def discover(self, manager, param=None): 30 | """Discover resources to monitor.""" 31 | 32 | return self.neutron_cli.vpn_get_all() 33 | 34 | 35 | class IPSecConnectionsDiscovery(_BaseServicesDiscovery): 36 | def discover(self, manager, param=None): 37 | """Discover resources to monitor.""" 38 | 39 | conns = self.neutron_cli.ipsec_site_connections_get_all() 40 | return conns 41 | 42 | 43 | class FirewallDiscovery(_BaseServicesDiscovery): 44 | def discover(self, manager, param=None): 45 | """Discover resources to monitor.""" 46 | 47 | fw = self.neutron_cli.firewall_get_all() 48 | return [i for i in fw 49 | if i.get('status', None) != 'error'] 50 | 51 | 52 | class FirewallPolicyDiscovery(_BaseServicesDiscovery): 53 | def discover(self, manager, param=None): 54 | """Discover resources to monitor.""" 55 | 56 | return self.neutron_cli.fw_policy_get_all() 57 | 58 | 59 | class FloatingIPDiscovery(_BaseServicesDiscovery): 60 | def discover(self, manager, param=None): 61 | """Discover floating IP resources to monitor.""" 62 | 63 | return self.neutron_cli.fip_get_all() 64 | -------------------------------------------------------------------------------- /ceilometer/objectstore/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/objectstore/__init__.py -------------------------------------------------------------------------------- /ceilometer/pipeline/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/pipeline/__init__.py -------------------------------------------------------------------------------- /ceilometer/pipeline/data/event_pipeline.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | sources: 3 | - name: event_source 4 | events: 5 | - "*" 6 | sinks: 7 | - event_sink 8 | sinks: 9 | - name: event_sink 10 | publishers: 11 | - notifier:// 12 | -------------------------------------------------------------------------------- /ceilometer/pipeline/data/pipeline.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | sources: 3 | - name: meter_source 4 | meters: 5 | - "*" 6 | sinks: 7 | - meter_sink 8 | sinks: 9 | - name: meter_sink 10 | publishers: 11 | - gnocchi:// 12 | -------------------------------------------------------------------------------- /ceilometer/polling/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/polling/__init__.py -------------------------------------------------------------------------------- /ceilometer/polling/discovery/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/polling/discovery/__init__.py -------------------------------------------------------------------------------- /ceilometer/polling/discovery/endpoint.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014-2015 Red Hat, Inc 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from oslo_log import log 16 | 17 | from ceilometer import keystone_client 18 | from ceilometer.polling import plugin_base as plugin 19 | 20 | LOG = log.getLogger(__name__) 21 | 22 | 23 | class EndpointDiscovery(plugin.DiscoveryBase): 24 | """Discovery that supplies service endpoints. 25 | 26 | This discovery should be used when the relevant APIs are not well suited 27 | to dividing the pollster's work into smaller pieces than a whole service 28 | at once. 29 | """ 30 | 31 | def discover(self, manager, param=None): 32 | endpoints = keystone_client.get_service_catalog( 33 | manager.keystone).get_urls( 34 | service_type=param, 35 | interface=self.conf.service_credentials.interface, 36 | region_name=self.conf.service_credentials.region_name) 37 | if not endpoints: 38 | LOG.warning('No endpoints found for service %s', 39 | "" if param is None else param) 40 | return [] 41 | return endpoints 42 | -------------------------------------------------------------------------------- /ceilometer/polling/discovery/localnode.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 Intel 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from ceilometer.polling import plugin_base 16 | 17 | 18 | class LocalNodeDiscovery(plugin_base.DiscoveryBase): 19 | def discover(self, manager, param=None): 20 | """Return local node as resource.""" 21 | return [self.conf.host] 22 | 23 | @property 24 | def group_id(self): 25 | return "LocalNode-%s" % self.conf.host 26 | -------------------------------------------------------------------------------- /ceilometer/polling/discovery/tenant.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Red Hat, Inc 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from oslo_log import log 16 | 17 | from ceilometer.polling import plugin_base as plugin 18 | 19 | LOG = log.getLogger(__name__) 20 | 21 | 22 | class TenantDiscovery(plugin.DiscoveryBase): 23 | """Discovery that supplies keystone tenants. 24 | 25 | This discovery should be used when the pollster's work can't be divided 26 | into smaller pieces than per-tenants. Example of this is the Swift 27 | pollster, which polls account details and does so per-project. 28 | """ 29 | 30 | def discover(self, manager, param=None): 31 | domains = manager.keystone.domains.list() 32 | LOG.debug(f"Found {len(domains)} keystone domains") 33 | 34 | tenants = [] 35 | for domain in domains: 36 | domain_tenants = manager.keystone.projects.list(domain) 37 | if self.conf.polling.ignore_disabled_projects: 38 | enabled_tenants = [tenant for tenant in 39 | domain_tenants if tenant.enabled] 40 | LOG.debug(f"Found {len(enabled_tenants)} enabled " 41 | f"tenants in domain {domain.name}") 42 | tenants = enabled_tenants + domain_tenants 43 | else: 44 | LOG.debug(f"Found {len(domain_tenants)} " 45 | f"tenants in domain {domain.name}") 46 | tenants = tenants + domain_tenants 47 | 48 | return tenants or [] 49 | -------------------------------------------------------------------------------- /ceilometer/privsep/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | # not use this file except in compliance with the License. You may obtain 4 | # a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | # License for the specific language governing permissions and limitations 12 | # under the License. 13 | 14 | """Setup privsep decorator.""" 15 | 16 | from oslo_privsep import capabilities 17 | from oslo_privsep import priv_context 18 | 19 | sys_admin_pctxt = priv_context.PrivContext( 20 | 'ceilometer', 21 | cfg_section='ceilometer_sys_admin', 22 | pypath=__name__ + '.sys_admin_pctxt', 23 | capabilities=[capabilities.CAP_CHOWN, 24 | capabilities.CAP_DAC_OVERRIDE, 25 | capabilities.CAP_DAC_READ_SEARCH, 26 | capabilities.CAP_FOWNER, 27 | capabilities.CAP_NET_ADMIN, 28 | capabilities.CAP_SYS_ADMIN], 29 | ) 30 | -------------------------------------------------------------------------------- /ceilometer/privsep/ipmitool.py: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | # not use this file except in compliance with the License. You may obtain 4 | # a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | # License for the specific language governing permissions and limitations 12 | # under the License. 13 | 14 | """ 15 | Helpers for impi related routines. 16 | """ 17 | 18 | from oslo_concurrency import processutils 19 | 20 | import ceilometer.privsep 21 | 22 | 23 | @ceilometer.privsep.sys_admin_pctxt.entrypoint 24 | def ipmi(*cmd): 25 | return processutils.execute(*cmd) 26 | -------------------------------------------------------------------------------- /ceilometer/publisher/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2013 Intel Corp. 3 | # Copyright 2013-2014 eNovance 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | 17 | import abc 18 | 19 | from oslo_log import log 20 | from oslo_utils import netutils 21 | from stevedore import driver 22 | 23 | 24 | LOG = log.getLogger(__name__) 25 | 26 | 27 | def get_publisher(conf, url, namespace): 28 | """Get publisher driver and load it. 29 | 30 | :param url: URL for the publisher 31 | :param namespace: Namespace to use to look for drivers. 32 | """ 33 | parse_result = netutils.urlsplit(url) 34 | loaded_driver = driver.DriverManager(namespace, parse_result.scheme) 35 | return loaded_driver.driver(conf, parse_result) 36 | 37 | 38 | class ConfigPublisherBase(metaclass=abc.ABCMeta): 39 | """Base class for plugins that publish data.""" 40 | 41 | def __init__(self, conf, parsed_url): 42 | self.conf = conf 43 | 44 | @abc.abstractmethod 45 | def publish_samples(self, samples): 46 | """Publish samples into final conduit.""" 47 | 48 | @abc.abstractmethod 49 | def publish_events(self, events): 50 | """Publish events into final conduit.""" 51 | -------------------------------------------------------------------------------- /ceilometer/publisher/test.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2013 eNovance 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | """Publish a sample in memory, useful for testing 16 | """ 17 | 18 | from ceilometer import publisher 19 | 20 | 21 | class TestPublisher(publisher.ConfigPublisherBase): 22 | """Publisher used in unit testing.""" 23 | 24 | def __init__(self, conf, parsed_url): 25 | super().__init__(conf, parsed_url) 26 | self.samples = [] 27 | self.events = [] 28 | self.calls = 0 29 | 30 | def publish_samples(self, samples): 31 | """Send a metering message for publishing 32 | 33 | :param samples: Samples from pipeline after transformation 34 | """ 35 | self.samples.extend(samples) 36 | self.calls += 1 37 | 38 | def publish_events(self, events): 39 | """Send an event message for publishing 40 | 41 | :param events: events from pipeline after transformation 42 | """ 43 | self.events.extend(events) 44 | self.calls += 1 45 | -------------------------------------------------------------------------------- /ceilometer/service.py: -------------------------------------------------------------------------------- 1 | # Copyright 2012-2014 eNovance 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | import sys 16 | 17 | from oslo_config import cfg 18 | import oslo_i18n 19 | from oslo_log import log 20 | from oslo_reports import guru_meditation_report as gmr 21 | from oslo_reports import opts as gmr_opts 22 | 23 | from ceilometer import keystone_client 24 | from ceilometer import messaging 25 | from ceilometer import opts 26 | from ceilometer import sample 27 | from ceilometer import utils 28 | from ceilometer import version 29 | 30 | 31 | def prepare_service(argv=None, config_files=None, conf=None): 32 | if argv is None: 33 | argv = sys.argv 34 | 35 | if conf is None: 36 | conf = cfg.ConfigOpts() 37 | 38 | oslo_i18n.enable_lazy() 39 | for group, options in opts.list_opts(): 40 | conf.register_opts(list(options), 41 | group=None if group == "DEFAULT" else group) 42 | keystone_client.register_keystoneauth_opts(conf) 43 | log.register_options(conf) 44 | log_levels = (conf.default_log_levels + 45 | ['futurist=INFO', 'neutronclient=INFO', 46 | 'keystoneclient=INFO']) 47 | log.set_defaults(default_log_levels=log_levels) 48 | 49 | conf(argv[1:], project='ceilometer', validate_default_values=True, 50 | version=version.version_info.version_string(), 51 | default_config_files=config_files) 52 | 53 | keystone_client.post_register_keystoneauth_opts(conf) 54 | 55 | log.setup(conf, 'ceilometer') 56 | utils.setup_root_helper(conf) 57 | sample.setup(conf) 58 | 59 | gmr_opts.set_defaults(conf) 60 | gmr.TextGuruMeditation.setup_autorun(version, conf=conf) 61 | messaging.setup() 62 | return conf 63 | -------------------------------------------------------------------------------- /ceilometer/telemetry/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/telemetry/__init__.py -------------------------------------------------------------------------------- /ceilometer/telemetry/notifications.py: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | # not use this file except in compliance with the License. You may obtain 4 | # a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | # License for the specific language governing permissions and limitations 12 | # under the License. 13 | from ceilometer.pipeline import sample as endpoint 14 | from ceilometer import sample 15 | 16 | 17 | class TelemetryIpc(endpoint.SampleEndpoint): 18 | """Handle sample from notification bus 19 | 20 | Telemetry samples polled by polling agent. 21 | """ 22 | 23 | event_types = ['telemetry.polling'] 24 | 25 | def build_sample(self, message): 26 | samples = message['payload']['samples'] 27 | for sample_dict in samples: 28 | yield sample.Sample( 29 | name=sample_dict['counter_name'], 30 | type=sample_dict['counter_type'], 31 | unit=sample_dict['counter_unit'], 32 | volume=sample_dict['counter_volume'], 33 | user_id=sample_dict['user_id'], 34 | project_id=sample_dict['project_id'], 35 | resource_id=sample_dict['resource_id'], 36 | timestamp=sample_dict['timestamp'], 37 | resource_metadata=sample_dict['resource_metadata'], 38 | source=sample_dict['source'], 39 | id=sample_dict['message_id'], 40 | 41 | # Project name and username might not be set, depending on the 42 | # configuration `identity_name_discovery`. Therefore, we cannot 43 | # assume that they exist in the sample dictionary. 44 | user_name=sample_dict.get('user_name'), 45 | project_name=sample_dict.get('project_name') 46 | ) 47 | -------------------------------------------------------------------------------- /ceilometer/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/alarm/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/alarm/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/cmd/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/cmd/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/cmd/test_status.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2018 NEC, Corp. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from oslo_upgradecheck.upgradecheck import Code 16 | 17 | from ceilometer.cmd import status 18 | from ceilometer.tests import base 19 | 20 | 21 | class TestUpgradeChecks(base.BaseTestCase): 22 | 23 | def setUp(self): 24 | super().setUp() 25 | self.cmd = status.Checks() 26 | 27 | def test__sample_check(self): 28 | check_result = self.cmd._sample_check() 29 | self.assertEqual( 30 | Code.SUCCESS, check_result.code) 31 | -------------------------------------------------------------------------------- /ceilometer/tests/unit/compute/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/compute/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/compute/pollsters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/compute/pollsters/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/compute/virt/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/compute/virt/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/compute/virt/libvirt/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/compute/virt/libvirt/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/event/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/event/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/image/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/image/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/ipmi/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/ipmi/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/ipmi/notifications/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/ipmi/notifications/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/ipmi/platform/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/ipmi/platform/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/ipmi/platform/fake_utils.py: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Intel Corp. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from ceilometer.ipmi.platform import exception as nmexcept 16 | from ceilometer.tests.unit.ipmi.platform import ipmitool_test_data as test_data 17 | 18 | 19 | def get_sensor_status_init(parameter=''): 20 | return (' 01\n', '') 21 | 22 | 23 | def get_sensor_status_uninit(parameter=''): 24 | return (' 00\n', '') 25 | 26 | 27 | def init_sensor_agent(parameter=''): 28 | return (' 00\n', '') 29 | 30 | 31 | def execute(*cmd, **kwargs): 32 | 33 | datas = { 34 | test_data.sdr_info_cmd: test_data.sdr_info, 35 | test_data.read_sensor_temperature_cmd: test_data.sensor_temperature, 36 | test_data.read_sensor_voltage_cmd: test_data.sensor_voltage, 37 | test_data.read_sensor_current_cmd: test_data.sensor_current, 38 | test_data.read_sensor_fan_cmd: test_data.sensor_fan, 39 | } 40 | 41 | cmd_str = "".join(cmd) 42 | return datas[cmd_str] 43 | 44 | 45 | def execute_without_ipmi(*cmd, **kwargs): 46 | raise nmexcept.IPMIException 47 | -------------------------------------------------------------------------------- /ceilometer/tests/unit/ipmi/pollsters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/ipmi/pollsters/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/meter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/meter/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/network/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/network/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/network/services/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/network/services/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/objectstore/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/objectstore/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/polling/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/polling/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/publisher/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/publisher/__init__.py -------------------------------------------------------------------------------- /ceilometer/tests/unit/test_declarative.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2016 Mirantis, Inc 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | from unittest import mock 16 | 17 | import fixtures 18 | 19 | from ceilometer import declarative 20 | from ceilometer.tests import base 21 | 22 | 23 | class TestDefinition(base.BaseTestCase): 24 | 25 | def setUp(self): 26 | super().setUp() 27 | self.configs = [ 28 | "_field1", 29 | "_field2|_field3", 30 | {'fields': 'field4.`split(., 1, 1)`'}, 31 | {'fields': ['field5.arg', 'field6'], 'type': 'text'} 32 | ] 33 | self.parser = mock.MagicMock() 34 | parser_patch = fixtures.MockPatch( 35 | "jsonpath_rw_ext.parser.ExtentedJsonPathParser.parse", 36 | new=self.parser) 37 | self.useFixture(parser_patch) 38 | 39 | def test_caching_parsers(self): 40 | for config in self.configs * 2: 41 | declarative.Definition("test", config, mock.MagicMock()) 42 | self.assertEqual(4, self.parser.call_count) 43 | self.parser.assert_has_calls([ 44 | mock.call("_field1"), 45 | mock.call("_field2|_field3"), 46 | mock.call("field4.`split(., 1, 1)`"), 47 | mock.call("(field5.arg)|(field6)"), 48 | ]) 49 | -------------------------------------------------------------------------------- /ceilometer/tests/unit/volume/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/tests/unit/volume/__init__.py -------------------------------------------------------------------------------- /ceilometer/utils.py: -------------------------------------------------------------------------------- 1 | # Copyright 2010 United States Government as represented by the 2 | # Administrator of the National Aeronautics and Space Administration. 3 | # Copyright 2011 Justin Santa Barbara 4 | 5 | # All Rights Reserved. 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 8 | # not use this file except in compliance with the License. You may obtain 9 | # a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 15 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 16 | # License for the specific language governing permissions and limitations 17 | # under the License. 18 | 19 | """Utilities and helper functions.""" 20 | 21 | import threading 22 | 23 | from oslo_config import cfg 24 | from oslo_utils import timeutils 25 | 26 | ROOTWRAP_CONF = "/etc/ceilometer/rootwrap.conf" 27 | 28 | OPTS = [ 29 | cfg.StrOpt('rootwrap_config', 30 | default=ROOTWRAP_CONF, 31 | help='Path to the rootwrap configuration file to ' 32 | 'use for running commands as root'), 33 | ] 34 | 35 | 36 | def _get_root_helper(): 37 | global ROOTWRAP_CONF 38 | return 'sudo ceilometer-rootwrap %s' % ROOTWRAP_CONF 39 | 40 | 41 | def setup_root_helper(conf): 42 | global ROOTWRAP_CONF 43 | ROOTWRAP_CONF = conf.rootwrap_config 44 | 45 | 46 | def spawn_thread(target, *args, **kwargs): 47 | t = threading.Thread(target=target, args=args, kwargs=kwargs) 48 | t.daemon = True 49 | t.start() 50 | return t 51 | 52 | 53 | def isotime(at=None): 54 | """Current time as ISO string, 55 | 56 | :returns: Current time in ISO format 57 | """ 58 | if not at: 59 | at = timeutils.utcnow() 60 | date_string = at.strftime("%Y-%m-%dT%H:%M:%S") 61 | tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC' 62 | date_string += ('Z' if tz == 'UTC' else tz) 63 | return date_string 64 | -------------------------------------------------------------------------------- /ceilometer/version.py: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | # not use this file except in compliance with the License. You may obtain 4 | # a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | # License for the specific language governing permissions and limitations 12 | # under the License. 13 | 14 | 15 | import pbr.version 16 | 17 | version_info = pbr.version.VersionInfo('ceilometer') 18 | -------------------------------------------------------------------------------- /ceilometer/volume/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/ceilometer/volume/__init__.py -------------------------------------------------------------------------------- /devstack/README.rst: -------------------------------------------------------------------------------- 1 | =============================== 2 | Enabling Ceilometer in DevStack 3 | =============================== 4 | 5 | 1. Download Devstack:: 6 | 7 | git clone https://opendev.org/openstack/devstack 8 | cd devstack 9 | 10 | 2. Add this repo as an external repository in ``local.conf`` file:: 11 | 12 | [[local|localrc]] 13 | enable_plugin ceilometer https://opendev.org/openstack/ceilometer 14 | 15 | To use stable branches, make sure devstack is on that branch, and specify 16 | the branch name to enable_plugin, for example:: 17 | 18 | enable_plugin ceilometer https://opendev.org/openstack/ceilometer stable/mitaka 19 | 20 | There are some options, such as CEILOMETER_BACKEND, defined in 21 | ``ceilometer/devstack/settings``, they can be used to configure the 22 | installation of Ceilometer. If you don't want to use their default value, 23 | you can set a new one in ``local.conf``. 24 | 25 | Alternitvely you can modify copy and modify the sample ``local.conf`` 26 | located at ``ceilometer/devstack/local.conf.sample`` 27 | 28 | 3. Run ``stack.sh``. 29 | -------------------------------------------------------------------------------- /devstack/files/rpms/ceilometer: -------------------------------------------------------------------------------- 1 | selinux-policy-targeted 2 | -------------------------------------------------------------------------------- /devstack/local.conf.sample: -------------------------------------------------------------------------------- 1 | [[local|localrc]] 2 | # Common options 3 | # -------------- 4 | #RECLONE=True 5 | #FORCE=True 6 | #OFFLINE=True 7 | #USE_PYTHON3=True 8 | #PYTHON3_VERSION=3.8 9 | # HOST_IP shoudl be set to an ip that is present on the host 10 | # e.g. the ip of eth0. This will be used to bind api endpoints and horizon. 11 | HOST_IP= 12 | 13 | # Minimal Contents 14 | # ---------------- 15 | 16 | # While ``stack.sh`` is happy to run without ``localrc``, devlife is better when 17 | # there are a few minimal variables set: 18 | 19 | # If the ``*_PASSWORD`` variables are not set here you will be prompted to enter 20 | # values for them by ``stack.sh``and they will be added to ``local.conf``. 21 | ADMIN_PASSWORD=password 22 | DATABASE_PASSWORD=$ADMIN_PASSWORD 23 | RABBIT_PASSWORD=$ADMIN_PASSWORD 24 | SERVICE_PASSWORD=$ADMIN_PASSWORD 25 | 26 | LOGFILE=$DEST/logs/stack.sh.log 27 | LOGDAYS=2 28 | 29 | # the plugin line order matters but the placment in the file does not 30 | enable_plugin aodh https://opendev.org/openstack/aodh 31 | enable_plugin ceilometer https://opendev.org/openstack/ceilometer.git 32 | 33 | # Gnocchi settings 34 | # Gnocchi is optional but can be enbaled by uncommenting CEILOMETER_BACKEND 35 | CEILOMETER_BACKEND=gnocchi 36 | 37 | # if gnocchi is not in LIBS_FROM_GIT it will install from pypi. 38 | # Currently this is broken with the latest gnocchi release 4.4.2 39 | # so we need to install from git until 40 | # https://github.com/gnocchixyz/gnocchi/issues/1290 is resolved 41 | LIBS_FROM_GIT+=gnocchi 42 | 43 | # to control the version of gnocchi installed from git uncomment these options 44 | #GNOCCHI_BRANCH="master" 45 | #GNOCCHI_REPO=https://github.com/gnocchixyz/gnocchi 46 | -------------------------------------------------------------------------------- /devstack/upgrade/settings: -------------------------------------------------------------------------------- 1 | register_project_for_upgrade ceilometer 2 | 3 | devstack_localrc base enable_plugin ceilometer https://opendev.org/openstack/ceilometer 4 | devstack_localrc base enable_service ceilometer-acompute ceilometer-acentral ceilometer-aipmi ceilometer-anotification tempest 5 | 6 | devstack_localrc target enable_plugin ceilometer https://opendev.org/openstack/ceilometer 7 | devstack_localrc target enable_service ceilometer-acompute ceilometer-acentral ceilometer-aipmi ceilometer-anotification tempest 8 | -------------------------------------------------------------------------------- /devstack/upgrade/shutdown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # 4 | 5 | set -o errexit 6 | 7 | source $GRENADE_DIR/grenaderc 8 | source $GRENADE_DIR/functions 9 | 10 | source $BASE_DEVSTACK_DIR/functions 11 | source $BASE_DEVSTACK_DIR/stackrc # needed for status directory 12 | source $BASE_DEVSTACK_DIR/lib/tls 13 | source $BASE_DEVSTACK_DIR/lib/apache 14 | 15 | # Locate the ceilometer plugin and get its functions 16 | CEILOMETER_DEVSTACK_DIR=$(dirname $(dirname $0)) 17 | source $CEILOMETER_DEVSTACK_DIR/plugin.sh 18 | 19 | set -o xtrace 20 | 21 | stop_ceilometer 22 | 23 | # ensure everything is stopped 24 | 25 | SERVICES_DOWN="ceilometer-acompute ceilometer-acentral ceilometer-aipmi ceilometer-anotification" 26 | 27 | ensure_services_stopped $SERVICES_DOWN 28 | -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx>=2.1.1 # BSD 2 | sphinxcontrib-httpdomain>=1.3.0 # BSD 3 | sphinxcontrib-blockdiag>=1.5.4 # BSD 4 | reno>=3.1.0 # Apache-2.0 5 | os-api-ref>=1.4.0 # Apache-2.0 6 | openstackdocstheme>=2.2.1 # Apache-2.0 7 | -------------------------------------------------------------------------------- /doc/source/admin/index.rst: -------------------------------------------------------------------------------- 1 | .. _admin: 2 | 3 | =================== 4 | Administrator Guide 5 | =================== 6 | 7 | 8 | Overview 9 | ======== 10 | .. toctree:: 11 | :maxdepth: 2 12 | 13 | telemetry-system-architecture 14 | 15 | Configuration 16 | ============= 17 | .. toctree:: 18 | :maxdepth: 2 19 | 20 | telemetry-data-collection 21 | telemetry-data-pipelines 22 | telemetry-best-practices 23 | telemetry-dynamic-pollster 24 | 25 | Data Types 26 | ========== 27 | .. toctree:: 28 | :maxdepth: 2 29 | 30 | telemetry-measurements 31 | telemetry-events 32 | 33 | Management 34 | ========== 35 | .. toctree:: 36 | :maxdepth: 2 37 | 38 | telemetry-troubleshooting-guide 39 | -------------------------------------------------------------------------------- /doc/source/admin/telemetry-best-practices.rst: -------------------------------------------------------------------------------- 1 | Telemetry best practices 2 | ~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | The following are some suggested best practices to follow when deploying 5 | and configuring the Telemetry service. 6 | 7 | Data collection 8 | --------------- 9 | 10 | #. The Telemetry service collects a continuously growing set of data. Not 11 | all the data will be relevant for an administrator to monitor. 12 | 13 | - Based on your needs, you can edit the ``polling.yaml`` and 14 | ``pipeline.yaml`` configuration files to include select meters to 15 | generate or process 16 | 17 | - By default, Telemetry service polls the service APIs every 10 18 | minutes. You can change the polling interval on a per meter basis by 19 | editing the ``polling.yaml`` configuration file. 20 | 21 | .. warning:: 22 | 23 | If the polling interval is too short, it will likely increase the 24 | stress on the service APIs. 25 | 26 | #. If polling many resources or at a high frequency, you can add additional 27 | central and compute agents as necessary. The agents are designed to scale 28 | horizontally. For more information refer to the `high availability guide 29 | `_. 30 | 31 | .. note:: 32 | 33 | The High Availability Guide is a work in progress and is changing 34 | rapidly while testing continues. 35 | -------------------------------------------------------------------------------- /doc/source/admin/telemetry-troubleshooting-guide.rst: -------------------------------------------------------------------------------- 1 | Troubleshoot Telemetry 2 | ~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Logging in Telemetry 5 | -------------------- 6 | 7 | The Telemetry service has similar log settings as the other OpenStack 8 | services. Multiple options are available to change the target of 9 | logging, the format of the log entries and the log levels. 10 | 11 | The log settings can be changed in ``ceilometer.conf``. The list of 12 | configuration options are listed in the logging configuration options 13 | table in the `Telemetry 14 | section `__ 15 | in the OpenStack Configuration Reference. 16 | 17 | By default ``stderr`` is used as standard output for the log messages. 18 | It can be changed to either a log file or syslog. The ``debug`` and 19 | ``verbose`` options are also set to false in the default settings, the 20 | default log levels of the corresponding modules can be found in the 21 | table referred above. 22 | -------------------------------------------------------------------------------- /doc/source/cli/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Ceilometer CLI Documentation 3 | ============================ 4 | 5 | In this section you will find information on Ceilometer’s command line 6 | interface. 7 | 8 | .. toctree:: 9 | :maxdepth: 1 10 | 11 | ceilometer-status 12 | -------------------------------------------------------------------------------- /doc/source/configuration/index.rst: -------------------------------------------------------------------------------- 1 | .. _configuring: 2 | 3 | ================================ 4 | Ceilometer Configuration Options 5 | ================================ 6 | 7 | Ceilometer Sample Configuration File 8 | ==================================== 9 | 10 | Configure Ceilometer by editing /etc/ceilometer/ceilometer.conf. 11 | 12 | No config file is provided with the source code, it will be created during 13 | the installation. In case where no configuration file was installed, one 14 | can be easily created by running:: 15 | 16 | oslo-config-generator \ 17 | --config-file=/etc/ceilometer/ceilometer-config-generator.conf \ 18 | --output-file=/etc/ceilometer/ceilometer.conf 19 | 20 | .. only:: html 21 | 22 | The following is a sample Ceilometer configuration for adaptation and use. 23 | It is auto-generated from Ceilometer when this documentation is built, and 24 | can also be viewed in `file form <_static/ceilometer.conf.sample>`_. 25 | 26 | .. literalinclude:: ../_static/ceilometer.conf.sample 27 | -------------------------------------------------------------------------------- /doc/source/contributor/1-agents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/1-agents.png -------------------------------------------------------------------------------- /doc/source/contributor/2-1-collection-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/2-1-collection-notification.png -------------------------------------------------------------------------------- /doc/source/contributor/2-2-collection-poll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/2-2-collection-poll.png -------------------------------------------------------------------------------- /doc/source/contributor/2-accessmodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/2-accessmodel.png -------------------------------------------------------------------------------- /doc/source/contributor/3-Pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/3-Pipeline.png -------------------------------------------------------------------------------- /doc/source/contributor/5-multi-publish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/5-multi-publish.png -------------------------------------------------------------------------------- /doc/source/contributor/6-storagemodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/6-storagemodel.png -------------------------------------------------------------------------------- /doc/source/contributor/ceilo-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/ceilo-arch.png -------------------------------------------------------------------------------- /doc/source/contributor/ceilo-gnocchi-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/doc/source/contributor/ceilo-gnocchi-arch.png -------------------------------------------------------------------------------- /doc/source/contributor/devstack.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Installing development sandbox 3 | ============================== 4 | 5 | In a development environment created by devstack_, Ceilometer can be tested 6 | alongside other OpenStack services. 7 | 8 | Configuring devstack 9 | ==================== 10 | 11 | 1. Download devstack_. 12 | 13 | 2. Create a ``local.conf`` file as input to devstack. 14 | 15 | 3. The ceilometer services are not enabled by default, so they must be 16 | enabled in ``local.conf`` but adding the following:: 17 | 18 | # Enable the Ceilometer devstack plugin 19 | enable_plugin ceilometer https://opendev.org/openstack/ceilometer.git 20 | 21 | By default, all ceilometer services except for ceilometer-ipmi agent will 22 | be enabled 23 | 24 | 4. Enable Gnocchi storage support by including the following in ``local.conf``:: 25 | 26 | CEILOMETER_BACKEND=gnocchi 27 | 28 | Optionally, services which extend Ceilometer can be enabled:: 29 | 30 | enable_plugin aodh https://opendev.org/openstack/aodh 31 | 32 | These plugins should be added before ceilometer. 33 | 34 | 5. ``./stack.sh`` 35 | 36 | .. _devstack: https://docs.openstack.org/devstack/latest/ 37 | -------------------------------------------------------------------------------- /doc/source/contributor/index.rst: -------------------------------------------------------------------------------- 1 | ================= 2 | Contributor Guide 3 | ================= 4 | 5 | In the Contributor Guide, you will find documented policies for 6 | developing with Ceilometer. This includes the processes we use for 7 | bugs, contributor onboarding, core reviewer memberships, and other 8 | procedural items. 9 | 10 | Ceilometer follows the same workflow as other OpenStack projects. To start 11 | contributing to Ceilometer, please follow the workflow found here_. 12 | 13 | .. _here: https://wiki.openstack.org/wiki/Gerrit_Workflow 14 | 15 | :Bug tracker: https://bugs.launchpad.net/ceilometer 16 | :Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss (prefix subjects with ``[Ceilometer]`` for faster responses) 17 | :Wiki: https://wiki.openstack.org/wiki/Ceilometer 18 | :Code Hosting: https://opendev.org/openstack/ceilometer/ 19 | :Code Review: https://review.opendev.org/#/q/status:open+project:openstack/ceilometer,n,z 20 | 21 | Overview 22 | ======== 23 | .. toctree:: 24 | :maxdepth: 2 25 | 26 | overview 27 | architecture 28 | 29 | Data Types 30 | ========== 31 | .. toctree:: 32 | :maxdepth: 2 33 | 34 | measurements 35 | events 36 | 37 | Getting Started 38 | =============== 39 | .. toctree:: 40 | :maxdepth: 2 41 | 42 | devstack 43 | testing 44 | gmr 45 | 46 | 47 | Development 48 | =========== 49 | .. toctree:: 50 | :maxdepth: 2 51 | 52 | plugins 53 | new_resource_types 54 | -------------------------------------------------------------------------------- /doc/source/contributor/overview.rst: -------------------------------------------------------------------------------- 1 | ======== 2 | Overview 3 | ======== 4 | 5 | Objectives 6 | ========== 7 | 8 | The Ceilometer project was started in 2012 with one simple goal in mind: to 9 | provide an infrastructure to collect any information needed regarding 10 | OpenStack projects. It was designed so that rating engines could use this 11 | single source to transform events into billable items which we 12 | label as "metering". 13 | 14 | As the project started to come to life, collecting an 15 | `increasing number of meters`_ across multiple projects, the OpenStack 16 | community started to realize that a secondary goal could be added to 17 | Ceilometer: become a standard way to meter, regardless of the 18 | purpose of the collection. This data can then be pushed to any set of targets 19 | using provided publishers mentioned in `pipeline-publishers` section. 20 | 21 | .. _increasing number of meters: https://docs.openstack.org/ceilometer/latest/contributor/measurements.html 22 | 23 | Metering 24 | ======== 25 | 26 | If you divide a billing process into a 3 step process, as is commonly done in 27 | the telco industry, the steps are: 28 | 29 | 1. :term:`metering` 30 | 2. :term:`rating` 31 | 3. :term:`billing` 32 | 33 | Ceilometer's initial goal was, and still is, strictly limited to step 34 | one. This is a choice made from the beginning not to go into rating or billing, 35 | as the variety of possibilities seemed too large for the project to ever 36 | deliver a solution that would fit everyone's needs, from private to public 37 | clouds. This means that if you are looking at this project to solve your 38 | billing needs, this is the right way to go, but certainly not the end of the 39 | road for you. 40 | -------------------------------------------------------------------------------- /doc/source/contributor/testing.rst: -------------------------------------------------------------------------------- 1 | .. 2 | Copyright 2012 New Dream Network, LLC (DreamHost) 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | not use this file except in compliance with the License. You may obtain 6 | a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | License for the specific language governing permissions and limitations 14 | under the License. 15 | 16 | ================= 17 | Running the Tests 18 | ================= 19 | 20 | Ceilometer includes an extensive set of automated unit tests which are 21 | run through tox_. 22 | 23 | 1. Install ``tox``:: 24 | 25 | $ sudo pip install tox 26 | 27 | 2. Run the unit and code-style tests:: 28 | 29 | $ cd /opt/stack/ceilometer 30 | $ tox -e py27,pep8 31 | 32 | As tox is a wrapper around testr, it also accepts the same flags as testr. 33 | See the `testr documentation`_ for details about these additional flags. 34 | 35 | .. _testr documentation: https://testrepository.readthedocs.org/en/latest/MANUAL.html 36 | 37 | Use a double hyphen to pass options to testr. For example, to run only tests 38 | under tests/unit/image:: 39 | 40 | $ tox -e py27 -- image 41 | 42 | To debug tests (ie. break into pdb debugger), you can use ''debug'' tox 43 | environment. Here's an example, passing the name of a test since you'll 44 | normally only want to run the test that hits your breakpoint:: 45 | 46 | $ tox -e debug ceilometer.tests.unit.test_bin 47 | 48 | For reference, the ``debug`` tox environment implements the instructions 49 | here: https://wiki.openstack.org/wiki/Testr#Debugging_.28pdb.29_Tests 50 | 51 | .. _tox: https://tox.readthedocs.io/en/latest/ 52 | -------------------------------------------------------------------------------- /doc/source/index.rst: -------------------------------------------------------------------------------- 1 | .. 2 | Copyright 2012 Nicolas Barcet for Canonical 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | not use this file except in compliance with the License. You may obtain 6 | a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | License for the specific language governing permissions and limitations 14 | under the License. 15 | 16 | ====================================== 17 | Welcome to Ceilometer's documentation! 18 | ====================================== 19 | 20 | The `Ceilometer` project is a data collection service that provides the 21 | ability to normalise and transform data across all current OpenStack core 22 | components with work underway to support future OpenStack components. 23 | 24 | Ceilometer is a component of the Telemetry project. Its data can be used to 25 | provide customer billing, resource tracking, and alarming capabilities 26 | across all OpenStack core components. 27 | 28 | This documentation offers information on how Ceilometer works and how to 29 | contribute to the project. 30 | 31 | Overview 32 | ======== 33 | 34 | .. toctree:: 35 | :maxdepth: 2 36 | 37 | install/index 38 | contributor/index 39 | admin/index 40 | configuration/index 41 | cli/index 42 | 43 | Appendix 44 | ======== 45 | 46 | .. toctree:: 47 | :maxdepth: 1 48 | 49 | releasenotes/index 50 | glossary 51 | 52 | .. update index 53 | 54 | .. only:: html 55 | 56 | Indices and tables 57 | ================== 58 | 59 | * :ref:`genindex` 60 | * :ref:`modindex` 61 | * :ref:`search` 62 | -------------------------------------------------------------------------------- /doc/source/install/cinder/install-cinder-config-common.inc: -------------------------------------------------------------------------------- 1 | * Enable periodic usage statistics relating to block storage. To use it, you 2 | must run this command in the following format: 3 | 4 | .. code-block:: console 5 | 6 | $ cinder-volume-usage-audit --start_time='YYYY-MM-DD HH:MM:SS' \ 7 | --end_time='YYYY-MM-DD HH:MM:SS' --send_actions 8 | 9 | This script outputs what volumes or snapshots were created, deleted, or 10 | exists in a given period of time and some information about these 11 | volumes or snapshots. 12 | 13 | Using this script via cron you can get notifications periodically, for 14 | example, every 5 minutes:: 15 | 16 | */5 * * * * /path/to/cinder-volume-usage-audit --send_actions 17 | -------------------------------------------------------------------------------- /doc/source/install/cinder/install-cinder-rdo.rst: -------------------------------------------------------------------------------- 1 | Enable Block Storage meters for Red Hat Enterprise Linux and CentOS 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses notifications to collect Block Storage service meters. 5 | Perform these steps on the controller and Block Storage nodes. 6 | 7 | .. note:: 8 | 9 | Your environment must include the Block Storage service. 10 | 11 | Configure Cinder to use Telemetry 12 | --------------------------------- 13 | 14 | Edit the ``/etc/cinder/cinder.conf`` file and complete the 15 | following actions: 16 | 17 | * In the ``[oslo_messaging_notifications]`` section, configure notifications: 18 | 19 | .. code-block:: ini 20 | 21 | [oslo_messaging_notifications] 22 | ... 23 | driver = messagingv2 24 | 25 | .. include:: install-cinder-config-common.inc 26 | 27 | Finalize installation 28 | --------------------- 29 | 30 | #. Restart the Block Storage services on the controller node: 31 | 32 | .. code-block:: console 33 | 34 | # systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service 35 | 36 | #. Restart the Block Storage services on the storage nodes: 37 | 38 | .. code-block:: console 39 | 40 | # systemctl restart openstack-cinder-volume.service 41 | -------------------------------------------------------------------------------- /doc/source/install/cinder/install-cinder-ubuntu.rst: -------------------------------------------------------------------------------- 1 | Enable Block Storage meters for Ubuntu 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses notifications to collect Block Storage service meters. 5 | Perform these steps on the controller and Block Storage nodes. 6 | 7 | .. note:: 8 | 9 | Your environment must include the Block Storage service. 10 | 11 | Configure Cinder to use Telemetry 12 | --------------------------------- 13 | 14 | Edit the ``/etc/cinder/cinder.conf`` file and complete the 15 | following actions: 16 | 17 | * In the ``[oslo_messaging_notifications]`` section, configure notifications: 18 | 19 | .. code-block:: ini 20 | 21 | [oslo_messaging_notifications] 22 | ... 23 | driver = messagingv2 24 | 25 | .. include:: install-cinder-config-common.inc 26 | 27 | Finalize installation 28 | --------------------- 29 | 30 | #. Restart the Block Storage services on the controller node: 31 | 32 | .. code-block:: console 33 | 34 | # service cinder-api restart 35 | # service cinder-scheduler restart 36 | 37 | #. Restart the Block Storage services on the storage nodes: 38 | 39 | .. code-block:: console 40 | 41 | # service cinder-volume restart 42 | -------------------------------------------------------------------------------- /doc/source/install/get_started.rst: -------------------------------------------------------------------------------- 1 | ========================================== 2 | Telemetry Data Collection service overview 3 | ========================================== 4 | 5 | The Telemetry Data Collection services provide the following functions: 6 | 7 | * Efficiently polls metering data related to OpenStack services. 8 | 9 | * Collects event and metering data by monitoring notifications sent 10 | from services. 11 | 12 | * Publishes collected data to various targets including data stores and 13 | message queues. 14 | 15 | The Telemetry service consists of the following components: 16 | 17 | A compute agent (``ceilometer-agent-compute``) 18 | Runs on each compute node and polls for resource utilization 19 | statistics. This is actually the polling agent ``ceilometer-polling`` 20 | running with parameter ``--polling-namespace compute``. 21 | 22 | A central agent (``ceilometer-agent-central``) 23 | Runs on a central management server to poll for resource utilization 24 | statistics for resources not tied to instances or compute nodes. 25 | Multiple agents can be started to scale service horizontally. This is 26 | actually the polling agent ``ceilometer-polling`` running with 27 | parameter ``--polling-namespace central``. 28 | 29 | A notification agent (``ceilometer-agent-notification``) 30 | Runs on a central management server(s) and consumes messages from 31 | the message queue(s) to build event and metering data. Data is then 32 | published to defined targets. By default, data is pushed to Gnocchi_. 33 | 34 | These services communicate by using the OpenStack messaging bus. Ceilometer 35 | data is designed to be published to various endpoints for storage and 36 | analysis. 37 | 38 | .. note:: 39 | 40 | Ceilometer previously provided a storage and API solution. As of Newton, 41 | this functionality is officially deprecated and discouraged. For efficient 42 | storage and statistical analysis of Ceilometer data, Gnocchi_ is 43 | recommended. 44 | 45 | .. _Gnocchi: https://gnocchi.osci.io 46 | -------------------------------------------------------------------------------- /doc/source/install/glance/install-glance-rdo.rst: -------------------------------------------------------------------------------- 1 | Enable Image service meters for Red Hat Enterprise Linux and CentOS 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses notifications to collect Image service meters. Perform 5 | these steps on the controller node. 6 | 7 | Configure the Image service to use Telemetry 8 | -------------------------------------------- 9 | 10 | * Edit the ``/etc/glance/glance-api.conf`` file and 11 | complete the following actions: 12 | 13 | * In the ``[DEFAULT]``, ``[oslo_messaging_notifications]`` sections, 14 | configure notifications and RabbitMQ 15 | message broker access: 16 | 17 | .. code-block:: ini 18 | 19 | [DEFAULT] 20 | ... 21 | transport_url = rabbit://openstack:RABBIT_PASS@controller 22 | 23 | [oslo_messaging_notifications] 24 | ... 25 | driver = messagingv2 26 | 27 | Replace ``RABBIT_PASS`` with the password you chose for 28 | the ``openstack`` account in ``RabbitMQ``. 29 | 30 | Finalize installation 31 | --------------------- 32 | 33 | * Restart the Image service: 34 | 35 | .. code-block:: console 36 | 37 | # systemctl restart openstack-glance-api.service 38 | -------------------------------------------------------------------------------- /doc/source/install/glance/install-glance-ubuntu.rst: -------------------------------------------------------------------------------- 1 | Enable Image service meters for Ubuntu 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses notifications to collect Image service meters. Perform 5 | these steps on the controller node. 6 | 7 | Configure the Image service to use Telemetry 8 | -------------------------------------------- 9 | 10 | * Edit the ``/etc/glance/glance-api.conf`` file and 11 | complete the following actions: 12 | 13 | * In the ``[DEFAULT]``, ``[oslo_messaging_notifications]`` sections, 14 | configure notifications and RabbitMQ 15 | message broker access: 16 | 17 | .. code-block:: ini 18 | 19 | [DEFAULT] 20 | ... 21 | transport_url = rabbit://openstack:RABBIT_PASS@controller 22 | 23 | [oslo_messaging_notifications] 24 | ... 25 | driver = messagingv2 26 | 27 | Replace ``RABBIT_PASS`` with the password you chose for 28 | the ``openstack`` account in ``RabbitMQ``. 29 | 30 | Finalize installation 31 | --------------------- 32 | 33 | * Restart the Image service: 34 | 35 | .. code-block:: console 36 | 37 | # service glance-api restart 38 | -------------------------------------------------------------------------------- /doc/source/install/heat/install-heat-rdo.rst: -------------------------------------------------------------------------------- 1 | Enable Orchestration service meters for Red Hat Enterprise Linux and CentOS 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses notifications to collect Orchestration service meters. Perform 5 | these steps on the controller node. 6 | 7 | Configure the Orchestration service to use Telemetry 8 | ---------------------------------------------------- 9 | 10 | * Edit the ``/etc/heat/heat.conf`` and complete the following actions: 11 | 12 | * In the ``[oslo_messaging_notifications]`` sections, enable notifications: 13 | 14 | .. code-block:: ini 15 | 16 | [oslo_messaging_notifications] 17 | ... 18 | driver = messagingv2 19 | 20 | Finalize installation 21 | --------------------- 22 | 23 | * Restart the Orchestration service: 24 | 25 | .. code-block:: console 26 | 27 | # systemctl restart openstack-heat-api.service \ 28 | openstack-heat-api-cfn.service openstack-heat-engine.service 29 | -------------------------------------------------------------------------------- /doc/source/install/heat/install-heat-ubuntu.rst: -------------------------------------------------------------------------------- 1 | Enable Orchestration service meters for Ubuntu 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses notifications to collect Orchestration service meters. Perform 5 | these steps on the controller node. 6 | 7 | Configure the Orchestration service to use Telemetry 8 | ---------------------------------------------------- 9 | 10 | * Edit the ``/etc/heat/heat.conf`` and complete the following actions: 11 | 12 | * In the ``[oslo_messaging_notifications]`` sections, enable notifications: 13 | 14 | .. code-block:: ini 15 | 16 | [oslo_messaging_notifications] 17 | ... 18 | driver = messagingv2 19 | 20 | Finalize installation 21 | --------------------- 22 | 23 | * Restart the Orchestration service: 24 | 25 | .. code-block:: console 26 | 27 | # service heat-api restart 28 | # service heat-api-cfn restart 29 | # service heat-engine restart 30 | -------------------------------------------------------------------------------- /doc/source/install/index.rst: -------------------------------------------------------------------------------- 1 | ================== 2 | Installation Guide 3 | ================== 4 | 5 | .. toctree:: 6 | :maxdepth: 2 7 | 8 | get_started.rst 9 | install-controller.rst 10 | install-compute.rst 11 | verify.rst 12 | next-steps.rst 13 | 14 | This chapter assumes a working setup of OpenStack following the 15 | `OpenStack Installation Tutorials and Guides `_. 16 | -------------------------------------------------------------------------------- /doc/source/install/install-base-config-common.inc: -------------------------------------------------------------------------------- 1 | 2. Edit the ``/etc/ceilometer/pipeline.yaml`` file and complete 2 | the following section: 3 | 4 | * Configure Gnocchi connection: 5 | 6 | .. code-block:: yaml 7 | 8 | publishers: 9 | # set address of Gnocchi 10 | # + filter out Gnocchi-related activity meters (Swift driver) 11 | # + set default archive policy 12 | - gnocchi://?filter_project=service&archive_policy=low 13 | 14 | 3. Edit the ``/etc/ceilometer/ceilometer.conf`` file and complete 15 | the following actions: 16 | 17 | * In the ``[DEFAULT]`` section, 18 | configure ``RabbitMQ`` message queue access: 19 | 20 | .. code-block:: ini 21 | 22 | [DEFAULT] 23 | ... 24 | transport_url = rabbit://openstack:RABBIT_PASS@controller 25 | 26 | Replace ``RABBIT_PASS`` with the password you chose for the 27 | ``openstack`` account in ``RabbitMQ``. 28 | 29 | * In the ``[service_credentials]`` section, configure service credentials: 30 | 31 | .. code-block:: ini 32 | 33 | [service_credentials] 34 | ... 35 | auth_type = password 36 | auth_url = http://controller:5000/v3 37 | project_domain_id = default 38 | user_domain_id = default 39 | project_name = service 40 | username = ceilometer 41 | password = CEILOMETER_PASS 42 | interface = internalURL 43 | region_name = RegionOne 44 | 45 | Replace ``CEILOMETER_PASS`` with the password you chose for 46 | the ``ceilometer`` user in the Identity service. 47 | 48 | 4. Create Ceilometer resources in Gnocchi. Gnocchi should be running by this 49 | stage: 50 | 51 | .. code-block:: console 52 | 53 | # ceilometer-upgrade 54 | -------------------------------------------------------------------------------- /doc/source/install/install-compute-common.inc: -------------------------------------------------------------------------------- 1 | 2. Edit the ``/etc/ceilometer/ceilometer.conf`` file and 2 | complete the following actions: 3 | 4 | * In the ``[DEFAULT]`` section, configure ``RabbitMQ`` 5 | message queue access: 6 | 7 | .. code-block:: ini 8 | 9 | [DEFAULT] 10 | ... 11 | transport_url = rabbit://openstack:RABBIT_PASS@controller 12 | 13 | Replace ``RABBIT_PASS`` with the password you chose for the 14 | ``openstack`` account in ``RabbitMQ``. 15 | 16 | * In the ``[service_credentials]`` section, configure service 17 | credentials: 18 | 19 | .. code-block:: ini 20 | 21 | [service_credentials] 22 | ... 23 | auth_url = http://controller:5000 24 | project_domain_id = default 25 | user_domain_id = default 26 | auth_type = password 27 | username = ceilometer 28 | project_name = service 29 | password = CEILOMETER_PASS 30 | interface = internalURL 31 | region_name = RegionOne 32 | 33 | Replace ``CEILOMETER_PASS`` with the password you chose for 34 | the ``ceilometer`` user in the Identity service. 35 | 36 | Configure Compute to use Telemetry 37 | ---------------------------------- 38 | 39 | * Edit the ``/etc/nova/nova.conf`` file and configure 40 | notifications in the ``[DEFAULT]`` section: 41 | 42 | .. code-block:: ini 43 | 44 | [DEFAULT] 45 | ... 46 | instance_usage_audit = True 47 | instance_usage_audit_period = hour 48 | 49 | [notifications] 50 | ... 51 | notify_on_state_change = vm_and_task_state 52 | 53 | [oslo_messaging_notifications] 54 | ... 55 | driver = messagingv2 56 | 57 | Configure Compute to poll IPMI meters 58 | ------------------------------------- 59 | 60 | .. note:: 61 | 62 | To enable IPMI meters, ensure IPMITool is installed and the host supports 63 | IPMI. 64 | 65 | * Edit the ``/etc/sudoers`` file and include: 66 | 67 | .. code-block:: ini 68 | 69 | ceilometer ALL = (root) NOPASSWD: /usr/bin/ceilometer-rootwrap /etc/ceilometer/rootwrap.conf * 70 | 71 | * Edit the ``/etc/ceilometer/polling.yaml`` to include the required meters, for example: 72 | 73 | .. code-block:: yaml 74 | 75 | - name: ipmi 76 | interval: 300 77 | meters: 78 | - hardware.ipmi.temperature 79 | -------------------------------------------------------------------------------- /doc/source/install/install-compute-rdo.rst: -------------------------------------------------------------------------------- 1 | Enable Compute service meters for Red Hat Enterprise Linux and CentOS 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses a combination of notifications and an agent to collect 5 | Compute meters. Perform these steps on each compute node. 6 | 7 | Install and configure components 8 | -------------------------------- 9 | 10 | #. Install the packages: 11 | 12 | .. code-block:: console 13 | 14 | # dnf install openstack-ceilometer-compute 15 | # dnf install openstack-ceilometer-ipmi (optional) 16 | 17 | .. include:: install-compute-common.inc 18 | 19 | Finalize installation 20 | --------------------- 21 | 22 | #. Start the agent and configure it to start when the system boots: 23 | 24 | .. code-block:: console 25 | 26 | # systemctl enable openstack-ceilometer-compute.service 27 | # systemctl start openstack-ceilometer-compute.service 28 | # systemctl enable openstack-ceilometer-ipmi.service (optional) 29 | # systemctl start openstack-ceilometer-ipmi.service (optional) 30 | 31 | #. Restart the Compute service: 32 | 33 | .. code-block:: console 34 | 35 | # systemctl restart openstack-nova-compute.service 36 | -------------------------------------------------------------------------------- /doc/source/install/install-compute-ubuntu.rst: -------------------------------------------------------------------------------- 1 | Enable Compute service meters for Ubuntu 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses a combination of notifications and an agent to collect 5 | Compute meters. Perform these steps on each compute node. 6 | 7 | Install and configure components 8 | -------------------------------- 9 | 10 | #. Install the packages: 11 | 12 | .. code-block:: console 13 | 14 | # apt-get install ceilometer-agent-compute 15 | # apt-get install ceilometer-agent-ipmi (optional) 16 | 17 | .. include:: install-compute-common.inc 18 | 19 | Finalize installation 20 | --------------------- 21 | 22 | #. Restart the agent: 23 | 24 | .. code-block:: console 25 | 26 | # service ceilometer-agent-compute restart 27 | # service ceilometer-agent-ipmi restart (optional) 28 | 29 | #. Restart the Compute service: 30 | 31 | .. code-block:: console 32 | 33 | # service nova-compute restart 34 | -------------------------------------------------------------------------------- /doc/source/install/install-compute.rst: -------------------------------------------------------------------------------- 1 | .. _install_compute: 2 | 3 | Install and Configure Compute Services 4 | ====================================== 5 | 6 | This section assumes that you already have a working OpenStack 7 | environment with at least the following components installed: 8 | Compute, Image Service, Identity. 9 | 10 | Note that installation and configuration vary by distribution. 11 | 12 | .. toctree:: 13 | :maxdepth: 1 14 | 15 | install-compute-rdo.rst 16 | install-compute-ubuntu.rst 17 | -------------------------------------------------------------------------------- /doc/source/install/install-controller.rst: -------------------------------------------------------------------------------- 1 | .. _install_controller: 2 | 3 | Install and Configure Controller Services 4 | ========================================= 5 | 6 | This section assumes that you already have a working OpenStack 7 | environment with at least the following components installed: 8 | Compute, Image Service, Identity. 9 | 10 | Note that installation and configuration vary by distribution. 11 | 12 | Ceilometer 13 | ---------- 14 | 15 | .. toctree:: 16 | :maxdepth: 1 17 | 18 | install-base-rdo.rst 19 | install-base-ubuntu.rst 20 | 21 | Additional steps are required to configure services to interact with 22 | ceilometer: 23 | 24 | Cinder 25 | ------ 26 | 27 | .. toctree:: 28 | :maxdepth: 1 29 | 30 | cinder/install-cinder-rdo.rst 31 | cinder/install-cinder-ubuntu.rst 32 | 33 | Glance 34 | ------ 35 | 36 | .. toctree:: 37 | :maxdepth: 1 38 | 39 | glance/install-glance-rdo.rst 40 | glance/install-glance-ubuntu.rst 41 | 42 | Heat 43 | ---- 44 | 45 | .. toctree:: 46 | :maxdepth: 1 47 | 48 | heat/install-heat-rdo.rst 49 | heat/install-heat-ubuntu.rst 50 | 51 | Keystone 52 | -------- 53 | 54 | To enable auditing of API requests, Keystone provides middleware which captures 55 | API requests to a service and emits data to Ceilometer. Instructions to enable 56 | this functionality is available in `Keystone's developer documentation 57 | `_. 58 | Ceilometer will captures this information as ``audit.http.*`` events. 59 | 60 | Neutron 61 | ------- 62 | 63 | .. toctree:: 64 | :maxdepth: 1 65 | 66 | neutron/install-neutron-rdo.rst 67 | neutron/install-neutron-ubuntu.rst 68 | 69 | Swift 70 | ----- 71 | 72 | .. toctree:: 73 | :maxdepth: 1 74 | 75 | swift/install-swift-rdo.rst 76 | swift/install-swift-ubuntu.rst 77 | -------------------------------------------------------------------------------- /doc/source/install/neutron/install-neutron-rdo.rst: -------------------------------------------------------------------------------- 1 | Enable Networking service meters for Red Hat Enterprise Linux and CentOS 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses notifications to collect Networking service meters. Perform 5 | these steps on the controller node. 6 | 7 | Configure the Networking service to use Telemetry 8 | ------------------------------------------------- 9 | 10 | * Edit the ``/etc/neutron/neutron.conf`` and complete the following actions: 11 | 12 | * In the ``[oslo_messaging_notifications]`` sections, enable notifications: 13 | 14 | .. code-block:: ini 15 | 16 | [oslo_messaging_notifications] 17 | ... 18 | driver = messagingv2 19 | 20 | Finalize installation 21 | --------------------- 22 | 23 | * Restart the Networking service: 24 | 25 | .. code-block:: console 26 | 27 | # systemctl restart neutron-server.service 28 | -------------------------------------------------------------------------------- /doc/source/install/neutron/install-neutron-ubuntu.rst: -------------------------------------------------------------------------------- 1 | Enable Networking service meters for Ubuntu 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses notifications to collect Networking service meters. Perform 5 | these steps on the controller node. 6 | 7 | Configure the Networking service to use Telemetry 8 | ------------------------------------------------- 9 | 10 | * Edit the ``/etc/neutron/neutron.conf`` and complete the following actions: 11 | 12 | * In the ``[oslo_messaging_notifications]`` sections, enable notifications: 13 | 14 | .. code-block:: ini 15 | 16 | [oslo_messaging_notifications] 17 | ... 18 | driver = messagingv2 19 | 20 | Finalize installation 21 | --------------------- 22 | 23 | * Restart the Networking service: 24 | 25 | .. code-block:: console 26 | 27 | # service neutron-server restart 28 | -------------------------------------------------------------------------------- /doc/source/install/next-steps.rst: -------------------------------------------------------------------------------- 1 | .. _next-steps: 2 | 3 | Next steps 4 | ~~~~~~~~~~ 5 | 6 | Your OpenStack environment now includes the ceilometer service. 7 | 8 | To add additional services, see the 9 | `OpenStack Installation Tutorials and Guides `_. 10 | -------------------------------------------------------------------------------- /doc/source/install/swift/install-swift-config-common.inc: -------------------------------------------------------------------------------- 1 | Configure Object Storage to use Telemetry 2 | ----------------------------------------- 3 | 4 | Perform these steps on the controller and any other nodes that 5 | run the Object Storage proxy service. 6 | 7 | * Edit the ``/etc/swift/proxy-server.conf`` file 8 | and complete the following actions: 9 | 10 | * In the ``[filter:keystoneauth]`` section, add the 11 | ``ResellerAdmin`` role: 12 | 13 | .. code-block:: ini 14 | 15 | [filter:keystoneauth] 16 | ... 17 | operator_roles = admin, user, ResellerAdmin 18 | 19 | * In the ``[pipeline:main]`` section, add ``ceilometer``: 20 | 21 | .. code-block:: ini 22 | 23 | [pipeline:main] 24 | pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging ceilometer proxy-server 25 | 26 | * In the ``[filter:ceilometer]`` section, configure notifications: 27 | 28 | .. code-block:: ini 29 | 30 | [filter:ceilometer] 31 | paste.filter_factory = ceilometermiddleware.swift:filter_factory 32 | ... 33 | control_exchange = swift 34 | url = rabbit://openstack:RABBIT_PASS@controller:5672/ 35 | driver = messagingv2 36 | topic = notifications 37 | log_level = WARN 38 | 39 | Replace ``RABBIT_PASS`` with the password you chose for the 40 | ``openstack`` account in ``RabbitMQ``. 41 | -------------------------------------------------------------------------------- /doc/source/install/swift/install-swift-prereq-common.inc: -------------------------------------------------------------------------------- 1 | Prerequisites 2 | ------------- 3 | 4 | The Telemetry service requires access to the Object Storage service 5 | using the ``ResellerAdmin`` role. Perform these steps on the controller 6 | node. 7 | 8 | #. Source the ``admin`` credentials to gain access to admin-only 9 | CLI commands. 10 | 11 | .. code-block:: console 12 | 13 | $ . admin-openrc 14 | 15 | #. Create the ``ResellerAdmin`` role: 16 | 17 | .. code-block:: console 18 | 19 | $ openstack role create ResellerAdmin 20 | +-----------+----------------------------------+ 21 | | Field | Value | 22 | +-----------+----------------------------------+ 23 | | domain_id | None | 24 | | id | 462fa46c13fd4798a95a3bfbe27b5e54 | 25 | | name | ResellerAdmin | 26 | +-----------+----------------------------------+ 27 | 28 | #. Add the ``ResellerAdmin`` role to the ``ceilometer`` user: 29 | 30 | .. code-block:: console 31 | 32 | $ openstack role add --project service --user ceilometer ResellerAdmin 33 | 34 | .. note:: 35 | 36 | This command provides no output. 37 | -------------------------------------------------------------------------------- /doc/source/install/swift/install-swift-rdo.rst: -------------------------------------------------------------------------------- 1 | Enable Object Storage meters for Red Hat Enterprise Linux and CentOS 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses a combination of polling and notifications to collect 5 | Object Storage meters. 6 | 7 | .. note:: 8 | 9 | Your environment must include the Object Storage service. 10 | 11 | .. include:: install-swift-prereq-common.inc 12 | 13 | Install components 14 | ------------------ 15 | 16 | * Install the packages: 17 | 18 | .. code-block:: console 19 | 20 | # dnf install python3-ceilometermiddleware 21 | 22 | .. include:: install-swift-config-common.inc 23 | 24 | Finalize installation 25 | --------------------- 26 | 27 | * Restart the Object Storage proxy service: 28 | 29 | .. code-block:: console 30 | 31 | # systemctl restart openstack-swift-proxy.service 32 | -------------------------------------------------------------------------------- /doc/source/install/swift/install-swift-ubuntu.rst: -------------------------------------------------------------------------------- 1 | Enable Object Storage meters for Ubuntu 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3 | 4 | Telemetry uses a combination of polling and notifications to collect 5 | Object Storage meters. 6 | 7 | .. note:: 8 | 9 | Your environment must include the Object Storage service. 10 | 11 | .. include:: install-swift-prereq-common.inc 12 | 13 | Install components 14 | ------------------ 15 | 16 | * Install the packages: 17 | 18 | .. code-block:: console 19 | 20 | # apt-get install python-ceilometermiddleware 21 | 22 | .. include:: install-swift-config-common.inc 23 | 24 | Finalize installation 25 | --------------------- 26 | 27 | * Restart the Object Storage proxy service: 28 | 29 | .. code-block:: console 30 | 31 | # service swift-proxy restart 32 | -------------------------------------------------------------------------------- /doc/source/releasenotes/index.rst: -------------------------------------------------------------------------------- 1 | .. 2 | Copyright 2012 New Dream Network, LLC (DreamHost) 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | not use this file except in compliance with the License. You may obtain 6 | a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | License for the specific language governing permissions and limitations 14 | under the License. 15 | 16 | ============================ 17 | Release Notes 18 | ============================ 19 | 20 | .. toctree:: 21 | :hidden: 22 | 23 | folsom 24 | 25 | * :ref:`folsom` 26 | * `Havana`_ 27 | * `Icehouse`_ 28 | * `Juno`_ 29 | * `Kilo`_ 30 | * `Liberty`_ 31 | 32 | Since Mitaka development cycle, we start to host release notes on 33 | `Ceilometer Release Notes`_ 34 | 35 | .. _Havana: https://wiki.openstack.org/wiki/ReleaseNotes/Havana#OpenStack_Metering_.28Ceilometer.29 36 | .. _IceHouse: https://wiki.openstack.org/wiki/ReleaseNotes/Icehouse#OpenStack_Telemetry_.28Ceilometer.29 37 | .. _Juno: https://wiki.openstack.org/wiki/ReleaseNotes/Juno#OpenStack_Telemetry_.28Ceilometer.29 38 | .. _Kilo: https://wiki.openstack.org/wiki/ReleaseNotes/Kilo#OpenStack_Telemetry_.28Ceilometer.29 39 | .. _Liberty: https://wiki.openstack.org/wiki/ReleaseNotes/Liberty#OpenStack_Telemetry_.28Ceilometer.29 40 | .. _Ceilometer Release Notes: https://docs.openstack.org/releasenotes/ceilometer/ 41 | -------------------------------------------------------------------------------- /etc/ceilometer/ceilometer-config-generator.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | output_file = etc/ceilometer/ceilometer.conf 3 | wrap_width = 79 4 | namespace = ceilometer 5 | namespace = ceilometer-auth 6 | namespace = oslo.cache 7 | namespace = oslo.concurrency 8 | namespace = oslo.log 9 | namespace = oslo.messaging 10 | namespace = oslo.reports 11 | namespace = oslo.service.service 12 | -------------------------------------------------------------------------------- /etc/ceilometer/examples/osprofiler_event_definitions.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - event_type: profiler.* 3 | traits: 4 | project: 5 | fields: payload.project 6 | service: 7 | fields: payload.service 8 | name: 9 | fields: payload.name 10 | base_id: 11 | fields: payload.base_id 12 | trace_id: 13 | fields: payload.trace_id 14 | parent_id: 15 | fields: payload.parent_id 16 | timestamp: 17 | fields: payload.timestamp 18 | host: 19 | fields: payload.info.host 20 | path: 21 | fields: payload.info.request.path 22 | query: 23 | fields: payload.info.request.query 24 | method: 25 | fields: payload.info.request.method 26 | scheme: 27 | fields: payload.info.request.scheme 28 | db.statement: 29 | fields: payload.info.db.statement 30 | db.params: 31 | fields: payload.info.db.params 32 | -------------------------------------------------------------------------------- /etc/ceilometer/polling.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | sources: 3 | - name: some_pollsters 4 | interval: 300 5 | meters: 6 | - power.state 7 | - cpu 8 | - memory.usage 9 | - network.incoming.bytes 10 | - network.incoming.packets 11 | - network.outgoing.bytes 12 | - network.outgoing.packets 13 | - disk.device.read.bytes 14 | - disk.device.read.requests 15 | - disk.device.write.bytes 16 | - disk.device.write.requests 17 | - volume.size 18 | - volume.snapshot.size 19 | - volume.backup.size 20 | -------------------------------------------------------------------------------- /etc/ceilometer/polling_all.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | sources: 3 | - name: all_pollsters 4 | interval: 300 5 | meters: 6 | - "*" 7 | -------------------------------------------------------------------------------- /etc/ceilometer/rootwrap.conf: -------------------------------------------------------------------------------- 1 | # Configuration for ceilometer-rootwrap 2 | # This file should be owned by (and only-writeable by) the root user 3 | 4 | [DEFAULT] 5 | # List of directories to load filter definitions from (separated by ','). 6 | # These directories MUST all be only writeable by root ! 7 | filters_path=/etc/ceilometer/rootwrap.d,/usr/share/ceilometer/rootwrap 8 | 9 | # List of directories to search executables in, in case filters do not 10 | # explicitely specify a full path (separated by ',') 11 | # If not specified, defaults to system PATH environment variable. 12 | # These directories MUST all be only writeable by root ! 13 | exec_dirs=/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/sbin,/usr/local/bin 14 | 15 | # Enable logging to syslog 16 | # Default value is False 17 | use_syslog=False 18 | 19 | # Which syslog facility to use. 20 | # Valid values include auth, authpriv, syslog, user0, user1... 21 | # Default value is 'syslog' 22 | syslog_log_facility=syslog 23 | 24 | # Which messages to log. 25 | # INFO means log all usage 26 | # ERROR means only log unsuccessful attempts 27 | syslog_log_level=ERROR 28 | -------------------------------------------------------------------------------- /etc/ceilometer/rootwrap.d/ipmi.filters: -------------------------------------------------------------------------------- 1 | # ceilometer-rootwrap command filters for IPMI capable nodes 2 | # This file should be owned by (and only-writeable by) the root user 3 | 4 | [Filters] 5 | privsep-rootwrap-sys_admin: RegExpFilter, privsep-helper, root, privsep-helper, --config-file, /etc/(?!\.\.).*, --privsep_context, ceilometer.privsep.sys_admin_pctxt, --privsep_sock_path, /tmp/.* 6 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["pbr>=6.0.0", "setuptools>=64.0.0"] 3 | build-backend = "pbr.build" 4 | -------------------------------------------------------------------------------- /releasenotes/notes/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/releasenotes/notes/.placeholder -------------------------------------------------------------------------------- /releasenotes/notes/add-aodh-metrics-afbe9b780fd137d6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Ceilometer is now able to poll the /metrics endpoint in Aodh to get 5 | evaluation results metrics. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-availability_zone-gnocchi-instance-15170e4966a89d63.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add availability_zone attribute to gnocchi instance resources. 5 | Populates this attribute by consuming instance.create.end events. 6 | upgrade: 7 | - | 8 | To take advantage of this new feature you will need to update your 9 | gnocchi_resources.yaml file. See the example file for an example. 10 | You will need to ensure all required attributes of an instance 11 | are specified in the event_attributes. -------------------------------------------------------------------------------- /releasenotes/notes/add-db-legacy-clean-tool-7b3e3714f414c448.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1578128 `_] 5 | Add a tool that allow users to drop the legacy alarm and alarm_history 6 | tables. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-disk-latency-metrics-9e5c05108a78c3d9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add `disk.device.read.latency` and `disk.device.write.latency` meters to 5 | capture total time used by read or write operations. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-disk-size-pollsters-6b819d067f9cf736.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``disk.ephemeral.size`` meter is now published as a compute pollster, 5 | in addition to the existing notification meter. 6 | - | 7 | The ``disk.root.size`` meter is now published as a compute pollster, 8 | in addition to the existing notification meter. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/add-full-snmpv3-usm-support-ab540c902fa89b9d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1597618 `_] 5 | Add the full support of snmp v3 user security model. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-ipmi-sensor-data-gnocchi-70573728499abe86.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | `ceilometer-upgrade` must be run to build IPMI sensor resource in Gnocchi. 5 | fixes: 6 | - | 7 | Ceilometer previously did not create IPMI sensor data from IPMI agent or 8 | Ironic in Gnocchi. This data is now pushed to Gnocchi. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/add-json-output-to-file-publisher-786380cb7e21b56b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Add new json output option for the existing file publisher. 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-loadbalancer-resource-type-a73c29594b72f012.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | [`bug 1848286 `_] 5 | Enable load balancer metrics by adding the loadbalancer resource type, 6 | allowing Gnocchi to capture measurement data for Octavia load balancers. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-magnum-event-4c75ed0bb268d19c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Added support for magnum bay CRUD events, event_type 5 | is 'magnum.bay.*'. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-map-trait-plugin-0d969f5cc7b18175.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A ``map`` event trait plugin has been added. 5 | This allows notification meter attributes to be created 6 | by mapping one set of values from an attribute to another 7 | set of values defined in the meter definition. 8 | Additional options are also available for controlling 9 | how to handle edge cases, such as unknown values and 10 | case sensitivity. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/add-memory-swap-metric-f1633962ab2cf0f6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add memory swap metric for VM, including 'memory.swap.in' and 4 | 'memory.swap.out'. 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-parameter-for-disabled-projects-381da4543fff071d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``[polling] ignore_disabled_projects`` option has been added. This 5 | option allows polling agent to only parse enabled projects, to reduce 6 | procese time in case many projects are disabled. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-pool-size-metrics-cdecb979135bba85.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added the following meters to the central agent to capture these metrics 5 | for each storage pool by API. 6 | 7 | - `volume.provider.pool.capacity.total` 8 | - `volume.provider.pool.capacity.free` 9 | - `volume.provider.pool.capacity.provisioned` 10 | - `volume.provider.pool.capacity.virtual_free` 11 | - `volume.provider.pool.capacity.allocated` 12 | -------------------------------------------------------------------------------- /releasenotes/notes/add-power-state-metric-cdfbb3098b50a704.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added the new power.state metric from virDomainState. 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-swift-storage_policy-attribute-322fbb5716c5bb10.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``storage_policy`` resource metadata attribute has been added to the 5 | ``swift.containers.objects`` and ``swift.containers.objects.size`` meters, 6 | populated from already performed Swift account ``GET`` requests. 7 | This functionality requires using a new version of Swift that adds the 8 | ``storage_policy`` attribute when listing containers in an account. 9 | Ceilometer is backwards compatible with Swift versions that do not 10 | provide this functionality, but ``storage_policy`` will be set to 11 | ``None`` in samples and Gnocchi resources. 12 | - | 13 | An optional ``storage_policy`` attribute has been added to the 14 | ``swift_account`` Gnocchi resource type, to store the storage policy for 15 | Swift containers in Gnocchi. For Swift accounts, ``storage_policy`` will 16 | be set to ``None``. 17 | upgrade: 18 | - | 19 | To publish the ``storage_policy`` attribute for Swift containers, 20 | ``gnocchi_resources.yaml`` will need to be updated to the latest version. 21 | Swift in the target OpenStack cloud will also need upgrading to add 22 | support for providing the storage policy when listing containers. 23 | -------------------------------------------------------------------------------- /releasenotes/notes/add-tenant-name-discovery-668260bb4b2b0e8c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Identify user and projects names with the help of their UUIDs 5 | in the polled samples. If they are identified, set "project_name" 6 | and "user_name" fields in the sample to the corresponding values. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-tool-for-migrating-data-to-gnocchi-cea8d4db68ce03d0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - > 4 | Add a tool for migrating metrics data from Ceilometer's native storage 5 | to Gnocchi. Since we have deprecated Ceilometer API and the Gnocchi will 6 | be the recommended metrics data storage backend. 7 | 8 | -------------------------------------------------------------------------------- /releasenotes/notes/add-upgrade-check-framework-d78858c54cb85f91.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Added new tool ``ceilometer-status upgrade check``. 4 | features: 5 | - | 6 | New framework for ``ceilometer-status upgrade check`` command is added. 7 | This framework allows adding various checks which can be run before a 8 | Ceilometer upgrade to ensure if the upgrade can be performed safely. 9 | upgrade: 10 | - | 11 | Operator can now use new CLI tool ``ceilometer-status upgrade check`` 12 | to check if Ceilometer deployment can be safely upgraded from 13 | N-1 to N release. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/add-volume-pollster-metadata-d7b435fed9aac0aa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Add volume.volume_type_id and backup.is_incremental metadata for cinder 5 | pollsters. Also user_id information is now included for backups with the 6 | generated samples. 7 | upgrade: 8 | - > 9 | The cinder api microversion has been increased from Pike to Wallaby 10 | version (3.64) for volume/snapshot/backup related pollsters. 11 | These might not work until the cinder API has been upgraded up to this 12 | microversion. 13 | -------------------------------------------------------------------------------- /releasenotes/notes/add-volume_type_id-attr-f29af86534907941.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added the ``volume_type_id`` attribute to ``volume.size`` notification 5 | samples, which stores the ID for the volume type of the given volume. 6 | - | 7 | Added the ``volume_type_id`` attribute to ``volume`` resources in Gnocchi, 8 | which stores the ID for the volume type of the given volume. 9 | upgrade: 10 | - | 11 | ``meters.yaml`` has been updated with changes to the ``volume.size`` 12 | notification meter. If you override this file in your deployment, 13 | it needs to be updated. 14 | - | 15 | ``gnocchi_resources.yaml`` has been updated with changes to the 16 | ``volume`` resource type. If you override this file in your deployment, 17 | it needs to be updated. 18 | -------------------------------------------------------------------------------- /releasenotes/notes/aggregator-transformer-timeout-e0f42b6c96aa7ada.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1531626 `_] 5 | Ensure aggregator transformer timeout is honoured if size is not provided. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/always-requeue-7a2df9243987ab67.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | critical: 3 | - > 4 | The previous configuration options default for 5 | ``requeue_sample_on_dispatcher_error`` and 6 | ``requeue_event_on_dispatcher_error`` allowed to lose data very easily: if 7 | the dispatcher failed to send data to the backend (e.g. Gnocchi is down), 8 | then the dispatcher raised and the data were lost forever. This was 9 | completely unacceptable, and nobody should be able to configure Ceilometer 10 | in that way." 11 | 12 | upgrade: 13 | - > 14 | The options ``requeue_event_on_dispatcher_error`` and 15 | ``requeue_sample_on_dispatcher_error`` have been enabled and removed. 16 | -------------------------------------------------------------------------------- /releasenotes/notes/batch-messaging-d126cc525879d58e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Add support for batch processing of messages from queue. This will allow 5 | the collector and notification agent to grab multiple messages per thread 6 | to enable more efficient processing. 7 | upgrade: 8 | - > 9 | batch_size and batch_timeout configuration options are added to both 10 | [notification] and [collector] sections of configuration. The batch_size 11 | controls the number of messages to grab before processing. Similarly, 12 | the batch_timeout defines the wait time before processing. 13 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1929178-a8243526ce2311f7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``[coordination] check_watchers`` parameter has been deprecated since 5 | it has been ineffective. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-2007108-dba7163b245ad8fd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | [`bug 2007108 `_] 5 | The retired metrics dependent on SNMP have been removed from the default 6 | ``polling.yaml``. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/cache-json-parsers-888307f3b6b498a2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1550436 `_] 5 | Cache json parsers when building parsing logic to handle event and 6 | meter definitions. This will improve agent startup and setup time. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/ceilometer-api-deprecate-862bfaa54e80fa01.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - Ceilometer API is deprecated. Use the APIs from Aodh (alarms), 4 | Gnocchi (metrics), and/or Panko (events). 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/ceilometer-api-removal-6bd44d3eab05e593.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated Ceilometer API has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/ceilometer-event-api-removed-49c57835e307b997.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - >- 4 | The Events API (exposed at /v2/events) which was deprecated has been 5 | removed. The Panko project is now responsible for providing this API and can 6 | be installed separately. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/cinder-capacity-samples-de94dcfed5540b6c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add support to capture volume capacity usage details from cinder. This 5 | data is extracted from notifications sent by Cinder starting in Ocata. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/cinder-volume-size-poller-availability_zone-2d20a7527e2341b9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The resource metadata for the Cinder volume size poller now includes 5 | the availability zone field. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/compute-discovery-interval-d19f7c9036a8c186.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | To minimise load on Nova API, an additional configuration option was added 5 | to control discovery interval vs metric polling interval. If 6 | resource_update_interval option is configured in compute section, the 7 | compute agent will discover new instances based on defined interval. The 8 | agent will continue to poll the discovered instances at the interval 9 | defined by pipeline. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/configurable-data-collector-e247aadbffb85243.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | [`bug 1480333 `_] 5 | Support ability to configure collector to capture events or meters mutually 6 | exclusively, rather than capturing both always. 7 | other: 8 | - > 9 | Configure individual dispatchers by specifying meter_dispatchers and 10 | event_dispatchers in configuration file. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/cors-support-70c33ba1f6825a7b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Support for CORS is added. More information can be found 5 | [`here `_] 6 | upgrade: 7 | - > 8 | The api-paste.ini file can be modified to include or exclude the CORs 9 | middleware. Additional configurations can be made to middleware as well. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-aggregated-disk-metrics-54a395c05e74d685.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | disk.* aggregated metrics for instance are deprecated, in favor of the 5 | per disk metrics (disk.device.*). Now, it's up to the backend to provide 6 | such aggregation feature. Gnocchi already provides this. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-ceilometer-collector-b793b91cd28b9e7f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Because of deprecating the collector, the default publishers in 5 | pipeline.yaml and event_pipeline.yaml are now changed using database 6 | instead of notifier. 7 | deprecations: 8 | - | 9 | Collector is no longer supported in this release. The collector 10 | introduces lags in pushing data to backend. To optimize the 11 | architecture, Ceilometer push data through dispatchers using 12 | publishers in notification agent directly. 13 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-contrail-256177299deb6926.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Support for OpenContrail, which is currently known as Tungsten Fabric, has 5 | been deprecated and will be removed in a future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-events-6561f4059fa25c02.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The Ceilometer event subsystem and pipeline is now deprecated and will be 5 | removed in a future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-file-dispatcher-2aff376db7609136.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - With collector service being deprecated, we now have to 4 | address the duplication between dispatchers and publishers. 5 | The file dispatcher is now marked as deprecated. Use the 6 | file publisher to push samples into a file. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-generic-hardware-declarative-pollstar-dfa418bf6a5e0459.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | ``GenericHardwareDeclarativePollster`` has been deprecated and will be 5 | removed in a future release. This pollster was designed to be used in 6 | TripleO deployment to gather hardware metrics from overcloud nodes but 7 | Telemetry services are no longer deployed in undercloud in current TripleO. 8 | 9 | - | 10 | The ``NodesDiscoveryTripleO`` discovery plugin has been deprecated and 11 | will be removed in a future release. This plugin is designed for TripleO 12 | deployment but no longer used since Telemetry services were removed from 13 | undercloud. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-http-control-exchanges-026a8de6819841f8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Allow users to add additional exchanges in ceilometer.conf instead of 5 | hardcoding exchanges. Now original http_control_exchanges is being deprecated 6 | and renamed notification_control_exchanges. Besides, the new option is integrated 7 | with other exchanges in default EXCHANGE_OPTS to make it available to extend 8 | additional exchanges. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-http-dispatcher-dbbaacee8182b550.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Configuration values can passed in via the querystring of publisher in 4 | pipeline. For example, rather than setting target, timeout, verify_ssl, 5 | and batch_mode under [dispatcher_http] section of conf, you can specify 6 | http:///?verify_ssl=True&batch=True&timeout=10. Use `raw_only=1` 7 | if only the raw details of event are required. 8 | deprecations: 9 | - As the collector service is being deprecated, the duplication of publishers 10 | and dispatchers is being addressed. The http dispatcher is now marked 11 | as deprecated and the recommended path is to use http publisher. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-http_timeout-ce98003e4949f9d9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``[DEFAULT] http_timeout`` option has been deprecated because it is 5 | unused. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-kafka-publisher-17b4f221758e15da.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Ceilometer supports generic notifier to publish data and allow user to 5 | customize parameters such as topic, transport driver and priority. The 6 | publisher configuration in pipeline.yaml can be 7 | notifer://[notifier_ip]:[notifier_port]?topic=[topic]&driver=driver&max_retry=100 8 | Not only rabbit driver, but also other driver like kafka can be used. 9 | deprecations: 10 | - | 11 | Kafka publisher is deprecated to use generic notifier instead. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-neutron-fwaas-e985afe956240c08.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Support for Neutron FWaaS has been officially deprecated. The feature has 5 | been useless since the Neutron FWaaS project was retired. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-neutron-lbaas-5a36406cbe44bbe3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Support for Neutron LBaaS has been officially deprecated. The feature has 5 | been useless since the Neutron LBaaS project was retired. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-odl-07e3f59165612566.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Support for OpenDaylight has been deprecated and will be removed in 5 | a future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-pollster-list-ccf22b0dea44f043.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Deprecating support for enabling pollsters via command line. Meter and 5 | pollster enablement should be configured via polling.yaml file. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-vmware-ae49e07e40e74577.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Support for VMWare vSphere has been deprecated, because the vmwareapi 5 | virt driver in nova has been marked experimental and may be removed in 6 | a future release. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-windows-support-d784b975ce878864.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Support for running Ceilometer in Windows operating systems has been 5 | deprecated because of retirement of the Winstackers project. Because of 6 | this, Hyper-V inspector is also deprecated. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-xen-support-27600e2bf7be548c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Support for XenServer/Xen Cloud Platform has been deprecated and will be 5 | removed in a future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecated_database_event_dispatcher_panko-607d558c86a90f17.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - The event database dispatcher is now deprecated. It has been moved to a new 4 | project, alongside the Ceilometer API for /v2/events, called Panko. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-collector-4c207b35d67b2977.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The collector service is removed. From Ocata, it's possible to edit the 5 | pipeline.yaml and event_pipeline.yaml files and modify the publisher to 6 | provide the same functionality as collector dispatcher. You may change 7 | publisher to 'gnocchi', 'http', 'panko', or any combination of available 8 | publishers listed in documentation. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-image-meter-9c9b6cebd546dae7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | In an effort to minimise the noise, Ceilometer will no longer produce 4 | meters which have no measurable data associated with it. Image meter 5 | only captures state information which is already captured in events and 6 | other meters. 7 | upgrade: 8 | - Any existing commands utilising `image` meter should be switched to 9 | `image.size` meter which will provide equivalent functionality 10 | deprecations: 11 | - The `image` meter is dropped in favour of `image.size` meter. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-instance-meter-1b657717b21a0f55.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Samples are required to measure some aspect of a resource. Samples not 4 | measuring anything will be dropped. 5 | upgrade: 6 | - The `instance` meter no longer will be generated. For equivalent 7 | functionality, perform the exact same query on any compute meter such as 8 | `cpu`, `disk.read.requests`, `memory.usage`, `network.incoming.bytes`, 9 | etc... 10 | deprecations: 11 | - The `instance` meter no longer will be generated. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-kwapi-b687bc476186d01b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Previously deprecated kwapi meters are not removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-py-2-7-87352d5763131c13.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Python 2.7 support has been dropped. Last release of ceilometer 5 | to support py2.7 is OpenStack Train. The minimum version of Python now 6 | supported by ceilometer is Python 3.6. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-python-3-6-and-3-7-f67097fa6894da52.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Python 3.6 & 3.7 support has been dropped. The minimum version of Python now 5 | supported is Python 3.8. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/dynamic-pollster-system-6b45c8c973201b2b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add dynamic pollster system. The dynamic pollster system enables operators 5 | to gather new metrics on the fly (without needing to code pollsters). -------------------------------------------------------------------------------- /releasenotes/notes/dynamic-pollster-system-for-non-openstack-apis-4e06694f223f34f3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add the support for non-OpenStack APIs in the dynamic pollster system. 5 | This extension enables operators to create pollster on the fly to handle 6 | metrics from systems such as the RadosGW API. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/dynamic-pollster-url-joins-6cdb01c4015976f7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | When using dynamic pollsters to query OpenStack APIs, if the endpoint URL 5 | returned by Keystone does not have a trailing slash and ``url_path`` is 6 | a relative path, the ``url_path`` configured in the dynamic pollster would 7 | replace sections of the endpoint URL instead of being appended to the end 8 | of the URL. This behaviour has now been changed so that ``url_path`` 9 | values that do not start with a ``/`` are always appended to the end of 10 | endpoint URLs. 11 | This change may require existing dynamic pollsters that rely on this 12 | behaviour to be changed, but this allows dynamic pollsters to be added 13 | for OpenStack services that append the active project ID to the API 14 | endpoint URL (e.g. Trove). 15 | -------------------------------------------------------------------------------- /releasenotes/notes/enable-promethus-exporter-tls-76e78d4f4a52c6c4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Enhanced the Prometheus exporter to support TLS for exposing metrics securely. -------------------------------------------------------------------------------- /releasenotes/notes/event-type-race-c295baf7f1661eab.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1254800 `_] 5 | Add better support to catch race conditions when creating event_types 6 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-1940660-5226988f2e7ae1bd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1940660 `_] 5 | Fixes an issue with the Swift pollster where the ``[service_credentials] 6 | cafile`` option was not used. This could prevent communication with 7 | TLS-enabled Swift APIs. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-agent-coordination-a7103a78fecaec24.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | critical: 3 | - > 4 | [`bug 1533787 `_] 5 | Fix an issue where agents are not properly getting registered to group 6 | when multiple notification agents are deployed. This can result in 7 | bad transformation as the agents are not coordinated. It is still 8 | recommended to set heartbeat_timeout_threshold = 0 in 9 | [oslo_messaging_rabbit] section when deploying multiple agents. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-aggregation-transformer-9472aea189fa8f65.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1539163 `_] 5 | Add ability to define whether to use first or last timestamps when 6 | aggregating samples. This will allow more flexibility when chaining 7 | transformers. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-floatingip-pollster-f5172060c626b19e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1536338 `_] 5 | Patch was added to fix the broken floatingip pollster 6 | that polled data from nova api, but since the nova api 7 | filtered the data by tenant, ceilometer was not getting 8 | any data back. The fix changes the pollster to use the 9 | neutron api instead to get the floating ip info. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-network-lb-bytes-sample-5dec2c6f3a8ae174.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1530793 `_] 5 | network.services.lb.incoming.bytes meter was previous set to incorrect 6 | type. It should be a gauge meter. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-notification-batch-9bb42cbdf817e7f9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | The ``[notification] batch_size`` parameter now takes effect to enable 5 | batch processing of notifications. The ``[notification] batch_timeout`` 6 | parameter has been restored at the same time to determine how much and 7 | how long notifications are kept. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-radosgw-name-6de6899ddcd7e06d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Use `radosgw.*` to enable/disable radosgw meters explicitly rather than 5 | `rgw.*` 6 | deprecations: 7 | - | 8 | Previously, to enable/disable radosgw.* meters, you must define entry_point 9 | name rather than meter name. This is corrected so you do not need to be 10 | aware of entry_point naming. Use `radosgw.*` to enable/disable radosgw 11 | meters explicitly rather than `rgw.*`. `rgw.*` support is deprecated 12 | and will be removed in Rocky. 13 | fixes: 14 | - | 15 | Fix ability to enable/disable radosgw.* meters explicitly 16 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-cache-1d8025dfc954f281.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Support resource caching in Gnocchi dispatcher to improve write 5 | performance to avoid additional queries. 6 | other: 7 | - > 8 | A dogpile.cache supported backend is required to enable cache. Additional 9 | configuration `options `_ 10 | are also required. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-cache-b9ad4d85a1da8d3f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 255569 `_] 5 | Fix caching support in Gnocchi dispatcher. Added better locking support 6 | to enable smoother cache access. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-client-42cd992075ee53ab.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Gnocchi dispatcher now uses client rather than direct http requests 5 | upgrade: 6 | - > 7 | gnocchiclient library is now a requirement if using ceilometer+gnocchi. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-host-metrics-829bcb965d8f2533.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | [`bug 1518338 `_] 5 | Add support for storing SNMP metrics in Gnocchi.This functionality requires 6 | Gnocchi v2.1.0 to be installed. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-no-metric-by-default-b643e09f5ffef2c4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | issues: 3 | - | 4 | Ceilometer created metrics that could never get measures depending on the 5 | polling configuration. Metrics are now created only if Ceilometer gets at 6 | least a measure for them. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-orchestration-3497c689268df0d1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - > 4 | gnocchi_resources.yaml in Ceilometer should be updated. 5 | fixes: 6 | - > 7 | Fix samples from Heat to map to correct Gnocchi resource type 8 | -------------------------------------------------------------------------------- /releasenotes/notes/gnocchi-udp-collector-00415e6674b5cc0f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1523124 `_] 5 | Fix gnocchi dispatcher to support UDP collector 6 | -------------------------------------------------------------------------------- /releasenotes/notes/handle-malformed-resource-definitions-ad4f69f898ced34d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1542189 `_] 5 | Handle malformed resource definitions in gnocchi_resources.yaml 6 | gracefully. Currently we raise an exception once we hit a bad 7 | resource and skip the rest. Instead the patch skips the bad 8 | resource and proceeds with rest of the definitions. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/http-dispatcher-batching-4e17fce46a196b07.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | In the [dispatcher_http] section of ceilometer.conf, batch_mode can be 5 | set to True to activate sending meters and events in batches, or 6 | False (default value) to send each meter and event with a fresh HTTP call. 7 | 8 | -------------------------------------------------------------------------------- /releasenotes/notes/http-dispatcher-verify-ssl-551d639f37849c6f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - In the [dispatcher_http] section of ceilometer.conf, verify_ssl can be 4 | set to True to use system-installed certificates (default value) or 5 | False to ignore certificate verification (use in development only!). 6 | verify_ssl can also be set to the location of a certificate file 7 | e.g. /some/path/cert.crt (use for self-signed certs) 8 | or to a directory of certificates. 9 | The value is passed as the 'verify' option to the underlying requests 10 | method, which is documented at 11 | http://docs.python-requests.org/en/master/user/advanced/#ssl-cert-verification 12 | -------------------------------------------------------------------------------- /releasenotes/notes/http-publisher-authentication-6371c5a9aa8d4c03.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - In the 'publishers' section of a meter/event pipeline definition, https:// 4 | can now be used in addition to http://. Furthermore, either Basic or 5 | client-certificate authentication can be used (obviously, client cert only 6 | makes sense in the https case). 7 | For Basic authentication, use the form http://username:password@hostname/. 8 | For client certificate authentication pass the client certificate's path 9 | (and the key file path, if the key is not in the certificate file) using 10 | the parameters 'clientcert' and 'clientkey', e.g. 11 | https://hostname/path?clientcert=/path/to/cert&clientkey=/path/to/key. 12 | Any parameters or credentials used for http(s) publishers are removed from 13 | the URL before the actual HTTP request is made. 14 | 15 | -------------------------------------------------------------------------------- /releasenotes/notes/http_proxy_to_wsgi_enabled-616fa123809e1600.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Ceilometer sets up the HTTPProxyToWSGI middleware in front of Ceilometer. The 4 | purpose of this middleware is to set up the request URL correctly in 5 | case there is a proxy (for instance, a loadbalancer such as HAProxy) 6 | in front of Ceilometer. 7 | So, for instance, when TLS connections are being terminated in the 8 | proxy, and one tries to get the versions from the / resource of 9 | Ceilometer, one will notice that the protocol is incorrect; It will show 10 | 'http' instead of 'https'. So this middleware handles such cases. 11 | Thus helping Keystone discovery work correctly. 12 | The HTTPProxyToWSGI is off by default and needs to be enabled via a 13 | configuration value. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/improve-events-rbac-support-f216bd7f34b02032.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - > 4 | To utilize the new policy support. The policy.json file 5 | should be updated accordingly. The pre-existing policy.json 6 | file will continue to function as it does if policy changes 7 | are not required. 8 | fixes: 9 | - > 10 | [`bug 1504495 `_] 11 | Configure ceilometer to handle policy.json rules when possible. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/include-monasca-publisher-1f47dde52af50feb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Include a publisher for the Monasca API. A ``monasca://`` pipeline sink 5 | will send data to a Monasca instance, using credentials configured in 6 | ceilometer.conf. This functionality was previously available in the 7 | Ceilosca project 8 | (https://github.com/openstack/monasca-ceilometer). 9 | -------------------------------------------------------------------------------- /releasenotes/notes/index-events-mongodb-63cb04200b03a093.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - > 4 | Run db-sync to add new indices. 5 | fixes: 6 | - > 7 | [`bug 1526793 `_] 8 | Additional indices were added to better support querying of event data. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/instance-discovery-new-default-7f9b451a515dddf4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Ceilometer legacy backends and Ceilometer API are now deprecated. Polling 5 | all nova instances from compute agent is no more required with Gnocchi. So 6 | we switch the [compute]instance_discovery_method to libvirt_metadata. 7 | To switch back to the old deprecated behavior you can set it back to 'naive'. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/instance-record-launched-created-deleted-d7f44df3bbcf0790.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | `launched_at`/`created_at`/`deleted_at` of Nova instances are now tracked. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/keystone-v3-fab1e257c5672965.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Add support for Keystone v3 authentication 5 | -------------------------------------------------------------------------------- /releasenotes/notes/kwapi_deprecated-c92b9e72c78365f0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - The Kwapi pollsters are deprecated and will be removed in the next major 4 | version of Ceilometer. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/less-nova-polling-ac56687da3f8b1a3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - The Ceilometer compute agent can now retrieve some instance metadata from 4 | the metadata libvirt API instead of polling the Nova API. Since Mitaka, 5 | Nova fills this metadata with some information about the instance. 6 | To enable this feature you should set [compute]/instance_discovery_method = 7 | libvirt_metadata in the configuration file. 8 | 9 | The only downside of this method is that user_metadata (and some other 10 | instance attributes) are no longer part of the samples created by the 11 | agent. But when Gnocchi is used as backend, this is not an issue since 12 | Gnocchi doesn't store resource metadata aside of the measurements. And the 13 | missing informations are still retrieved through the Nova notifications 14 | and will fully update the resource information in Gnocchi. 15 | upgrade: 16 | - If you are using Gnocchi as backend it's strongly 17 | recommended to switch [compute]/instance_discovery_method to 18 | libvirt_metadata. This will reduce the load on the Nova API 19 | especially if you have many compute nodes. 20 | deprecations: 21 | - The [compute]/workload_partitioning = True is deprecated in favor 22 | of [compute]/instance_discovery_method = workload_partitioning 23 | -------------------------------------------------------------------------------- /releasenotes/notes/lookup-meter-def-vol-correctly-0122ae429275f2a6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1536699 `_] 5 | Patch to fix volume field lookup in meter definition file. In case 6 | the field is missing in the definition, it raises a keyerror and 7 | aborts. Instead we should skip the missing field meter and continue 8 | with the rest of the definitions. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/make-instance-host-optional-972fa14405c1e2f6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``instance`` resource type has been updated to make the ``host`` 5 | resource attribute optional. This allows the hypervisor a compute instance 6 | is running on to be withheld from Gnocchi's resource metadata, which may 7 | be required for security reasons e.g. for public clouds. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/manager-based-ipc-queues-85e3bf59ffdfb0ac.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Workload partitioning of notification agent is now split into queues 5 | based on pipeline type (sample, event, etc...) rather than per individual 6 | pipeline. This will save some memory usage specifically for pipeline 7 | definitions with many source/sink combinations. 8 | upgrade: 9 | - | 10 | If workload partitioning of the notification agent is enabled, the 11 | notification agent should not run alongside pre-Queens agents. Doing so 12 | may result in missed samples when leveraging transformations. To upgrade 13 | without loss of data, set `notification_control_exchanges` option to 14 | empty so only existing `ceilometer-pipe-*` queues are processed. Once 15 | cleared, reset `notification_control_exchanges` option and launch the new 16 | notification agent(s). If `workload_partitioning` is not enabled, no 17 | special steps are required. 18 | -------------------------------------------------------------------------------- /releasenotes/notes/memory-bandwidth-meter-f86cf01178573671.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add two new meters, including memory.bandwidth.total and 4 | memory.bandwidth.local, to get memory bandwidth statistics 5 | based on Intel CMT feature. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/mongodb-handle-large-numbers-7c235598ca700f2d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1532661 `_] 5 | Fix statistics query failures due to large numbers stored in MongoDB. Data 6 | from MongoDB is returned as Int64 for big numbers when int and float types 7 | are expected. The data is cast to appropriate type to handle large data. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/network-statistics-from-opendaylight-787df77484d8d751.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Network Statistics From OpenDaylight. 4 | features: 5 | - Add a ceilometer driver to collect network 6 | statistics information using REST APIs exposed by 7 | network-statistics module in OpenDaylight. 8 | - Add support for network statistics meters with gnocchi 9 | -------------------------------------------------------------------------------- /releasenotes/notes/openstack-dynamic-pollsters-metadata-enrichment-703cf5914cf0c578.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | OpenStack Dynamic pollsters metadata enrichment with other OpenStack API's data. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/parallel_requests_option-a3f901b6001e26e4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new option named `max_parallel_requests` is available to control the 5 | maximum number of parallel requests that can be executed by the agents. 6 | This option also replaces the `poolsize` option of the HTTP publisher. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/parallels-virt_type-ee29c4802fdf5c8e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | The ``[DEFAULT] virt_type`` option now supports ``parallels``. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/pecan-debug-removed-dc737efbf911bde7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - The api.pecan_debug option has been removed. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/perf-events-meter-b06c2a915c33bfaf.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add four new meters, including perf.cpu.cycles for the number 4 | of cpu cycles one instruction needs, perf.instructions for the 5 | count of instructions, perf.cache_references for the count of 6 | cache hits and cache_misses for the count of caches misses. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/pipeline-fallback-polling-3d962a0fff49ccdd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated support of configure polling in the `pipeline.yaml` file has 5 | been removed. Ceilometer now only uses the `polling.yaml` file for polling 6 | configuration. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/polling-batch-size-7fe11925df8d1221.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Add support for configuring the size of samples the poller will send in 5 | each batch. 6 | upgrade: 7 | - > 8 | batch_size option added to [polling] section of configuration. 9 | Use batch_size=0 to disable batching of samples. 10 | deprecations: 11 | - > 12 | The option batch_polled_samples in the [DEFAULT] section is deprecated. 13 | Use batch_size option in [polling] to configure and/or disable batching. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/polling-definition-efffb92e3810e571.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Pipeline processing in polling agents was removed in Liberty cycle. A new 4 | polling specific definition file is created to handle polling functionality 5 | and pipeline definition file is now reserved exclusively for 6 | transformations and routing. The polling.yaml file follows the same syntax 7 | as the pipeline.yaml but only handles polling attributes such as interval, 8 | discovery, resources, meter matching. It is configured by setting cfg_file 9 | under the polling section.If no polling definition file is found, it will 10 | fallback to reuse pipeline_cfg_file. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/polling-deprecation-4d5b83180893c053.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Usage of pipeline.yaml for polling configuration is now deprecated. The 5 | dedicated polling.yaml should be used instead. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/prometheus-bcb201cfe46d5778.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new pulisher have been added to push data to Prometheus Pushgateway. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/publish-network-resources-with-invalid-state-6693c6fa1fefa097.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``ip.floating`` and ``network.services.vpn`` pollsters now publish 5 | samples for all found floating IPs and VPNs, even if they are known 6 | to have an unknown state, when they would previously be dropped. 7 | The volume of samples for such floating IPs and VPNs will be set to 8 | ``-1``. 9 | This improves visibility of floating IPs and VPNs with unknown states, 10 | allowing them to be monitored via samples and the Gnocchi metrics, 11 | making it easier to discover such resources for troubleshooting. 12 | It also moves some of the "business logic" for downstream rating/billing 13 | services such as CloudKitty out of Ceilometer itself. 14 | - | 15 | The ``network.services.vpn`` now publishes samples for VPNs with 16 | status ``ERROR``, when they would previously be dropped. 17 | The sample volume for VPNs in ``ERROR`` state is ``7``. 18 | -------------------------------------------------------------------------------- /releasenotes/notes/refresh-legacy-cache-e4dbbd3e2eeca70b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | A local cache is used when polling instance metrics to minimise calls Nova 5 | API. A new option is added `resource_cache_expiry` to configure a time to 6 | live for cache before it expires. This resolves issue where migrated 7 | instances are not removed from cache. This is only relevant when 8 | `instance_discovery_method` is set to `naive`. It is recommended to use 9 | `libvirt_metadata` if possible. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-alarms-4df3cdb4f1fb5faa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Ceilometer alarms code is now fully removed from code base. 5 | Equivalent functionality is handled by Aodh. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-batch_polled_samples-b40241c8aad3667d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Remove deprecated option `batch_polled_samples`. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-cadf-http-f8449ced3d2a29d4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Support for CADF-only payload in HTTP dispatcher is dropped as 5 | audit middleware in pyCADF was dropped in Kilo cycle. 6 | upgrade: 7 | - > 8 | audit middleware in keystonemiddleware library should be used for 9 | similar support. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-ceilometer-dbsync-53aa1b529f194f15.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - The deprecated ceilometer-dbsync has been removed. 4 | Use ceilometer-upgrade instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-check_watchers-a7c955703b6d9f57.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``[coordination] check_watchers`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-compute-disk-meters-264e686622886ff0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated `disk.*` meters have been removed. Use the `disk.device.*` 5 | meters instead. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-compute-rate-deprecated-meters-201893c6b686b04a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated meter for compute where removed: 5 | - disk.read.requests.rate 6 | - disk.write.requests.rate 7 | - disk.read.bytes.rate 8 | - disk.write.bytes.rate 9 | - disk.device.read.requests.rate 10 | - disk.device.write.requests.rate 11 | - disk.device.read.bytes.rate 12 | - disk.device.write.bytes.rate 13 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-compute-workload-partitioning-option-26538bc1e80500e3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated `compute.workload_partitioning` option has been removed in 5 | favor of `compute.instance_discovery_method`. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-direct-publisher-5785ee7edd16c4d9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Remove direct publisher and use the explicit publisher instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-eventlet-6738321434b60c78.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Remove eventlet from Ceilometer in favour of threaded approach 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-exchange-control-options-75ecd49423639068.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated control exchange options have been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-file-dispatcher-56ba1066c20d314a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated file dispatcher has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-generic-hardware-declarative-pollster-e05c614f273ab149.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | ``GenericHardwareDeclarativePollster`` has been removed. Because of this 5 | removal all metrics gathered by SNMP daemon have been removed as well. 6 | 7 | - | 8 | The ``NodesDiscoveryTripleO`` discovery plugin has been removed. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-gnocchi-dispatcher-dd588252976c2abb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The Gnocchi dispatcher has been removed and replaced by a native Gnocchi 5 | publisher. The configuration options from the `[dispatcher_gnocchi]` has 6 | been removed and should be passed via the URL in `pipeline.yaml`. The 7 | service authentication override can be done by adding specific credentials 8 | to a `[gnocchi]` section instead. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-gnocchi-dispatcher-options-4f4ba2a155c1a766.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated `gnocchi_dispatcher` option group has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-http-dispatcher-1afdce1d1dc3158d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated http dispatcher has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-intel-cmt-perf-meters-15d0fe72b2804f48.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following meters were removed. Nova removed support for Intel CMT 5 | perf events in 22.0.0, and these meters can no longer be measured since 6 | then. 7 | 8 | - ``cpu_l3_cache_usage`` 9 | - ``memory_bandwidth_local`` 10 | - ``memory_bandwidth_total`` 11 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-intel-node-manager-0889de66dede9ab0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for Intel Node Manager was removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-kafka-broker-publisher-7026b370cfc831db.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated kafka publisher has been removed, use NotifierPublisher instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-meter-definitions-cfg-file-config-476596fc86c36a81.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Remove deprecated option meter_definitions_cfg_file, use 5 | meter_definitions_dirs to configure meter notification file. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-meter-definitions-cfg-file-d57c726d563d805f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated `meter_definitions_cfg_file` option has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-monasca-d5ceda231839d43d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Remove integration with the inactive Monasca project 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-neutron-lbaas-d3d4a5327f6a167a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for neutron-lbaas resources has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-notification-workload-partitioning-2cef114fb2478e39.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated workload partitioning for notification agent has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-nova-http-log-option-64e97a511e58da5d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated `nova_http_log_debug` option has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-opencontrail-88656a9354179299.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for Open Contrail has been removed. Because no SDN is supported 5 | after the removal, the mechanism to pull metrics from SDN is also removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-opendaylight-c3839bbe9aa2a227.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for OpenDaylight has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-pollster-list-bda30d747fb87c9e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated `pollster-list` option has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-publisher-topic-options-7a40787a3998921d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The notifier publisher options `metering_topic` and `event_topic` are 5 | deprecated and will be removed. Use the `topic` query parameter in the 6 | notifier publisher URL instead. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-py38-80670bdcfd4dd135.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Python 3.8 support was dropped. The minimum version of Python now supported 5 | is Python 3.9. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-refresh-pipeline-618af089c5435db7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The pipeline dynamic refresh code has been removed. Ceilometer relies on 5 | the cotyledon library for a few releases which provides reload 6 | functionality by sending the SIGHUP signal to the process. This achieves 7 | the same feature while making sure the reload is explicit once the file is 8 | correctly and entirely written to the disk, avoiding the failing load of 9 | half-written files. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-rpc-collector-d0d0a354140fd107.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | RPC collector support is dropped. The queue-based notifier publisher and 5 | collector was added as the recommended alternative as of Icehouse cycle. 6 | upgrade: 7 | - > 8 | Pipeline.yaml files for agents should be updated to notifier:// or udp:// 9 | publishers. The rpc:// publisher is no longer supported. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-sahara-9254593d4fb137b9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Default value of the ``[notification] notification_control_exchanges`` 5 | option has been updated and ``sahara`` is no longer included by default. 6 | 7 | - | 8 | The default event definiton has been updated and no longer includes 9 | events for sahara. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-service-type-volume-v2-08c81098dc7c0922.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The deprecated ``[service_types] cinderv2`` option has been removed. Use 5 | the ``[service_types] cinder`` option instead. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-shuffle_time_before_polling_task-option-05a4d225236c64b1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The `shuffle_time_before_polling_task` option has been removed. This option 5 | never worked in the way it was originally intended too. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-transformers-14e00a789dedd76b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The support for transformers has been removed from the pipeline. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-uml-e86feeabdd16c628.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``[DEFAULT] virt_type`` option no longer supports ``uml``. UML support 5 | by nova was removed in nova 23.3.0 release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-vsphere-support-411c97b66bdcd264.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for VMware vSphere has been removed. 5 | 6 | deprecations: 7 | - | 8 | The ``[DEFAULT] hypervisor_inspector`` option has been deprecated, because 9 | libvirt is the only supported hypervisor currently. The option will be 10 | removed in a future release. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-windows-support-0d280cc7c7fffc61.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for running ceilometer in Windows operating systems has been 5 | removed. Because of the removal, Hyper-V inspector has also been removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-xen-support-7cb932b7bc621269.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for XenServer/Xen Cloud Platform has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/removed-rgw-ae3d80c2eafc9319.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Deprecated `rgw.*` meters have been removed. Use `radosgw.*` instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/rename-ceilometer-dbsync-eb7a1fa503085528.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Ceilometer backends are no more only databases but 4 | also REST API like Gnocchi. So ceilometer-dbsync binary 5 | name doesn't make a lot of sense and have been renamed 6 | ceilometer-upgrade. The new binary handles database 7 | schema upgrade like ceilometer-dbsync does, but it 8 | also handle any changes needed in configured ceilometer 9 | backends like Gnocchi. 10 | deprecations: 11 | - For backward compatibility reason we temporary 12 | keep ceilometer-dbsync, at least for one major version to 13 | ensure deployer have time update their tooling. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/rename-tenant_name_discovery-1675a236bb51176b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``[polling] tenant_name_discovery`` option has been deprecated in 5 | favor of the new ``[polling] identity_name_discovery`` option. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/save-rate-in-gnocchi-66244262bc4b7842.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Archive policies can now be configured per metrics in gnocchi_resources.yaml. 5 | A default list of archive policies is now created by Ceilometer. 6 | They are called "ceilometer-low-rate" for all IOs metrics and "ceilometer-low" 7 | for others. 8 | upgrade: 9 | - | 10 | Ceilometer now creates it own archive policies in Gnocchi and use them to 11 | create metrics in Gnocchi. Old metrics kept their current archive policies 12 | and will not be updated with ceilometer-upgrade. Only newly created metrics 13 | will be impacted. Archive policy can still be overridden with the publisher url 14 | (e.g: gnocchi://archive_policy=high). 15 | deprecations: 16 | - | 17 | cpu_util and \*.rate meters are deprecated and will be removed in future 18 | release in favor of the Gnocchi rate calculation equivalent. 19 | -------------------------------------------------------------------------------- /releasenotes/notes/scan-domains-for-tenants-8f8c9edcb74cc173.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - The tenant (project) discovery code in the polling agent now scans for 4 | tenants in all available domains. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/selective-pipeline-notification-47e8a390b1c7dcc4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The notification-agent can now be configured to either build meters or 5 | events. By default, the notification agent will continue to load both 6 | pipelines and build both data models. To selectively enable a pipeline, 7 | configure the `pipelines` option under the `[notification]` section. 8 | 9 | Addition pipelines can be created following the format used by existing 10 | pipelines. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/ship-yaml-files-33aa5852bedba7f0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | Ship YAML files to ceilometer/pipeline/data/ make it convenient 5 | to update all the files on upgrade. Users can copy yaml files from 6 | /usr/share/ceilometer and customise their own files located in 7 | /etc/ceilometer/. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/single-thread-pipelines-f9e6ac4b062747fe.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Batching is enabled by default now when coordinated workers are enabled. 4 | Depending on load, it is recommended to scale out the number of 5 | `pipeline_processing_queues` to improve distribution. `batch_size` should 6 | also be configured accordingly. 7 | fixes: 8 | - Fix to improve handling messages in environments heavily backed up. 9 | Previously, notification handlers greedily grabbed messages from queues 10 | which could cause ordering issues. A fix was applied to sequentially 11 | process messages in a single thread to prevent ordering issues. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/skip-duplicate-meter-def-0420164f6a95c50c.yaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | --- 4 | fixes: 5 | - > 6 | [`bug 1536498 `_] 7 | Patch to fix duplicate meter definitions causing duplicate samples. 8 | If a duplicate is found, log a warning and skip the meter definition. 9 | Note that the first occurrence of a meter will be used and any following 10 | duplicates will be skipped from processing. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/snmp-cpu-util-055cd7704056c1ce.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | new metrics are available for snmp polling hardware.cpu.user, 5 | hardware.cpu.nice, hardware.cpu.system, hardware.cpu.idle, 6 | hardware.cpu.wait, hardware.cpu.kernel, hardware.cpu.interrupt. 7 | They replace deprecated hardware.cpu.util and 8 | hardware.system_stats.cpu.idle. 9 | 10 | deprecations: 11 | - | 12 | metrics hardware.cpu.util and hardware.system_stats.cpu.idle are now 13 | deprecated. Other hardware.cpu.* metrics should be used instead. 14 | 15 | -------------------------------------------------------------------------------- /releasenotes/notes/snmp-diskio-samples-fc4b5ed5f19c096c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add hardware.disk.read.* and hardware.disk.write.* metrics to capture 5 | diskio details. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/sql-query-optimisation-ebb2233f7a9b5d06.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1506738 `_] 5 | [`bug 1509677 `_] 6 | Optimise SQL backend queries to minimise query load 7 | -------------------------------------------------------------------------------- /releasenotes/notes/support-None-query-45abaae45f08eda4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1388680 `_] 5 | Suppose ability to query for None value when using SQL backend. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/support-cinder-volume-snapshot-backup-metering-d0a93b86bd53e803.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add support of metering the size of cinder volume/snapshot/backup. Like 4 | other meters, these are useful for billing system. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/support-lbaasv2-polling-c830dd49bcf25f64.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | Support for polling Neutron's LBaaS v2 API was added as v1 API in Neutron 5 | is deprecated. The same metrics are available between v1 and v2. 6 | issues: 7 | - > 8 | Neutron API is not designed to be polled against. When polling against 9 | Neutron is enabled, Ceilometer's polling agents may generate a significant 10 | load against the Neutron API. It is recommended that a dedicated API be 11 | enabled for polling while Neutron's API is improved to handle polling. 12 | upgrade: 13 | - > 14 | By default, Ceilometer will poll the v2 API. To poll legacy v1 API, 15 | add neutron_lbaas_version=v1 option to configuration file. 16 | -------------------------------------------------------------------------------- /releasenotes/notes/support-meter-batch-recording-mongo-6c2bdf4fbb9764eb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add support of batch recording metering data to mongodb backend, since 4 | the pymongo support *insert_many* interface which can be used to batch 5 | record items, in "big-data" scenarios, this change can improve the 6 | performance of metering data recording. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/support-multiple-meter-definition-files-e3ce1fa73ef2e1de.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Support loading multiple meter definition files and 5 | allow users to add their own meter definitions into 6 | several files according to different types of metrics 7 | under the directory of /etc/ceilometer/meters.d. -------------------------------------------------------------------------------- /releasenotes/notes/support-snmp-cpu-util-5c1c7afb713c1acd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | [`bug 1513731 `_] 5 | Add support for hardware cpu_util in snmp.yaml 6 | -------------------------------------------------------------------------------- /releasenotes/notes/support-unique-meter-query-221c6e0c1dc1b726.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - > 4 | [`bug 1506959 `_] 5 | Add support to query unique set of meter names rather than meters 6 | associated with each resource. The list is available by adding unique=True 7 | option to request. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/switch-to-oslo-privsep-b58f20a279f31bc0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | security: 3 | - | 4 | Privsep transitions. Ceilometer is transitioning from using the older 5 | style rootwrap privilege escalation path to the new style Oslo privsep 6 | path. This should improve performance and security of Ceilometer 7 | in the long term. 8 | - | 9 | Privsep daemons are now started by Ceilometer when required. These 10 | daemons can be started via rootwrap if required. rootwrap configs 11 | therefore need to be updated to include new privsep daemon invocations. 12 | upgrade: 13 | - | 14 | The following commands are no longer required to be listed in your rootwrap 15 | configuration: ipmitool. 16 | -------------------------------------------------------------------------------- /releasenotes/notes/thread-safe-matching-4a635fc4965c5d4c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | critical: 3 | - > 4 | [`bug 1519767 `_] 5 | fnmatch functionality in python <= 2.7.9 is not threadsafe. this issue and 6 | its potential race conditions are now patched. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/tooz-coordination-system-d1054b9d1a5ddf32.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Ceilometer now leverages the latest distribution mechanism provided by the 5 | tooz library. Therefore the options `coordination.retry_backoff` and 6 | `coordination.max_retry_interval` do not exist anymore. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/transformer-ed4b1ea7d1752576.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Usage of transformers in Ceilometer pipelines is deprecated. Transformers in Ceilometer 5 | have never computed samples correctly when you have multiple workers. This functionality can 6 | be done by the storage backend easily without all issues that Ceilometer has. For example, the 7 | rating is already computed in Gnocchi today. 8 | - | 9 | Pipeline Partitioning is also deprecated. This was only useful to 10 | workaround of some issues that tranformers has. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/unify-timestamp-of-polled-data-fbfcff43cd2d04bc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - > 4 | [`bug 1491509 `_] 5 | Patch to unify timestamp in samples polled by pollsters. Set the time 6 | point polling starts as timestamp of samples, and drop timetamping in 7 | pollsters. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/use-glance-v2-in-image-pollsters-137a315577d5dc4c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Since the Glance v1 APIs won't be maintained any more, this change 4 | add the support of glance v2 in images pollsters. 5 | 6 | upgrade: 7 | - > 8 | The option ``glance_page_size`` has been removed because it's not actually needed. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/use-notification-transport-url-489f3d31dc66c4d2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - The transport_url defined in [oslo_messaging_notifications] was never used, 4 | which contradicts the oslo_messaging documentation. This is now fixed. -------------------------------------------------------------------------------- /releasenotes/notes/use-usable-metric-if-available-970ee58e8fdeece6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - use memory usable metric from libvirt memoryStats if available. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/volume-metrics-01ddde0180bc21cb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The default ``polling.yaml`` file has been updated and now it enables 5 | meters related to cinder by default. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/zaqar-publisher-f7efa030b71731f4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add a new publisher for pushing samples or events to a Zaqar queue. 4 | -------------------------------------------------------------------------------- /releasenotes/source/2023.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2023.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/2023.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/2023.2.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2023.2 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2023.2 7 | -------------------------------------------------------------------------------- /releasenotes/source/2024.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2024.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2024.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/2024.2.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2024.2 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2024.2 7 | -------------------------------------------------------------------------------- /releasenotes/source/2025.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2025.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2025.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/_static/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/releasenotes/source/_static/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/index.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Ceilometer Release Notes 3 | ========================= 4 | 5 | .. toctree:: 6 | :maxdepth: 1 7 | 8 | unreleased 9 | 2025.1 10 | 2024.2 11 | 2024.1 12 | 2023.2 13 | 2023.1 14 | zed 15 | yoga 16 | xena 17 | wallaby 18 | victoria 19 | ussuri 20 | train 21 | stein 22 | rocky 23 | queens 24 | pike 25 | ocata 26 | newton 27 | mitaka 28 | liberty 29 | -------------------------------------------------------------------------------- /releasenotes/source/liberty.rst: -------------------------------------------------------------------------------- 1 | ============================= 2 | Liberty Series Release Notes 3 | ============================= 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/liberty 7 | -------------------------------------------------------------------------------- /releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po: -------------------------------------------------------------------------------- 1 | # Gérald LONLAS , 2016. #zanata 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: Ceilometer Release Notes\n" 5 | "Report-Msgid-Bugs-To: \n" 6 | "POT-Creation-Date: 2024-03-28 06:27+0000\n" 7 | "MIME-Version: 1.0\n" 8 | "Content-Type: text/plain; charset=UTF-8\n" 9 | "Content-Transfer-Encoding: 8bit\n" 10 | "PO-Revision-Date: 2016-10-22 05:24+0000\n" 11 | "Last-Translator: Gérald LONLAS \n" 12 | "Language-Team: French\n" 13 | "Language: fr\n" 14 | "X-Generator: Zanata 4.3.3\n" 15 | "Plural-Forms: nplurals=2; plural=(n > 1)\n" 16 | 17 | msgid "5.0.1" 18 | msgstr "5.0.1" 19 | 20 | msgid "5.0.2" 21 | msgstr "5.0.2" 22 | 23 | msgid "5.0.3" 24 | msgstr "5.0.3" 25 | 26 | msgid "6.0.0" 27 | msgstr "6.0.0" 28 | 29 | msgid "7.0.0" 30 | msgstr "7.0.0" 31 | 32 | msgid "7.0.0.0b2" 33 | msgstr "7.0.0.0b2" 34 | 35 | msgid "7.0.0.0b3" 36 | msgstr "7.0.0.0b3" 37 | 38 | msgid "7.0.0.0rc1" 39 | msgstr "7.0.0.0rc1" 40 | 41 | msgid "Bug Fixes" 42 | msgstr "Corrections de bugs" 43 | 44 | msgid "Ceilometer Release Notes" 45 | msgstr "Note de release de Ceilometer" 46 | 47 | msgid "Critical Issues" 48 | msgstr "Erreurs critiques" 49 | 50 | msgid "Current Series Release Notes" 51 | msgstr "Note de la release actuelle" 52 | 53 | msgid "Deprecation Notes" 54 | msgstr "Notes dépréciées " 55 | 56 | msgid "Known Issues" 57 | msgstr "Problèmes connus" 58 | 59 | msgid "Liberty Series Release Notes" 60 | msgstr "Note de release pour Liberty" 61 | 62 | msgid "New Features" 63 | msgstr "Nouvelles fonctionnalités" 64 | 65 | msgid "Other Notes" 66 | msgstr "Autres notes" 67 | 68 | msgid "Start using reno to manage release notes." 69 | msgstr "Commence à utiliser reno pour la gestion des notes de release" 70 | 71 | msgid "Upgrade Notes" 72 | msgstr "Notes de mises à jours" 73 | -------------------------------------------------------------------------------- /releasenotes/source/ocata.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Ocata Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/ocata 7 | -------------------------------------------------------------------------------- /releasenotes/source/pike.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Pike Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/pike 7 | -------------------------------------------------------------------------------- /releasenotes/source/queens.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Queens Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/queens 7 | -------------------------------------------------------------------------------- /releasenotes/source/rocky.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Rocky Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/rocky 7 | -------------------------------------------------------------------------------- /releasenotes/source/stein.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Stein Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/stein 7 | -------------------------------------------------------------------------------- /releasenotes/source/train.rst: -------------------------------------------------------------------------------- 1 | ========================== 2 | Train Series Release Notes 3 | ========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/train 7 | -------------------------------------------------------------------------------- /releasenotes/source/unreleased.rst: -------------------------------------------------------------------------------- 1 | ============================= 2 | Current Series Release Notes 3 | ============================= 4 | 5 | .. release-notes:: 6 | -------------------------------------------------------------------------------- /releasenotes/source/ussuri.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Ussuri Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/ussuri 7 | -------------------------------------------------------------------------------- /releasenotes/source/victoria.rst: -------------------------------------------------------------------------------- 1 | ============================= 2 | Victoria Series Release Notes 3 | ============================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/victoria 7 | -------------------------------------------------------------------------------- /releasenotes/source/wallaby.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Wallaby Series Release Notes 3 | ============================ 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/wallaby 7 | -------------------------------------------------------------------------------- /releasenotes/source/xena.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Xena Series Release Notes 3 | ========================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/xena 7 | -------------------------------------------------------------------------------- /releasenotes/source/yoga.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Yoga Series Release Notes 3 | ========================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/yoga 7 | -------------------------------------------------------------------------------- /releasenotes/source/zed.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | Zed Series Release Notes 3 | ======================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/zed 7 | -------------------------------------------------------------------------------- /reno.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Ignore the kilo-eol tag because that branch does not work with reno 3 | # and contains no release notes. 4 | closed_branch_tag_re: "(.+)(?=0.13.0 # MIT License 6 | cachetools>=2.1.0 # MIT License 7 | cotyledon>=1.3.0 #Apache-2.0 8 | futurist>=1.8.0 # Apache-2.0 9 | jsonpath-rw-ext>=1.1.3 # Apache-2.0 10 | lxml>=4.5.1 # BSD 11 | msgpack>=0.5.2 # Apache-2.0 12 | oslo.concurrency>=3.29.0 # Apache-2.0 13 | oslo.config>=8.6.0 # Apache-2.0 14 | oslo.i18n>=3.15.3 # Apache-2.0 15 | oslo.log>=3.36.0 # Apache-2.0 16 | oslo.reports>=1.18.0 # Apache-2.0 17 | oslo.rootwrap>=2.0.0 # Apache-2.0 18 | pbr>=2.0.0 # Apache-2.0 19 | oslo.messaging>=10.3.0 # Apache-2.0 20 | oslo.upgradecheck>=0.1.1 # Apache-2.0 21 | oslo.utils>=4.7.0 # Apache-2.0 22 | oslo.privsep>=1.32.0 # Apache-2.0 23 | python-glanceclient>=2.8.0 # Apache-2.0 24 | python-keystoneclient>=3.18.0 # Apache-2.0 25 | keystoneauth1>=3.18.0 # Apache-2.0 26 | python-neutronclient>=6.7.0 # Apache-2.0 27 | python-novaclient>=9.1.0 # Apache-2.0 28 | python-swiftclient>=3.2.0 # Apache-2.0 29 | python-cinderclient>=3.3.0 # Apache-2.0 30 | PyYAML>=5.1 # MIT 31 | requests>=2.25.1 # Apache-2.0 32 | stevedore>=1.20.0 # Apache-2.0 33 | tenacity>=6.3.1 # Apache-2.0 34 | tooz>=1.47.0 # Apache-2.0 35 | oslo.cache>=1.26.0 # Apache-2.0 36 | gnocchiclient>=7.0.0 # Apache-2.0 37 | python-zaqarclient>=1.3.0 # Apache-2.0 38 | prometheus_client>=0.20.0 # Apache-2.0 39 | requests-aws>=0.1.4 # BSD License (3 clause) 40 | aodhclient>=3.8.0 # Apache-2.0 41 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | # implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | import setuptools 17 | 18 | setuptools.setup( 19 | setup_requires=['pbr>=2.0.0'], 20 | pbr=True) 21 | -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | coverage>=4.4.1 # Apache-2.0 2 | fixtures>=3.0.0 # Apache-2.0/BSD 3 | oslo.messaging[kafka]>=8.0.0 # Apache-2.0 4 | oslotest>=3.8.0 # Apache-2.0 5 | testscenarios>=0.4 # Apache-2.0/BSD 6 | testtools>=2.2.0 # MIT 7 | stestr>=2.0.0 # Apache-2.0 8 | testresources>=2.0.1 # Apache-2.0 9 | -------------------------------------------------------------------------------- /tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/ceilometer/893f77fb912a383182a93cfcf6b05694e747ec65/tools/__init__.py --------------------------------------------------------------------------------