]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: prometheus: The generatorURL in alerts is only using hostname 46352/head
authorVolker Theile <vtheile@suse.com>
Tue, 10 May 2022 13:25:54 +0000 (15:25 +0200)
committerMichael Fritch <mfritch@suse.com>
Fri, 20 May 2022 03:12:41 +0000 (21:12 -0600)
Prometheus is currently using only the hostname in the 'generatorURL' of an alert which causes issues when clicking on the URL in the Ceph Dashboard or somewhere else, because in most cases the hostname of the node that is running the Prometheus container is not resolvable.

To fix that the command line argument '--web.external-url' must be appended in the systemd unit file of the Prometheus container, e.g. '--web.external-url http://foo.bar:9095' whereas a FQDN hostname is used.

Fixes: https://tracker.ceph.com/issues/55595
Signed-off-by: Volker Theile <vtheile@suse.com>
(cherry picked from commit 4281dc1bbc466dd061781a984b34bb0eafaf482f)

src/cephadm/cephadm
src/cephadm/tests/test_cephadm.py

index 93d3328d53fe01b0d3c444f6c06b122774637536..f53813eb5baba163b5800e9e133a655efb7b3b86 100755 (executable)
@@ -2358,6 +2358,10 @@ def get_daemon_args(ctx, fsid, daemon_type, daemon_id):
                 if 'ports' in meta and meta['ports']:
                     port = meta['ports'][0]
             r += [f'--web.listen-address={ip}:{port}']
+            if daemon_type == 'prometheus':
+                scheme = 'http'
+                host = get_fqdn()
+                r += [f'--web.external-url={scheme}://{host}:{port}']
         if daemon_type == 'alertmanager':
             config = get_parm(ctx.config_json)
             peers = config.get('peers', list())  # type: ignore
index f7d6aeede11c85fe51c14fb369bf6f7df7c90212..e4d80f44036edfddb27d17ad2c5e0011d6f28a6f 100644 (file)
@@ -1091,6 +1091,14 @@ class TestMonitoring(object):
         version = cd.Monitoring.get_version(ctx, 'container_id', daemon_type)
         assert version == '0.16.1'
 
+    def test_prometheus_external_url(self):
+        ctx = cd.CephadmContext()
+        daemon_type = 'prometheus'
+        daemon_id = 'home'
+        fsid = 'aaf5a720-13fe-4a3b-82b9-2d99b7fd9704'
+        args = cd.get_daemon_args(ctx, fsid, daemon_type, daemon_id)
+        assert any([x.startswith('--web.external-url=http://') for x in args])
+
     @mock.patch('cephadm.call')
     def test_get_version_node_exporter(self, _call):
         ctx = cd.CephadmContext()