)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"03a72d2a81dae0f83f085137851c58e907b2d1d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"58c482b6_b7611502","updated":"2026-03-06 13:23:24.000000000","message":"It\u0027s gonna be a bit of a rant, sorry.\n\nThere are some things I\u0027m not a big fan of, but even after giving it quite a bit of thought, I don\u0027t have anything better:\n- We\u0027re changing ceilometer code and adding new config options. But I doubt these will ever be used anywhere except of devstack. IMO in the real world, there would either be a single agent per node (polling a single namespace or it could use the --polling-namespace to poll multiple namespaces), or if running multiple agents is desirable, they could each have a different config file with a different prometheus-exporter port and use the --config-file parameter. So we\u0027re addressing a purely devstack / development / testing issue. IMO ideally this would get solved in a devstack plugin instead and don\u0027t touch the service code at all. But I read the comments in your earlier attempt https://review.opendev.org/c/openstack/ceilometer/+/975384 and pure devstack plugin solution seems like a potential rabbit hole to get everything right and tested correctly. So with that in mind and with this actually not affecting real deployments in a bad way (it\u0027s gonna probably be turned off anyway), I\u0027m OK with this.\n- I don\u0027t like this \"offset thing\". IMO it\u0027d be much better and clearer to set explicit ports for each namespace, rather than having offsets. But that IMO wouldn\u0027t play very nicely with the current `prometheus_listen_address` option, which already expects a port to be included. So, I don\u0027t have a better suggestion here, so I guess I\u0027m fine with this as well.\n- I don\u0027t like running the exporter with the same metrics on multiple ports at the same time when multiple namespaces are specified at once (discussed in one of the comment threads). But I see why that is. It\u0027d be quite difficult to separate the metrics by namespace and run multiple exporters with each exporter having metrics from just that namespace and we also can\u0027t just chose one port to expose all the metrics (if running compute and ipmi namespace at once, which port would we use?). So I\u0027m fine with the current solution as well, since I don\u0027t have a better idea.\n\nBut what\u0027s also important to note, that something like this (allowing to scrape all the metrics through the prometheus-exporter on devstack) is a nice step forward for us allowing for easier development and also to finally use the prometheus-exporter in tempest tests. So big thanks for proposing this and for coming up with multiple angles for solving this!","commit_id":"b0caeac939e4ee1187d4d33b6b0bb85483bb5e19"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a3ae7f33068dd30839420b1d5ae71b1aa0cd4ec9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9f0e94f3_42f78ab5","in_reply_to":"58c482b6_b7611502","updated":"2026-03-09 15:20:40.000000000","message":"I completely agree with you. Currently we cannot test the prometheus_exporter in any environment as only one of ceilometer_central or ceilometer_compute must be running, which is not the case and it is not appropiate.\n\nI also dont like this solution, it adds some new config options for a very specific use case, so I am not actually sure about merging it. However, I am out of ideas but thank you for the +2 and the insights provided. I still dont know what is best.","commit_id":"b0caeac939e4ee1187d4d33b6b0bb85483bb5e19"}],"ceilometer/polling/manager.py":[{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"b412727f978e24ba8117e6c1951cda8db8aab635","unresolved":true,"context_lines":[{"line_number":658,"context_line":"                    LOG.info(\u0027Starting Prometheus exporter on %s:%d\u0027,"},{"line_number":659,"context_line":"                             address[0], effective_port)"},{"line_number":660,"context_line":"                    prom_exporter.export(address[0], effective_port,"},{"line_number":661,"context_line":"                                         certfile, keyfile)"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self._keystone \u003d None"},{"line_number":664,"context_line":"        self._keystone_last_exception \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"ee78ac42_02a4a0bf","line":661,"updated":"2026-02-12 08:56:55.000000000","message":"Is a loop the right thing to do here? When would you have multiple elements inside the port_offsets? That\u0027d be when ceilometer is started with multiple namespaces at once right? I don\u0027t think I ever tried to run ceilometer with multiple namespaces at once, but I always thought the metrics from both namespaces would be mixed together, which would mean that all the exporters here would export the same set of metrics right?","commit_id":"b0caeac939e4ee1187d4d33b6b0bb85483bb5e19"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"9c4a5df16ffedd2c5d4f582e1ff1f75ec73ff87b","unresolved":true,"context_lines":[{"line_number":658,"context_line":"                    LOG.info(\u0027Starting Prometheus exporter on %s:%d\u0027,"},{"line_number":659,"context_line":"                             address[0], effective_port)"},{"line_number":660,"context_line":"                    prom_exporter.export(address[0], effective_port,"},{"line_number":661,"context_line":"                                         certfile, keyfile)"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self._keystone \u003d None"},{"line_number":664,"context_line":"        self._keystone_last_exception \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"66d49bff_6cadec26","line":661,"in_reply_to":"596e1e12_2d6f45a3","updated":"2026-02-17 13:32:46.000000000","message":"Yes, I am afraid that is an issue that is not worth fixing, as it is the correct and wanted behaviour. I believe we are quite hand tied 😞","commit_id":"b0caeac939e4ee1187d4d33b6b0bb85483bb5e19"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"03a72d2a81dae0f83f085137851c58e907b2d1d3","unresolved":false,"context_lines":[{"line_number":658,"context_line":"                    LOG.info(\u0027Starting Prometheus exporter on %s:%d\u0027,"},{"line_number":659,"context_line":"                             address[0], effective_port)"},{"line_number":660,"context_line":"                    prom_exporter.export(address[0], effective_port,"},{"line_number":661,"context_line":"                                         certfile, keyfile)"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self._keystone \u003d None"},{"line_number":664,"context_line":"        self._keystone_last_exception \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"d1591fc6_d27f2e25","line":661,"in_reply_to":"66d49bff_6cadec26","updated":"2026-03-06 13:23:24.000000000","message":"Acknowledged","commit_id":"b0caeac939e4ee1187d4d33b6b0bb85483bb5e19"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"26c1cc3bf7a4d718586dd8dbc2013efbf41da8e7","unresolved":true,"context_lines":[{"line_number":658,"context_line":"                    LOG.info(\u0027Starting Prometheus exporter on %s:%d\u0027,"},{"line_number":659,"context_line":"                             address[0], effective_port)"},{"line_number":660,"context_line":"                    prom_exporter.export(address[0], effective_port,"},{"line_number":661,"context_line":"                                         certfile, keyfile)"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self._keystone \u003d None"},{"line_number":664,"context_line":"        self._keystone_last_exception \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"596e1e12_2d6f45a3","line":661,"in_reply_to":"ee78ac42_02a4a0bf","updated":"2026-02-12 10:54:30.000000000","message":"This seemed interesting. I tested this code in my devstack and I can confirm, that the data are just being duplicated across the different ports. See https://paste.opendev.org/show/bRpcPH9NCJ5vEJev4nco/","commit_id":"b0caeac939e4ee1187d4d33b6b0bb85483bb5e19"}]}
