From 4256e37b3e9f7493f875545cbdece697477b842e Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 20 Jan 2025 14:23:25 +0530 Subject: [PATCH 01/39] [MOSIP-38032] Deployment of External services with helmsman using github actions. Signed-off-by: Mohanraj209 --- .github/workflows/helmsman_external.yml | 94 ++ deployment/README.md | 1 + deployment/v3/helmsman/README.md | 67 ++ deployment/v3/helmsman/dsf/README.md | 34 + deployment/v3/helmsman/dsf/external-dsf.yaml | 195 ++++ deployment/v3/helmsman/dsf/prereq-dsf.yaml | 69 ++ .../v3/helmsman/helmsman-workflow-guide.md | 89 ++ .../v3/helmsman/hooks/alerting-setup.sh | 40 + deployment/v3/helmsman/hooks/captcha-setup.sh | 39 + .../hooks/install-istio-and-httpbin.sh | 83 ++ .../v3/helmsman/hooks/msg-gateways-setup.sh | 30 + .../v3/helmsman/hooks/post_logging-setup.sh | 54 ++ deployment/v3/helmsman/hooks/s3-setup.sh | 35 + .../helmsman/utils/alerting/alertmanager.yaml | 126 +++ .../kubernetes-node-not-ready.yaml | 21 + .../node-avarage-cpu-load-high.yaml | 14 + .../custom-alerts/node-disk-usage-high.yaml | 24 + .../custom-alerts/node-memory-usage-high.yaml | 16 + .../persistent-volume-usage-high.yaml | 20 + .../utils/alerting/patch-cluster-name.yaml | 3 + .../v3/helmsman/utils/global_configmap.yaml | 35 + .../httpbin/deployment-busybox-curl.yaml | 23 + .../v3/helmsman/utils/httpbin/deployment.yaml | 45 + deployment/v3/helmsman/utils/httpbin/svc.yaml | 14 + deployment/v3/helmsman/utils/httpbin/vs.yaml | 26 + .../gateway-istio-addons-0.1.0.tgz | Bin 0 -> 1313 bytes .../istio-addons/iam-istio-addons-0.1.0.tgz | Bin 0 -> 893 bytes .../istio-addons/kafka-istio-addons-1.2.0.tgz | Bin 0 -> 871 bytes .../logging-istio-addons-0.1.0.tgz | Bin 0 -> 869 bytes .../istio-addons/minio-istio-addons-1.2.0.tgz | Bin 0 -> 860 bytes .../postgres-istio-addons-0.1.0.tgz | Bin 0 -> 826 bytes .../helmsman/utils/istio-gateway/.gitignore | 2 + .../helmsman/utils/istio-gateway/Chart.yaml | 24 + .../v3/helmsman/utils/istio-gateway/README.md | 11 + .../istio-gateway/templates/authpolicies.yaml | 15 + .../templates/authpolicy-mockrp.yaml | 13 + .../templates/gateway-internal.yaml | 16 + .../templates/gateway-public.yaml | 16 + .../templates/proxy-protocol.yaml | 19 + .../helmsman/utils/istio-gateway/values.yaml | 11 + .../utils/istio-mesh/nodeport/iop-mosip.yaml | 93 ++ .../nodeport/istio-monitoring/PodMonitor.yaml | 37 + .../istio-monitoring/ServiceMonitor.yaml | 19 + .../logging/clusterflow-elasticsearch.yaml | 35 + .../logging/clusteroutput-elasticsearch.yaml | 16 + .../logging/dashboards/01-logstash.ndjson | 1 + .../dashboards/02-error-only-logs.ndjson | 2 + .../logging/dashboards/03-service-logs.ndjson | 2 + .../logging/dashboards/04-insight.ndjson | 19 + .../dashboards/05-response-time.ndjson | 9 + .../utils/logging/dashboards/README.md | 7 + ...esident Service Metrics-1700579878311.json | 852 ++++++++++++++++++ .../utils/logging/load_kibana_dashboards.sh | 31 + 53 files changed, 2447 insertions(+) create mode 100644 .github/workflows/helmsman_external.yml create mode 100644 deployment/v3/helmsman/README.md create mode 100644 deployment/v3/helmsman/dsf/README.md create mode 100644 deployment/v3/helmsman/dsf/external-dsf.yaml create mode 100644 deployment/v3/helmsman/dsf/prereq-dsf.yaml create mode 100644 deployment/v3/helmsman/helmsman-workflow-guide.md create mode 100755 deployment/v3/helmsman/hooks/alerting-setup.sh create mode 100755 deployment/v3/helmsman/hooks/captcha-setup.sh create mode 100755 deployment/v3/helmsman/hooks/install-istio-and-httpbin.sh create mode 100755 deployment/v3/helmsman/hooks/msg-gateways-setup.sh create mode 100755 deployment/v3/helmsman/hooks/post_logging-setup.sh create mode 100755 deployment/v3/helmsman/hooks/s3-setup.sh create mode 100644 deployment/v3/helmsman/utils/alerting/alertmanager.yaml create mode 100644 deployment/v3/helmsman/utils/alerting/custom-alerts/kubernetes-node-not-ready.yaml create mode 100644 deployment/v3/helmsman/utils/alerting/custom-alerts/node-avarage-cpu-load-high.yaml create mode 100644 deployment/v3/helmsman/utils/alerting/custom-alerts/node-disk-usage-high.yaml create mode 100644 deployment/v3/helmsman/utils/alerting/custom-alerts/node-memory-usage-high.yaml create mode 100644 deployment/v3/helmsman/utils/alerting/custom-alerts/persistent-volume-usage-high.yaml create mode 100644 deployment/v3/helmsman/utils/alerting/patch-cluster-name.yaml create mode 100644 deployment/v3/helmsman/utils/global_configmap.yaml create mode 100644 deployment/v3/helmsman/utils/httpbin/deployment-busybox-curl.yaml create mode 100644 deployment/v3/helmsman/utils/httpbin/deployment.yaml create mode 100644 deployment/v3/helmsman/utils/httpbin/svc.yaml create mode 100644 deployment/v3/helmsman/utils/httpbin/vs.yaml create mode 100644 deployment/v3/helmsman/utils/istio-addons/gateway-istio-addons-0.1.0.tgz create mode 100644 deployment/v3/helmsman/utils/istio-addons/iam-istio-addons-0.1.0.tgz create mode 100644 deployment/v3/helmsman/utils/istio-addons/kafka-istio-addons-1.2.0.tgz create mode 100644 deployment/v3/helmsman/utils/istio-addons/logging-istio-addons-0.1.0.tgz create mode 100644 deployment/v3/helmsman/utils/istio-addons/minio-istio-addons-1.2.0.tgz create mode 100644 deployment/v3/helmsman/utils/istio-addons/postgres-istio-addons-0.1.0.tgz create mode 100644 deployment/v3/helmsman/utils/istio-gateway/.gitignore create mode 100644 deployment/v3/helmsman/utils/istio-gateway/Chart.yaml create mode 100644 deployment/v3/helmsman/utils/istio-gateway/README.md create mode 100644 deployment/v3/helmsman/utils/istio-gateway/templates/authpolicies.yaml create mode 100644 deployment/v3/helmsman/utils/istio-gateway/templates/authpolicy-mockrp.yaml create mode 100644 deployment/v3/helmsman/utils/istio-gateway/templates/gateway-internal.yaml create mode 100644 deployment/v3/helmsman/utils/istio-gateway/templates/gateway-public.yaml create mode 100644 deployment/v3/helmsman/utils/istio-gateway/templates/proxy-protocol.yaml create mode 100644 deployment/v3/helmsman/utils/istio-gateway/values.yaml create mode 100644 deployment/v3/helmsman/utils/istio-mesh/nodeport/iop-mosip.yaml create mode 100644 deployment/v3/helmsman/utils/istio-mesh/nodeport/istio-monitoring/PodMonitor.yaml create mode 100644 deployment/v3/helmsman/utils/istio-mesh/nodeport/istio-monitoring/ServiceMonitor.yaml create mode 100644 deployment/v3/helmsman/utils/logging/clusterflow-elasticsearch.yaml create mode 100644 deployment/v3/helmsman/utils/logging/clusteroutput-elasticsearch.yaml create mode 100644 deployment/v3/helmsman/utils/logging/dashboards/01-logstash.ndjson create mode 100644 deployment/v3/helmsman/utils/logging/dashboards/02-error-only-logs.ndjson create mode 100644 deployment/v3/helmsman/utils/logging/dashboards/03-service-logs.ndjson create mode 100644 deployment/v3/helmsman/utils/logging/dashboards/04-insight.ndjson create mode 100644 deployment/v3/helmsman/utils/logging/dashboards/05-response-time.ndjson create mode 100644 deployment/v3/helmsman/utils/logging/dashboards/README.md create mode 100644 deployment/v3/helmsman/utils/logging/dashboards/Resident Service Metrics-1700579878311.json create mode 100755 deployment/v3/helmsman/utils/logging/load_kibana_dashboards.sh diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml new file mode 100644 index 000000000..7dc4e1a38 --- /dev/null +++ b/.github/workflows/helmsman_external.yml @@ -0,0 +1,94 @@ +name: Deploy External services of mosip using Helmsman + +on: + workflow_dispatch: + inputs: + mode: + description: "Choose Helmsman mode: dry-run or apply" + required: true + default: "dry-run" + type: choice + options: + - dry-run + - apply + push: + paths: + - deployment/v3/helmsman/dsf/* + +jobs: + deploy: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - dsf_files: prereq-dsf.yaml + wg_conf: wg0 + - dsf_files: external-dsf.yaml + wg_conf: wg1 + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set Default Mode + run: | + if [ -z "${{ github.event.inputs.mode }}" ]; then + echo "mode=apply" >> $GITHUB_ENV + else + echo "mode=${{ github.event.inputs.mode }}" >> $GITHUB_ENV + fi + + - name: Setup ufw firewall + run: | + sudo ufw enable + sudo ufw allow ssh + sudo ufw allow 51820/udp + sudo ufw status + + - name: Install WireGuard + run: sudo apt-get install -y wireguard + + - name: Configure WireGuard + run: | + echo "${{ secrets.CLUSTER_WIREGUARD_WG0 }}" | sudo tee /etc/wireguard/wg0.conf + echo "${{ secrets.CLUSTER_WIREGUARD_WG1 }}" | sudo tee /etc/wireguard/wg1.conf + + - name: Start WireGuard + run: | + sudo chmod 600 /etc/wireguard/${{ matrix.wg_conf }}.conf + sudo chmod 700 /etc/wireguard/ + sudo chmod 644 /lib/systemd/system/wg-quick@.service + sudo systemctl daemon-reload + sudo wg-quick up ${{ matrix.wg_conf }} + sudo wg show ${{ matrix.wg_conf }} + + - name: Setup Helm + run: | + curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 + sudo chmod 700 get_helm.sh + sudo ./get_helm.sh + helm version --client + + - name: Install Helmsman + run: | + curl -L https://github.com/Praqma/helmsman/releases/download/v3.17.1/helmsman_3.17.1_linux_amd64.tar.gz -o helmsman.tar.gz + tar xzf helmsman.tar.gz + sudo mv helmsman /usr/local/bin + + - name: Initiate helmsman to apply the DSF configurations. + env: + KUBECONFIG: ${{ secrets.KUBECONFIG }} + run: | + curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.22.0 TARGET_ARCH=x86_64 sh - + export PATH=$PWD/istio-1.22.0/bin:$PATH + curl -LO https://dl.k8s.io/release/v1.31.3/bin/linux/amd64/kubectl + chmod +x kubectl + mkdir -p ~/.local/bin + mv ./kubectl ~/.local/bin/kubectl + kubectl version --client + mkdir -p $HOME/.kube + echo "${{ secrets.KUBECONFIG }}" > $HOME/.kube/config + chmod 400 $HOME/.kube/config + export KUBECONFIG=$HOME/.kube/config + kubectl config view + kubectl get nodes + helmsman --debug --${{ env.mode }} -f deployment/v3/helmsman/dsf/${{ matrix.dsf_files }} diff --git a/deployment/README.md b/deployment/README.md index 4287bc3df..0fe5fb426 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -2,3 +2,4 @@ * [Single click installer - V2](sandbox-v2) * [Production grade deployment - V3](v3) +* [Helmsman-deployment - v3](v3/helmsman) : To-Do - Experimental diff --git a/deployment/v3/helmsman/README.md b/deployment/v3/helmsman/README.md new file mode 100644 index 000000000..295cda224 --- /dev/null +++ b/deployment/v3/helmsman/README.md @@ -0,0 +1,67 @@ +# Helmsman + +Helmsman is a tool which is used to manage kubernetes deployment with helm chart, so basically it provides us a way to manage helm releases including installing, deleting and upgrading helm releases based on our requirement using helmsman configuration file/desired State File (DSF). + +### Explanation: +Imagine that we have different applications that we want to run on kubernetes which has it’s own process on how to set it up and run it, so helmsman helps us to keep the instructions within the Desired State File (DSF) and follows the instructions present in configuration file to make sure that the applications/services are setup correctly. + +Like explaned in the above point we tell the helmsman what applications we want to run and how we want them to set up using simple Desired State File (DSF). helmsman uses a simple declarative TOML file to allow you to describe a desired state for your k8s applications. Alternatively YAML declaration is also acceptable. + +The Desired State File (DSF) tells the helmsman on how the deployments should be handled like “install this app”, “use this version of app” or “make sure this app is running on these many number of instances”. + +Helmsman sees what you desire, validates that your desire makes sense, compares it with the current state of Helm and figures out what to do to make your desire come true. + + +### Working: +Helmsman gets its directions to navigate from a declarative file called Desired State File (DSF) maintained by the user (Kubernetes admin) and is usually version controlled. DSFs follow a specification which allows user to define how to connect to a Kubernetes cluster, what namespaces to use/create, what Helm repos to use for finding charts, and what instances (aka releases) of the chart to be installed/deleted/rolled back/upgraded and with what input parameters. + +Helmsman interprets your wishes from the DSF and compares it to what’s running in the designated cluster. It is smart enough to figure out what changes need to be applied to make your wishes come true without maintaining/storing any additional information anywhere. + +Note: To get more information about desired state file(DSF) please check the README.md file located in dsf directory. + +### Installation: + +Please make sure the following are installed prior to using helmsman as a binary: + +* [kubectl](https://github.com/kubernetes/kubectl) +* [helm](https://github.com/helm/helm) (helm >=v2.10.0 for helmsman >= 1.6.0, helm >=v3.0.0 for helmsman >=v3.0.0) +* [helm-diff](https://github.com/databus23/helm-diff) (helmsman >= 1.6.0) + +Check the [releases](https://github.com/Praqma/Helmsman/releases) page for the different versions. +``` +# on Linux +curl -L https://github.com/Praqma/helmsman/releases/download/v3.17.0/helmsman_3.17.0_linux_amd64.tar.gz | tar zx +# on MacOS +curl -L https://github.com/Praqma/helmsman/releases/download/v3.17.0/helmsman_3.17.0_darwin_amd64.tar.gz | tar zx + +mv helmsman /usr/local/bin/helmsman +``` + +### Helmsman commands: + +The below commands can be exicuted manually via cmd terminal + +To plan without executing: + +```helmsman -f example.yaml``` + +To plan and execute the plan: + +```helmsman --apply -f example.yaml``` + +To show debugging details: + +```helmsman --debug --apply -f example.yaml``` + +To run a dry-run: + +```helmsman --debug --dry-run -f example.yaml``` + +To limit execution to specific application: + +```helmsman --debug --dry-run --target artifactory -f example.yaml``` + +> **Note:** +> - This directory is a **work-in-progress** and currently **experimental**. +> - It is subject to changes as we continue to refine the deployment process. +> - Contributions and feedback are welcome as part of ongoing development! \ No newline at end of file diff --git a/deployment/v3/helmsman/dsf/README.md b/deployment/v3/helmsman/dsf/README.md new file mode 100644 index 000000000..ba21f18bd --- /dev/null +++ b/deployment/v3/helmsman/dsf/README.md @@ -0,0 +1,34 @@ +# Desired state file (DSF) + +The helmsman configuration file is also called as “Desired State File (DSF)” which tells the helmsman what applications we want to run and how we want them to set up within kubernetes cluster. when we create a DSF for helmsman we’re essentially providing a set of rules that helmsman should follow to manage our applications on kubernetes cluster. + +The Instructions that include within DSF: + +* which helm chart to use. +* configuration values +* dependencies between the helm charts. +* desired state. +* environment specific configuration. + +### The desired state file consists of: + +* Metadata [Optional] -- metadata for any human reader of the desired state file. +* Certificates [Optional] -- only needed when you want Helmsman to connect kubectl to your cluster for you. +* Context [optional] -- define the context in which a DSF is used. +* Settings [Optional] -- data about your k8s cluster and how to deploy Helm on it if needed. +* Namespaces -- defines the namespaces where you want your Helm charts to be deployed. +* Helm repos [Optional] -- defines the repos where you want to get Helm charts from. +* Apps -- defines the applications/charts you want to manage in your cluster. + +### Deploy Pre-requisites and External services of mosip + +To deploy Pre-requisites and External services of mosip we have two dsf files i,e + +* `prereq-dsf.yaml`: Installs Pre-requisites such as monitoring, logging, alerting, istio, httpbin and global_configmap. +* `external-dsf.yaml`: Intsalls all the External services of mosip. + +Make sure to update the above two dsf files with the required configuration changes as per the environement and also update the `global_configmap.yaml` file with the required domain's then initiate the `helmsman_external.yml` workflow file. + +### Note: +* Commit and push changes to this `deployment/v3/helmsman/dsf/` directory will automatically trigger the workflow to fetch the latest changes and apply to the cluster. +* Make sure to maintain seperate dsf files per each environment for maintainence and reproducability. \ No newline at end of file diff --git a/deployment/v3/helmsman/dsf/external-dsf.yaml b/deployment/v3/helmsman/dsf/external-dsf.yaml new file mode 100644 index 000000000..932c8399e --- /dev/null +++ b/deployment/v3/helmsman/dsf/external-dsf.yaml @@ -0,0 +1,195 @@ +helmDefaults: + tillerNamespace: kube-system + tillerless: true + install: true + +helmRepos: + bitnami: https://charts.bitnami.com/bitnami + mosip: https://mosip.github.io/mosip-helm + wiremind: https://wiremind.github.io/wiremind-helm-charts + kafka-ui: https://provectus.github.io/kafka-ui-charts + +namespaces: + postgres: + protected: false + keycloak: + protected: false + softhsm: + protected: false + minio: + protected: false + clamav: + protected: false + activemq: + protected: false + kafka: + protected: false + s3: + protected: false + msg-gateways: + protected: false + captcha: + protected: false + +apps: + postgres: + namespace: postgres + enabled: true + version: 13.1.5 + chart: bitnami/postgresql + wait: true + priority: -15 + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/refs/heads/develop/deployment/v3/external/postgres/values.yaml + + istio-addons-psql: + namespace: postgres + enabled: true + version: 0.1.0 + chart: ../utils/istio-addons/postgres-istio-addons-0.1.0.tgz + set: + postgresHost: "" + wait: true + priority: -14 + + postgres-init: + namespace: postgres + enabled: true + version: 0.0.1-develop + chart: mosip/postgres-init + wait: true + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/refs/heads/develop/deployment/v3/external/postgres/init_values.yaml + priority: -13 + + keycloak: + namespace: keycloak + enabled: true + version: 7.1.18 + chart: mosip/keycloak + wait: true + set: + image.repository: "mosipqa/mosip-artemis-keycloak" + image.tag: "develop" + image.pullPolicy: "Always" + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/refs/heads/develop/deployment/v3/external/iam/values.yaml + priority: -12 + + istio-addons-iam: + namespace: keycloak + enabled: true + version: 0.1.0 + chart: ../utils/istio-addons/iam-istio-addons-0.1.0.tgz + set: + keycloakExternalHost: "" + keycloakInternalHost: "keycloak.keycloak" + service: "keycloak" + wait: true + priority: -11 + + keycloak-init: + namespace: keycloak + enabled: true + version: 12.0.2 + chart: mosip/keycloak-init + wait: true + set: + IAMHOST_URL: "" + keycloak.realms.mosip.realm_config.attributes.frontendUrl: "https:///auth" + keycloak.realms.mosip.realm_config.smtpServer.auth: "false" + keycloak.realms.mosip.realm_config.smtpServer.host: "smtp.gmail.com" + keycloak.realms.mosip.realm_config.smtpServer.port: "465" + keycloak.realms.mosip.realm_config.smtpServer.from: "mosipqa@gmail.com" + keycloak.realms.mosip.realm_config.smtpServer.starttls: "false" + keycloak.realms.mosip.realm_config.smtpServer.ssl: "true" + priority: -10 + + softhsm-kernel: + namespace: softhsm + enabled: true + version: 12.0.1 + chart: mosip/softhsm + wait: true + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/develop/deployment/v3/external/hsm/softhsm/values.yaml + priority: -9 + + softhsm-ida: + namespace: softhsm + enabled: true + version: 12.0.1 + chart: mosip/softhsm + wait: true + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/develop/deployment/v3/external/hsm/softhsm/values.yaml + priority: -8 + + minio: + namespace: minio + enabled: true + version: 10.1.6 + chart: mosip/minio + wait: true + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/develop/deployment/v3/external/object-store/minio/values.yaml + priority: -7 + + istio-addons-minio: + namespace: minio + enabled: true + version: 1.2.0 + chart: ../utils/istio-addons/minio-istio-addons-1.2.0.tgz + set: + externalHost: "" + wait: true + hooks: + postInstall: "../hooks/s3-setup.sh " + priority: -6 + + clamav: + namespace: clamav + enabled: true + version: 3.1.0 + chart: wiremind/clamav + wait: true + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/develop/deployment/v3/external/antivirus/clamav/values.yaml + priority: -5 + + activemq: + namespace: activemq + enabled: true + version: 0.0.2 + chart: mosip/activemq-artemis + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/develop/deployment/v3/external/activemq/values.yaml + set: + istio.hosts[0]: "" + wait: true + priority: -4 + hooks: + postInstall: "../hooks/captcha-setup.sh " + + kafka: + namespace: kafka + enabled: true + version: 18.3.1 + chart: mosip/kafka + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/develop/deployment/v3/external/kafka/values.yaml + wait: true + priority: -3 + + kafka-ui: + namespace: kafka + enabled: true + version: 0.4.2 + chart: kafka-ui/kafka-ui + valuesFile: https://raw.githubusercontent.com/mosip/mosip-infra/develop/deployment/v3/external/kafka/ui-values.yaml + wait: true + priority: -2 + + istio-addons-kafka: + namespace: kafka + enabled: true + version: 1.2.0 + chart: ../utils/istio-addons/kafka-istio-addons-1.2.0.tgz + set: + kafkaUiHost: "" + installName: "kafka-ui" + wait: true + hooks: + postInstall: "../hooks/msg-gateways-setup.sh" + priority: -1 diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml new file mode 100644 index 000000000..cae82aeee --- /dev/null +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -0,0 +1,69 @@ +helmDefaults: + tillerNamespace: kube-system + tillerless: true + install: true + +helmRepos: + bitnami: https://charts.bitnami.com/bitnami + mosip: https://mosip.github.io/mosip-helm + banzaicloud-stable: https://charts.helm.sh/stable + +namespaces: + kube-system: + protected: true + cattle-monitoring-system: + protected: false + cattle-logging-system: + protected: false + istio-system: + protected: false + istio-operator: + protected: false + httpbin: + protected: false + +apps: + rancher-monitoring-crd: + namespace: cattle-monitoring-system + enabled: true + version: 103.1.1+up45.31.1 + chart: mosip/rancher-monitoring-crd + wait: true + priority: -4 + hooks: + postInstall: "../hooks/install-istio-and-httpbin.sh" + + rancher-monitoring: + namespace: cattle-monitoring-system + enabled: true + version: 103.1.0+up45.31.1 + chart: mosip/rancher-monitoring + set: + grafana.global.cattle.clusterId: "" + global.cattle.clusterId: "" + wait: true + valuesFile: https://raw.githubusercontent.com/mosip/k8s-infra/refs/heads/develop/monitoring/values.yaml + priority: -3 + timeout: 600 + hooks: + postInstall: "../hooks/alerting-setup.sh" + + elasticsearch: + namespace: cattle-logging-system + enabled: true + version: 17.9.25 + chart: mosip/elasticsearch + wait: true + priority: -2 + valuesFile: https://raw.githubusercontent.com/mosip/k8s-infra/refs/heads/develop/logging/es_values.yaml + + istio-addons-logging: + namespace: cattle-logging-system + enabled: true + version: 0.1.0 + chart: ../utils/istio-addons/logging-istio-addons-0.1.0.tgz + set: + KIBANA_HOST: "" + KIBANA_NAME: "elasticsearch-kibana" + wait: true + priority: -1 diff --git a/deployment/v3/helmsman/helmsman-workflow-guide.md b/deployment/v3/helmsman/helmsman-workflow-guide.md new file mode 100644 index 000000000..06728c058 --- /dev/null +++ b/deployment/v3/helmsman/helmsman-workflow-guide.md @@ -0,0 +1,89 @@ +# Deploy External Services of MOSIP using Helmsman + +This repository contains a GitHub Actions workflow to deploy external services of MOSIP using Helmsman. The workflow supports multiple modes (`dry-run` and `apply`) and handles essential setup tasks like configuring WireGuard, installing Helm and Helmsman, and applying configurations of DSF files. + +--- + +## Workflow Overview + +The workflow is triggered by: +- **Manual Dispatch**: Allowing users to select the mode (`dry-run` or `apply`). +- **Push Events**: Monitoring changes in the `deployment/v3/helmsman/dsf/` directory. + +The deployment is done in a matrix strategy to handle multiple configuration files for WireGuard and DSF (Deployment Specification Files). + +### Inputs to be provided to run workflow. + +### `mode` +- **Description**: Choose the mode in which Helmsman runs. +- **Required**: Yes +- **Default**: `dry-run` +- **Options**: + - `dry-run`: Simulates the deployment without making changes. + - `apply`: Applies the deployment changes. + +### Secrets + +The following secrets are required to run this workflow: +- `CLUSTER_WIREGUARD_WG0`: WireGuard configuration for `wg0`. +- `CLUSTER_WIREGUARD_WG1`: WireGuard configuration for `wg1`. +- `KUBECONFIG`: The Kubernetes configuration file for cluster access. + +### Steps Performed: + +1. **Repository Checkout** +- Fetches the repository to work with the required configuration files. + +2. **Set Default Mode** +- Sets the deployment mode based on the user input or defaults to `apply`. + +3. **Setup UFW Firewall** +- Enables the firewall. +- Allows SSH and WireGuard (UDP port 51820). + +4. **Install WireGuard** +- Installs WireGuard to enable secure communication with clusters. + +5. **Configure WireGuard** +- Configures WireGuard using the provided secret configuration files. + +6. **Start WireGuard** +- Starts the WireGuard service for secure network communication. + +7. **Setup Helm** +- Installs Helm, a Kubernetes package manager. + +8. **Install Helmsman** +- Installs Helmsman, a tool for managing Helm charts. + +9. **Apply Helmsman Configurations** +- Prepares the Kubernetes environment (kubectl, Istio CLI). +- Uses Helmsman to deploy DSF configurations in the specified mode. + +### Triggering the Workflow Manually +1. Navigate to the "Actions" tab in your repository. +2. Select the `Deploy External Services` workflow. +3. Click on "Run workflow." +4. Choose the mode (`dry-run` or `apply`) and start the workflow. + +### Triggering on Push +- Commit and push changes to `deployment/v3/helmsman/dsf/` to automatically trigger the workflow. + +## Prerequisites + +- Ensure the necessary secrets (`CLUSTER_WIREGUARD_WG0`, `CLUSTER_WIREGUARD_WG1`, `KUBECONFIG`) are configured in the repository settings. +- The target Kubernetes cluster should be accessible via the provided `KUBECONFIG`. + +--- + +## Debugging and Logs + +- The workflow runs with `--debug` mode enabled for Helmsman to provide detailed logs. +- Logs can be viewed in the "Actions" tab of the repository under the respective workflow run. + +--- + +> **Note:** +> - This directory is a **work-in-progress** and currently **experimental**. +> - It is subject to changes as we continue to refine the deployment process. +> - Contributions and feedback are welcome as part of ongoing development! \ No newline at end of file diff --git a/deployment/v3/helmsman/hooks/alerting-setup.sh b/deployment/v3/helmsman/hooks/alerting-setup.sh new file mode 100755 index 000000000..baa965d16 --- /dev/null +++ b/deployment/v3/helmsman/hooks/alerting-setup.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# Patch notification alerts + +NS=cattle-monitoring-system + +function installing_alerting() { + + # Define the Slack channel, Slack_api_url and Cluster name dynamically + SLACK_CHANNEL="soil" + SLACK_API_URL="https://hooks.slack.com/services/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" + ENV_NAME="soil" + + ALERTMANAGER_FILE="./utils/alerting/alertmanager.yaml" + PATCH_CLUSTER_NAME_FILE="./utils/alerting/patch-cluster-name.yaml" + + # Update the channel using sed + sed -i "s||$SLACK_CHANNEL|g" "$ALERTMANAGER_FILE" + sed -i "s||$SLACK_API_URL|g" "$ALERTMANAGER_FILE" + sed -i "s||$ENV_NAME|g" "$PATCH_CLUSTER_NAME_FILE" + + echo "Updated $ALERTMANAGER_FILE and $PATCH_CLUSTER_NAME_FILE" + + echo Patching alert manager secrets + kubectl patch secret alertmanager-rancher-monitoring-alertmanager -n $NS --patch="{\"data\": { \"alertmanager.yaml\": \"$(cat ./utils/alerting/alertmanager.yaml |base64 |tr -d '\n' )\" }}" + echo Regenerating secrets + kubectl delete secret alertmanager-rancher-monitoring-alertmanager-generated -n $NS + echo Adding cluster name + kubectl patch Prometheus rancher-monitoring-prometheus -n $NS --patch-file ./utils/alerting/patch-cluster-name.yaml --type=merge + echo Applying custom alerts + kubectl apply -f ./utils/alerting/custom-alerts/ + return 0 +} + +# set commands for error handling. +set -e +set -o errexit ## set -e : exit the script if any statement returns a non-true return value +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errtrace # trace ERR through 'time command' and other functions +set -o pipefail # trace ERR through pipes +installing_alerting # calling function diff --git a/deployment/v3/helmsman/hooks/captcha-setup.sh b/deployment/v3/helmsman/hooks/captcha-setup.sh new file mode 100755 index 000000000..dcf364f8a --- /dev/null +++ b/deployment/v3/helmsman/hooks/captcha-setup.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Creates captcha secrets for MOSIP services (prereg, admin, resident). + +ROOT_DIR=`pwd` +NS=captcha + +# Set the site keys and secret keys +PSITE_KEY="$1" +PSECRET_KEY="$2" +ASITE_KEY="$3" +ASECRET_KEY="$4" +RSITE_KEY="$5" +RSECRET_KEY="$6" + + +function secret_setup() { + + # Configure Captcha secrets for prereg, admin and resident + echo "Setting up captcha secrets" + kubectl -n $NS create secret generic mosip-captcha \ + --from-literal=prereg-captcha-site-key="$PSITE_KEY" \ + --from-literal=prereg-captcha-secret-key="$PSECRET_KEY" \ + --from-literal=admin-captcha-site-key="$ASITE_KEY" \ + --from-literal=admin-captcha-secret-key="$ASECRET_KEY" \ + --from-literal=resident-captcha-site-key="$RSITE_KEY" \ + --from-literal=resident-captcha-secret-key="$RSECRET_KEY" \ + --dry-run=client -o yaml | kubectl apply -f - + echo "Captcha secrets configured successfully for prereg, admin and resident in namespace $NS." + + return 0 +} +# Set commands for error handling. +set -e +set -o errexit ## set -e : exit the script if any statement returns a non-true return value +set -o nounset ## set -u : exit the script if you try to use an uninitialized variable +set -o errtrace # trace ERR through 'time command' and other functions +set -o pipefail # trace ERR through pipes +secret_setup # calling function diff --git a/deployment/v3/helmsman/hooks/install-istio-and-httpbin.sh b/deployment/v3/helmsman/hooks/install-istio-and-httpbin.sh new file mode 100755 index 000000000..4c93bcda4 --- /dev/null +++ b/deployment/v3/helmsman/hooks/install-istio-and-httpbin.sh @@ -0,0 +1,83 @@ +#!/bin/bash +# Install ingress gateways + +#NOTE: istioctl is specific to kubeconfig file. If you've more than one config files, please specify them like mentioned below: +#istioctl --kubeconfig or use -c as shorthand for --kubeconfig. + +ISTIO_NS=istio-system +HTTPBIN_NS=httpbin + +echo Operator init +istioctl operator init + +function installing_istio_and_httpbin() { + echo "Installing Global Configmap" + kubectl apply -f ./utils/global_configmap.yaml + echo "Installed Global Configmap" + + echo Create ingress gateways, load balancers and istio monitoring + kubectl apply -f ./utils/istio-mesh/nodeport/iop-mosip.yaml + kubectl apply -f ./utils/istio-mesh/nodeport/istio-monitoring/ + echo Wait for all resources to come up + sleep 10 + kubectl -n $ISTIO_NS rollout status deploy istiod + kubectl -n $ISTIO_NS rollout status deploy istio-ingressgateway + kubectl -n $ISTIO_NS rollout status deploy istio-ingressgateway-internal + + echo ------ IMPORTANT --------- + echo If you already have pods running with envoy sidecars, restart all of them NOW. Check if all of them appear with command "istioctl proxy-status" + echo -------------------------- + + echo Installing gateways, proxy protocol, authpolicies + PUBLIC=$(kubectl get cm global -o jsonpath={.data.mosip-api-host}) + INTERNAL=$(kubectl get cm global -o jsonpath={.data.mosip-api-internal-host}) + echo Public domain: $PUBLIC + echo Internal dome: $INTERNAL + + + ##helm -n istio-system install istio-addons chart/istio-addons --set gateway.public.host=$PUBLIC --set gateway.internal.host=$INTERNAL --set proxyProtocol.enabled=false + + # Check if the internal gateway exists + internal_exists=$(kubectl get gateway internal -n $ISTIO_NS --ignore-not-found=true) + + # Check if the public gateway exists + public_exists=$(kubectl get gateway public -n $ISTIO_NS --ignore-not-found=true) + + if [[ -n "$public_exists" && -z "$internal_exists" ]]; then + echo "Public gateway is present, but internal is not." + gateway_option="--set gateway.public.enabled=false --set gateway.internal.host=$INTERNAL" + elif [[ -n "$internal_exists" && -z "$public_exists" ]]; then + echo "Internal gateway is present, but public is not." + gateway_option="--set gateway.public.host=$PUBLIC --set gateway.internal.enabled=false" + elif [[ -z "$public_exists" && -z "$internal_exists" ]]; then + echo "Neither public nor internal gateway is present." + gateway_option="--set gateway.public.host=$PUBLIC --set gateway.internal.host=$INTERNAL" + fi + + if [[ -n "$public_exists" && -n "$internal_exists" ]]; then + echo "Both public and internal gateways exist. Skipping installation." + else + helm -n $ISTIO_NS install istio-addons ./utils/istio-gateway \ + $gateway_option \ + --set proxyProtocol.enabled=false \ + --wait + fi + + echo "Installing utility httpbin" + kubectl label ns $HTTPBIN_NS istio-injection=enabled --overwrite + + kubectl -n $HTTPBIN_NS apply -f ./utils/httpbin/svc.yaml + kubectl -n $HTTPBIN_NS apply -f ./utils/httpbin/deployment.yaml + kubectl -n $HTTPBIN_NS apply -f ./utils/httpbin/deployment-busybox-curl.yaml + kubectl -n $HTTPBIN_NS apply -f ./utils/httpbin/vs.yaml + + return 0 +} + +# set commands for error handling. +set -e +set -o errexit ## set -e : exit the script if any statement returns a non-true return value +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errtrace # trace ERR through 'time command' and other functions +set -o pipefail # trace ERR through pipes +installing_istio_and_httpbin # calling function diff --git a/deployment/v3/helmsman/hooks/msg-gateways-setup.sh b/deployment/v3/helmsman/hooks/msg-gateways-setup.sh new file mode 100755 index 000000000..9f69739a9 --- /dev/null +++ b/deployment/v3/helmsman/hooks/msg-gateways-setup.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# Creates configmap and secrets for SMTP and SMS + +NS=msg-gateways + +function msg_gateway() { + + SMTP_HOST=mock-smtp.mock-smtp + SMS_HOST=mock-smtp.mock-smtp + SMTP_PORT=8025 + SMS_PORT=8080 + SMTP_USER= + SMS_USER= + SMTP_SECRET="''" + SMS_SECRET="''" + SMS_AUTHKEY="authkey" + + kubectl -n $NS create configmap msg-gateway --from-literal="smtp-host=$SMTP_HOST" --from-literal="sms-host=$SMS_HOST" --from-literal="smtp-port=$SMTP_PORT" --from-literal="sms-port=$SMS_PORT" --from-literal="smtp-username=$SMTP_USER" --from-literal="sms-username=$SMS_USER" + kubectl -n $NS create secret generic msg-gateway --from-literal="smtp-secret=$SMTP_SECRET" --from-literal="sms-secret=$SMS_SECRET" --from-literal="sms-authkey=$SMS_AUTHKEY" --dry-run=client -o yaml | kubectl apply -f - + + echo smtp and sms related configurations set. + return 0 +} +# set commands for error handling. +set -e +set -o errexit ## set -e : exit the script if any statement returns a non-true return value +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errtrace # trace ERR through 'time command' and other functions +set -o pipefail # trace ERR through pipes +msg_gateway # calling function diff --git a/deployment/v3/helmsman/hooks/post_logging-setup.sh b/deployment/v3/helmsman/hooks/post_logging-setup.sh new file mode 100755 index 000000000..095a0187b --- /dev/null +++ b/deployment/v3/helmsman/hooks/post_logging-setup.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +if [ $# -ge 1 ] ; then + export KUBECONFIG=$1 +fi + +function post_logging_setup() { + echo "Adding Index Lifecycle Policy and Index Template to Elasticsearch" + kubectl exec -it elasticsearch-master-0 -n cattle-logging-system -- curl -XPUT "http://elasticsearch-master:9200/_ilm/policy/3_days_delete_policy" -H 'Content-Type: application/json' -d' + { + "policy": { + "phases": { + "delete": { + "min_age": "3d", + "actions": { + "delete": {} + } + } + } + } + }' + kubectl exec -it elasticsearch-master-0 -n cattle-logging-system -- curl -XPUT "http://elasticsearch-master:9200/_index_template/logstash_template" -H 'Content-Type: application/json' -d' + { + "index_patterns": ["logstash-*"], + "template": { + "settings": { + "index": { + "lifecycle": { + "name": "3_days_delete_policy" + } + } + }, + "aliases": {}, + "mappings": {} + } + }' + + echo "Configure Rancher FluentD" + kubectl apply -f ./utils/logging/clusteroutput-elasticsearch.yaml + kubectl apply -f ./utils/logging/clusterflow-elasticsearch.yaml + + echo "Load Dashboards" + ./utils/logging/load_kibana_dashboards.sh ./utils/logging/dashboards ~/.kube/soil.config + echo "Dashboards loaded" + return 0 +} + +# set commands for error handling. +set -e +set -o errexit ## set -e : exit the script if any statement returns a non-true return value +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errtrace # trace ERR through 'time command' and other functions +set -o pipefail # trace ERR through pipes +post_logging_setup # calling function diff --git a/deployment/v3/helmsman/hooks/s3-setup.sh b/deployment/v3/helmsman/hooks/s3-setup.sh new file mode 100755 index 000000000..112167988 --- /dev/null +++ b/deployment/v3/helmsman/hooks/s3-setup.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# Creates configmap and secrets for S3/Minio +# Specific "" for region for minio local installation +## Usage: ./install.sh [kubeconfig] + +if [ $# -ge 3 ] ; then + export KUBECONFIG=$4 +fi + +NS=s3 +PRETEXT_VALUE="$1" + +echo Create $NS namespace +kubectl create ns $NS + +function installing_Cred() { + echo Istio label + kubectl label ns $NS istio-injection=enabled --overwrite + + echo Creating secrets as per Minio native installation + USER=$(kubectl -n minio get secret minio -o jsonpath='{.data.root-user}' | base64 --decode) + PASS=$(kubectl -n minio get secret minio -o jsonpath='{.data.root-password}' | base64 --decode) + kubectl -n s3 create configmap s3 --from-literal=s3-user-key=$USER --from-literal=s3-region="" --dry-run=client -o yaml | kubectl apply -f - + kubectl -n s3 create secret generic s3 --from-literal=s3-user-secret=$PASS --from-literal=s3-pretext-value=$PRETEXT_VALUE --dry-run=client -o yaml | kubectl apply -f - + echo object-store secret and config map is set now. + return 0 +} + +# set commands for error handling. +set -e +set -o errexit ## set -e : exit the script if any statement returns a non-true return value +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errtrace # trace ERR through 'time command' and other functions +set -o pipefail # trace ERR through pipes +installing_Cred # calling function diff --git a/deployment/v3/helmsman/utils/alerting/alertmanager.yaml b/deployment/v3/helmsman/utils/alerting/alertmanager.yaml new file mode 100644 index 000000000..d77e221f8 --- /dev/null +++ b/deployment/v3/helmsman/utils/alerting/alertmanager.yaml @@ -0,0 +1,126 @@ +--- +global: + resolve_timeout: 5m + slack_api_url: https://hooks.slack.com/services/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 +route: + group_by: + - namespace + - job + group_interval: 5m + group_wait: 5m + receiver: 'slack' + repeat_interval: 12h + routes: + - receiver: 'null' + match: + alertname: KubeStatefulSetReplicasMismatch + severity: warning + continue: false + - receiver: 'null' + match: + alertname: KubeDeploymentReplicasMismatch + severity: warning + continue: false + - receiver: 'slack' + match: + alertname: KubeContainerWaiting + severity: warning + continue: false + - receiver: 'slack' + match: + alertname: KubeJobFailed + severity: warning + continue: false + - receiver: 'slack' + match: + alertname: KubeHpaMaxedOut + severity: warning + continue: false + - receiver: 'null' + match: + alertname: InfoInhibitor + severity: none + continue: false + - receiver: 'null' + match: + alertname: etcdInsufficientMembers + severity: critical + continue: false + - receiver: 'null' + match: + alertname: CPUThrottlingHigh + severity: info + continue: false + - receiver: 'null' + match: + alertname: KubeAggregatedAPIDown + severity: warning + continue: false + - receiver: 'null' + match: + alertname: KubeClientErrors + severity: warning + continue: false + - receiver: 'null' + match: + alertname: etcdHighNumberOfFailedGRPCRequests + severity: warning + continue: false +# - match: +# statefulset: activemq-activemq-artemis-slave +# receiver: 'null' + - receiver: 'null' + match: + alertname: Watchdog + severity: none + continue: false + - receiver: 'null' + match: + alertname: TargetDown + severity: warning + continue: false + - receiver: 'null' + match: + alertname: etcdMembersDown + severity: critical + continue: false + - receiver: 'slack' + match: + severity: critical + continue: false + - receiver: 'slack' + match: + severity: warning + continue: false + - receiver: 'null' + match: + severity: info + continue: false + - receiver: 'null' + match: + severity: none + continue: false +receivers: + - name: 'null' + - name: 'slack' + slack_configs: + - channel: 'soil' + send_resolved: true + title: '[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | + len }}{{ end }}] Monitoring Event Notification' + text: >- + {{ range .Alerts }} + + *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}` + + *Description:* {{ .Annotations.description }} + + *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:> *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:> + + *Details:* + + {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}` + + {{ end }} + + {{ end }} diff --git a/deployment/v3/helmsman/utils/alerting/custom-alerts/kubernetes-node-not-ready.yaml b/deployment/v3/helmsman/utils/alerting/custom-alerts/kubernetes-node-not-ready.yaml new file mode 100644 index 000000000..672c8ad81 --- /dev/null +++ b/deployment/v3/helmsman/utils/alerting/custom-alerts/kubernetes-node-not-ready.yaml @@ -0,0 +1,21 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: custom-kubernetes-node-not-ready + namespace: cattle-monitoring-system +spec: + groups: + - name: node + rules: + - alert: KubeNodeNotReady + annotations: + description: >- + Kubernetes node {{ $labels.node }} is not in a 'Ready' state for + more than 5 minutes. + runbook_url: >- + https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubenodenotready + summary: Kubernetes node {{ $labels.node }} is not ready. + expr: kube_node_status_condition{condition="Ready", status="false"} == 1 + for: 5m + labels: + severity: critical diff --git a/deployment/v3/helmsman/utils/alerting/custom-alerts/node-avarage-cpu-load-high.yaml b/deployment/v3/helmsman/utils/alerting/custom-alerts/node-avarage-cpu-load-high.yaml new file mode 100644 index 000000000..3a185010b --- /dev/null +++ b/deployment/v3/helmsman/utils/alerting/custom-alerts/node-avarage-cpu-load-high.yaml @@ -0,0 +1,14 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: custom-nodes-avarage-load-high + namespace: cattle-monitoring-system +spec: + groups: + - name: node + rules: + - alert: NodeAvarageCPULoadHigh + expr: node_load5 > node:node_num_cpu:sum + for: 300s + labels: + severity: critical \ No newline at end of file diff --git a/deployment/v3/helmsman/utils/alerting/custom-alerts/node-disk-usage-high.yaml b/deployment/v3/helmsman/utils/alerting/custom-alerts/node-disk-usage-high.yaml new file mode 100644 index 000000000..73b4fbb34 --- /dev/null +++ b/deployment/v3/helmsman/utils/alerting/custom-alerts/node-disk-usage-high.yaml @@ -0,0 +1,24 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: custom-nodes-avarage-storage-high + namespace: cattle-monitoring-system +spec: + groups: + - name: node-storage + rules: + - alert: NodeStorageUsageHigh + annotations: + description: >- + Node {{ $labels.instance }} storage usage is above 90%. + Current usage: {{ $value | humanizePercentage }}. + runbook_url: >- + https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-nodestorageusagehigh + summary: High storage usage on node {{ $labels.instance }}. + expr: >- + (node_filesystem_size_bytes{fstype!="tmpfs",fstype!="rootfs"} - + node_filesystem_free_bytes{fstype!="tmpfs",fstype!="rootfs"}) / + node_filesystem_size_bytes{fstype!="tmpfs",fstype!="rootfs"} > 0.90 + for: 30s + labels: + severity: critical diff --git a/deployment/v3/helmsman/utils/alerting/custom-alerts/node-memory-usage-high.yaml b/deployment/v3/helmsman/utils/alerting/custom-alerts/node-memory-usage-high.yaml new file mode 100644 index 000000000..0c753beac --- /dev/null +++ b/deployment/v3/helmsman/utils/alerting/custom-alerts/node-memory-usage-high.yaml @@ -0,0 +1,16 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: custom-node-memry-usage-high + namespace: cattle-monitoring-system +spec: + groups: + - name: node + rules: + - alert: NodeMemoryUsageHigh + expr: >- + 1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) > + 0.6 + for: 300s + labels: + severity: warning \ No newline at end of file diff --git a/deployment/v3/helmsman/utils/alerting/custom-alerts/persistent-volume-usage-high.yaml b/deployment/v3/helmsman/utils/alerting/custom-alerts/persistent-volume-usage-high.yaml new file mode 100644 index 000000000..5409aab57 --- /dev/null +++ b/deployment/v3/helmsman/utils/alerting/custom-alerts/persistent-volume-usage-high.yaml @@ -0,0 +1,20 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: persistent-volume-filling-up + namespace: cattle-monitoring-system +spec: + groups: + - name: node + rules: + - alert: KubePersistentVolumeFilling-greater-than-90% + annotations: + description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is {{ $value | humanizePercentage }} occupied. + runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepersistentvolumefillingup + summary: PersistentVolume filled up to 90% of the storage. + expr: >- + kubelet_volume_stats_used_bytes{job="kubelet",metrics_path="/metrics",namespace=~".*"} / + kubelet_volume_stats_capacity_bytes{job="kubelet",metrics_path="/metrics",namespace=~".*"} > 0.90 + for: 30s + labels: + severity: critical \ No newline at end of file diff --git a/deployment/v3/helmsman/utils/alerting/patch-cluster-name.yaml b/deployment/v3/helmsman/utils/alerting/patch-cluster-name.yaml new file mode 100644 index 000000000..93ff0da6f --- /dev/null +++ b/deployment/v3/helmsman/utils/alerting/patch-cluster-name.yaml @@ -0,0 +1,3 @@ +spec: + externalLabels: + cluster: soil diff --git a/deployment/v3/helmsman/utils/global_configmap.yaml b/deployment/v3/helmsman/utils/global_configmap.yaml new file mode 100644 index 000000000..532ff72e7 --- /dev/null +++ b/deployment/v3/helmsman/utils/global_configmap.yaml @@ -0,0 +1,35 @@ +## The data here is of generic interest to modules in different namespaces hence this is marked as global. +## Replace your domain names here. +## mosip-api-host: External public access. (Typically required only in production rollouts). +## mosip-api-internal-host: Internal secure access over Wireguard. +## By default all domains and subdomains listed below point to mosip-api-internal-host. Modify this default behavior ONLY in production rollout as follows: +## mosip-prereg-host: Points to mosip-api-host. +## mosip-pmp-host: Points to mosip-api-host. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: global + namespace: default +data: + installation-name: sandbox + installation-domain: sandbox.xyz.net + mosip-version: develop + mosip-api-host: api.sandbox.xyz.net + mosip-api-internal-host: api-internal.sandbox.xyz.net + mosip-prereg-host: prereg.sandbox.xyz.net + mosip-activemq-host: activemq.sandbox.xyz.net + mosip-kibana-host: kibana.sandbox.xyz.net + mosip-admin-host: admin.sandbox.xyz.net + mosip-regclient-host: regclient.sandbox.xyz.net + mosip-minio-host: minio.sandbox.xyz.net + mosip-kafka-host: kafka.sandbox.xyz.net + mosip-iam-external-host: iam.sandbox.xyz.net + mosip-postgres-host: postgres.sandbox.xyz.net + mosip-pmp-host: pmp.sandbox.xyz.net + mosip-resident-host: resident.sandbox.xyz.net + mosip-compliance-host: compliance.sandbox.xyz.net + mosip-esignet-host: esignet.sandbox.xyz.net + mosip-smtp-host: smtp.sandbox.xyz.net + mosip-signup-host: signup.sandbox.xyz.net + is_glowroot_env: absent \ No newline at end of file diff --git a/deployment/v3/helmsman/utils/httpbin/deployment-busybox-curl.yaml b/deployment/v3/helmsman/utils/httpbin/deployment-busybox-curl.yaml new file mode 100644 index 000000000..71ce96611 --- /dev/null +++ b/deployment/v3/helmsman/utils/httpbin/deployment-busybox-curl.yaml @@ -0,0 +1,23 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: busybox-curl +spec: + replicas: 1 + selector: + matchLabels: + app: busybox-curl + version: v1 + template: + metadata: + labels: + app: busybox-curl + version: v1 + spec: + containers: + - image: docker.io/yauritux/busybox-curl:latest + imagePullPolicy: IfNotPresent + name: busybox-curl + args: + - sleep + - "infinity" diff --git a/deployment/v3/helmsman/utils/httpbin/deployment.yaml b/deployment/v3/helmsman/utils/httpbin/deployment.yaml new file mode 100644 index 000000000..5420cdaae --- /dev/null +++ b/deployment/v3/helmsman/utils/httpbin/deployment.yaml @@ -0,0 +1,45 @@ +# Copyright Istio Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################################################## +# httpbin service +################################################################################################## +apiVersion: v1 +kind: ServiceAccount +metadata: + name: httpbin +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: httpbin +spec: + replicas: 1 + selector: + matchLabels: + app: httpbin + version: v1 + template: + metadata: + labels: + app: httpbin + version: v1 + spec: + serviceAccountName: httpbin + containers: + - image: docker.io/kennethreitz/httpbin + imagePullPolicy: IfNotPresent + name: httpbin + ports: + - containerPort: 80 diff --git a/deployment/v3/helmsman/utils/httpbin/svc.yaml b/deployment/v3/helmsman/utils/httpbin/svc.yaml new file mode 100644 index 000000000..4418b445b --- /dev/null +++ b/deployment/v3/helmsman/utils/httpbin/svc.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: httpbin + labels: + app: httpbin + service: httpbin +spec: + ports: + - name: http + port: 8000 + targetPort: 80 + selector: + app: httpbin diff --git a/deployment/v3/helmsman/utils/httpbin/vs.yaml b/deployment/v3/helmsman/utils/httpbin/vs.yaml new file mode 100644 index 000000000..1ba3b87ed --- /dev/null +++ b/deployment/v3/helmsman/utils/httpbin/vs.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.istio.io/v1beta1 +kind: VirtualService +metadata: + name: httpbin + namespace: httpbin +spec: + hosts: + - "*" + gateways: + - istio-system/internal + - istio-system/public + http: + - match: + - uri: + prefix: /httpbin/ + rewrite: + uri: "/" + route: + - destination: + host: httpbin + port: + number: 8000 + headers: + request: + set: + x-forwarded-proto: https diff --git a/deployment/v3/helmsman/utils/istio-addons/gateway-istio-addons-0.1.0.tgz b/deployment/v3/helmsman/utils/istio-addons/gateway-istio-addons-0.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ac202075674f18a7808e995732ce09f92a95c448 GIT binary patch literal 1313 zcmV++1>X7}iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PLFGZreH%$8*i67_@i6T9&^H-vwK58z60iCg@_ZC~8`oScEB( zASpYl(RV)}B_);s>k*5&3i2^rL!@Cbx=a=AT5zMK@70nG1G{rG& zPAy_{g=3&faTZZ$i!7^l!k`m`EQA-Uhe%*Fc~p04ket7VS0hpr+FD zHow%;%1HVi)GO1>CYO@4$oDixkzcLoe2%)j{@iZ-ZB^snVyZZ`Xxh%-%K4ieARg@F ze-L)J_#bt9oreEoXuSq@1Hq>v^50_?Y%m7jzLCv5!C;hWX7j*Lo`A{rvNJov`o4Db>lUDhooAl=2|i8x_|IFZj22owB?#=}zu((h|GQzg+wgxB z9iD5-xm@{K(_%3S%WU2MmT}i!QV!jzGC|3#XmBHdo3G2fEQ5oM6 z1|DVpZX){I^%8Z7yOP>ge2XldxgEi)uqyEFCDy94Kvf$Iczb<)dAB7oRmfPcce}#f z==|`cj z`?hxQ?_bBXD(C%T{)dC@_kW|osMqj+4AuFsy@h+i;y)2fng54zi~6w`P@7zLvA`MS zlEzoHn80fr0;*JXu<#&CL{i+a`K8-MRGR^+6wj~a7%tAQt|#v&A4$0jh?2_U{VoCC zO+LPvl*Rs4`2EI#Ghl#!5}r z>nZ>pJ_6PF59Z9WxsVzU+QvTq!|ucLzkavj{}}Qod89b_75aSKac=2sP zN?nq1Z@Xxc%{T@Gz!@zMEM0$6xKHT{tC@B6m1axV{lak3k;~%H^C!FUpmlNzSN@X=NKhjv7A*{9s;Z;W<>+ydq8PZ* zGWEF+XY-UQn9jMJQ9dpG9D{47bnDco9Y)az1NW%Ug|U=#GM!FI&}PN2z$Culxu<5M XMvWRZ`i1%{00960qxX%k04e|gC32q1 literal 0 HcmV?d00001 diff --git a/deployment/v3/helmsman/utils/istio-addons/iam-istio-addons-0.1.0.tgz b/deployment/v3/helmsman/utils/istio-addons/iam-istio-addons-0.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1350ad4895270305cb756bf2d4fe72d27e4a26d3 GIT binary patch literal 893 zcmV-@1A_b?iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI-bZz4Ak=6U~$5mjF*t?>eZYTv3;)tstpPrXxKtI6&Vtaxpo z?IqAC|9j>Al?B1kC@Jj;<^^`*8QYWZoB0;uywEY`xmIrUZi&{j4Hk0nmc}{fv+1<@ z3t<6#CGL{KilU zXp9sYhFsCA-G{S;@#w!U#F^R_|5qqWa&O)Mj`Dvp-r@h0kLMTupTfR-=5B!-xFx_W zBj+dwq2f%I&XWagVPSOvy7W%u6x}y5@0BO3P+n{2Q)s=c{nD-bdEH+puwV{Veyi7P zz4?nN@{uFE5*a-wxio~6*cSgi6-J^bH@ZVl54d@oR&b2}Q$F9}|16nLF8n`*_2<7L z|Df%?PG|5PNI9E@)UllaS;{dF-MPS1W-@=j3vsoNM3}i>7~6%WY5uVRZ~fTVKZksIs^vo5GL0byWK;y*G`+SnYMDWeV4yKYy&8 zOYOX?GsN)t2<)aFZTlJ$JUyLnvpK;3P`^Jjtrp_0K=aBraE$-+>F)fWUrnYL{-46O z^ncQ@{9W~r|A6KzJdXoJ8m}`LMt9)ZA0!DKvEN#EU{{-=i*0#dB}w-Yw682eihaSQ zl~t^@2&@VqfsSv$z9?`AWX-ZjBx~e8&-%emOdR(<80z z0RLCQ`VwVxihq~?$#lH?{y)E(U*7*uVlSNkH#IIk)wuX4GGJ>G4}Ta&0L}F8yj@IK z9`GFjJU+%C7C>J*fHzo#p$^C&$HwaQW?1tlh5~)IY$Zbsr4{W%tq^D-)+vnY*y=A< zm!6&@a&lg%>Zgf*WZe|{Te7VOx5`-amc*paDk;xDSl zieJYIZ6DC)l*g6ksa23`%0<%Ap_;WNerdg4T&Z6BY&U;;VuvQf|Ehc{KWim;v5Q^o T-0bfF00960M~49n02%-Q-0Hf& literal 0 HcmV?d00001 diff --git a/deployment/v3/helmsman/utils/istio-addons/kafka-istio-addons-1.2.0.tgz b/deployment/v3/helmsman/utils/istio-addons/kafka-istio-addons-1.2.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..22d89608b7406b63e2324f5003d0518ed1b89633 GIT binary patch literal 871 zcmV-t1DO0DiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PL4dZ{s!)hJEI*n659aQB#z^Qs`D>izX=0E|9FR#aJ3kTvH@V zQgXbD?Qbt6#aY>HkQOykr15)@#PRUMHlKGW>4P+5%rc{WbXlMae21kPoKivvv6#); zyAa~|E+*5-Af8=J7L&zdI-3tfJY9&%0K`dG@rWuP&<(`Dp6mF_y%3?5OLATsoj^Td zXzfEY=JA3HmXS}Lw4sfC4_Bm0NSloUYvVv_A5bZ&bGUA{5|k#Z6#4eUpK!gw@%wA0 zv7`k0dyR#ir3BDgB~xq$XZ4qfCtR@q`j>efI^e%XRgpir0X)UOxQLJVpNUy~=Kndg zX%KxcuZ#}~v<>c2XDf5Z?{*)#roiqI|G8zjO&M46jOYJD2mA*rt-?S)$}!Lucc-y} zr}&?VH69%9U zjlo+=o3JNEX)vyNhOYJ}Aa(A@`}^%RmO7BrsM>Vb8~~c^F<9e5*AGBf<%(Pa--&(T zaK0{Roe3s2DuJup+jniSFh2Nhlrenz1bo?*x1Qy}=g+U)$R6RpKIJLkDgNj2as8ji zi!=YvqJPN$Qo2x~x*=D~l>UwlJWx1>H={QU;GX>lGJ7BwA=oa}nJUmeBO@QAZeJ4i zrqGR>^s(+8QyQ%Id3`JS3p*(YvwPcV~K1 zoDJc&kRE(x8>&3`f|P<>nH7{6(n9L|TX3W>$eO@nD0*?!85@G8yagG)wvN{FjxyNF zP{3E;aQH>59T?sAY?cI;94M)YGyeAG*PCD*u_0WVvNRf&mp70}=NZpsh}vtne8yKF zUDRIpfg+EZ%f9Jr9eo*Sh3TfUu$GEE8*#t2Y{XZ%VIv;O=Gi!zv(fKt2upO*R35J1 x{@@w6&U~OWFfKE~s7rU|1LL(%O-9j6^@Ov|I_q`lj{pDw|NqjM>;C{4006sBvMvAs literal 0 HcmV?d00001 diff --git a/deployment/v3/helmsman/utils/istio-addons/logging-istio-addons-0.1.0.tgz b/deployment/v3/helmsman/utils/istio-addons/logging-istio-addons-0.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..296510a9af01c58c616b779237e19fe6b55fccdd GIT binary patch literal 869 zcmV-r1DgCFiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PL4bZ{s!)$9?9fn659aQPWiXNTFMiEt*Avc7X)G7GrTDaZQmd zNy+gpwx7L_6lWC!3!|u!A{+e=dW?pT#Pj=)q(W47ic(q=W>*FJ$oE+4(K#iA5Ua(a zJqsa@&*EY(M#UYf`8$ z7&`ZOoA6}C1(OsquUu?nKf^WY60)XH;LdtbCPdU)nH=6Vr39swm8Q@>{7r4pATwA} z3jIoBaqlPvbWW=bo2glSSXS_a3-*8iUtWuz@L!{@D4g8@PVp~Rmq+|B#C$RE{~X%3 zh+f+eQ|PXFKqEKyp5O03azl|lApUzxahEgT`K{;)|B*_kF;bZ27-@(5^H{+t{^ys= zBmP&(<IzjCUoU^SmGKF8ex?m+mlo&B(0H$vY!BN%( z18K^l_02VOy*~wIa!(;V6xURlNZz1s(|z*-&}2`+Ss%M`0H!K8FoY z-Fro8xIX0djihfT%auqvn;?`Aw$sSdUloPkkU&qy-%szX-=UWzr>*Iv?Y0AZxlZzg ze_oI-Rc@@ObFOic|M_wMUkEWD_O3UWE-eI=IoC0TK zxGhwGP`QSz0HGkQA=h>TCC02!CjSvUX^g5Sa2ShT9F1gSFqF42!}re9ow_FpI~5D~ z?gtKk7`+E;+L6tcz>x>73~|Qa-u!tJttU2yD_fSs8Jsf3q>H(JNa8c=z^~ vz_|1F17(qMB?)I;y0;$~uR~@f&0el63>q}(HRzuJ009609pmIB02lxOm*%Sh literal 0 HcmV?d00001 diff --git a/deployment/v3/helmsman/utils/istio-addons/minio-istio-addons-1.2.0.tgz b/deployment/v3/helmsman/utils/istio-addons/minio-istio-addons-1.2.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..5a556ca128659749ad375b90ecc1548d4b0b6a6e GIT binary patch literal 860 zcmV-i1Ec&OiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PL4hkK#5E$9eXrm@Y3ZDvkqzZSz*`Ro#22ZY5T{RwkKEd^omc zJ7Kxg^|Mz=V1Zn(s47RVz5E}XWNRyhxXZcqbju4lxTF|kY#v3; zkulaivI(0F!svD~pUmgsbUI++bap!%0J~@upHS&Mw*&T%eRUu1KO%0#60H+j#ZXNM zH|FIsq!Y?WiY~Fj_{Q`T+@mZYsq+M$w1r>aEM7lAA(YV2q!LlQz!;9xiukR;7`QP~ zB)ndTRHr`v?LXlw)(QU=mnFK37l3p8vncBDAF*lF^M4KDvq!7Ayw}dhEy&bym9F$N zecryK3Vn~~|5zvddn}CP9$k=ej~l+dOer|W|Lm4^_@7T0>-oQij{CntztMIrR7RV$ zph5>#$fe2ol&pnHWB8@b3sRuxDfc`k0By%_N(XTUliKD`V&b)}&!OE7#2{2=(Yal2 zjfHAUPcz-tTY`G_7>u^Qy$?W@#R_c& z|9=(zP5zg{`jX29+DasNwhX)wF@~Gb4FTA(zq9Qzt8s2EUHl5}lYEbIL+XJ-t4ojj z-%@m5sOIb9Kwy5@)Eu}y!Tn>p$K4Wh5<+Q3d{hGPNj%4J6Wn~JfWpsSCrAC>g?IE*!Yh z)Jf~WA@5>!sqbKcNE?zxdpA7 zJL{0Zpam%uQbJ!Xep`5LkqqHZ7ll@^yjwsjtRplNK4``^d_q_6Y|xB*L!Jfou)lPb z3Jwdcc(N`HJPC=8jHuffGNLQKCL`*L`dnL)khF-^W#uU@_WM1KST0RR8$HpnIb7ytm(FQ-HR literal 0 HcmV?d00001 diff --git a/deployment/v3/helmsman/utils/istio-addons/postgres-istio-addons-0.1.0.tgz b/deployment/v3/helmsman/utils/istio-addons/postgres-istio-addons-0.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..73e74c6f89f59ea07e2924896063443d4d231756 GIT binary patch literal 826 zcmV-A1I7FwiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PL5~kK#5I$2t42cwH_nD#n2TQf}33)!jq2BeCLIndD94#j#!c zB@DaT{_Rzg4Fj~RX;n1U?C?D}&Kv(4c%QEyDv+{cnPt|5$xR_W@x3hd;F1zTh(#Q? zPa(wlQ%s|15XH;sVme*S#bO|$*?c)2fVk)>zM?9S^aJsq_d5UQo{6MWYxF@`lR!OX z(z(NH#G?flEW?m`<*1GQ1aDB6kT!_|chmx_xq3BAYJMFR&~NZVd=Ca43k_E?&SV5R`3}Av53$3Uqs9J%Kua7`2IIYJL|W~ z5;5!Ac~VNsty=H|P_X$Fpf4I^D4gI&aCQRwwZO=C+L$Hc;r6 z8N;Vfz}MaVcIgaz{XdTuvn&5kp?}H$T6wCZUZJm5ivPq0 zP9S_Wdc^>~(0^e4fH9@6i4nP*V?;dsq8rW1y zXUgQ@WV)3(2F`}?zEA-|1l!!#kt*U`;!-ITASZpp`++`0LegE3zKh5N>Q)S_A8w6=cc>#&boJ zw(XA3_~xUZv~3?K@=4S5uc0=RhlMsW-Bu3nl*YhDJnS4B@r~TF5vQ{0Td#69`hyK& zExoc;fVZ!I4vaf*KVV9Xs|@9&8}97~#_N#U3@0zeL$12&s^_Uc0{{U3|1R#-2LKoV E03d3o@Bjb+ literal 0 HcmV?d00001 diff --git a/deployment/v3/helmsman/utils/istio-gateway/.gitignore b/deployment/v3/helmsman/utils/istio-gateway/.gitignore new file mode 100644 index 000000000..39e68d203 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/.gitignore @@ -0,0 +1,2 @@ +chart +Chart.lock diff --git a/deployment/v3/helmsman/utils/istio-gateway/Chart.yaml b/deployment/v3/helmsman/utils/istio-gateway/Chart.yaml new file mode 100644 index 000000000..af15a2e65 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: istio-addons +description: A Helm chart for MOSIP istio gateways + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/deployment/v3/helmsman/utils/istio-gateway/README.md b/deployment/v3/helmsman/utils/istio-gateway/README.md new file mode 100644 index 000000000..b3bd50832 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/README.md @@ -0,0 +1,11 @@ +# Istio gateway +## Overview +* Gateways are the medium to access the k8 services outside the cluster. +* In MOSIP we create two Istio gateways by default for making services accessible. + * Internal: to make sure services are accessible using domain `api-internal.sandbox.xyz.net` over wireguard restriting private access. + * Public: to make sure services are accessible using domain `api.sandbox.xyz.net` +* Script here picks up domain related values from confligmap `global` created in `default` namespace. +## Install +``` +./install.sh +``` diff --git a/deployment/v3/helmsman/utils/istio-gateway/templates/authpolicies.yaml b/deployment/v3/helmsman/utils/istio-gateway/templates/authpolicies.yaml new file mode 100644 index 000000000..93a0e0170 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/templates/authpolicies.yaml @@ -0,0 +1,15 @@ +{{ if .Values.authPolicy.denySwagger }} +apiVersion: security.istio.io/v1beta1 +kind: AuthorizationPolicy +metadata: + name: deny-swagger +spec: + selector: + matchLabels: + istio: ingressgateway + action: DENY + rules: + - to: + - operation: + paths: ["*/swagger-ui.html", "*/swagger-ui/index.html"] +{{- end }} diff --git a/deployment/v3/helmsman/utils/istio-gateway/templates/authpolicy-mockrp.yaml b/deployment/v3/helmsman/utils/istio-gateway/templates/authpolicy-mockrp.yaml new file mode 100644 index 000000000..a29fd39a1 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/templates/authpolicy-mockrp.yaml @@ -0,0 +1,13 @@ +apiVersion: security.istio.io/v1beta1 +kind: AuthorizationPolicy +metadata: + name: allow-mock-identity-system-swagger +spec: + selector: + matchLabels: + istio: ingressgateway + action: ALLOW + rules: + - to: + - operation: + paths: ["/mock-identity-system/swagger-ui.html"] diff --git a/deployment/v3/helmsman/utils/istio-gateway/templates/gateway-internal.yaml b/deployment/v3/helmsman/utils/istio-gateway/templates/gateway-internal.yaml new file mode 100644 index 000000000..60b7f5058 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/templates/gateway-internal.yaml @@ -0,0 +1,16 @@ +{{ if .Values.gateway.internal.enabled }} +apiVersion: networking.istio.io/v1alpha3 +kind: Gateway +metadata: + name: internal +spec: + selector: + istio: ingressgateway-internal + servers: + - port: + number: 80 + name: http + protocol: HTTP + hosts: + - {{ .Values.gateway.internal.host }} +{{- end }} diff --git a/deployment/v3/helmsman/utils/istio-gateway/templates/gateway-public.yaml b/deployment/v3/helmsman/utils/istio-gateway/templates/gateway-public.yaml new file mode 100644 index 000000000..b46f82967 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/templates/gateway-public.yaml @@ -0,0 +1,16 @@ +{{ if .Values.gateway.public.enabled }} +apiVersion: networking.istio.io/v1beta1 +kind: Gateway +metadata: + name: public +spec: + selector: + istio: ingressgateway + servers: + - port: + number: 80 + name: http + protocol: HTTP + hosts: + - {{ .Values.gateway.public.host }} +{{- end }} diff --git a/deployment/v3/helmsman/utils/istio-gateway/templates/proxy-protocol.yaml b/deployment/v3/helmsman/utils/istio-gateway/templates/proxy-protocol.yaml new file mode 100644 index 000000000..b0d26f305 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/templates/proxy-protocol.yaml @@ -0,0 +1,19 @@ +{{ if .Values.proxyProtocol.enabled }} +apiVersion: networking.istio.io/v1alpha3 +kind: EnvoyFilter +metadata: + name: proxy-protocol +spec: + workloadSelector: + labels: + app: istio-ingressgateway + configPatches: + - applyTo: LISTENER + patch: + operation: MERGE + value: + listener_filters: + - name: envoy.filters.listener.proxy_protocol + - name: envoy.filters.listener.tls_inspector +{{ end }} + diff --git a/deployment/v3/helmsman/utils/istio-gateway/values.yaml b/deployment/v3/helmsman/utils/istio-gateway/values.yaml new file mode 100644 index 000000000..ab8f5f3cb --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-gateway/values.yaml @@ -0,0 +1,11 @@ +gateway: + internal: + enabled: true + host: api-internal.sandbox.xyz.net + public: + enabled: true + host: api.sandbox.xyz.net +proxyProtocol: + enabled: true +authPolicy: + denySwagger: true diff --git a/deployment/v3/helmsman/utils/istio-mesh/nodeport/iop-mosip.yaml b/deployment/v3/helmsman/utils/istio-mesh/nodeport/iop-mosip.yaml new file mode 100644 index 000000000..f11080814 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-mesh/nodeport/iop-mosip.yaml @@ -0,0 +1,93 @@ +apiVersion: install.istio.io/v1alpha1 +kind: IstioOperator +metadata: + namespace: istio-system + name: istio-operators-mosip +spec: + profile: default + # This is done to merge multiple slashes in http URLs, otherwise, MOSIP APIs may not work + meshConfig: + accessLogFile: /dev/stdout + accessLogFormat: + pathNormalization: + normalization: MERGE_SLASHES + defaultConfig: + proxyMetadata: + ISTIO_META_IDLE_TIMEOUT: 0s + holdApplicationUntilProxyStarts: true + gatewayTopology: + numTrustedProxies: 2 + extensionProviders: + - name: oauth2-proxy + envoyExtAuthzHttp: + service: oauth2-proxy.oauth2-proxy.svc.cluster.local + port: 80 + headersToDownstreamOnDeny: + - content-type + - set-cookie + headersToUpstreamOnAllow: + - authorization + - path + - x-auth-access-token + - x-auth-request-user + - x-auth-request-email + - x-auth-request-preferred-username + - x-auth-request-groups + includeAdditionalHeadersInCheck: + X-Auth-Request-Redirect: https://%REQ(:authority)%%REQ(:path)% + includeRequestHeadersInCheck: + - authorization + - cookie + components: + ingressGateways: + ## Public access to external ingress gateway is disabled by default. Enable it in production. + - name: istio-ingressgateway + enabled: true + k8s: + service: + type: NodePort + ports: + - port: 15021 + targetPort: 15021 + nodePort: 30521 + name: status-port + protocol: TCP + - port: 80 + targetPort: 8080 + nodePort: 30080 + name: http2 + protocol: TCP + - name: istio-ingressgateway-internal + enabled: true + label: + istio: ingressgateway-internal + k8s: + service: + type: NodePort + ports: + - port: 15021 + targetPort: 15021 + nodePort: 31521 + name: status-port + protocol: TCP + - port: 80 + targetPort: 8080 + nodePort: 31080 + name: http2 + protocol: TCP + # additional ports + - port: 61616 + targetPort: 61616 + nodePort: 31616 + name: activemq + protocol: TCP + - port: 5432 + targetPort: 5432 + nodePort: 31432 + name: postgres + protocol: TCP + - port: 9000 + targetPort: 9000 + nodePort: 30900 + name: minio + protocol: TCP diff --git a/deployment/v3/helmsman/utils/istio-mesh/nodeport/istio-monitoring/PodMonitor.yaml b/deployment/v3/helmsman/utils/istio-mesh/nodeport/istio-monitoring/PodMonitor.yaml new file mode 100644 index 000000000..5d51c129d --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-mesh/nodeport/istio-monitoring/PodMonitor.yaml @@ -0,0 +1,37 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PodMonitor +metadata: + name: envoy-stats-monitor + namespace: istio-system + labels: + monitoring: istio-proxies + release: istio +spec: + selector: + matchExpressions: + - {key: istio-prometheus-ignore, operator: DoesNotExist} + namespaceSelector: + any: true + jobLabel: envoy-stats + podMetricsEndpoints: + - path: /stats/prometheus + interval: 15s + relabelings: + - action: keep + sourceLabels: [__meta_kubernetes_pod_container_name] + regex: "istio-proxy" + - action: keep + sourceLabels: [__meta_kubernetes_pod_annotationpresent_prometheus_io_scrape] + - sourceLabels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] + action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + targetLabel: __address__ + - action: labeldrop + regex: "__meta_kubernetes_pod_label_(.+)" + - sourceLabels: [__meta_kubernetes_namespace] + action: replace + targetLabel: namespace + - sourceLabels: [__meta_kubernetes_pod_name] + action: replace + targetLabel: pod_name diff --git a/deployment/v3/helmsman/utils/istio-mesh/nodeport/istio-monitoring/ServiceMonitor.yaml b/deployment/v3/helmsman/utils/istio-mesh/nodeport/istio-monitoring/ServiceMonitor.yaml new file mode 100644 index 000000000..be2425b73 --- /dev/null +++ b/deployment/v3/helmsman/utils/istio-mesh/nodeport/istio-monitoring/ServiceMonitor.yaml @@ -0,0 +1,19 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: istio-component-monitor + namespace: istio-system + labels: + monitoring: istio-components + release: istio +spec: + jobLabel: istio + targetLabels: [app] + selector: + matchExpressions: + - {key: istio, operator: In, values: [pilot]} + namespaceSelector: + any: true + endpoints: + - port: http-monitoring + interval: 15s diff --git a/deployment/v3/helmsman/utils/logging/clusterflow-elasticsearch.yaml b/deployment/v3/helmsman/utils/logging/clusterflow-elasticsearch.yaml new file mode 100644 index 000000000..f1128f48c --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/clusterflow-elasticsearch.yaml @@ -0,0 +1,35 @@ +apiVersion: logging.banzaicloud.io/v1beta1 +kind: ClusterFlow +metadata: + name: mosip-logs + namespace: cattle-logging-system +spec: + filters: + # Parse any JSON object received in `log` field into individual fields. + - record_modifier: + replaces: + - expression: /"/ + key: log + replace: \\" + - parser: + key_name: log + parse: + type: json + replace_invalid_sequence: true + reserve_data: true + # Filter all actuator health and actuator prometheus logs as we don't really need them later. + - grep: + exclude: + - key: log + pattern: /actuator\/health/ + - grep: + exclude: + - key: log + pattern: /actuator\/prometheus/ + # TODO: The below pattern is for unwanted errors from Activemq. We must fix this in Activemq config. + - grep: + exclude: + - key: log + pattern: /Temporary Store limit is 51200 mb, whilst the temporary data directory:/ + globalOutputRefs: + - elasticsearch \ No newline at end of file diff --git a/deployment/v3/helmsman/utils/logging/clusteroutput-elasticsearch.yaml b/deployment/v3/helmsman/utils/logging/clusteroutput-elasticsearch.yaml new file mode 100644 index 000000000..12a4f12de --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/clusteroutput-elasticsearch.yaml @@ -0,0 +1,16 @@ +apiVersion: logging.banzaicloud.io/v1beta1 +kind: ClusterOutput +metadata: + name: elasticsearch + namespace: cattle-logging-system +spec: + elasticsearch: + buffer: + flush_interval: 10s + flush_mode: interval + host: elasticsearch-master + logstash_format: true + port: 9200 + scheme: http + ssl_verify: true + ssl_version: TLSv1_2 \ No newline at end of file diff --git a/deployment/v3/helmsman/utils/logging/dashboards/01-logstash.ndjson b/deployment/v3/helmsman/utils/logging/dashboards/01-logstash.ndjson new file mode 100644 index 000000000..7359da826 --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/dashboards/01-logstash.ndjson @@ -0,0 +1 @@ +{"attributes":{"fields":"[{\"name\":\"Request_URI\",\"type\":\"string\",\"count\":0,\"scripted\":true,\"script\":\"if(doc['req.requestURI.keyword'].size() != 0) {\\r\\n def path = doc['req.requestURI.keyword'].value;\\r\\n def newfield_last = \\\"\\\";\\r\\n def last = path.lastIndexOf('/');\\r\\n if(last != 0) {newfield_last = path.substring(0, last);}\\r\\n else{newfield_last = 0;}\\r\\n return newfield_last\\r\\n}\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]","fieldFormatMap":"{\"traceId\":{\"id\":\"url\",\"params\":{\"urlTemplate\":\"kibana#/discover/0efe9240-c521-11ec-92b4-4f5e54b3d2f7?_g=(filters:!(),refreshInterval:(pause:!t,value:10000),time:(from:now-15m,to:now))&_a=(columns:!(kubernetes.container_name,traceId,level,message),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'1edfabd0-c3d8-11ec-a947-83cd2093795e',key:traceId.keyword,negate:!f,params:(query:'{{value}}'),type:phrase),query:(match_phrase:(traceId.keyword:'{{value}}')))),grid:(),hideChart:!f,index:'1edfabd0-c3d8-11ec-a947-83cd2093795e',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\",\"labelTemplate\":\"{{value}}\"}},\"kubernetes.container_name\":{\"id\":\"url\",\"params\":{\"urlTemplate\":\"kibana#/discover/0efe9240-c521-11ec-92b4-4f5e54b3d2f7?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(columns:!(kubernetes.container_name,traceId,level,message),filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'1edfabd0-c3d8-11ec-a947-83cd2093795e',key:kubernetes.container_name,negate:!f,params:(query:'{{value}}'),type:phrase),query:(match_phrase:(kubernetes.container_name:'{{value}}')))),grid:(),hideChart:!f,index:'1edfabd0-c3d8-11ec-a947-83cd2093795e',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))\",\"labelTemplate\":\"{{value}}\"}}}","timeFieldName":"@timestamp","title":"logstash*"},"coreMigrationVersion":"7.17.2","id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"type":"index-pattern","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTAsMV0="} diff --git a/deployment/v3/helmsman/utils/logging/dashboards/02-error-only-logs.ndjson b/deployment/v3/helmsman/utils/logging/dashboards/02-error-only-logs.ndjson new file mode 100644 index 000000000..f7da426b8 --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/dashboards/02-error-only-logs.ndjson @@ -0,0 +1,2 @@ +{"attributes":{"columns":["kubernetes.container_name","traceId","level","message"],"description":"","grid":{},"hideChart":false,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"alias\":null,\"negate\":false,\"disabled\":false,\"type\":\"phrase\",\"key\":\"level.keyword\",\"params\":{\"query\":\"ERROR\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"level.keyword\":\"ERROR\"}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"ERROROnlyLogs"},"coreMigrationVersion":"7.17.1","id":"0efe9240-c521-11ec-92b4-4f5e54b3d2f7","migrationVersion":{"search":"7.9.3"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"search","updated_at":"2022-04-27T00:36:13.084Z","version":"WzEzMzM0LDhd"} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.17.2\",\"type\":\"search\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":23,\"i\":\"64b79c9a-f7e8-44d7-bae3-78f896e8797f\"},\"panelIndex\":\"64b79c9a-f7e8-44d7-bae3-78f896e8797f\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_64b79c9a-f7e8-44d7-bae3-78f896e8797f\"}]","timeRestore":false,"title":"MOSIP Error Logs Only","version":1},"coreMigrationVersion":"7.17.2","id":"2b452a40-300b-11ed-a5f0-43b1b8db5b77","migrationVersion":{"dashboard":"7.17.0"},"references":[{"id":"0efe9240-c521-11ec-92b4-4f5e54b3d2f7","name":"64b79c9a-f7e8-44d7-bae3-78f896e8797f:panel_64b79c9a-f7e8-44d7-bae3-78f896e8797f","type":"search"}],"type":"dashboard","updated_at":"2022-09-09T06:46:44.710Z","version":"WzM0MjYwLDFd"} diff --git a/deployment/v3/helmsman/utils/logging/dashboards/03-service-logs.ndjson b/deployment/v3/helmsman/utils/logging/dashboards/03-service-logs.ndjson new file mode 100644 index 000000000..bd60cf325 --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/dashboards/03-service-logs.ndjson @@ -0,0 +1,2 @@ +{"attributes":{"columns":["req.requestURI","traceId","level","kubernetes.pod.name","message"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"filter\":[]}"},"sort":[["@timestamp","desc"]],"title":"Mosip-service-logs","version":1},"coreMigrationVersion":"7.17.2","id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","migrationVersion":{"search":"7.9.3"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTEsMV0="} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"alias\":\"Auth Service\",\"negate\":false,\"disabled\":false,\"type\":\"phrase\",\"key\":\"kubernetes.container_name.keyword\",\"params\":{\"query\":\"authmanager\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.container_name.keyword\":\"authmanager\"}},\"$state\":{\"store\":\"appState\"}}]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.8.0\",\"type\":\"search\",\"gridData\":{\"h\":38,\"i\":\"746111c2-7e26-481b-aa87-9dd439169e37\",\"w\":48,\"x\":0,\"y\":0},\"panelIndex\":\"746111c2-7e26-481b-aa87-9dd439169e37\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_746111c2-7e26-481b-aa87-9dd439169e37\"}]","timeRestore":false,"title":"MOSIP Service Logs only","version":1},"coreMigrationVersion":"7.17.2","id":"8c4f7a20-606e-11eb-91ba-4ff7fd19b05e","migrationVersion":{"dashboard":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"746111c2-7e26-481b-aa87-9dd439169e37:panel_746111c2-7e26-481b-aa87-9dd439169e37","type":"search"}],"type":"dashboard","updated_at":"2022-07-27T13:10:16.359Z","version":"WzcxNjQsMV0="} diff --git a/deployment/v3/helmsman/utils/logging/dashboards/04-insight.ndjson b/deployment/v3/helmsman/utils/logging/dashboards/04-insight.ndjson new file mode 100644 index 000000000..aba9503bc --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/dashboards/04-insight.ndjson @@ -0,0 +1,19 @@ +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group7\\\" and message: \\\"UIN Generator Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: UIN Generated","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: UIN Generated\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"776ee0e0-b321-11eb-a076-ef65d942a742","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTIsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group7\\\" and message: \\\"UIN Generator Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: UIN generated per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: UIN generated per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"8a38cb90-b322-11eb-a076-ef65d942a742","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTMsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group3\\\" and message : \\\"BioDedupeProcessor::SUCCESS\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Biometric Deduplication","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Biometric Deduplication\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"fb828c40-b3c8-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTQsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group3\\\" and message : \\\"BioDedupeProcessor::SUCCESS\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets passing Bio Dedupe per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets passing Bio Dedupe per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"696eeb00-b3c8-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTUsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group4\\\" and message : \\\"DemoDedupeProcessor::success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Demo Deduplication","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Demo Deduplication\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"3b2f7890-b3c8-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTYsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group4\\\" and message : \\\"DemoDedupeProcessor::success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets passing Demo Dedupe per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets passing Demo Dedupe per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"4b167550-b3ce-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTcsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group2\\\" and message : \\\"QualityCheckerImpl::success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Quality Checker","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Quality Checker\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"83931af0-b3c4-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTgsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group2\\\" and message : \\\"QualityCheckerImpl::success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets Passing Through Quality Check per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets Passing Through Quality Check per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"0e66a7f0-b3c5-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkyOTksMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group5\\\" and message : \\\"RPR-OVM-000OPERATOR Validation Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Operator Validator","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Operator Validator\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"92c03a60-b3c6-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDAsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group5\\\" and message : \\\"RPR-OVM-000OPERATOR Validation Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets Passing through Operator Validator per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets Passing through Operator Validator per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"978bf340-b3c6-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDEsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group5\\\" and message : \\\"RPR-SVM-000SUPERVISOR Validation Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Supervisor Validator","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Supervisor Validator\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"049d4fd0-0dba-11ed-a9e9-a33fdb0c25c6","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDIsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group5\\\" and message : \\\"RPR-SVM-000SUPERVISOR Validation Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets Passing through Supervisor Validator per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets Passing through Supervisor Validator per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"322cac20-0dba-11ed-a9e9-a33fdb0c25c6","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDMsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group5\\\" and message : \\\"RPR-IVM-000INTRODUCER Validation Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets Passing through Introducer Validator per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets Passing through Introducer Validator per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"589d37d0-0dba-11ed-a9e9-a33fdb0c25c6","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDUsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group5\\\" and message : \\\"RPR-IVM-000INTRODUCER Validation Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Introducer Validator","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Introducer Validator\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"5646ebc0-0dba-11ed-a9e9-a33fdb0c25c6","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDQsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group5\\\" and message : \\\"RPR-PVM-000Packet Validation Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets Passing Through Packet Validator per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets Passing Through Packet Validator per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"27b83e40-b3c4-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDcsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group5\\\" and message : \\\"RPR-PVM-000Packet Validation Success\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packet Validator","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packet Validator\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"ce645a90-b3c3-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDYsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group6\\\" and message : \\\"Packet is Uploaded to Packet Store\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets Uploaded to MinIO per hr","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets Uploaded to MinIO per hr\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"h\",\"used_interval\":\"1h\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"b0544ea0-b3c0-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDksMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"kubernetes.labels.app.kubernetes.io/name.keyword : \\\"regproc-group6\\\" and message : \\\"Packet is Uploaded to Packet Store\\\"\",\"language\":\"kuery\"},\"filter\":[]}"},"savedSearchRefName":"search_0","title":"MOSIP Insight: Packets Uploaded to MinIO","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"MOSIP Insight: Packets Uploaded to MinIO\",\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}}}"},"coreMigrationVersion":"7.17.2","id":"adbf72f0-b3c0-11eb-9376-3102ee5c8152","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"b44c9dd0-08cd-11eb-b613-6b9eee02d203","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMDgsMV0="} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":14,\"h\":9,\"i\":\"1d6d722a-0873-449c-985e-1b3cca4cb3fb\"},\"panelIndex\":\"1d6d722a-0873-449c-985e-1b3cca4cb3fb\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: UIN Generated\",\"panelRefName\":\"panel_1d6d722a-0873-449c-985e-1b3cca4cb3fb\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":0,\"w\":33,\"h\":9,\"i\":\"06dbae08-0d0a-4a1b-b6d7-f1d50e2906a5\"},\"panelIndex\":\"06dbae08-0d0a-4a1b-b6d7-f1d50e2906a5\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: UIN generated per hr\",\"panelRefName\":\"panel_06dbae08-0d0a-4a1b-b6d7-f1d50e2906a5\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":9,\"w\":14,\"h\":9,\"i\":\"25e2e7f1-6f46-4521-95f3-bb0377b33501\"},\"panelIndex\":\"25e2e7f1-6f46-4521-95f3-bb0377b33501\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Biometric Deduplication\",\"panelRefName\":\"panel_25e2e7f1-6f46-4521-95f3-bb0377b33501\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":9,\"w\":33,\"h\":9,\"i\":\"5ab54576-2d59-4236-baba-f3f9cd76b696\"},\"panelIndex\":\"5ab54576-2d59-4236-baba-f3f9cd76b696\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Packets passing Bio Dedupe per hr\",\"panelRefName\":\"panel_5ab54576-2d59-4236-baba-f3f9cd76b696\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":18,\"w\":14,\"h\":9,\"i\":\"92525383-0401-4767-846c-69048f66a158\"},\"panelIndex\":\"92525383-0401-4767-846c-69048f66a158\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Demo Deduplication\",\"panelRefName\":\"panel_92525383-0401-4767-846c-69048f66a158\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":18,\"w\":33,\"h\":9,\"i\":\"4225c7fc-a29e-4142-bd2d-added3d591c2\"},\"panelIndex\":\"4225c7fc-a29e-4142-bd2d-added3d591c2\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Packets passing Demo Dedupe per hr\",\"panelRefName\":\"panel_4225c7fc-a29e-4142-bd2d-added3d591c2\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":27,\"w\":14,\"h\":9,\"i\":\"920f22c8-6970-400e-9020-dec9a9085c35\"},\"panelIndex\":\"920f22c8-6970-400e-9020-dec9a9085c35\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Quality Checker\",\"panelRefName\":\"panel_920f22c8-6970-400e-9020-dec9a9085c35\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":27,\"w\":33,\"h\":9,\"i\":\"a731b47f-6278-4b98-b6e9-a6a214c86cba\"},\"panelIndex\":\"a731b47f-6278-4b98-b6e9-a6a214c86cba\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Packets Passing Through Quality Check per hr\",\"panelRefName\":\"panel_a731b47f-6278-4b98-b6e9-a6a214c86cba\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":36,\"w\":14,\"h\":9,\"i\":\"d547abde-c8a0-4cd2-80a0-dee73776c64d\"},\"panelIndex\":\"d547abde-c8a0-4cd2-80a0-dee73776c64d\",\"embeddableConfig\":{\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"MOSIP Insight: Operator Validator\",\"panelRefName\":\"panel_d547abde-c8a0-4cd2-80a0-dee73776c64d\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":36,\"w\":33,\"h\":9,\"i\":\"98b3d672-a3ac-46be-9405-3f8dda823a86\"},\"panelIndex\":\"98b3d672-a3ac-46be-9405-3f8dda823a86\",\"embeddableConfig\":{\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"MOSIP Insight: Packets Passing through Operator Validator per hr\",\"panelRefName\":\"panel_98b3d672-a3ac-46be-9405-3f8dda823a86\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":45,\"w\":14,\"h\":9,\"i\":\"5d079971-9ad8-4d01-bc2b-5047aeadfdec\"},\"panelIndex\":\"5d079971-9ad8-4d01-bc2b-5047aeadfdec\",\"embeddableConfig\":{\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"MOSIP Insight: Supervisor Validator\",\"panelRefName\":\"panel_5d079971-9ad8-4d01-bc2b-5047aeadfdec\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":45,\"w\":33,\"h\":9,\"i\":\"5eef24c7-0d63-4020-9527-2a663eb50d43\"},\"panelIndex\":\"5eef24c7-0d63-4020-9527-2a663eb50d43\",\"embeddableConfig\":{\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"MOSIP Insight: Packets Passing through Supervisor Validator per hr\",\"panelRefName\":\"panel_5eef24c7-0d63-4020-9527-2a663eb50d43\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":54,\"w\":33,\"h\":9,\"i\":\"89e6890c-4848-431e-ae61-180e219e18c7\"},\"panelIndex\":\"89e6890c-4848-431e-ae61-180e219e18c7\",\"embeddableConfig\":{\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"MOSIP Insight: Packets Passing through Introducer Validator per hr\",\"panelRefName\":\"panel_89e6890c-4848-431e-ae61-180e219e18c7\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":54,\"w\":14,\"h\":9,\"i\":\"1779fa15-ad8c-4e6a-b73d-ab3477853ccc\"},\"panelIndex\":\"1779fa15-ad8c-4e6a-b73d-ab3477853ccc\",\"embeddableConfig\":{\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"MOSIP Insight: Introducer Validator\",\"panelRefName\":\"panel_1779fa15-ad8c-4e6a-b73d-ab3477853ccc\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":63,\"w\":33,\"h\":9,\"i\":\"31970692-e8b3-45ad-b316-026ceaa03fd9\"},\"panelIndex\":\"31970692-e8b3-45ad-b316-026ceaa03fd9\",\"embeddableConfig\":{\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"MOSIP Insight: Packets Passing Through Packet Validator per hr\",\"panelRefName\":\"panel_31970692-e8b3-45ad-b316-026ceaa03fd9\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":63,\"w\":14,\"h\":9,\"i\":\"85f13635-3cf6-4f75-b812-e1eab867cbcf\"},\"panelIndex\":\"85f13635-3cf6-4f75-b812-e1eab867cbcf\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Packet Validator\",\"panelRefName\":\"panel_85f13635-3cf6-4f75-b812-e1eab867cbcf\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":14,\"y\":72,\"w\":33,\"h\":9,\"i\":\"3f86e9be-adce-44e5-8342-0e22def14679\"},\"panelIndex\":\"3f86e9be-adce-44e5-8342-0e22def14679\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Packets Uploaded to MinIO per hr\",\"panelRefName\":\"panel_3f86e9be-adce-44e5-8342-0e22def14679\"},{\"version\":\"7.17.2\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":72,\"w\":14,\"h\":9,\"i\":\"7ffdf5e0-1983-47ae-be30-357507aaa2c0\"},\"panelIndex\":\"7ffdf5e0-1983-47ae-be30-357507aaa2c0\",\"embeddableConfig\":{\"enhancements\":{}},\"title\":\"MOSIP Insight: Packets Uploaded to MinIO\",\"panelRefName\":\"panel_7ffdf5e0-1983-47ae-be30-357507aaa2c0\"}]","timeRestore":false,"title":"MOSIP Insight","version":1},"coreMigrationVersion":"7.17.2","id":"ae2253b0-b321-11eb-a076-ef65d942a742","migrationVersion":{"dashboard":"7.17.0"},"references":[{"id":"776ee0e0-b321-11eb-a076-ef65d942a742","name":"1d6d722a-0873-449c-985e-1b3cca4cb3fb:panel_1d6d722a-0873-449c-985e-1b3cca4cb3fb","type":"visualization"},{"id":"8a38cb90-b322-11eb-a076-ef65d942a742","name":"06dbae08-0d0a-4a1b-b6d7-f1d50e2906a5:panel_06dbae08-0d0a-4a1b-b6d7-f1d50e2906a5","type":"visualization"},{"id":"fb828c40-b3c8-11eb-9376-3102ee5c8152","name":"25e2e7f1-6f46-4521-95f3-bb0377b33501:panel_25e2e7f1-6f46-4521-95f3-bb0377b33501","type":"visualization"},{"id":"696eeb00-b3c8-11eb-9376-3102ee5c8152","name":"5ab54576-2d59-4236-baba-f3f9cd76b696:panel_5ab54576-2d59-4236-baba-f3f9cd76b696","type":"visualization"},{"id":"3b2f7890-b3c8-11eb-9376-3102ee5c8152","name":"92525383-0401-4767-846c-69048f66a158:panel_92525383-0401-4767-846c-69048f66a158","type":"visualization"},{"id":"4b167550-b3ce-11eb-9376-3102ee5c8152","name":"4225c7fc-a29e-4142-bd2d-added3d591c2:panel_4225c7fc-a29e-4142-bd2d-added3d591c2","type":"visualization"},{"id":"83931af0-b3c4-11eb-9376-3102ee5c8152","name":"920f22c8-6970-400e-9020-dec9a9085c35:panel_920f22c8-6970-400e-9020-dec9a9085c35","type":"visualization"},{"id":"0e66a7f0-b3c5-11eb-9376-3102ee5c8152","name":"a731b47f-6278-4b98-b6e9-a6a214c86cba:panel_a731b47f-6278-4b98-b6e9-a6a214c86cba","type":"visualization"},{"id":"92c03a60-b3c6-11eb-9376-3102ee5c8152","name":"d547abde-c8a0-4cd2-80a0-dee73776c64d:panel_d547abde-c8a0-4cd2-80a0-dee73776c64d","type":"visualization"},{"id":"978bf340-b3c6-11eb-9376-3102ee5c8152","name":"98b3d672-a3ac-46be-9405-3f8dda823a86:panel_98b3d672-a3ac-46be-9405-3f8dda823a86","type":"visualization"},{"id":"049d4fd0-0dba-11ed-a9e9-a33fdb0c25c6","name":"5d079971-9ad8-4d01-bc2b-5047aeadfdec:panel_5d079971-9ad8-4d01-bc2b-5047aeadfdec","type":"visualization"},{"id":"322cac20-0dba-11ed-a9e9-a33fdb0c25c6","name":"5eef24c7-0d63-4020-9527-2a663eb50d43:panel_5eef24c7-0d63-4020-9527-2a663eb50d43","type":"visualization"},{"id":"589d37d0-0dba-11ed-a9e9-a33fdb0c25c6","name":"89e6890c-4848-431e-ae61-180e219e18c7:panel_89e6890c-4848-431e-ae61-180e219e18c7","type":"visualization"},{"id":"5646ebc0-0dba-11ed-a9e9-a33fdb0c25c6","name":"1779fa15-ad8c-4e6a-b73d-ab3477853ccc:panel_1779fa15-ad8c-4e6a-b73d-ab3477853ccc","type":"visualization"},{"id":"27b83e40-b3c4-11eb-9376-3102ee5c8152","name":"31970692-e8b3-45ad-b316-026ceaa03fd9:panel_31970692-e8b3-45ad-b316-026ceaa03fd9","type":"visualization"},{"id":"ce645a90-b3c3-11eb-9376-3102ee5c8152","name":"85f13635-3cf6-4f75-b812-e1eab867cbcf:panel_85f13635-3cf6-4f75-b812-e1eab867cbcf","type":"visualization"},{"id":"b0544ea0-b3c0-11eb-9376-3102ee5c8152","name":"3f86e9be-adce-44e5-8342-0e22def14679:panel_3f86e9be-adce-44e5-8342-0e22def14679","type":"visualization"},{"id":"adbf72f0-b3c0-11eb-9376-3102ee5c8152","name":"7ffdf5e0-1983-47ae-be30-357507aaa2c0:panel_7ffdf5e0-1983-47ae-be30-357507aaa2c0","type":"visualization"}],"type":"dashboard","updated_at":"2022-07-27T15:12:11.004Z","version":"WzkzMTAsMV0="} diff --git a/deployment/v3/helmsman/utils/logging/dashboards/05-response-time.ndjson b/deployment/v3/helmsman/utils/logging/dashboards/05-response-time.ndjson new file mode 100644 index 000000000..be1f4ceaf --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/dashboards/05-response-time.ndjson @@ -0,0 +1,9 @@ +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"kubernetes.labels.app.kubernetes.io/instance.keyword\",\"negate\":false,\"params\":{\"query\":\"auditmanager\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.labels.app.kubernetes.io/instance.keyword\":\"auditmanager\"}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kernel audit manager response time v2","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Kernel audit manager response time v2\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"timeTaken\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30s\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"req.requestURI.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Average timeTaken\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Average timeTaken\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"722a41a0-9a17-11ec-b0ac-7fbc845813ce","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-07-26T08:00:48.112Z","version":"WzY0MTAsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"kubernetes.labels.app.kubernetes.io/name.keyword\",\"negate\":false,\"params\":{\"query\":\"keymanager\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.labels.app.kubernetes.io/name.keyword\":\"keymanager\"}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kernel key manager response time v2","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Kernel key manager response time v2\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"timeTaken\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30s\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"req.requestURI.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Average timeTaken\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Average timeTaken\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"22297e40-9a18-11ec-b0ac-7fbc845813ce","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-07-26T11:09:20.116Z","version":"WzY1MTEsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"kubernetes.labels.app.kubernetes.io/name.keyword\",\"negate\":false,\"params\":{\"query\":\"authmanager\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.labels.app.kubernetes.io/name.keyword\":\"authmanager\"}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Kernel auth service response time v2","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Kernel auth service response time v2\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"timeTaken\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30s\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"req.requestURI.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Average timeTaken\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Average timeTaken\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"04d64470-9e0c-11ec-b0ac-7fbc845813ce","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-07-26T11:10:28.758Z","version":"WzY1MzgsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"kubernetes.labels.app.kubernetes.io/name.keyword\",\"negate\":false,\"params\":{\"query\":\"datashare\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.labels.app.kubernetes.io/name.keyword\":\"datashare\"}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Data Share Response time v2","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Data Share Response time v2\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"timeTaken\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30s\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"Request_URI\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false},\"labels\":{},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Average timeTaken\"},\"drawLinesBetweenPoints\":true,\"interpolate\":\"linear\",\"lineWidth\":2,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\",\"circlesRadius\":1}],\"thresholdLine\":{\"color\":\"#E7664C\",\"show\":false,\"style\":\"full\",\"value\":10,\"width\":1},\"times\":[],\"type\":\"line\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Average timeTaken\"},\"type\":\"value\"}],\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"0ea69c40-afee-11ec-8b7a-01cad4cc09da","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-07-26T11:21:54.979Z","version":"WzY2ODcsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"kubernetes.labels.app.kubernetes.io/name.keyword\",\"negate\":false,\"params\":{\"query\":\"masterdata\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.labels.app.kubernetes.io/name.keyword\":\"masterdata\"}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":" kernel-masterdata-service Response time v2","uiStateJSON":"{}","version":1,"visState":"{\"title\":\" kernel-masterdata-service Response time v2\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"timeTaken\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30s\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"Request_URI\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false},\"labels\":{},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Average timeTaken\"},\"drawLinesBetweenPoints\":true,\"interpolate\":\"linear\",\"lineWidth\":2,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\",\"circlesRadius\":1}],\"thresholdLine\":{\"color\":\"#E7664C\",\"show\":false,\"style\":\"full\",\"value\":10,\"width\":1},\"times\":[],\"type\":\"line\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Average timeTaken\"},\"type\":\"value\"}],\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"4db923b0-aff5-11ec-8b7a-01cad4cc09da","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-07-26T11:22:56.574Z","version":"WzY3MTUsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"kubernetes.labels.app.kubernetes.io/name.keyword\",\"negate\":false,\"params\":{\"query\":\"prereg-application\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.labels.app.kubernetes.io/name.keyword\":\"prereg-application\"}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":" prereg-application-service Response time v2","uiStateJSON":"{}","version":1,"visState":"{\"title\":\" prereg-application-service Response time v2\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"timeTaken\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30s\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"Request_URI\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false},\"labels\":{},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Average timeTaken\"},\"drawLinesBetweenPoints\":true,\"interpolate\":\"linear\",\"lineWidth\":2,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\",\"circlesRadius\":1}],\"thresholdLine\":{\"color\":\"#E7664C\",\"show\":false,\"style\":\"full\",\"value\":10,\"width\":1},\"times\":[],\"type\":\"line\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Average timeTaken\"},\"type\":\"value\"}],\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"aad029e0-aff5-11ec-8b7a-01cad4cc09da","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-07-26T11:23:54.155Z","version":"WzY3MzEsMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"kubernetes.labels.app.kubernetes.io/name.keyword\",\"negate\":false,\"params\":{\"query\":\"packetmanager\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.labels.app.kubernetes.io/name.keyword\":\"packetmanager\"}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Packet Manager Response time v2","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Packet Manager Response time v2\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"timeTaken\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30s\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"req.requestURI.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false},\"labels\":{},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Average timeTaken\"},\"drawLinesBetweenPoints\":true,\"interpolate\":\"linear\",\"lineWidth\":2,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\",\"circlesRadius\":1}],\"thresholdLine\":{\"color\":\"#E7664C\",\"show\":false,\"style\":\"full\",\"value\":10,\"width\":1},\"times\":[],\"type\":\"line\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Average timeTaken\"},\"type\":\"value\"}],\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"a2310350-b0d0-11ec-8b7a-01cad4cc09da","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-07-26T11:25:55.349Z","version":"WzY3ODksMV0="} +{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"kubernetes.labels.app.kubernetes.io/name.keyword\",\"negate\":false,\"params\":{\"query\":\"packetmanager\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"kubernetes.labels.app.kubernetes.io/name.keyword\":\"packetmanager\"}}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":" Packet manager Service Response time v3","uiStateJSON":"{}","version":1,"visState":"{\"title\":\" Packet manager Service Response time v3\",\"type\":\"line\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"params\":{\"field\":\"timeTaken\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"used_interval\":\"30s\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}},\"schema\":\"segment\"},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"req.requestURI.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"group\"}],\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Average timeTaken\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Average timeTaken\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"interpolate\":\"linear\",\"showCircles\":true,\"circlesRadius\":1}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"linear\",\"truncateLegend\":true,\"maxLegendLines\":1,\"radiusRatio\":9}}"},"coreMigrationVersion":"7.17.2","id":"ba6ddac0-b3ef-11ec-8b7a-01cad4cc09da","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"1edfabd0-c3d8-11ec-a947-83cd2093795e","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-07-26T11:24:46.031Z","version":"WzY3NjEsMV0="} +{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.8.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"ce5f2a98-09fe-475b-84eb-9c3f5d99ffd9\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"ce5f2a98-09fe-475b-84eb-9c3f5d99ffd9\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_ce5f2a98-09fe-475b-84eb-9c3f5d99ffd9\"},{\"version\":\"7.8.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"ee2d0f68-90c7-4e8c-869f-4769fca28f04\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"ee2d0f68-90c7-4e8c-869f-4769fca28f04\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_ee2d0f68-90c7-4e8c-869f-4769fca28f04\"},{\"version\":\"7.8.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"0d33100b-4375-434f-a1e8-167108d96e36\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"0d33100b-4375-434f-a1e8-167108d96e36\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_0d33100b-4375-434f-a1e8-167108d96e36\"},{\"version\":\"7.8.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"d5d45e92-b103-4828-8b46-ab1c38b214b4\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"d5d45e92-b103-4828-8b46-ab1c38b214b4\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d5d45e92-b103-4828-8b46-ab1c38b214b4\"},{\"version\":\"7.8.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"dac35330-9e41-4a31-a021-defdbef32c91\",\"w\":24,\"x\":0,\"y\":30},\"panelIndex\":\"dac35330-9e41-4a31-a021-defdbef32c91\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_dac35330-9e41-4a31-a021-defdbef32c91\"},{\"version\":\"7.8.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"e8e42235-6b0d-4765-a82d-83fcf8ffd60e\",\"w\":24,\"x\":24,\"y\":30},\"panelIndex\":\"e8e42235-6b0d-4765-a82d-83fcf8ffd60e\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_e8e42235-6b0d-4765-a82d-83fcf8ffd60e\"},{\"version\":\"7.8.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"8abdb7dc-b943-482d-8809-dcfcbc172263\",\"w\":24,\"x\":24,\"y\":45},\"panelIndex\":\"8abdb7dc-b943-482d-8809-dcfcbc172263\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8abdb7dc-b943-482d-8809-dcfcbc172263\"},{\"version\":\"7.8.0\",\"type\":\"visualization\",\"gridData\":{\"h\":15,\"i\":\"7e28fc1e-e3d0-4ff5-a69e-e4710256ec97\",\"w\":24,\"x\":0,\"y\":45},\"panelIndex\":\"7e28fc1e-e3d0-4ff5-a69e-e4710256ec97\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_7e28fc1e-e3d0-4ff5-a69e-e4710256ec97\"}]","timeRestore":false,"title":"Response time V3","version":1},"coreMigrationVersion":"7.17.2","id":"e51e5b60-9a17-11ec-b0ac-7fbc845813ce","migrationVersion":{"dashboard":"7.17.0"},"references":[{"id":"722a41a0-9a17-11ec-b0ac-7fbc845813ce","name":"ce5f2a98-09fe-475b-84eb-9c3f5d99ffd9:panel_ce5f2a98-09fe-475b-84eb-9c3f5d99ffd9","type":"visualization"},{"id":"22297e40-9a18-11ec-b0ac-7fbc845813ce","name":"ee2d0f68-90c7-4e8c-869f-4769fca28f04:panel_ee2d0f68-90c7-4e8c-869f-4769fca28f04","type":"visualization"},{"id":"04d64470-9e0c-11ec-b0ac-7fbc845813ce","name":"0d33100b-4375-434f-a1e8-167108d96e36:panel_0d33100b-4375-434f-a1e8-167108d96e36","type":"visualization"},{"id":"0ea69c40-afee-11ec-8b7a-01cad4cc09da","name":"d5d45e92-b103-4828-8b46-ab1c38b214b4:panel_d5d45e92-b103-4828-8b46-ab1c38b214b4","type":"visualization"},{"id":"4db923b0-aff5-11ec-8b7a-01cad4cc09da","name":"dac35330-9e41-4a31-a021-defdbef32c91:panel_dac35330-9e41-4a31-a021-defdbef32c91","type":"visualization"},{"id":"aad029e0-aff5-11ec-8b7a-01cad4cc09da","name":"e8e42235-6b0d-4765-a82d-83fcf8ffd60e:panel_e8e42235-6b0d-4765-a82d-83fcf8ffd60e","type":"visualization"},{"id":"a2310350-b0d0-11ec-8b7a-01cad4cc09da","name":"8abdb7dc-b943-482d-8809-dcfcbc172263:panel_8abdb7dc-b943-482d-8809-dcfcbc172263","type":"visualization"},{"id":"ba6ddac0-b3ef-11ec-8b7a-01cad4cc09da","name":"7e28fc1e-e3d0-4ff5-a69e-e4710256ec97:panel_7e28fc1e-e3d0-4ff5-a69e-e4710256ec97","type":"visualization"}],"type":"dashboard","updated_at":"2022-07-26T07:49:26.136Z","version":"WzYyNjMsMV0="} diff --git a/deployment/v3/helmsman/utils/logging/dashboards/README.md b/deployment/v3/helmsman/utils/logging/dashboards/README.md new file mode 100644 index 000000000..9226019aa --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/dashboards/README.md @@ -0,0 +1,7 @@ +# Logging Dashboards +Following is a description of dashboards available in this folder. +- [01-logstash.ndjson](./01-logstash.ndjson) contains the `logstash` _Index Pattern_ required by the rest of the dashboards. +- [02-error-only-logs.ndjson](./02-error-only-logs.ndjson) contains a _Search_ dashboard which shows only the error logs of the services, called `MOSIP Error Logs` dashboard. +- [03-service-logs.ndjson](./03-service-logs.ndjson) contains a _Search_ dashboard which show all logs of a particular service, called `MOSIP Service Logs` dashboard. +- [04-insight.ndjson](./04-insight.ndjson) contains dashboards which show insights into MOSIP processes, like the number of UINs generated (total and per hr), the number of Biometric deduplications processed, number of packets uploaded etc, called `MOSIP Insight` dashboard. +- [05-response-time.ndjson](./05-response-time.ndjson) contains dashboards which show how quickly different MOSIP Services are responding to different APIs, over time, called `Response Time` dashboard. diff --git a/deployment/v3/helmsman/utils/logging/dashboards/Resident Service Metrics-1700579878311.json b/deployment/v3/helmsman/utils/logging/dashboards/Resident Service Metrics-1700579878311.json new file mode 100644 index 000000000..d7da492b8 --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/dashboards/Resident Service Metrics-1700579878311.json @@ -0,0 +1,852 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 40, + "links": [], + "liveNow": true, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": true, + "expr": "api_response_time_seconds{quantile=\"0.95\",service=\"resident\"} > 0", + "interval": "", + "legendFormat": "{{method}}{{uri}};status:{{status}};execption:{{exception}}", + "range": true, + "refId": "API Response Time Median" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "API Response Time (s):95 percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 7 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": true, + "expr": "api_response_time_seconds_max > 0", + "interval": "", + "legendFormat": "{{method}}{{uri}};status:{{status}};execption:{{exception}}", + "range": true, + "refId": "API Response Time Max" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Max API Response Time (s)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": true, + "expr": "api_response_time_seconds_count > 0", + "interval": "", + "legendFormat": "{{method}}{{uri}};status:{{status}};execption:{{exception}}", + "range": true, + "refId": "API Response Time Max" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "API Call count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": true, + "expr": "db_query_response_time_seconds{quantile=\"0.95\"} > 0", + "interval": "", + "legendFormat": "{{queryMethod}}", + "range": true, + "refId": "DB Query Time" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "DB Query Response Time:95 Percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": true, + "expr": "db_query_response_time_seconds_max > 0", + "interval": "", + "legendFormat": "{{queryMethod}}", + "range": true, + "refId": "DB Query Time" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Max DB Query Response Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": true, + "expr": "db_query_response_time_seconds_count > 0", + "interval": "", + "legendFormat": "{{queryMethod}}", + "range": true, + "refId": "DB Query Time" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "DB Query Response Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 42 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": false, + "expr": "rest_client_response_time_seconds{service=\"resident\", quantile=\"0.95\"} > 0", + "instant": false, + "interval": "", + "legendFormat": "{{httpMethod}}:{{url}};status:{{httpStatus}};error={{error}}", + "range": true, + "refId": "DB Query Time" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Server side Rest API Calls response time:95 Percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 49 + }, + "hiddenSeries": false, + "id": 13, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": false, + "expr": "rest_client_response_time_seconds_max > 0", + "instant": false, + "interval": "", + "legendFormat": "{{httpMethod}}:{{url}};status:{{httpStatus}};error={{error}}", + "range": true, + "refId": "DB Query Time" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Server side Rest API Calls: Max response time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.1.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": false, + "expr": "rest_client_response_time_seconds_count > 0", + "instant": false, + "interval": "", + "legendFormat": "{{httpMethod}}:{{url}};status:{{httpStatus}};error={{error}}", + "range": true, + "refId": "DB Query Time" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Server side Rest API Calls Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": false, + "schemaVersion": 37, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Resident Service Metrics", + "uid": "_8jmtQiIk", + "version": 22, + "weekStart": "" +} \ No newline at end of file diff --git a/deployment/v3/helmsman/utils/logging/load_kibana_dashboards.sh b/deployment/v3/helmsman/utils/logging/load_kibana_dashboards.sh new file mode 100755 index 000000000..8e891a793 --- /dev/null +++ b/deployment/v3/helmsman/utils/logging/load_kibana_dashboards.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +if [ $# -lt 1 ] ; then + echo "Usage: ./load_kibana_dashboards.sh [kubeconfig file]" + exit 1 +fi + +if [ $# -ge 2 ] ; then + export KUBECONFIG=$2 +fi + +KIBANA_URL=$(kubectl get cm global -o jsonpath={.data.mosip-kibana-host}) +read -p "Give Kibana Host Name (Example: \"kibana.sandbox.mosip.net\" or \"box.mosip.net/kibana\"): (default: $KIBANA_URL) " TO_REPLACE +KIBANA_URL=${TO_REPLACE:-$KIBANA_URL} +unset TO_REPLACE + +INSTALL_NAME=$(kubectl get cm global -o jsonpath={.data.installation-name}) +read -p "Give the installation name (Use \"_\" instead of \"-\". And no capitals/symbols.): (default: $INSTALL_NAME) " TO_REPLACE +INSTALL_NAME=${TO_REPLACE:-$INSTALL_NAME} +unset TO_REPLACE + +TEMP_OBJ_FILE="/tmp/temp_kib_obj.ndjson" + +for file in ${1%/}/*.ndjson ; do + cp $file $TEMP_OBJ_FILE + sed -i.bak "s/___DB_PREFIX_INDEX___/$INSTALL_NAME/g" $TEMP_OBJ_FILE + echo ; + echo "Loading : $file" + curl -XPOST "https://${KIBANA_URL%/}/api/saved_objects/_import" -H "kbn-xsrf: true" --form file=@$TEMP_OBJ_FILE + rm $TEMP_OBJ_FILE "$TEMP_OBJ_FILE.bak" +done From 6226f7b1499a39f680f060bf5f185e03066830e7 Mon Sep 17 00:00:00 2001 From: Mohanraj209 Date: Mon, 27 Jan 2025 15:48:23 +0530 Subject: [PATCH 02/39] [MOSIP-39077] parametrise and add customisation support to external and pre-requisites helmsman automation. Signed-off-by: Mohanraj209 --- .github/workflows/helmsman_external.yml | 35 ++++++++++++++++++++----- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index 7dc4e1a38..f4bb8b0bb 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -16,15 +16,38 @@ on: - deployment/v3/helmsman/dsf/* jobs: + set-matrix: + runs-on: ubuntu-latest + steps: + - name: Determine matrix based on event + id: set-matrix + run: | + echo "include:" > matrix.yaml + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo " - dsf_files: prereq-dsf.yaml" >> matrix.yaml + echo " wg_conf: wg0" >> matrix.yaml + echo " - dsf_files: external-dsf.yaml" >> matrix.yaml + echo " wg_conf: wg1" >> matrix.yaml + else + changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep -E 'deployment/v3/helmsman/dsf/prereq-dsf.yaml|deployment/v3/helmsman/dsf/external-dsf.yaml' || true) + if [[ "$changed_files" =~ "deployment/v3/helmsman/dsf/prereq-dsf.yaml" ]]; then + echo " - dsf_files: prereq-dsf.yaml" >> matrix.yaml + echo " wg_conf: wg0" >> matrix.yaml + fi + if [[ "$changed_files" =~ "deployment/v3/helmsman/dsf/external-dsf.yaml" ]]; then + echo " - dsf_files: external-dsf.yaml" >> matrix.yaml + echo " wg_conf: wg1" >> matrix.yaml + fi + fi + echo "matrix=$(> $GITHUB_ENV + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} deploy: runs-on: ubuntu-latest + needs: set-matrix strategy: - matrix: - include: - - dsf_files: prereq-dsf.yaml - wg_conf: wg0 - - dsf_files: external-dsf.yaml - wg_conf: wg1 + matrix: | + ${{ needs.set-matrix.outputs.matrix }} steps: - name: Checkout repository uses: actions/checkout@v2 From 1586e9cd70bb1dfb96b16f5f83420fca64b5f8fd Mon Sep 17 00:00:00 2001 From: Mohanraj209 Date: Mon, 27 Jan 2025 16:05:03 +0530 Subject: [PATCH 03/39] [MOSIP-39077] parametrise and add customisation support to external and pre-requisites helmsman automation. Signed-off-by: Mohanraj209 --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 19 +++++++++++++++++++ .../v3/helmsman/hooks/post_logging-setup.sh | 6 +++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index cae82aeee..819d53029 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -67,3 +67,22 @@ apps: KIBANA_NAME: "elasticsearch-kibana" wait: true priority: -1 + + rancher-logging-crd: + namespace: cattle-logging-system + enabled: true + version: 103.1.1+up4.4.0 + chart: mosip/rancher-logging-crd + wait: true + priority: -20 + + rancher-logging: + namespace: cattle-logging-system + enabled: true + version: 103.1.1+up4.4.0 + chart: mosip/rancher-logging + wait: true + priority: -19 + timeout: 600 + hooks: + postInstall: "../hooks/post_logging-setup.sh" diff --git a/deployment/v3/helmsman/hooks/post_logging-setup.sh b/deployment/v3/helmsman/hooks/post_logging-setup.sh index 095a0187b..1cabf5ed7 100755 --- a/deployment/v3/helmsman/hooks/post_logging-setup.sh +++ b/deployment/v3/helmsman/hooks/post_logging-setup.sh @@ -36,11 +36,11 @@ function post_logging_setup() { }' echo "Configure Rancher FluentD" - kubectl apply -f ./utils/logging/clusteroutput-elasticsearch.yaml - kubectl apply -f ./utils/logging/clusterflow-elasticsearch.yaml + kubectl apply -f ../utils/logging/clusteroutput-elasticsearch.yaml + kubectl apply -f ../utils/logging/clusterflow-elasticsearch.yaml echo "Load Dashboards" - ./utils/logging/load_kibana_dashboards.sh ./utils/logging/dashboards ~/.kube/soil.config + ../utils/logging/load_kibana_dashboards.sh ../utils/logging/dashboards ~/.kube/config echo "Dashboards loaded" return 0 } From 0038bfa1aa0feab14e589d3f4e7a2586a6a057f7 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:12:37 +0530 Subject: [PATCH 04/39] [MOSIP-39077] Updated helmsman_external.yml file. Signed-off-by: Mohanraj209 --- .github/workflows/helmsman_external.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index f4bb8b0bb..d89eb2dd1 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -19,6 +19,9 @@ jobs: set-matrix: runs-on: ubuntu-latest steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Determine matrix based on event id: set-matrix run: | From a7c2d9b9540e7c64249e88bb6640ca03d70a5ecf Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:14:46 +0530 Subject: [PATCH 05/39] [MOSIP-39077] Updated prereq-dsf.yaml Signed-off-by: Mohan E From a5ef25865ecbe47359879917bc9c9a2355ecdd05 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:16:15 +0530 Subject: [PATCH 06/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 819d53029..533eeeb1a 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,3 +86,4 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" + From e5ffc3ea361f160a5fd103ee9f4221d6f8a08495 Mon Sep 17 00:00:00 2001 From: Mohanraj209 Date: Mon, 27 Jan 2025 16:22:21 +0530 Subject: [PATCH 07/39] [MOSIP-39077] Updated helmsman_external.yml file. Signed-off-by: Mohanraj209 --- .github/workflows/helmsman_external.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index d89eb2dd1..a7e9ef8cd 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -32,6 +32,10 @@ jobs: echo " - dsf_files: external-dsf.yaml" >> matrix.yaml echo " wg_conf: wg1" >> matrix.yaml else + # Debugging commit references + echo "Before commit: ${{ github.event.before }}" + echo "Current commit: ${{ github.sha }}" + changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep -E 'deployment/v3/helmsman/dsf/prereq-dsf.yaml|deployment/v3/helmsman/dsf/external-dsf.yaml' || true) if [[ "$changed_files" =~ "deployment/v3/helmsman/dsf/prereq-dsf.yaml" ]]; then echo " - dsf_files: prereq-dsf.yaml" >> matrix.yaml From adef1fb8b97b93641640d226520d68a3f6425a32 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:23:43 +0530 Subject: [PATCH 08/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E From db9f7bc271c01fe403ad858cbd13c152ea43ef5d Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:24:18 +0530 Subject: [PATCH 09/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 533eeeb1a..819d53029 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,4 +86,3 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" - From a0167d26190f2229778c93f630aac584eb8ba06d Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:50:14 +0530 Subject: [PATCH 10/39] [MOSIP-39077] Updated helmsman_external.yml file. Signed-off-by: Mohanraj209 --- .github/workflows/helmsman_external.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index a7e9ef8cd..b7299847f 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -32,11 +32,7 @@ jobs: echo " - dsf_files: external-dsf.yaml" >> matrix.yaml echo " wg_conf: wg1" >> matrix.yaml else - # Debugging commit references - echo "Before commit: ${{ github.event.before }}" - echo "Current commit: ${{ github.sha }}" - - changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep -E 'deployment/v3/helmsman/dsf/prereq-dsf.yaml|deployment/v3/helmsman/dsf/external-dsf.yaml' || true) + changed_files=$(git diff --name-only HEAD^ HEAD | grep '^deployment/v3/helmsman/dsf/') if [[ "$changed_files" =~ "deployment/v3/helmsman/dsf/prereq-dsf.yaml" ]]; then echo " - dsf_files: prereq-dsf.yaml" >> matrix.yaml echo " wg_conf: wg0" >> matrix.yaml From fe1524f3c52f52ac2fa30a3a433f22e0668d64ac Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:51:21 +0530 Subject: [PATCH 11/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E From 26b1f5438489e7e8996444c94e55373a94c8095f Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:51:39 +0530 Subject: [PATCH 12/39] Updatec prereq-dsf.yaml Signed-off-by: Mohan E From b8f6bfe1060690043a0f5f452f61ffad79fe81e7 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:52:07 +0530 Subject: [PATCH 13/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 819d53029..a2f2618ba 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,3 +86,4 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" + From 4c7259bb772328a1be2cbbbf3ecdbe9267f9e43c Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:55:36 +0530 Subject: [PATCH 14/39] [MOSIP-39077] Updated helmsman_external.yml file. Signed-off-by: Mohanraj209 --- .github/workflows/helmsman_external.yml | 2 +- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index b7299847f..9b3fb6f24 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -32,7 +32,7 @@ jobs: echo " - dsf_files: external-dsf.yaml" >> matrix.yaml echo " wg_conf: wg1" >> matrix.yaml else - changed_files=$(git diff --name-only HEAD^ HEAD | grep '^deployment/v3/helmsman/dsf/') + changed_files=$(git diff --name-only HEAD~1 HEAD -- | grep '^deployment/v3/helmsman/dsf/') if [[ "$changed_files" =~ "deployment/v3/helmsman/dsf/prereq-dsf.yaml" ]]; then echo " - dsf_files: prereq-dsf.yaml" >> matrix.yaml echo " wg_conf: wg0" >> matrix.yaml diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 819d53029..a2f2618ba 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,3 +86,4 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" + From 0c4c41a937fca4d6aea84e9ab736fcc61a617ba1 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 27 Jan 2025 16:56:45 +0530 Subject: [PATCH 15/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index a2f2618ba..819d53029 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,4 +86,3 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" - From e5f819c2b109b6e7f8487b1efcfece4b545f492a Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 12:50:34 +0530 Subject: [PATCH 16/39] [MOSIP-39077] Updated helmsman_external.yml file. Signed-off-by: Mohanraj209 --- .github/workflows/helmsman_external.yml | 32 +++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index 9b3fb6f24..7f4213332 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -26,22 +26,30 @@ jobs: id: set-matrix run: | echo "include:" > matrix.yaml - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - echo " - dsf_files: prereq-dsf.yaml" >> matrix.yaml - echo " wg_conf: wg0" >> matrix.yaml - echo " - dsf_files: external-dsf.yaml" >> matrix.yaml - echo " wg_conf: wg1" >> matrix.yaml + + if [[ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]]; then + cat <> matrix.yaml + - dsf_files: prereq-dsf.yaml + wg_conf: wg0 + - dsf_files: external-dsf.yaml + wg_conf: wg1 + EOF else - changed_files=$(git diff --name-only HEAD~1 HEAD -- | grep '^deployment/v3/helmsman/dsf/') - if [[ "$changed_files" =~ "deployment/v3/helmsman/dsf/prereq-dsf.yaml" ]]; then - echo " - dsf_files: prereq-dsf.yaml" >> matrix.yaml - echo " wg_conf: wg0" >> matrix.yaml + changed_files=$(git diff --name-only HEAD~1 HEAD | grep '^deployment/v3/helmsman/dsf/') + if echo "$changed_files" | grep -q "deployment/v3/helmsman/dsf/prereq-dsf.yaml"; then + cat <> matrix.yaml + - dsf_files: prereq-dsf.yaml + wg_conf: wg0 + EOF fi - if [[ "$changed_files" =~ "deployment/v3/helmsman/dsf/external-dsf.yaml" ]]; then - echo " - dsf_files: external-dsf.yaml" >> matrix.yaml - echo " wg_conf: wg1" >> matrix.yaml + if echo "$changed_files" | grep -q "deployment/v3/helmsman/dsf/external-dsf.yaml"; then + cat <> matrix.yaml + - dsf_files: external-dsf.yaml + wg_conf: wg1 + EOF fi fi + # Export the matrix as a GitHub environment variable echo "matrix=$(> $GITHUB_ENV outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} From 8da205c99662c472840881608f40902652022ab8 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 12:52:14 +0530 Subject: [PATCH 17/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E From b5162d0ebc16a2ce7a2ec7351aff803e8ece070b Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 12:52:32 +0530 Subject: [PATCH 18/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 819d53029..a2f2618ba 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,3 +86,4 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" + From 827c284b9b765cafb1a75dd7b25983ad4362441a Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 15:30:55 +0530 Subject: [PATCH 19/39] [MOSIP-39077] Updated helmsman_external.yml file. Signed-off-by: Mohanraj209 --- .github/workflows/helmsman_external.yml | 66 ++++++++++++++----------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index 7f4213332..ce124ae4f 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -18,48 +18,58 @@ on: jobs: set-matrix: runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - - name: Checkout code - uses: actions/checkout@v3 + - name: Checkout repository + uses: actions/checkout@v4 - - name: Determine matrix based on event + - name: Generate workflow matrix id: set-matrix run: | - echo "include:" > matrix.yaml - + # Initialize JSON matrix structure + matrix_json='{"include":[]}' + if [[ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]]; then - cat <> matrix.yaml - - dsf_files: prereq-dsf.yaml - wg_conf: wg0 - - dsf_files: external-dsf.yaml - wg_conf: wg1 - EOF + # Add both entries for manual trigger + matrix_json='{"include":[ + {"dsf_files":"prereq-dsf.yaml","wg_conf":"wg0"}, + {"dsf_files":"external-dsf.yaml","wg_conf":"wg1"} + ]}' else - changed_files=$(git diff --name-only HEAD~1 HEAD | grep '^deployment/v3/helmsman/dsf/') - if echo "$changed_files" | grep -q "deployment/v3/helmsman/dsf/prereq-dsf.yaml"; then - cat <> matrix.yaml - - dsf_files: prereq-dsf.yaml - wg_conf: wg0 - EOF + # Check changed files in the specific directory + changed_files=$(git diff --name-only HEAD~1 HEAD -- 'deployment/v3/helmsman/dsf/*') + entries=() + + # Check for prereq-dsf.yaml changes + if grep -q "prereq-dsf.yaml" <<< "$changed_files"; then + entries+=('{"dsf_files":"prereq-dsf.yaml","wg_conf":"wg0"}') + fi + + # Check for external-dsf.yaml changes + if grep -q "external-dsf.yaml" <<< "$changed_files"; then + entries+=('{"dsf_files":"external-dsf.yaml","wg_conf":"wg1"}') fi - if echo "$changed_files" | grep -q "deployment/v3/helmsman/dsf/external-dsf.yaml"; then - cat <> matrix.yaml - - dsf_files: external-dsf.yaml - wg_conf: wg1 - EOF + + # Create JSON array if entries exist + if [ ${#entries[@]} -gt 0 ]; then + matrix_json="{\"include\":[$(IFS=,; echo "${entries[*]}")]}" fi fi - # Export the matrix as a GitHub environment variable - echo "matrix=$(> $GITHUB_ENV - outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} + + # Set output using GitHub Actions syntax + echo "matrix=$matrix_json" >> $GITHUB_OUTPUT deploy: runs-on: ubuntu-latest needs: set-matrix strategy: - matrix: | - ${{ needs.set-matrix.outputs.matrix }} + matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} steps: + - name: Show matrix values + run: | + echo "Processing ${{ matrix.dsf_files }}" + echo "Using WireGuard config: ${{ matrix.wg_conf }}" + - name: Checkout repository uses: actions/checkout@v2 From 19ffcf54870f646c9719e9a1078a7ac1d6b806b7 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 15:32:02 +0530 Subject: [PATCH 20/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index a2f2618ba..819d53029 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,4 +86,3 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" - From 71296c121ffe5e0e029054ab2683ec2d66cb58ed Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 16:45:02 +0530 Subject: [PATCH 21/39] [MOSIP-39077] Updated helmsman_external.yml file. Signed-off-by: Mohanraj209 --- deployment/v3/helmsman/helmsman-workflow-guide.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/deployment/v3/helmsman/helmsman-workflow-guide.md b/deployment/v3/helmsman/helmsman-workflow-guide.md index 06728c058..e1888cc15 100644 --- a/deployment/v3/helmsman/helmsman-workflow-guide.md +++ b/deployment/v3/helmsman/helmsman-workflow-guide.md @@ -14,7 +14,12 @@ The deployment is done in a matrix strategy to handle multiple configuration fil ### Inputs to be provided to run workflow. -### `mode` +### Prerequisites + +- Ensure the necessary secrets (`CLUSTER_WIREGUARD_WG0`, `CLUSTER_WIREGUARD_WG1`, `KUBECONFIG`) are configured in the repository settings. +- The target Kubernetes cluster should be accessible via the provided `KUBECONFIG`. + +### Mode - **Description**: Choose the mode in which Helmsman runs. - **Required**: Yes - **Default**: `dry-run` @@ -69,11 +74,6 @@ The following secrets are required to run this workflow: ### Triggering on Push - Commit and push changes to `deployment/v3/helmsman/dsf/` to automatically trigger the workflow. -## Prerequisites - -- Ensure the necessary secrets (`CLUSTER_WIREGUARD_WG0`, `CLUSTER_WIREGUARD_WG1`, `KUBECONFIG`) are configured in the repository settings. -- The target Kubernetes cluster should be accessible via the provided `KUBECONFIG`. - --- ## Debugging and Logs @@ -86,4 +86,4 @@ The following secrets are required to run this workflow: > **Note:** > - This directory is a **work-in-progress** and currently **experimental**. > - It is subject to changes as we continue to refine the deployment process. -> - Contributions and feedback are welcome as part of ongoing development! \ No newline at end of file +> - Contributions and feedback are welcome as part of ongoing development! From 75ea5806a4db6d75123f1a2f906f573aa7301807 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 16:46:35 +0530 Subject: [PATCH 22/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 819d53029..a2f2618ba 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,3 +86,4 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" + From 6f054447c99b672af28af3b7f969d44491b730ae Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 16:51:26 +0530 Subject: [PATCH 23/39] Updated helmsman_external.yml Signed-off-by: Mohan E --- .github/workflows/helmsman_external.yml | 40 +++++++++++++------------ 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index ce124ae4f..340c9fad7 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -21,43 +21,45 @@ jobs: outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - - name: Checkout repository + - name: Checkout repository with full history uses: actions/checkout@v4 + with: + fetch-depth: 0 # Get full commit history - name: Generate workflow matrix id: set-matrix run: | - # Initialize JSON matrix structure matrix_json='{"include":[]}' if [[ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]]; then - # Add both entries for manual trigger matrix_json='{"include":[ {"dsf_files":"prereq-dsf.yaml","wg_conf":"wg0"}, {"dsf_files":"external-dsf.yaml","wg_conf":"wg1"} ]}' else - # Check changed files in the specific directory - changed_files=$(git diff --name-only HEAD~1 HEAD -- 'deployment/v3/helmsman/dsf/*') - entries=() - - # Check for prereq-dsf.yaml changes - if grep -q "prereq-dsf.yaml" <<< "$changed_files"; then - entries+=('{"dsf_files":"prereq-dsf.yaml","wg_conf":"wg0"}') - fi - - # Check for external-dsf.yaml changes - if grep -q "external-dsf.yaml" <<< "$changed_files"; then - entries+=('{"dsf_files":"external-dsf.yaml","wg_conf":"wg1"}') + # Handle different event types properly + if [[ "$GITHUB_EVENT_NAME" == "push" ]]; then + # For push events, use GitHub's provided SHAs + base_sha="${{ github.event.before}}" + head_sha="${{ github.sha }}" + elif [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then + # For PRs, compare against target branch + base_sha="${{ github.event.pull_request.base.sha }}" + head_sha="${{ github.event.pull_request.head.sha }}" fi - - # Create JSON array if entries exist + + # Get changed files safely + changed_files=$(git diff --name-only "$base_sha" "$head_sha" -- 'deployment/v3/helmsman/dsf/' || echo "") + + entries=() + [[ "$changed_files" == *prereq-dsf.yaml* ]] && entries+=('{"dsf_files":"prereq-dsf.yaml","wg_conf":"wg0"}') + [[ "$changed_files" == *external-dsf.yaml* ]] && entries+=('{"dsf_files":"external-dsf.yaml","wg_conf":"wg1"}') + if [ ${#entries[@]} -gt 0 ]; then matrix_json="{\"include\":[$(IFS=,; echo "${entries[*]}")]}" fi fi - - # Set output using GitHub Actions syntax + echo "matrix=$matrix_json" >> $GITHUB_OUTPUT deploy: runs-on: ubuntu-latest From 9d6ae16670de42385e315929decd7ade10a0c79f Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 16:52:07 +0530 Subject: [PATCH 24/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index a2f2618ba..819d53029 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,4 +86,3 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" - From 507f6d3bf9630b1bdba2b2ec8b27c044b60901e3 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 16:54:27 +0530 Subject: [PATCH 25/39] Updated helmsman_external.yml Signed-off-by: Mohan E --- .github/workflows/helmsman_external.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index 340c9fad7..8982060bd 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -65,7 +65,7 @@ jobs: runs-on: ubuntu-latest needs: set-matrix strategy: - matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} + matrix: ${{ fromJson(needs.set-matrix.outputs.matrix) }} steps: - name: Show matrix values run: | From 42b20684ebd8615ac0f04b5071d47a5d35da409e Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 28 Jan 2025 16:55:09 +0530 Subject: [PATCH 26/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 819d53029..a2f2618ba 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,3 +86,4 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" + From 30928fa42e06814cf07e14b4393fb11326a61828 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Wed, 29 Jan 2025 11:50:07 +0530 Subject: [PATCH 27/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index a2f2618ba..819d53029 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,4 +86,3 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" - From 6f6d342cab92c7c576fb5726335c0dae7ce95de3 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Wed, 29 Jan 2025 12:17:50 +0530 Subject: [PATCH 28/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 819d53029..4b7e7c12f 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -30,8 +30,8 @@ apps: chart: mosip/rancher-monitoring-crd wait: true priority: -4 - hooks: - postInstall: "../hooks/install-istio-and-httpbin.sh" +# hooks: +# postInstall: "../hooks/install-istio-and-httpbin.sh" rancher-monitoring: namespace: cattle-monitoring-system From 85b66b2763b9e7f94554fad3e6ac83fd4501dee1 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Wed, 29 Jan 2025 12:51:21 +0530 Subject: [PATCH 29/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 4b7e7c12f..2d43415b2 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -14,13 +14,13 @@ namespaces: cattle-monitoring-system: protected: false cattle-logging-system: - protected: false + protected: true istio-system: - protected: false + protected: true istio-operator: - protected: false + protected: true httpbin: - protected: false + protected: true apps: rancher-monitoring-crd: From af0e371839ba7fe2d7e6457fa8f7ecd0207ec559 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Wed, 29 Jan 2025 12:57:16 +0530 Subject: [PATCH 30/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 2d43415b2..7cac68fb2 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,3 +86,4 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" + From 0c83f000de119a947c34e82a9482f915a13ca571 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Wed, 29 Jan 2025 13:27:54 +0530 Subject: [PATCH 31/39] Updated external-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/external-dsf.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/deployment/v3/helmsman/dsf/external-dsf.yaml b/deployment/v3/helmsman/dsf/external-dsf.yaml index 932c8399e..1b0025b30 100644 --- a/deployment/v3/helmsman/dsf/external-dsf.yaml +++ b/deployment/v3/helmsman/dsf/external-dsf.yaml @@ -13,23 +13,23 @@ namespaces: postgres: protected: false keycloak: - protected: false + protected: true softhsm: - protected: false + protected: true minio: - protected: false + protected: true clamav: - protected: false + protected: true activemq: - protected: false + protected: true kafka: - protected: false + protected: true s3: - protected: false + protected: true msg-gateways: - protected: false + protected: true captcha: - protected: false + protected: true apps: postgres: @@ -47,7 +47,7 @@ apps: version: 0.1.0 chart: ../utils/istio-addons/postgres-istio-addons-0.1.0.tgz set: - postgresHost: "" + postgresHost: "postgres.soil.mosip.net" wait: true priority: -14 From c1fa70c4dffafed590a2b3649139125a60321896 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Wed, 29 Jan 2025 14:23:50 +0530 Subject: [PATCH 32/39] Updated external-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/external-dsf.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/v3/helmsman/dsf/external-dsf.yaml b/deployment/v3/helmsman/dsf/external-dsf.yaml index 1b0025b30..a844dcd22 100644 --- a/deployment/v3/helmsman/dsf/external-dsf.yaml +++ b/deployment/v3/helmsman/dsf/external-dsf.yaml @@ -11,11 +11,11 @@ helmRepos: namespaces: postgres: - protected: false + protected: true keycloak: protected: true softhsm: - protected: true + protected: false minio: protected: true clamav: From 16a98f74f087ee1c17db048ba57ab885cf53e3a8 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Wed, 29 Jan 2025 14:40:38 +0530 Subject: [PATCH 33/39] Updated helmsman_external.yml Signed-off-by: Mohan E --- .github/workflows/helmsman_external.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/helmsman_external.yml b/.github/workflows/helmsman_external.yml index 8982060bd..97a254048 100644 --- a/.github/workflows/helmsman_external.yml +++ b/.github/workflows/helmsman_external.yml @@ -52,8 +52,15 @@ jobs: changed_files=$(git diff --name-only "$base_sha" "$head_sha" -- 'deployment/v3/helmsman/dsf/' || echo "") entries=() - [[ "$changed_files" == *prereq-dsf.yaml* ]] && entries+=('{"dsf_files":"prereq-dsf.yaml","wg_conf":"wg0"}') - [[ "$changed_files" == *external-dsf.yaml* ]] && entries+=('{"dsf_files":"external-dsf.yaml","wg_conf":"wg1"}') + + # Check for exact file paths + if echo "$changed_files" | grep -qx 'deployment/v3/helmsman/dsf/prereq-dsf.yaml'; then + entries+=('{"dsf_files":"prereq-dsf.yaml","wg_conf":"wg0"}') + fi + + if echo "$changed_files" | grep -qx 'deployment/v3/helmsman/dsf/external-dsf.yaml'; then + entries+=('{"dsf_files":"external-dsf.yaml","wg_conf":"wg1"}') + fi if [ ${#entries[@]} -gt 0 ]; then matrix_json="{\"include\":[$(IFS=,; echo "${entries[*]}")]}" From 390e1f5ccf252b07a272ea5c7aaf8840dd387b15 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Wed, 29 Jan 2025 14:43:18 +0530 Subject: [PATCH 34/39] Updated external-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/external-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/external-dsf.yaml b/deployment/v3/helmsman/dsf/external-dsf.yaml index a844dcd22..fd0f1e10e 100644 --- a/deployment/v3/helmsman/dsf/external-dsf.yaml +++ b/deployment/v3/helmsman/dsf/external-dsf.yaml @@ -193,3 +193,4 @@ apps: hooks: postInstall: "../hooks/msg-gateways-setup.sh" priority: -1 + From 576e33afd92c2844aa84f18fc011113560a8b878 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 10 Feb 2025 11:47:45 +0530 Subject: [PATCH 35/39] Update external-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/external-dsf.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/deployment/v3/helmsman/dsf/external-dsf.yaml b/deployment/v3/helmsman/dsf/external-dsf.yaml index fd0f1e10e..a844dcd22 100644 --- a/deployment/v3/helmsman/dsf/external-dsf.yaml +++ b/deployment/v3/helmsman/dsf/external-dsf.yaml @@ -193,4 +193,3 @@ apps: hooks: postInstall: "../hooks/msg-gateways-setup.sh" priority: -1 - From 49c52f19cc2f4852c7672796e5844436a2214f70 Mon Sep 17 00:00:00 2001 From: Mohan E Date: Mon, 10 Feb 2025 12:24:14 +0530 Subject: [PATCH 36/39] Update external-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/external-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/external-dsf.yaml b/deployment/v3/helmsman/dsf/external-dsf.yaml index a844dcd22..fd0f1e10e 100644 --- a/deployment/v3/helmsman/dsf/external-dsf.yaml +++ b/deployment/v3/helmsman/dsf/external-dsf.yaml @@ -193,3 +193,4 @@ apps: hooks: postInstall: "../hooks/msg-gateways-setup.sh" priority: -1 + From 8e5464c2e6b4c3a64356d6d7115d0624b29a46ea Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 11 Feb 2025 13:22:46 +0530 Subject: [PATCH 37/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 7cac68fb2..0cd5484ed 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -12,9 +12,9 @@ namespaces: kube-system: protected: true cattle-monitoring-system: - protected: false - cattle-logging-system: protected: true + cattle-logging-system: + protected: false istio-system: protected: true istio-operator: @@ -50,7 +50,7 @@ apps: elasticsearch: namespace: cattle-logging-system - enabled: true + enabled: false version: 17.9.25 chart: mosip/elasticsearch wait: true @@ -86,4 +86,3 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" - From adb1620ddab7452e1bfe3b1f2d7ff02501717a0e Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 11 Feb 2025 13:55:03 +0530 Subject: [PATCH 38/39] Updated prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 0cd5484ed..58d60d4f6 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -29,7 +29,7 @@ apps: version: 103.1.1+up45.31.1 chart: mosip/rancher-monitoring-crd wait: true - priority: -4 + priority: -6 # hooks: # postInstall: "../hooks/install-istio-and-httpbin.sh" @@ -43,18 +43,18 @@ apps: global.cattle.clusterId: "" wait: true valuesFile: https://raw.githubusercontent.com/mosip/k8s-infra/refs/heads/develop/monitoring/values.yaml - priority: -3 + priority: -5 timeout: 600 hooks: postInstall: "../hooks/alerting-setup.sh" elasticsearch: namespace: cattle-logging-system - enabled: false + enabled: true version: 17.9.25 chart: mosip/elasticsearch wait: true - priority: -2 + priority: -4 valuesFile: https://raw.githubusercontent.com/mosip/k8s-infra/refs/heads/develop/logging/es_values.yaml istio-addons-logging: @@ -66,7 +66,7 @@ apps: KIBANA_HOST: "" KIBANA_NAME: "elasticsearch-kibana" wait: true - priority: -1 + priority: -3 rancher-logging-crd: namespace: cattle-logging-system @@ -74,7 +74,7 @@ apps: version: 103.1.1+up4.4.0 chart: mosip/rancher-logging-crd wait: true - priority: -20 + priority: -2 rancher-logging: namespace: cattle-logging-system @@ -82,7 +82,7 @@ apps: version: 103.1.1+up4.4.0 chart: mosip/rancher-logging wait: true - priority: -19 + priority: -1 timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" From deacc33d45b3b67823f554324078921a14c9e4be Mon Sep 17 00:00:00 2001 From: Mohan E Date: Tue, 11 Feb 2025 16:55:53 +0530 Subject: [PATCH 39/39] Update prereq-dsf.yaml Signed-off-by: Mohan E --- deployment/v3/helmsman/dsf/prereq-dsf.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/v3/helmsman/dsf/prereq-dsf.yaml b/deployment/v3/helmsman/dsf/prereq-dsf.yaml index 58d60d4f6..92e14c2b1 100644 --- a/deployment/v3/helmsman/dsf/prereq-dsf.yaml +++ b/deployment/v3/helmsman/dsf/prereq-dsf.yaml @@ -86,3 +86,4 @@ apps: timeout: 600 hooks: postInstall: "../hooks/post_logging-setup.sh" +