diff --git a/manifests/0000_90_ingress-operator_03_prometheusrules.yaml b/manifests/0000_90_ingress-operator_03_prometheusrules.yaml new file mode 100644 index 0000000000..5ccc34ff77 --- /dev/null +++ b/manifests/0000_90_ingress-operator_03_prometheusrules.yaml @@ -0,0 +1,25 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: ingress-operator + namespace: openshift-ingress-operator + labels: + role: alert-rules +spec: + groups: + - name: openshift-ingress.rules + rules: + - alert: HAProxyReloadFail + expr: increase(template_router_reload_fails[5m]) > 0 + for: 5m + labels: + severity: critical + annotations: + message: "HAProxy reloads have failed on {{ $labels.pod }}. Router is not respecting recently created or modified routes" + - alert: HAProxyDown + expr: haproxy_up == 0 + for: 5m + labels: + severity: critical + annotations: + message: "HAProxy metrics are reporting that the router is down" diff --git a/pkg/manifests/bindata.go b/pkg/manifests/bindata.go index 2793c11426..1555b014bf 100644 --- a/pkg/manifests/bindata.go +++ b/pkg/manifests/bindata.go @@ -19,6 +19,7 @@ // manifests/0000_90_ingress-operator_00_prometheusrole.yaml (237B) // manifests/0000_90_ingress-operator_01_prometheusrolebinding.yaml (305B) // manifests/0000_90_ingress-operator_02_servicemonitor.yaml (511B) +// manifests/0000_90_ingress-operator_03_prometheusrules.yaml (752B) // manifests/01-cluster-role-binding.yaml (369B) // manifests/01-role-binding.yaml (367B) // manifests/01-role.yaml (477B) @@ -476,6 +477,26 @@ func manifests0000_90_ingressOperator_02_servicemonitorYaml() (*asset, error) { return a, nil } +var _manifests0000_90_ingressOperator_03_prometheusrulesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x90\x3d\x8b\x1c\x4d\x0c\x84\xf3\xf9\x15\x62\x79\x83\xd7\xc1\x8c\xed\xe0\x92\x86\x33\x18\x8c\x71\x78\x6c\xe0\xc4\x98\x45\x9e\xa9\x9d\x69\xdc\xdd\x6a\x24\xcd\xde\x2d\xc7\xfd\x77\x33\x1f\x9c\xbf\x53\x77\xd4\x42\x2a\xa9\x9e\xe2\x1a\x3f\x42\x2d\x4a\x09\x94\xa5\x44\x17\x8d\x65\xec\x7a\x51\x88\x75\xbd\xe4\x97\x97\xd7\xcd\xd7\x58\x86\x40\x77\x2a\x19\x3e\x61\xb6\xe3\x9c\xd0\x64\x38\x0f\xec\x1c\x1a\xa2\xc2\x19\x81\x62\x19\x15\x66\xad\x54\x28\xbb\xe8\xde\xb0\xca\x3d\x02\x49\x45\xb1\x29\x9e\xbd\xfd\xc3\x5c\xe2\x2f\x48\xb6\xac\x22\x52\x49\x08\xc4\x09\xea\xad\xce\x09\xd6\x58\x45\xbf\xf4\x46\x95\xb9\xee\x53\xed\x7e\xf4\xb7\xb5\xdd\xa6\xa1\xf5\xad\xff\xb0\x17\xed\xb6\x34\xd0\x87\xb7\x77\x2a\x0f\xd7\x23\x92\xf0\xf0\x9e\x63\xda\x07\x88\xf0\x50\x75\x01\xe9\x15\x6c\xf8\xdf\x91\x6b\x62\xc7\x49\x65\x76\xe8\x49\x57\xc5\xe9\xcc\x31\xd9\xa7\x9b\xfc\xf9\x05\xbd\xa1\x57\xcf\xe2\xb3\x68\xa0\x9b\xfc\x5c\xff\x08\xb5\x3d\xc3\x05\x1a\xfd\x1a\xa8\xd7\xe8\xb1\xe7\xef\x97\xb9\x14\x71\xf6\x28\xe5\x27\x45\x86\x19\x8f\x08\x74\xd8\x4d\xd3\xe6\xc1\x68\xe2\x0b\x68\x71\x82\x81\xa4\xd0\xe3\x23\xfd\xb7\x1d\xec\xaa\x0c\xf4\xf4\xd4\xd1\x71\x35\x4d\xd1\xa8\x88\x93\x62\x89\xd1\x63\x19\x49\xd1\xa3\x78\xba\xd2\x82\xe9\x8b\x5e\x29\xcb\x10\xcf\x11\x03\xad\xa8\x76\xf8\x4b\x66\xef\xe4\xbe\xfc\x92\xd6\xc4\x75\xe9\x9c\xe6\x4a\xb7\xb7\xff\x3c\x8e\x0c\xd7\xd8\x1b\xb1\x82\x14\x55\x74\x25\xf4\x89\x9d\x7c\xc2\x46\xb3\x66\x30\xc8\x7d\x39\x34\xdf\x02\x00\x00\xff\xff\xd2\xa3\x93\x63\xf0\x02\x00\x00") + +func manifests0000_90_ingressOperator_03_prometheusrulesYamlBytes() ([]byte, error) { + return bindataRead( + _manifests0000_90_ingressOperator_03_prometheusrulesYaml, + "manifests/0000_90_ingress-operator_03_prometheusrules.yaml", + ) +} + +func manifests0000_90_ingressOperator_03_prometheusrulesYaml() (*asset, error) { + bytes, err := manifests0000_90_ingressOperator_03_prometheusrulesYamlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "manifests/0000_90_ingress-operator_03_prometheusrules.yaml", size: 752, mode: os.FileMode(420), modTime: time.Unix(1, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2c, 0x44, 0xdb, 0xa, 0xc2, 0x47, 0x30, 0x9f, 0xbf, 0x26, 0x6a, 0x55, 0xba, 0xc2, 0xa8, 0x6, 0x11, 0xa7, 0xcc, 0xd4, 0x1d, 0x69, 0x30, 0x9d, 0x25, 0x61, 0x48, 0x5f, 0xf0, 0x35, 0x54, 0x91}} + return a, nil +} + var _manifests01ClusterRoleBindingYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8f\x31\x4f\x03\x31\x0c\x85\xf7\xfc\x0a\x4b\xcc\x17\xc4\x86\xb2\x01\x03\x7b\x91\xd8\xdd\x9c\xdb\x33\xbd\xda\x91\xed\x74\xe0\xd7\xa3\xe8\x0a\x4b\xa5\x8a\xd9\x7e\xef\x7d\xdf\x03\xbc\xb2\xcc\x0e\xb1\x10\x68\x23\xc3\x50\x83\xba\x76\x0f\x32\x30\x5d\x09\x42\x81\xc3\xe1\x83\xec\xc2\x95\xe0\xa5\x56\xed\x12\x39\x9d\x58\xe6\x02\x6f\xdb\xeb\x4e\x57\x1a\x45\x2c\xc7\x84\x8d\x3f\xc9\x9c\x55\x0a\xd8\x1e\x6b\xc6\x1e\x8b\x1a\x7f\x63\xb0\x4a\x3e\x3d\x7b\x66\x7d\xbc\x3c\xa5\x33\x05\xce\x18\x58\x12\x80\xe0\x99\xca\x20\x10\x5f\xf8\x10\x13\xcb\xd1\xc8\x7d\xfa\x65\x4a\xde\xf7\x5f\x54\xc3\x4b\x9a\x60\x9b\xbe\x12\x5d\x81\xfe\x3a\x6e\x92\xdb\xc1\x1b\xd6\xfb\x0b\xc3\x76\x47\x87\x41\x73\xe3\x96\x00\xb0\xf1\xbb\x69\x6f\x77\xa4\xfe\xe3\xf1\x13\x00\x00\xff\xff\x5e\x3a\x23\xb1\x71\x01\x00\x00") func manifests01ClusterRoleBindingYamlBytes() ([]byte, error) { @@ -785,6 +806,8 @@ var _bindata = map[string]func() (*asset, error){ "manifests/0000_90_ingress-operator_02_servicemonitor.yaml": manifests0000_90_ingressOperator_02_servicemonitorYaml, + "manifests/0000_90_ingress-operator_03_prometheusrules.yaml": manifests0000_90_ingressOperator_03_prometheusrulesYaml, + "manifests/01-cluster-role-binding.yaml": manifests01ClusterRoleBindingYaml, "manifests/01-role-binding.yaml": manifests01RoleBindingYaml, @@ -871,6 +894,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "0000_90_ingress-operator_00_prometheusrole.yaml": {manifests0000_90_ingressOperator_00_prometheusroleYaml, map[string]*bintree{}}, "0000_90_ingress-operator_01_prometheusrolebinding.yaml": {manifests0000_90_ingressOperator_01_prometheusrolebindingYaml, map[string]*bintree{}}, "0000_90_ingress-operator_02_servicemonitor.yaml": {manifests0000_90_ingressOperator_02_servicemonitorYaml, map[string]*bintree{}}, + "0000_90_ingress-operator_03_prometheusrules.yaml": {manifests0000_90_ingressOperator_03_prometheusrulesYaml, map[string]*bintree{}}, "01-cluster-role-binding.yaml": {manifests01ClusterRoleBindingYaml, map[string]*bintree{}}, "01-role-binding.yaml": {manifests01RoleBindingYaml, map[string]*bintree{}}, "01-role.yaml": {manifests01RoleYaml, map[string]*bintree{}},