changeset 73:c3d13fab248e

alertmanager deployment
author drewp@bigasterisk.com
date Fri, 03 May 2024 14:40:29 -0700
parents 85d9dae18656
children 177c0a2eab1e
files create_k8s.py create_scrape_configs.py index_page.py
diffstat 3 files changed, 33 insertions(+), 60 deletions(-) [+]
line wrap: on
line diff
--- a/create_k8s.py	Fri May 03 13:33:33 2024 -0700
+++ b/create_k8s.py	Fri May 03 14:40:29 2024 -0700
@@ -240,7 +240,7 @@
 
                                 f"-datasource.url=http://{objPrefix}-vmselect/m/vmselect/select/0/prometheus",
                                 f"-http.pathPrefix={webRoot}/vmalert/",
-                                f"-notifier.url=http://{objPrefix}-alertmanager",
+                                f"-notifier.url=http://{objPrefix}-alertmanager/m/alertmanager",
 
                                 # todo: remoteWrite should go to vminsert; not sure how to test it
                                 # "-remoteRead.url=http://victoriametrics/m/",
@@ -266,81 +266,46 @@
 
 
 def createAlertmanagerObjs(tzArg, objPrefix, webRoot, policy):
-    createPv(f'{objPrefix}-4vmalert', "opt-alertmanager", '50Gi')
-    createPvc(f'{objPrefix}-4vmalert', "opt-alertmanager", '50Gi')
+    createPv(f'{objPrefix}-5vmalertmanager', "opt-alertmanager", '50Gi')
+    createPvc(f'{objPrefix}-5vmalertmanager', "opt-alertmanager", '50Gi')
 
+    amName = f'{objPrefix}-alertmanager'
     (build / f'{objPrefix}-5alertmanager_deploy.yaml').write_text(
         toJson({
-            "apiVersion": "apps/v1",
-            "kind": "Deployment",
-            "metadata": {
-                "name": "alertmanager"
-            },
+            "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": amName },
             "spec": {
                 "replicas": 1,
-                "selector": {
-                    "matchLabels": {
-                        "app": "alertmanager"
-                    }
-                },
+                "selector": { "matchLabels": { "app": amName } },
                 "template": {
-                    "metadata": {
-                        "labels": {
-                            "app": "alertmanager"
-                        }
-                    },
+                    "metadata": { "labels": { "app": amName } },
                     "spec": {
-                        "volumes": [{
-                            "name": "opt-alertmanager",
-                            "persistentVolumeClaim": {
-                                "claimName": "opt-alertmanager"
-                            }
-                        }],
+                        "volumes": [{ "name": "opt-alertmanager", "persistentVolumeClaim": { "claimName": "opt-alertmanager" } }],
                         "serviceAccountName": "victoriametrics",
                         "containers": [{
-                            "name": "alertmanager",
-                            "image": "docker.io/prom/alertmanager:v0.27.0",
-                            "imagePullPolicy": "IfNotPresent",
+                            "name": "alertmanager", "image": "docker.io/prom/alertmanager:v0.27.0", "imagePullPolicy": "IfNotPresent",
                             "args": [
+                                "--log.level=debug",
                                 "--config.file=/alertmanager/alertmanager.yml",
-                                "--web.external-url=https://bigasterisk.com/alertmanager/",
-                                "--web.route-prefix=/",
-                                "--log.level=info",
+                                f"--web.external-url=https://bigasterisk.com{webRoot}/alertmanager/",
+                                f"--web.route-prefix={webRoot}/alertmanager",
                             ],
-                            "ports": [{
-                                "containerPort": 9093
-                            }],
-                            "volumeMounts": [{
-                                "name": "opt-alertmanager",
-                                "mountPath": "/alertmanager"
-                            }]
+                            "ports": [{ "containerPort": 9093 }],
+                            "volumeMounts": [{ "name": "opt-alertmanager", "mountPath": "/alertmanager" }]
                         }],
                         "affinity": affinityToNode("ditto"),
                     }
                 }
             }
-        }))
+        }))  # yapf: disable
 
-    createSvc(f'{objPrefix}-5alertmanager', "alertmanager", [{"port": 80, "targetPort": 9093}])
+    createSvc(f'{objPrefix}-5alertmanager', amName, [{"port": 80, "targetPort": 9093}])
     createIngress(
         f'{objPrefix}-5alertmanager_ingress.yaml',
-        "alertmanager",
+        amName,
         policy,
-        #                    "ingress.pomerium.io/prefix_rewrite": "/"
-        [{
-            "pathType": "Prefix",
-            "path": "/alertmanager/",
-            "backend": {
-                "service": {
-                    "name": "alertmanager",
-                    "port": {
-                        "number": 80
-                    }
-                }
-            }
-        }],
+        [{ "pathType": "Prefix", "path": "/m/alertmanager/", "backend": { "service": { "name": amName, "port": { "number": 80 } } } }],
         "bigasterisk.com",
-    )
+    )  # yapf: disable
 
 
 def main():
@@ -379,10 +344,7 @@
     createIngress(f'{objPrefix}-2ingress.yaml', objPrefix, policy, ingressPaths, webHost)
     createIndex(objPrefix, webRoot, makeIndexHtml(objPrefix, webRoot, webHost))
     createVmalertObjs(tzArg, objPrefix, webRoot, policy, vmVersion)
-    # createAlertmanagerObjs(tzArg, objPrefix, webRoot, policy)
+    createAlertmanagerObjs(tzArg, objPrefix, webRoot, policy)
 
 
 main()
-
-# in vmui, set server url to
-# https://bigasterisk.com{webRoot}/vmselect/select/0/prometheus
--- a/create_scrape_configs.py	Fri May 03 13:33:33 2024 -0700
+++ b/create_scrape_configs.py	Fri May 03 14:40:29 2024 -0700
@@ -62,6 +62,7 @@
     jobConfig(name="victoriametrics-recent-vmstorage",  metrics_path='/m/recent/vmstorage/metrics', targets=FromName),
     jobConfig(name="victoriametrics-vmselect",          metrics_path='/m/vmselect/metrics',         targets=FromName),
     jobConfig(name="victoriametrics-vmalert",           metrics_path='/m/vmalert/metrics',          targets=FromName),
+    jobConfig(name="victoriametrics-alertmanager",      metrics_path='/m/alertmanager/metrics',     targets=FromName),
     jobConfig(name="victoriametrics-index",                                                         targets=FromName),
 
     # todo:
--- a/index_page.py	Fri May 03 13:33:33 2024 -0700
+++ b/index_page.py	Fri May 03 14:40:29 2024 -0700
@@ -71,8 +71,18 @@
               <h2>vmalert</h2>
               <table>
                 <tr>
-                  <td><a href="/vmalert">vmalert</a></td>
-                  <td><a href="/vmalert/metrics">metrics</a></td>
+                  <td><a href="vmalert/">vmalert</a></td>
+                  <td><a href="vmalert/metrics">metrics</a></td>
+                </tr>
+              </table>
+            </section>  
+              
+            <section>
+              <h2>alertmanager</h2>
+              <table>
+                <tr>
+                  <td><a href="alertmanager/">alertmanager</a></td>
+                  <td><a href="alertmanager/metrics">metrics</a></td>
                 </tr>
               </table>
             </section>