diff --git a/30-helm/cluster-metrics/01-prometheus-values.yaml b/30-helm/cluster-metrics/01-prometheus-values.yaml index fc862a5f8..4ea9489d5 100644 --- a/30-helm/cluster-metrics/01-prometheus-values.yaml +++ b/30-helm/cluster-metrics/01-prometheus-values.yaml @@ -1,12 +1,17 @@ -#### "TESTED ON: Chart version: 14.5.0 App Version: 0.46.0" +#### "TESTED ON: Chart version: 57.2.0 App Version: 0.72.0" ## Deployed with: -## helm upgrade --install metrics prometheus-community/kube-prometheus-stack -f 01-prometheus-values.yaml -n metrics --version 30.0.1 +## helm upgrade --install metrics prometheus-community/kube-prometheus-stack -f 01-prometheus-values.yaml -n metrics --version 57.2.0 ## ## Override the deployment namespace ## namespaceOverride: "metrics" +## Install Prometheus Operator CRDs +## +crds: + enabled: true + ## Create default rules for monitoring the cluster ## defaultRules: @@ -14,37 +19,49 @@ defaultRules: rules: alertmanager: true etcd: true + configReloaders: true general: true - k8s: true - kubeApiserver: true + k8sContainerCpuUsageSecondsTotal: true + k8sContainerMemoryCache: true + k8sContainerMemoryRss: true + k8sContainerMemorySwap: true + k8sContainerResource: true + k8sContainerMemoryWorkingSetBytes: true + k8sPodOwner: true kubeApiserverAvailability: true - kubeApiserverError: true + kubeApiserverBurnrate: true + kubeApiserverHistogram: true kubeApiserverSlos: true + kubeControllerManager: true kubelet: true + kubeProxy: true kubePrometheusGeneral: true - kubePrometheusNodeAlerting: true kubePrometheusNodeRecording: true - kubernetesAbsent: true kubernetesApps: true kubernetesResources: true kubernetesStorage: true kubernetesSystem: true - kubeScheduler: true + kubeSchedulerAlerting: true + kubeSchedulerRecording: true kubeStateMetrics: true network: true node: true + nodeExporterAlerting: true + nodeExporterRecording: true prometheus: true prometheusOperator: true - time: true ## global: rbac: create: true + createAggregateClusterRoles: false pspEnabled: true pspAnnotations: {} -## Deploy alertmanager +## Configuration for alertmanager +## ref: https://prometheus.io/docs/alerting/alertmanager/ +## alertmanager: enabled: true apiVersion: v2 @@ -52,43 +69,134 @@ alertmanager: create: true name: "" annotations: {} + automountServiceAccountToken: true ingress: enabled: false - annotations: - kubernetes.io/ingress.class: "nginx-public" - + annotations: {} + spec: + # Must match the name of the IngressClass resource + ingressClassName: nginx labels: {} ## CHANGEME - hosts: - - alertmanager-mymetrics.ping-devops.com + hosts: + - alertmanager-mymetrics.pingdemo.example paths: - - / + - / tls: [] + secret: + annotations: {} + tlsSecretName: "" - -## Depoy Grafana +## Deploy Grafana ## grafana: enabled: true defaultDashboardsEnabled: true - + + ## CHANGEME + defaultDashboardsTimezone: America/Chicago + defaultDashboardsEditable: true ## CHANGEME adminPassword: prom-operator - + rbac: + pspEnabled: false ingress: - enabled: true - annotations: - kubernetes.io/ingress.class: "nginx-public" + enabled: truez + ingressClassName: nginx + spec: + ingressClassName: nginx + annotations: {} labels: {} - ##CHANGEME hosts: - - grafana-mymetrics.ping-devops.com + - grafana-mymetrics.pingdemo.example path: / + tls: [] + serviceAccount: + create: true + autoMount: true - ##CHANGEME - tls: - - hosts: - - grafana-mymetrics.ping-devops.com + sidecar: + dashboards: + enabled: true + label: grafana_dashboard + labelValue: "1" + # Allow discovery in all namespaces for dashboards + searchNamespace: ALL + enableNewTablePanelSyntax: true + annotations: {} + multicluster: + global: + enabled: false + etcd: + enabled: false + provider: + allowUiUpdates: false + datasources: + enabled: true + defaultDatasourceEnabled: true + isDefaultDatasource: true + + uid: prometheus + annotations: {} + httpMethod: POST + exemplarTraceIdDestinations: {} + alertmanager: + enabled: true + uid: alertmanager + handleGrafanaManagedAlerts: false + implementation: prometheus + + ## Passed to grafana subchart and used by servicemonitor below + ## + service: + portName: http-web + + serviceMonitor: + enabled: true + path: "/metrics" + labels: {} + interval: "" + scheme: http + tlsConfig: {} + scrapeTimeout: 30s + relabelings: [] + +## Flag to disable all the kubernetes component scrapers +## +kubernetesServiceMonitors: + enabled: true + +## Component scraping the kube api server +## +kubeApiServer: + enabled: true + tlsConfig: + serverName: kubernetes + insecureSkipVerify: false + serviceMonitor: + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + + jobLabel: component + selector: + matchLabels: + component: apiserver + provider: kubernetes + + metricRelabelings: + # Drop excessively noisy apiserver buckets. + - action: drop + regex: apiserver_request_duration_seconds_bucket;(0.15|0.2|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2|3|3.5|4|4.5|6|7|8|9|15|25|40|50) + sourceLabels: + - __name__ + - le + relabelings: [] + additionalLabels: {} ## Component scraping the kubelet and kubelet-hosted cAdvisor ## @@ -96,138 +204,1310 @@ kubelet: enabled: true namespace: kube-system + serviceMonitor: + attachMetadata: + node: false + interval: "" + honorLabels: true + honorTimestamps: true + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + https: true + cAdvisor: true + probes: true + resource: false + resourcePath: "/metrics/resource/v1alpha1" + + cAdvisorMetricRelabelings: + # Drop less useful container CPU metrics. + - sourceLabels: [__name__] + action: drop + regex: "container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total)" + # Drop less useful container / always zero filesystem metrics. + - sourceLabels: [__name__] + action: drop + regex: "container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total)" + # Drop less useful / always zero container memory metrics. + - sourceLabels: [__name__] + action: drop + regex: "container_memory_(mapped_file|swap)" + # Drop less useful container process metrics. + - sourceLabels: [__name__] + action: drop + regex: "container_(file_descriptors|tasks_state|threads_max)" + # Drop container spec metrics that overlap with kube-state-metrics. + - sourceLabels: [__name__] + action: drop + regex: "container_spec.*" + # Drop cgroup metrics with no pod. + - sourceLabels: [id, pod] + action: drop + regex: ".+;" + probesMetricRelabelings: [] + cAdvisorRelabelings: + - action: replace + sourceLabels: [__metrics_path__] + targetLabel: metrics_path + probesRelabelings: + - action: replace + sourceLabels: [__metrics_path__] + targetLabel: metrics_path + resourceRelabelings: + - action: replace + sourceLabels: [__metrics_path__] + targetLabel: metrics_path + metricRelabelings: [] + relabelings: + - action: replace + sourceLabels: [__metrics_path__] + targetLabel: metrics_path + additionalLabels: {} + ## Component scraping the kube controller manager ## kubeControllerManager: enabled: true + endpoints: [] + service: + enabled: true + port: null + targetPort: null + + serviceMonitor: + enabled: true + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + port: metrics + jobLabel: jobLabel + selector: {} + https: null + insecureSkipVerify: null + serverName: null + metricRelabelings: [] + relabelings: [] + additionalLabels: {} + +## Component scraping coreDns. Use either this or kubeDns +## +coreDns: + enabled: true + service: + enabled: true + port: 9153 + targetPort: 9153 + # selector: + # k8s-app: kube-dns + serviceMonitor: + enabled: true + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + port: metrics + jobLabel: jobLabel + selector: {} + metricRelabelings: [] + relabelings: [] + additionalLabels: {} + +## Component scraping kubeDns. Use either this or coreDns +## +kubeDns: + enabled: false + service: + dnsmasq: + port: 10054 + targetPort: 10054 + skydns: + port: 10055 + targetPort: 10055 + # selector: + # k8s-app: kube-dns + serviceMonitor: + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + jobLabel: jobLabel + selector: {} + metricRelabelings: [] + relabelings: [] + dnsmasqMetricRelabelings: [] + dnsmasqRelabelings: [] + additionalLabels: {} + +## Component scraping etcd +## +kubeEtcd: + enabled: true + endpoints: [] + service: + enabled: true + port: 2381 + targetPort: 2381 + # selector: + # component: etcd + + serviceMonitor: + enabled: true + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + scheme: http + insecureSkipVerify: false + serverName: "" + caFile: "" + certFile: "" + keyFile: "" + port: metrics + jobLabel: jobLabel + selector: {} + metricRelabelings: [] + relabelings: [] + additionalLabels: {} + +## Component scraping kube scheduler +## +kubeScheduler: + enabled: true + endpoints: [] + service: + enabled: true + port: null + targetPort: null + + serviceMonitor: + enabled: true + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + https: null + port: metrics + jobLabel: jobLabel + selector: {} + insecureSkipVerify: null + serverName: null + metricRelabelings: [] + relabelings: [] + additionalLabels: {} + +## Component scraping kube proxy +## +kubeProxy: + enabled: true + endpoints: [] + service: + enabled: true + port: 10249 + targetPort: 10249 + serviceMonitor: + enabled: true + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + port: metrics + jobLabel: jobLabel + selector: {} + https: false + metricRelabelings: [] + relabelings: [] + additionalLabels: {} -## Configuration for kube-state-metrics subchart +## Component scraping kube state metrics ## +kubeStateMetrics: + enabled: true + kube-state-metrics: namespaceOverride: "" rbac: create: true - podSecurityPolicy: - enabled: true + releaseLabel: true + prometheus: + monitor: + enabled: true + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + scrapeTimeout: "" + proxyUrl: "" + honorLabels: true + metricRelabelings: [] + relabelings: [] + selfMonitor: + enabled: false + +## Deploy node exporter as a daemonset to all nodes +## +nodeExporter: + enabled: true + operatingSystems: + linux: + enabled: true + darwin: + enabled: true + forceDeployDashboards: false + +## Configuration for prometheus-node-exporter subchart +## +prometheus-node-exporter: + namespaceOverride: "" + ## CHANGEME + ## hostRootFsMount 'false' is a workaround for Docker-Desktop on Mac + ## Not needed on Linux hosts + # hostRootFsMount: + # enabled: false + podLabels: + ## Add the 'node-exporter' label to be used by serviceMonitor to match standard common usage in rules and grafana dashboards + ## + jobLabel: node-exporter + releaseLabel: true + extraArgs: + - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/) + - --collector.filesystem.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$ + service: + portName: http-metrics + prometheus: + monitor: + enabled: true + jobLabel: jobLabel + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + scrapeTimeout: "" + proxyUrl: "" + metricRelabelings: [] + relabelings: [] + rbac: + pspEnabled: false ## Manages Prometheus and Alertmanager components ## prometheusOperator: enabled: true - ## Namespaces to scope the interaction of the Prometheus Operator and the apiserver (allow list). - ## This is mutually exclusive with denyNamespaces. Setting this to an empty object will disable the configuration - ## - namespaces: {} - # releaseNamespace: true - # additional: - # - kube-system + fullnameOverride: "" + revisionHistoryLimit: 10 + strategy: {} + tls: + enabled: true + # Value must match version names from https://golang.org/pkg/crypto/tls/#pkg-constants + tlsMinVersion: VersionTLS13 + # The default webhook port is 10250 in order to work out-of-the-box in GKE private clusters and avoid adding firewall rules. + internalPort: 10250 - ## Namespaces not to scope the interaction of the Prometheus Operator (deny list). - ## + admissionWebhooks: + failurePolicy: "" + timeoutSeconds: 10 + enabled: true + caBundle: "" + annotations: {} + namespaceSelector: {} + deployment: + enabled: false + replicas: 1 + strategy: {} + podDisruptionBudget: {} + revisionHistoryLimit: 10 + tls: + enabled: true + tlsMinVersion: VersionTLS13 + internalPort: 10250 + serviceAccount: + automountServiceAccountToken: false + create: true + name: "" + + ## Configuration for Prometheus operator Webhook service + ## + service: + annotations: {} + labels: {} + clusterIP: "" + nodePort: 31080 + nodePortTls: 31443 + additionalPorts: [] + loadBalancerIP: "" + loadBalancerSourceRanges: [] + externalTrafficPolicy: Cluster + type: ClusterIP + externalIPs: [] + labels: {} + annotations: {} + podLabels: {} + podAnnotations: {} + image: + registry: quay.io + repository: prometheus-operator/admission-webhook + # if not set appVersion field from Chart.yaml is used + tag: "" + sha: "" + pullPolicy: IfNotPresent + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + + ## Readiness probe + ## + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: {} + hostNetwork: false + nodeSelector: {} + tolerations: [] + affinity: {} + dnsConfig: {} + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + seccompProfile: + type: RuntimeDefault + containerSecurityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: + drop: + - ALL + automountServiceAccountToken: true + + patch: + enabled: true + image: + registry: registry.k8s.io + repository: ingress-nginx/kube-webhook-certgen + tag: v20221220-controller-v1.5.1-58-g787ea74b6 + sha: "" + pullPolicy: IfNotPresent + resources: {} + ## Provide a priority class name to the webhook patching job + ## + priorityClassName: "" + annotations: {} + podAnnotations: {} + nodeSelector: {} + affinity: {} + tolerations: [] + securityContext: + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 2000 + seccompProfile: + type: RuntimeDefault + createSecretJob: + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: + drop: + - ALL + patchWebhookJob: + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: + drop: + - ALL + certManager: + enabled: false + rootCert: + duration: "" # default to be 5y + admissionCert: + duration: "" # default to be 1y + namespaces: {} denyNamespaces: [] + alertmanagerInstanceNamespaces: [] + alertmanagerConfigNamespaces: [] + prometheusInstanceNamespaces: [] + thanosRulerInstanceNamespaces: [] + + networkPolicy: + enabled: false + flavor: kubernetes serviceAccount: create: true name: "" + automountServiceAccountToken: true + ## Configuration for Prometheus operator service + ## + service: + annotations: {} + labels: {} + clusterIP: "" + nodePort: 30080 + nodePortTls: 30443 + additionalPorts: [] + loadBalancerIP: "" + loadBalancerSourceRanges: [] + externalTrafficPolicy: Cluster + type: ClusterIP + externalIPs: [] + labels: {} + annotations: {} + podLabels: {} + podAnnotations: {} + kubeletService: + enabled: true + namespace: kube-system + name: "" -prometheus: + ## Create a servicemonitor for the operator + ## + serviceMonitor: + selfMonitor: true + additionalLabels: {} + interval: "" + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + scrapeTimeout: "" + metricRelabelings: [] + relabelings: [] + resources: {} + env: + GOGC: "30" + hostNetwork: false + nodeSelector: {} + tolerations: [] + affinity: {} + dnsConfig: {} + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + seccompProfile: + type: RuntimeDefault + containerSecurityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: + drop: + - ALL + # updatePolicy: + # updateMode: Auto + ## Prometheus-operator image + ## + image: + registry: quay.io + repository: prometheus-operator/prometheus-operator + # if not set appVersion field from Chart.yaml is used + tag: "" + sha: "" + pullPolicy: IfNotPresent + + prometheusConfigReloader: + image: + registry: quay.io + repository: prometheus-operator/prometheus-config-reloader + # if not set appVersion field from Chart.yaml is used + tag: "" + sha: "" + + enableProbe: false + + resources: {} + + ## Thanos side-car image when configured + ## + thanosImage: + registry: quay.io + repository: thanos/thanos + tag: v0.34.1 + sha: "" + + ## Set a Label Selector to filter watched prometheus and prometheusAgent + ## + prometheusInstanceSelector: "" + + ## Set a Label Selector to filter watched alertmanager + ## + alertmanagerInstanceSelector: "" + + ## Set a Label Selector to filter watched thanosRuler + thanosRulerInstanceSelector: "" + + ## Set a Field Selector to filter watched secrets + ## + secretFieldSelector: "type!=kubernetes.io/dockercfg,type!=kubernetes.io/service-account-token,type!=helm.sh/release.v1" + + ## If false then the user will opt out of automounting API credentials. + ## + automountServiceAccountToken: true + + ## Additional volumes + ## + extraVolumes: [] + + ## Additional volume mounts + ## + extraVolumeMounts: [] + +## Deploy a Prometheus instance +## +prometheus: enabled: true - ingress: + ## Toggle prometheus into agent mode + ## Note many of features described below (e.g. rules, query, alerting, remote read, thanos) will not work in agent mode. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/designs/prometheus-agent.md + ## + agentMode: false + + ## Annotations for Prometheus + ## + annotations: {} + + ## Configure network policy for the prometheus + networkPolicy: + enabled: false + + ## Flavor of the network policy to use. + # Can be: + # * kubernetes for networking.k8s.io/v1/NetworkPolicy + # * cilium for cilium.io/v2/CiliumNetworkPolicy + flavor: kubernetes + + # cilium: + # endpointSelector: + # egress: + # ingress: + + # egress: + # - {} + # ingress: + # - {} + # podSelector: + # matchLabels: + # app: prometheus + + ## Service account for Prometheuses to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ## + serviceAccount: + create: true + name: "" + annotations: {} + automountServiceAccountToken: true + + # Service for thanos service discovery on sidecar + # Enable this can make Thanos Query can use + # `--store=dnssrv+_grpc._tcp.${kube-prometheus-stack.fullname}-thanos-discovery.${namespace}.svc.cluster.local` to discovery + # Thanos sidecar on prometheus nodes + # (Please remember to change ${kube-prometheus-stack.fullname} and ${namespace}. Not just copy and paste!) + thanosService: + enabled: false + annotations: {} + labels: {} + + ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints + ## + externalTrafficPolicy: Cluster + + ## Service type + ## + type: ClusterIP + + ## gRPC port config + portName: grpc + port: 10901 + targetPort: "grpc" + + ## HTTP port config (for metrics) + httpPortName: http + httpPort: 10902 + targetHttpPort: "http" + + ## ClusterIP to assign + # Default is to make this a headless service ("None") + clusterIP: "None" + + ## Port to expose on each node, if service type is NodePort + ## + nodePort: 30901 + httpNodePort: 30902 + + # ServiceMonitor to scrape Sidecar metrics + # Needs thanosService to be enabled as well + thanosServiceMonitor: + enabled: false + interval: "" + + ## Additional labels + ## + additionalLabels: {} + + ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS. + scheme: "" + + ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS. + ## Of type: https://github.com/coreos/prometheus-operator/blob/main/Documentation/api.md#tlsconfig + tlsConfig: {} + + bearerTokenFile: + + ## Metric relabel configs to apply to samples before ingestion. + metricRelabelings: [] + + ## relabel configs to apply to samples before ingestion. + relabelings: [] + + # Service for external access to sidecar + # Enabling this creates a service to expose thanos-sidecar outside the cluster. + thanosServiceExternal: + enabled: false + annotations: {} + labels: {} + loadBalancerIP: "" + loadBalancerSourceRanges: [] + + ## gRPC port config + portName: grpc + port: 10901 + targetPort: "grpc" + + ## HTTP port config (for metrics) + httpPortName: http + httpPort: 10902 + targetHttpPort: "http" + + ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints + ## + externalTrafficPolicy: Cluster + + ## Service type + ## + type: LoadBalancer + + ## Port to expose on each node + ## + nodePort: 30901 + httpNodePort: 30902 + + ## Configuration for Prometheus service + ## + service: + annotations: {} + labels: {} + clusterIP: "" + + ## Port for Prometheus Service to listen on + ## + port: 9090 + + ## To be used with a proxy extraContainer port + targetPort: 9090 + + ## Port for Prometheus Reloader to listen on + ## + reloaderWebPort: 8080 + + ## List of IP addresses at which the Prometheus server service is available + ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips + ## + externalIPs: [] + + ## Port to expose on each node + ## Only used if service.type is 'NodePort' + ## + nodePort: 30090 + + ## Loadbalancer IP + ## Only use if service.type is "LoadBalancer" + loadBalancerIP: "" + loadBalancerSourceRanges: [] + + ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints + ## + externalTrafficPolicy: Cluster + + ## Service type + ## + type: ClusterIP + + ## Additional ports to open for Prometheus service + ## + additionalPorts: [] + # additionalPorts: + # - name: oauth-proxy + # port: 8081 + # targetPort: 8081 + # - name: oauth-metrics + # port: 8082 + # targetPort: 8082 + + ## Consider that all endpoints are considered "ready" even if the Pods themselves are not + ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec + publishNotReadyAddresses: false + + ## If you want to make sure that connections from a particular client are passed to the same Pod each time + ## Accepts 'ClientIP' or 'None' + ## + sessionAffinity: None + + ## If you want to modify the ClientIP sessionAffinity timeout + ## The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP" + ## + sessionAffinityConfig: + clientIP: + timeoutSeconds: 10800 + + ## Configuration for creating a separate Service for each statefulset Prometheus replica + ## + servicePerReplica: + enabled: false + annotations: {} + + ## Port for Prometheus Service per replica to listen on + ## + port: 9090 + + ## To be used with a proxy extraContainer port + targetPort: 9090 + + ## Port to expose on each node + ## Only used if servicePerReplica.type is 'NodePort' + ## + nodePort: 30091 + + ## Loadbalancer source IP ranges + ## Only used if servicePerReplica.type is "LoadBalancer" + loadBalancerSourceRanges: [] + + ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints + ## + externalTrafficPolicy: Cluster + + ## Service type + ## + type: ClusterIP + + ## Configure pod disruption budgets for Prometheus + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget + ## + podDisruptionBudget: + enabled: false + minAvailable: 1 + maxUnavailable: "" + + # Ingress exposes thanos sidecar outside the cluster + thanosIngress: enabled: false # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress # ingressClassName: nginx - annotations: - # nginx example - # nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - kubernetes.io/ingress.class: "nginx-public" + annotations: {} labels: {} + servicePort: 10901 + ## Port to expose on each node + ## Only used if service.type is 'NodePort' + ## + nodePort: 30901 - ##CHANGEME + ## Hosts must be provided if Ingress is enabled. + ## hosts: - - prometheus-mymetrics.ping-devops.com + [] + # - thanos-gateway.domain.com + ## Paths to use for ingress rules + ## paths: [] + # - / + ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched) + ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types + # pathType: ImplementationSpecific + + ## TLS configuration for Thanos Ingress + ## Secret must be manually created in the namespace + ## tls: [] + # - secretName: thanos-gateway-tls + # hosts: + # - thanos-gateway.domain.com + # + ## ExtraSecret can be used to store various data in an extra secret + ## (use it for example to store hashed basic auth credentials) + extraSecret: + ## if not set, name will be auto generated + # name: "" + annotations: {} + data: {} + # auth: | + # foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0 + # someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c. - ## Settings affecting prometheusSpec - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + ingress: + enabled: false + + # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName + # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress + # ingressClassName: nginx + + annotations: {} + labels: {} + + ## Redirect ingress to an additional defined port on the service + # servicePort: 8081 + + ## Hostnames. + ## Must be provided if Ingress is enabled. + ## + # hosts: + # - prometheus.domain.com + hosts: [] + + ## Paths to use for ingress rules - one path should match the prometheusSpec.routePrefix + ## + paths: [] + # - / + + ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched) + ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types + # pathType: ImplementationSpecific + + ## TLS configuration for Prometheus Ingress + ## Secret must be manually created in the namespace + ## + tls: + [] + # - secretName: prometheus-general-tls + # hosts: + # - prometheus.example.com + + ## Configuration for creating an Ingress that will map to each Prometheus replica service + ## prometheus.servicePerReplica must be enabled ## - prometheusSpec: - ## If true, pass --storage.tsdb.max-block-duration=2h to prometheus. This is already done if using Thanos + ingressPerReplica: + enabled: false + + # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName + # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress + # ingressClassName: nginx + + annotations: {} + labels: {} + + ## Final form of the hostname for each per replica ingress is + ## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }} + ## + ## Prefix for the per replica ingress that will have `-$replicaNumber` + ## appended to the end + hostPrefix: "" + ## Domain that will be used for the per replica ingress + hostDomain: "" + + ## Paths to use for ingress rules + ## + paths: [] + # - / + + ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched) + ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types + # pathType: ImplementationSpecific + + ## Secret name containing the TLS certificate for Prometheus per replica ingress + ## Secret must be manually created in the namespace + tlsSecretName: "" + + ## Separated secret for each per replica Ingress. Can be used together with cert-manager ## + tlsSecretPerReplica: + enabled: false + ## Final form of the secret for each per replica ingress is + ## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }} + ## + prefix: "prometheus" + + ## Configure additional options for default pod security policy for Prometheus + ## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ + podSecurityPolicy: + allowedCapabilities: [] + allowedHostPaths: [] + volumes: [] + serviceMonitor: + ## If true, create a serviceMonitor for prometheus + ## + selfMonitor: true + + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## Additional labels + ## + additionalLabels: {} + + ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. + ## + sampleLimit: 0 + + ## TargetLimit defines a limit on the number of scraped targets that will be accepted. + ## + targetLimit: 0 + + ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. + ## + labelLimit: 0 + + ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. + ## + labelNameLengthLimit: 0 + + ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. + ## + labelValueLengthLimit: 0 + + ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS. + scheme: "" + + ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS. + ## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#tlsconfig + tlsConfig: {} + + bearerTokenFile: + + ## Metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + ## Additional Endpoints + ## + additionalEndpoints: [] + # - port: oauth-metrics + # path: /metrics + + ## Settings affecting prometheusSpec + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#prometheusspec + ## + prometheusSpec: + disableCompaction: false + apiserverConfig: {} + additionalArgs: [] + scrapeInterval: "" + scrapeTimeout: "" + evaluationInterval: "" + listenLocal: false + enableAdminAPI: false + version: "" + web: {} + exemplars: "" + enableFeatures: [] + image: + registry: quay.io + repository: prometheus/prometheus + tag: v2.51.0 + sha: "" + tolerations: [] + topologySpreadConstraints: [] + alertingEndpoints: [] + externalLabels: {} + enableRemoteWriteReceiver: false + replicaExternalLabelName: "" + replicaExternalLabelNameClear: false + prometheusExternalLabelName: "" + prometheusExternalLabelNameClear: false + externalUrl: "" + nodeSelector: {} + secrets: [] + configMaps: [] + query: {} + ruleNamespaceSelector: {} + ruleSelectorNilUsesHelmValues: true + ruleSelector: {} + serviceMonitorSelectorNilUsesHelmValues: true + serviceMonitorSelector: {} + serviceMonitorNamespaceSelector: {} + podMonitorSelectorNilUsesHelmValues: true + podMonitorSelector: {} + podMonitorNamespaceSelector: {} + probeSelectorNilUsesHelmValues: true + probeSelector: {} + probeNamespaceSelector: {} + scrapeConfigSelectorNilUsesHelmValues: true + scrapeConfigSelector: {} + scrapeConfigNamespaceSelector: {} + retention: 10d + retentionSize: "" + tsdb: + outOfOrderTimeWindow: 0s + walCompression: true + paused: false + replicas: 1 + shards: 1 + logLevel: info + logFormat: logfmt + routePrefix: / + podMetadata: {} + podAntiAffinity: "" + podAntiAffinityTopologyKey: kubernetes.io/hostname + affinity: {} + remoteRead: [] + additionalRemoteRead: [] + remoteWrite: [] + additionalRemoteWrite: [] + remoteWriteDashboards: false + resources: {} storageSpec: volumeClaimTemplate: spec: - # storageClassName: gluster + # storageClassName: gluster accessModes: ["ReadWriteOnce"] resources: requests: storage: 50Gi - + ## Using PersistentVolumeClaim + ## + # volumeClaimTemplate: + # spec: + # storageClassName: gluster + # accessModes: ["ReadWriteOnce"] + # resources: + # requests: + # storage: 50Gi + # selector: {} + volumes: [] + volumeMounts: [] additionalScrapeConfigs: - # ## Discover and monitor PD instances - # - job_name: 'pd-statsd-exporter' - # kubernetes_sd_configs: - # - role: endpoints - # relabel_configs: - # - source_labels: [__meta_kubernetes_endpoint_port_name, __meta_kubernetes_service_name] - # action: keep - # regex: metrics;pingdirectory - # - source_labels: [__meta_kubernetes_pod_name] - # action: replace - # target_label: instance - # - source_labels: [__meta_kubernetes_namespace] - # action: replace - # target_label: namespace - - # - job_name: 'jmeter' - # scrape_interval: 5s - # kubernetes_sd_configs: - # - role: endpoints - # relabel_configs: - # - source_labels: [__meta_kubernetes_endpoint_port_name, __meta_kubernetes_service_name] - # action: keep - # regex: metrics;jmeter - # - source_labels: [__meta_kubernetes_pod_name] - # action: replace - # target_label: instance - # - source_labels: [__meta_kubernetes_namespace] - # action: replace - # target_label: namespace - - ## Discover and monitor Ping Telegraf instances. - - job_name: 'telegraf' - scrape_interval: 5s - kubernetes_sd_configs: - - role: pod - relabel_configs: - - source_labels: [__meta_kubernetes_pod_container_name] - action: keep - regex: telegraf - - source_labels: [__meta_kubernetes_pod_name] - action: replace - target_label: instance - - source_labels: [__meta_kubernetes_namespace] - action: replace - target_label: namespace - - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] - action: keep - regex: true - - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] - action: replace - target_label: __metrics_path__ - regex: (.+) - - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] - action: replace - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: $1:$2 - target_label: __address__ + - job_name: "telegraf" + scrape_interval: 5s + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: [__meta_kubernetes_pod_container_name] + action: keep + regex: telegraf + - source_labels: [__meta_kubernetes_pod_name] + action: replace + target_label: instance + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: namespace + - source_labels: + [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: + [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] + action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + target_label: __address__ + + additionalScrapeConfigsSecret: {} + additionalPrometheusSecretsAnnotations: {} + additionalAlertManagerConfigs: [] + additionalAlertManagerConfigsSecret: {} + additionalAlertRelabelConfigs: [] + additionalAlertRelabelConfigsSecret: {} + securityContext: + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + fsGroup: 2000 + seccompProfile: + type: RuntimeDefault + priorityClassName: "" + thanos: {} + containers: [] + initContainers: [] + portName: "http-web" + arbitraryFSAccessThroughSMs: false + overrideHonorLabels: false + overrideHonorTimestamps: false + ignoreNamespaceSelectors: false + enforcedNamespaceLabel: "" + prometheusRulesExcludedFromEnforce: [] + excludedFromEnforcement: [] + queryLogFile: false + sampleLimit: false + enforcedKeepDroppedTargets: 0 + enforcedSampleLimit: false + enforcedTargetLimit: false + enforcedLabelLimit: false + enforcedLabelNameLengthLimit: false + enforcedLabelValueLengthLimit: false + allowOverlappingBlocks: false + minReadySeconds: 0 + hostNetwork: false + hostAliases: [] + tracingConfig: {} + additionalConfig: {} + additionalConfigString: "" + maximumStartupDurationSeconds: 0 + additionalRulesForClusterRole: [] + additionalServiceMonitors: [] + additionalPodMonitors: [] +thanosRuler: + enabled: false + annotations: {} + serviceAccount: + create: true + name: "" + annotations: {} + podDisruptionBudget: + enabled: false + minAvailable: 1 + maxUnavailable: "" + ingress: + enabled: false + annotations: {} + labels: {} + hosts: [] + paths: [] + tls: [] + service: + annotations: {} + labels: {} + clusterIP: "" + port: 10902 + targetPort: 10902 + nodePort: 30905 + additionalPorts: [] + externalIPs: [] + loadBalancerIP: "" + loadBalancerSourceRanges: [] + externalTrafficPolicy: Cluster + type: ClusterIP + serviceMonitor: + selfMonitor: true + interval: "" + additionalLabels: {} + sampleLimit: 0 + targetLimit: 0 + labelLimit: 0 + labelNameLengthLimit: 0 + labelValueLengthLimit: 0 + proxyUrl: "" + scheme: "" + tlsConfig: {} + bearerTokenFile: + metricRelabelings: [] + relabelings: [] + additionalEndpoints: [] + thanosRulerSpec: + podMetadata: {} + image: + registry: quay.io + repository: thanos/thanos + tag: v0.34.1 + sha: "" + ruleNamespaceSelector: {} + ruleSelectorNilUsesHelmValues: true + ruleSelector: {} + logFormat: logfmt + logLevel: info + replicas: 1 + retention: 24h + evaluationInterval: "" + storage: {} + alertmanagersConfig: + existingSecret: {} + secret: {} + externalPrefix: + routePrefix: / + objectStorageConfig: + existingSecret: {} + secret: {} + queryEndpoints: [] + queryConfig: + existingSecret: {} + secret: {} + labels: {} + paused: false + additionalArgs: [] + nodeSelector: {} + resources: {} + podAntiAffinity: "" + podAntiAffinityTopologyKey: kubernetes.io/hostname + affinity: {} + tolerations: [] + topologySpreadConstraints: [] + securityContext: + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + fsGroup: 2000 + seccompProfile: + type: RuntimeDefault + listenLocal: false + containers: [] + volumes: [] + volumeMounts: [] + initContainers: [] + priorityClassName: "" + portName: "web" + extraSecret: + annotations: {} + data: {} +cleanPrometheusOperatorObjectNames: false +extraManifests: [] diff --git a/30-helm/cluster-metrics/02-telegraf-values.yaml b/30-helm/cluster-metrics/02-telegraf-values.yaml index 77949c7cb..69e4af353 100644 --- a/30-helm/cluster-metrics/02-telegraf-values.yaml +++ b/30-helm/cluster-metrics/02-telegraf-values.yaml @@ -1,11 +1,12 @@ ## Deployed with: -## helm upgrade --install telegraf influxdata/telegraf-operator -f /Users/samirgandhi/projects/cluster-metrics-stack/telegraf/values.yaml -n metrics --version 1.3.3 +## helm upgrade --install telegraf influxdata/telegraf-operator -f /Users/samirgandhi/projects/cluster-metrics-stack/telegraf/values.yaml -n metrics --version 1.3.11 -replicaCount: 3 +# For demonstration only; default is 3 replicas +replicaCount: 1 image: repository: quay.io/influxdb/telegraf-operator pullPolicy: IfNotPresent - sidecarImage: "docker.io/library/telegraf:1.18.0-alpine" + sidecarImage: "docker.io/library/telegraf:1.30.0-alpine" classes: secretName: "telegraf-operator-classes" @@ -26,22 +27,7 @@ classes: path = "/metrics" expiration_interval = "30d" # 60s collectors_exclude = ["gocollector", "process"] - # dynatrace: | - # [[outputs.dynatrace]] - # ## For usage with the Dynatrace OneAgent you can omit any configuration, - # ## the only requirement is that the OneAgent is running on the same host. - # ## Only setup environment url and token if you want to monitor a Host without the OneAgent present. - # ## - # ## Your Dynatrace environment URL. - # ## For Dynatrace OneAgent you can leave this empty or set it to "http://127.0.0.1:14499/metrics/ingest" (default) - # ## For Dynatrace SaaS environments the URL scheme is "https://{your-environment-id}.live.dynatrace.com/api/v2/metrics/ingest" - # ## For Dynatrace Managed environments the URL scheme is "https://{your-domain}/e/{your-environment-id}/api/v2/metrics/ingest" - # url = "https://{your-environment-id}.live.dynatrace.com/api/v2/metrics/ingest" - # ## prefix = "ping-telegraf." - # ## Your Dynatrace API token. - # ## Create an API token within your Dynatrace environment, by navigating to Settings > Integration > Dynatrace API - # ## The API token needs data ingest scope permission. When using OneAgent, no API token is required. - # api_token = "{your.api.token}" + certManager: enable: false @@ -49,17 +35,10 @@ imagePullSecrets: [] nameOverride: "" fullnameOverride: "" serviceAccount: - # Annotations to add to the service account annotations: {} podSecurityContext: {} - # fsGroup: 2000 securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 + resources: limits: cpu: 200m @@ -67,7 +46,18 @@ resources: requests: cpu: 50m memory: 64Mi +sidecarResources: + limits: + cpu: 200m + memory: 200Mi + requests: + cpu: 10m + memory: 10Mi nodeSelector: {} tolerations: [] affinity: {} requireAnnotationsForSecret: false +enableDefaultInternalPlugin: true +# allow hot reload ; disabled by default to support versions of telegraf +# that do not support hot-reload and --watch-config flag +hotReload: false diff --git a/30-helm/cluster-metrics/04-ping-overview-dashboard.json b/30-helm/cluster-metrics/04-ping-overview-dashboard.json index 2c18d3423..4a0a0dee8 100644 --- a/30-helm/cluster-metrics/04-ping-overview-dashboard.json +++ b/30-helm/cluster-metrics/04-ping-overview-dashboard.json @@ -3,7 +3,9 @@ "list": [ { "builtIn": 1, - "datasource": "$data_source", + "datasource": { + "uid": "$data_source" + }, "enable": false, "hide": false, "iconColor": "rgba(0, 211, 255, 1)", @@ -16,7 +18,10 @@ }, { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -34,12 +39,16 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "iteration": 1644862437288, + "id": 32, "links": [], "liveNow": false, "panels": [ { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "gridPos": { "h": 1, "w": 24, @@ -48,10 +57,23 @@ }, "id": 67, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "refId": "A" + } + ], "title": "Summary", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -59,7 +81,10 @@ }, "custom": { "align": "auto", - "displayMode": "auto" + "cellOptions": { + "type": "auto" + }, + "inspect": false }, "mappings": [ { @@ -99,8 +124,10 @@ "value": 269 }, { - "id": "custom.displayMode", - "value": "color-text" + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } }, { "id": "color", @@ -129,8 +156,10 @@ } }, { - "id": "custom.displayMode", - "value": "color-text" + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } } ] }, @@ -155,10 +184,11 @@ "y": 1 }, "id": 134, - "links": [], "maxDataPoints": 100, "options": { + "cellHeight": "sm", "footer": { + "countRows": false, "fields": "", "reducer": [ "sum" @@ -168,12 +198,12 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.3.3", + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "pingfederate_heartbeat_total_transactions{namespace=\"$namespace\"}", @@ -187,7 +217,7 @@ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "pingfederate_heartbeat_total_failed_transactions{namespace=\"$namespace\"}", @@ -201,7 +231,7 @@ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "pingfederate_heartbeat_number_of_cpus{namespace=\"$namespace\"}", @@ -215,7 +245,7 @@ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "pingfederate_heartbeat_total_jvm_memory{namespace=\"$namespace\"}", @@ -279,6 +309,10 @@ "type": "table" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -302,6 +336,10 @@ "id": 154, "options": { "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -311,17 +349,27 @@ "values": false }, "showUnfilled": true, - "text": {} + "sizing": "auto", + "text": {}, + "valueMode": "color" }, - "pluginVersion": "8.3.3", + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_bind_op_total_count{namespace=\"$namespace\"})", "interval": "", "legendFormat": "Bind", "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_search_op_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -329,6 +377,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_add_op_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -336,6 +388,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_modify_op_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -343,6 +399,10 @@ "refId": "D" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_compare_op_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -350,6 +410,10 @@ "refId": "E" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_delete_op_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -357,6 +421,10 @@ "refId": "F" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_extended_op_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -368,6 +436,10 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -393,6 +465,10 @@ "id": 155, "options": { "displayMode": "lcd", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -402,17 +478,27 @@ "values": false }, "showUnfilled": true, - "text": {} + "sizing": "auto", + "text": {}, + "valueMode": "color" }, - "pluginVersion": "8.3.3", + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_bind_op_total_count{namespace=\"$namespace\"}) /sum(pingdirectory_monitor_all_ops_total_count{namespace=\"$namespace\"})", "interval": "", "legendFormat": "Bind", "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_search_op_total_count{namespace=\"$namespace\"})/sum(pingdirectory_monitor_all_ops_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -420,6 +506,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_add_op_total_count{namespace=\"$namespace\"})/sum(pingdirectory_monitor_all_ops_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -427,6 +517,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_modify_op_total_count{namespace=\"$namespace\"})/sum(pingdirectory_monitor_all_ops_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -434,6 +528,10 @@ "refId": "D" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_compare_op_total_count{namespace=\"$namespace\"})/sum(pingdirectory_monitor_all_ops_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -441,6 +539,10 @@ "refId": "E" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_delete_op_total_count{namespace=\"$namespace\"})/sum(pingdirectory_monitor_all_ops_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -448,6 +550,10 @@ "refId": "F" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingdirectory_monitor_extended_op_1_3_6_1_4_1_30221_1_6_1_total_count{namespace=\"$namespace\"})/sum(pingdirectory_monitor_all_ops_total_count{namespace=\"$namespace\"})", "hide": false, "interval": "", @@ -459,57 +565,93 @@ "type": "bargauge" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 9, "x": 0, "y": 12 }, - "hiddenSeries": false, "id": 148, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [ + "mean" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "rate(pingfederate_heartbeat_total_transactions{namespace=\"$namespace\"}[30s])", @@ -521,419 +663,481 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Logins Per Second - Server (p)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 8, "x": 9, "y": 12 }, - "hiddenSeries": false, "id": 141, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingfederate_heartbeat_response_time_statistics_90_percentile{namespace=\"$namespace\"}) by (instance)", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Response Time 90th% - Server (p)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 7, "x": 17, "y": 12 }, - "hiddenSeries": false, "id": 127, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [ + "mean", + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingfederate_heartbeat_cpu_load{namespace=\"$namespace\"})by (instance)", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF CPU Load by Server - Server (p)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "fill": 1, - "fillGradient": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 21 }, - "hiddenSeries": false, "id": 151, - "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": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum by (operation) (throughput{namespace=\"$namespace\"})", "interval": "", "legendFormat": "{{operation}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PD Throughput by Operation - Server (p)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:5509", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:5510", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 21 + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - "hiddenSeries": false, - "id": 152, - "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": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (operation) (response_time{namespace=\"$namespace\"})", - "interval": "", - "legendFormat": "{{operation}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "PD Avg Response Time by Operation - Server (p)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 21 + }, + "id": 152, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", + "targets": [ { - "format": "short", - "logBase": 1, - "show": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum by (operation) (response_time{namespace=\"$namespace\"})", + "interval": "", + "legendFormat": "{{operation}}", + "refId": "A" } ], - "yaxis": { - "align": false - } + "title": "PD Avg Response Time by Operation - Server (p)", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, "unit": "percent" }, "overrides": [] }, - "fill": 2, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 27 }, - "hiddenSeries": false, "id": 92, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", + "pluginVersion": "10.4.0", "repeatDirection": "h", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "round(\n 100 *\n sum(\n rate(container_cpu_usage_seconds_total{image!=\"\", container=~\"$server\",namespace=\"$namespace\"}[5m])\n ) by (pod,container)\n /\n sum(\n container_spec_cpu_quota{image!=\"\", container=~\"$server\",namespace=\"$namespace\"} / container_spec_cpu_period{image!=\"\", container=~\"$server\",namespace=\"$namespace\"}\n ) by (pod,container)\n)", @@ -943,91 +1147,96 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "CPU usage % of Limit - Server (k)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:1467", - "format": "percent", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:1468", - "format": "short", - "label": "", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, "unit": "percent" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 27 }, - "hiddenSeries": false, "id": 93, "interval": "", - "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": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "round(\n 100 *\n sum(container_memory_working_set_bytes{container=~\"$server\", namespace=\"$namespace\", image!=\"\"}) by (container, pod, namespace)\n /\n sum(container_spec_memory_limit_bytes{namespace=\"$namespace\"} > 0) by (container, pod, namespace)\n)", @@ -1038,89 +1247,95 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Memory Used (%) - Server (k)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:6592", - "format": "percent", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:6593", - "format": "short", - "label": "", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 34 }, - "hiddenSeries": false, "id": 98, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "sum(rate(container_network_transmit_bytes_total{namespace=\"$namespace\",pod!=\"\"}[1m])) by (pod)", @@ -1130,86 +1345,95 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Network io bytes out - Server/client (k)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 34 }, - "hiddenSeries": false, "id": 45, - "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": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "sum(rate(container_network_receive_bytes_total{namespace=\"$namespace\",pod=~\"$server.*\"}[1m])) by (pod)", @@ -1222,7 +1446,7 @@ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "sum(rate(container_network_receive_bytes_total{namespace=\"$namespace\",pod=~\"$server.*\"}[1m])) by (pod)", @@ -1233,38 +1457,15 @@ "refId": "B" } ], - "thresholds": [], - "timeRegions": [], "title": "Network io bytes in - Server (k)", - "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 - } + "type": "timeseries" }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "gridPos": { "h": 1, "w": 24, @@ -1273,10 +1474,23 @@ }, "id": 65, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "refId": "A" + } + ], "title": "Resource Utilization", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -1317,7 +1531,6 @@ "y": 42 }, "id": 144, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", @@ -1331,14 +1544,16 @@ "fields": "/^Value$/", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.3.3", + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "pingfederate_heartbeat_session_state_attribute_map_size{namespace=\"$namespace\"}", @@ -1352,7 +1567,7 @@ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "avg(pingfederate_heartbeat_session_state_attribute_map_size{namespace=\"$namespace\"})", @@ -1368,6 +1583,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -1408,7 +1627,6 @@ "y": 42 }, "id": 145, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", @@ -1422,14 +1640,16 @@ "fields": "/^Value$/", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.3.3", + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "avg(pingfederate_heartbeat_sp_session_registry_session_map_size{namespace=\"$namespace\"})", @@ -1445,6 +1665,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -1485,7 +1709,6 @@ "y": 42 }, "id": 146, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", @@ -1499,14 +1722,16 @@ "fields": "/^Value$/", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.3.3", + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "avg(pingfederate_heartbeat_sp_session_registry_session_map_size{namespace=\"$namespace\"})", @@ -1522,6 +1747,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -1562,7 +1791,6 @@ "y": 42 }, "id": 133, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", @@ -1576,14 +1804,16 @@ "fields": "/^Value$/", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.3.3", + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "sum(pingfederate_heartbeat_total_physical_system_memory{namespace=\"$namespace\"}/1073741824)", @@ -1599,56 +1829,92 @@ "type": "stat" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 45 }, - "hiddenSeries": false, "id": 38, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", + "pluginVersion": "10.4.0", "repeatDirection": "h", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "sum(rate(container_cpu_usage_seconds_total{container_name=~\"$server\",namespace=\"$namespace\"}[$range_interval])) by (pod_name) ", @@ -1660,7 +1926,7 @@ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "sum(kube_pod_container_resource_requests{container_name=~\"$server\",namespace=\"$namespace\"}) by (pod)", @@ -1672,7 +1938,7 @@ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": true, "expr": "kube_pod_container_resource_requests", @@ -1682,477 +1948,500 @@ "refId": "C" } ], - "thresholds": [], - "timeRegions": [], "title": "CPU - # of cores - Server (k)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, - "decimals": 1, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 45 }, - "hiddenSeries": false, "id": 131, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [ + "mean", + "lastNotNull" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "(pingfederate_heartbeat_used_jvm_memory{namespace=\"$namespace\"})/(pingfederate_heartbeat_total_jvm_memory{namespace=\"$namespace\"})", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Used JVM Memory % - Server (p)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "gbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 53 }, - "hiddenSeries": false, "id": 35, "interval": "", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "(sum(container_memory_working_set_bytes{container_name=~\"$server\",namespace=\"$namespace\"}) by (pod_name))/1073741824", "instant": false, "legendFormat": "{{pod_name}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Memory Used (GiB) - Server (k)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "gbytes", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 53 }, - "hiddenSeries": false, "id": 91, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", + "pluginVersion": "10.4.0", "repeatDirection": "h", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(container_cpu_usage_seconds_total{pod!~\"ping.*\",namespace=\"$namespace\"}[$range_interval])) by (pod_name) ", "legendFormat": "{{pod_name}}", "refId": "B" } ], - "thresholds": [], - "timeRegions": [], "title": "CPU - # of cores - Client (k)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decgbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 59 }, - "hiddenSeries": false, "id": 128, - "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": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pingfederate_heartbeat_free_jvm_memory{namespace=\"$namespace\"}/1073741824", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Free JVM Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decgbytes", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "gbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 59 }, - "hiddenSeries": false, "id": 99, "interval": "", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "(sum(container_memory_working_set_bytes{pod_name!~\"ping.*\",namespace=\"$namespace\"}) by (pod_name))/1073741824", "instant": false, "legendFormat": "{{pod_name}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Memory Used (GiB) - Client (k)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "gbytes", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "gridPos": { "h": 1, "w": 24, @@ -2161,101 +2450,119 @@ }, "id": 63, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "refId": "A" + } + ], "title": "Throughput", "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 67 }, - "hiddenSeries": false, "id": 138, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingfederate_heartbeat_response_concurrency_statistics_90_percentile{namespace=\"$namespace\"}) by (instance)", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Response Concurrency 90th% - Server (p)", - "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 - } + "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -2300,7 +2607,6 @@ "y": 67 }, "id": 137, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", @@ -2314,14 +2620,16 @@ "fields": "/^Value$/", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.3.3", + "pluginVersion": "10.4.0", "targets": [ { "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "exemplar": false, "expr": "avg(pingfederate_heartbeat_response_statistics_window_seconds{namespace=\"$namespace\"})", @@ -2333,61 +2641,96 @@ "refId": "A" } ], - "title": "PF Statisticss Window - Server (p)", + "title": "PF Heartbeat Response (secs) - Server (p)", "type": "stat" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 6, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 1, "gridPos": { "h": 4, "w": 12, "x": 12, "y": 67 }, - "hiddenSeries": false, "id": 147, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": true, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingfederate_heartbeat_response_statistics_count{namespace=\"$namespace\"}) by (instance)", "format": "time_series", "hide": false, @@ -2396,453 +2739,482 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Responses in Window Count - Server (p)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 8, "y": 71 }, - "hiddenSeries": false, "id": 142, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingfederate_heartbeat_response_time_statistics_min{namespace=\"$namespace\"}) by (instance)", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Response Time Min - Server (p)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 16, "y": 71 }, - "hiddenSeries": false, "id": 143, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingfederate_heartbeat_response_time_statistics_max{namespace=\"$namespace\"}) by (instance)", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Response Time Max - Server (p)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 75 }, - "hiddenSeries": false, "id": 140, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingfederate_heartbeat_response_concurrency_statistics_max{namespace=\"$namespace\"}) by (instance)", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Response Concurrency Max - Server (p)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 8, "y": 79 }, - "hiddenSeries": false, "id": 139, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pingfederate_heartbeat_response_concurrency_statistics_min{namespace=\"$namespace\"}) by (instance)", "hide": false, "legendFormat": "{{instance}}", "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Response Concurrency Min - Server (p)", - "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 - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", - "uid": "PBFA97CFB590B2093" + "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 83 }, - "hiddenSeries": false, "id": 149, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.3.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [ + "mean" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "10.4.0", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(pingfederate_heartbeat_total_failed_transactions{namespace=\"$namespace\"}[30s])", "format": "time_series", "hide": false, @@ -2851,48 +3223,24 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "PF Errors Per Second - Server (p)", - "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 - } + "type": "timeseries" } ], "refresh": "5s", - "schemaVersion": 34, - "style": "dark", + "schemaVersion": 39, "tags": [], "templating": { "list": [ { "current": { "selected": false, - "text": "default", - "value": "default" + "text": "pinghelm", + "value": "pinghelm" + }, + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, "definition": "label_values(kube_pod_info, namespace)", "hide": 0, @@ -2943,7 +3291,7 @@ }, { "current": { - "selected": false, + "selected": true, "text": ".*ping.*", "value": ".*ping.*" }, @@ -2990,6 +3338,6 @@ "timezone": "", "title": "Ping Identity Overview", "uid": "jwnUYpuGk", - "version": 1, + "version": 2, "weekStart": "" } \ No newline at end of file diff --git a/30-helm/pingfederate-cluster.yaml b/30-helm/pingfederate-cluster.yaml index adf1bbd8b..4fd0f71b8 100644 --- a/30-helm/pingfederate-cluster.yaml +++ b/30-helm/pingfederate-cluster.yaml @@ -18,4 +18,4 @@ pingfederate-engine: enabled: true envs: SERVER_PROFILE_URL: https://github.com/pingidentity/pingidentity-server-profiles.git - SERVER_PROFILE_PATH: getting-started/pingfederate \ No newline at end of file + SERVER_PROFILE_PATH: getting-started/pingfederate diff --git a/docs/deployment/deployK8sClusterMetrics.md b/docs/deployment/deployK8sClusterMetrics.md index b482d18ef..7bfc7c646 100644 --- a/docs/deployment/deployK8sClusterMetrics.md +++ b/docs/deployment/deployK8sClusterMetrics.md @@ -6,64 +6,76 @@ title: Deploy a Kubernetes Cluster Metrics Stack ![](../images/cluster-metrics-stack.png) -This document covers deploying and using a sample open-source monitoring stack in a Kubernetes cluster. The resulting environment should not be considered production-ready. It is meant to show how quickly Ping DevOps software can produce metrics for consumption by a popular open-source monitoring system. This example metrics stack is not maintained or directly supported by Ping. +This document demonstrates the process of deploying and using a sample open-source monitoring stack in a Kubernetes cluster. + +!!! warning "Not For Production" + The resulting environment is not production-ready. It is only intended to show how Ping software can produce metrics for consumption by a popular open-source monitoring system. This example stack is not maintained or directly supported by Ping. !!! error "Kubernetes version notice" The *Prometheus operator* used for this example is incompatible with Kubernetes v1.25 or later due to the removal of the deprecated [PodSecurityPolicy](https://kubernetes.io/docs/concepts/security/pod-security-policy/) object with that release. As of September 2022, the operator only supports up through Kubernetes v1.24. Until this is updated, your Kubernetes cluster must be V1.24 or lower to follow the example on this page. See the compatibility chart at the [Prometheus operator](https://github.com/prometheus-operator/kube-prometheus) repository for more information. + ## Stack Components **Open Source Tools** -- [kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) - _includes_: - - [Prometheus](https://prometheus.io/) - Metrics collection and storage. - - [Grafana](https://grafana.com/) - Metrics visualization in Dashboards. -- [telegraf-operator](https://github.com/influxdata/helm-charts/tree/master/charts/telegraf-operator) - Metrics exposure and formatting. +* [kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack), which includes: + * [Prometheus](https://prometheus.io/) - Metrics collection and storage + * [Grafana](https://grafana.com/) - Metrics visualization in Dashboards + * [telegraf-operator](https://github.com/influxdata/helm-charts/tree/master/charts/telegraf-operator) - Metrics exposure and formatting -**Grafana Dashboard** - JSON file to import for dashboard definition. +**Grafana Dashboard** - JSON file to import for dashboard definition -**ping-devops values.yaml** - values relevant only to exposing metrics for Ping Identity software. +**Ping-provided values.yaml** - Values relevant to exposing metrics for Ping Identity software ## Prerequisites -It is assumed you are familiar with the prerequisites for the base [Helm examples](https://devops.pingidentity.com/deployment/deployHelm/). Beyond that, any knowledge of Prometheus, Grafana, and Telegraf is helpful. +* Familiarity with the prerequisites for the base [Helm examples](https://devops.pingidentity.com/deployment/deployHelm/) +* Working knowledge of Prometheus, Grafana, and Telegraf ## Deploy the Stack -In the `pingidentity-devops-getting-started/30-helm/cluster-metrics directory` of this repository, edit the `01-prometheus-values.yaml` as needed. This file provides configurations beyond the default kube-prometheus-stack. In this sample deployment, the monitoring stack is granted read access to the entire cluster and is deployed into the `metrics` namespace. +In the `pingidentity-devops-getting-started/30-helm/cluster-metrics directory` of this repository, edit the `01-prometheus-values.yaml` as needed. This file provides configurations beyond the default kube-prometheus-stack. In this sample deployment, the monitoring stack is granted read access to the entire cluster and is deployed into the `metrics` namespace. -!!! error "Not for production use" - Changing these settings or making the deployment production-ready is beyond scope of this document. The full set of optional values can be found on the Github repository for the Prometheus chart. +!!! error "Preparing for production use" + Altering these settings or making the deployment production-ready is beyond scope of this document. The full set of optional values can be found on the Github repository for the Prometheus chart. There are numerous lines that have `##CHANGEME`. These lines should be considered for configuration options to meet your needs. -After updating the file, deploy the `kube-prometheus-stack`. The path to the configuration file assumes you are in the root folder of the local repository copy: +After updating the file, deploy the `kube-prometheus-stack`. The path to the configuration file assumes you are in the root folder of a local copy of the [Getting Started](https://github.com/pingidentity/pingidentity-devops-getting-started) repository: -``` +```sh kubectl create namespace metrics -helm upgrade --install metrics --repo https://prometheus-community.github.io/helm-charts kube-prometheus-stack -n metrics --version 30.0.1 -f 30-helm/cluster-metrics/01-prometheus-values.yaml +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts + +helm repo update + +helm upgrade --install metrics prometheus-community/kube-prometheus-stack -f 30-helm/cluster-metrics/01-prometheus-values.yaml -n metrics --version 57.2.0 ``` Deploy `telegraf-operator`: -``` -helm upgrade --install telegraf --repo https://helm.influxdata.com/ telegraf-operator -n metrics --version 1.3.3 -f 30-helm/cluster-metrics/02-telegraf-values.yaml + +```bash +helm repo add influxdata https://helm.influxdata.com/ + +helm upgrade --install telegraf influxdata/telegraf-operator -n metrics --version 1.3.11 -f 30-helm/cluster-metrics/02-telegraf-values.yaml ``` Telegraf operator makes it very easy to add monitoring sidecars to your deployments. All you need to do is add annotations, which are shown in `30-helm/cluster-metrics/03-ping-with-metrics-values.yaml` These values can be copied to your ping-devops `values.yaml` manually, or the file can be referenced at the end of your helm install command. For example: -``` +```bash helm upgrade --install ping-metrics pingidentity/ping-devops -f my-values.yaml -f 30-helm/cluster-metrics/03-ping-with-metrics-values.yaml ``` After the Ping software is healthy and producing metrics, there should be sidecars on Ping pods. -``` +```text NAME READY STATUS ping-metrics-pingaccess-admin-0 1/1 Running ping-metrics-pingaccess-engine-68464d8cc8-mhlsv 2/2 Running @@ -80,7 +92,7 @@ Note the `2/2` indicator for pods with sidecars. Browse to Grafana using the Ingress URL or by running a `kubectl port-forward` command. For example: `kubectl port-forward svc/metrics-grafana --namespace metrics 9000:80` In your browser, navigate to `http://localhost:9000` and log in with the user `admin` and the password set in `01-prometheus-values.yaml` -Finally, import the `04-ping-overview-dashboard.json` using the `+` button on the left of Grafana's home screen. +Finally, import the `04-ping-overview-dashboard.json` using the **New** button at the top right of the Dashboard landing page in Grafana. The `Ping Identity Overview` dashboard will have a dropdown for namespace at the top. Select the namespace running Ping products to see something similar to this example: @@ -90,9 +102,10 @@ Any of the panels can be edited, or new ones created to fit your needs. ## HorizontalPodAutoscaler -Provided that you use the `autoscaling/v2` API version, you can configure a HorizontalPodAutoscaler to scale based on a custom metric (that is not built in to Kubernetes or any Kubernetes component). +If you use the `autoscaling/v2` API version, you can configure a HorizontalPodAutoscaler to scale based on a custom metric not built in to Kubernetes or any Kubernetes component. If you are using our [Helm Charts](https://github.com/pingidentity/helm-charts), you can pass the custom metrics under `global.cluster.autoscalingMetricsTemplate`. The example code here will scale on a requests-per-second threshold of 10,000: -``` + +```yaml - type: Pods pods: metric: @@ -118,8 +131,9 @@ If you are using our [Helm Charts](https://github.com/pingidentity/helm-charts), value: 10k ``` -As well as the behaviors for scaling up and down under `global.cluster.autoscaling.behavior`. -``` +In addition, you can define the behaviors for scaling up and down under `global.cluster.autoscaling.behavior`. + +```yaml scaleDown: stabilizationWindowSeconds: 300 policies: @@ -139,5 +153,3 @@ As well as the behaviors for scaling up and down under `global.cluster.autoscali ``` For more information on custom HPA metrics please visit [Kubernetes](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#scaling-on-custom-metrics) - -