K8s operator metrics (#185)

* Add kube admin metrics

* Update chart version

* Variable verbosity level for adot collector
This commit is contained in:
Rodrigue Koffi
2023-06-29 14:52:41 +02:00
committed by GitHub
parent a7633d1548
commit 739b581988
6 changed files with 36 additions and 223 deletions
+1
View File
@@ -65,6 +65,7 @@ See examples using this Terraform modules in the **Amazon EKS** section of [this
| Name | Description | Type | Default | Required | | Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:| |------|-------------|------|---------|:--------:|
| <a name="input_adot_loglevel"></a> [adot\_loglevel](#input\_adot\_loglevel) | Verbosity level for ADOT collector logs | `string` | `"warn"` | no |
| <a name="input_custom_metrics_config"></a> [custom\_metrics\_config](#input\_custom\_metrics\_config) | Configuration object to enable custom metrics collection | <pre>object({<br> ports = list(number)<br> # paths = optional(list(string), ["/metrics"])<br> # list of samples to be dropped by label prefix, ex: go_ -> discards go_.*<br> dropped_series_prefixes = list(string)<br> })</pre> | <pre>{<br> "dropped_series_prefixes": [<br> "unspecified"<br> ],<br> "ports": []<br>}</pre> | no | | <a name="input_custom_metrics_config"></a> [custom\_metrics\_config](#input\_custom\_metrics\_config) | Configuration object to enable custom metrics collection | <pre>object({<br> ports = list(number)<br> # paths = optional(list(string), ["/metrics"])<br> # list of samples to be dropped by label prefix, ex: go_ -> discards go_.*<br> dropped_series_prefixes = list(string)<br> })</pre> | <pre>{<br> "dropped_series_prefixes": [<br> "unspecified"<br> ],<br> "ports": []<br>}</pre> | no |
| <a name="input_eks_cluster_id"></a> [eks\_cluster\_id](#input\_eks\_cluster\_id) | EKS Cluster Id | `string` | n/a | yes | | <a name="input_eks_cluster_id"></a> [eks\_cluster\_id](#input\_eks\_cluster\_id) | EKS Cluster Id | `string` | n/a | yes |
| <a name="input_enable_alerting_rules"></a> [enable\_alerting\_rules](#input\_enable\_alerting\_rules) | Enables or disables Managed Prometheus alerting rules | `bool` | `true` | no | | <a name="input_enable_alerting_rules"></a> [enable\_alerting\_rules](#input\_enable\_alerting\_rules) | Enables or disables Managed Prometheus alerting rules | `bool` | `true` | no |
+4
View File
@@ -105,6 +105,10 @@ module "helm_addon" {
name = "globalScrapeTimeout" name = "globalScrapeTimeout"
value = var.prometheus_config.global_scrape_timeout value = var.prometheus_config.global_scrape_timeout
}, },
{
name = "adotLoglevel"
value = var.adot_loglevel
},
{ {
name = "accountId" name = "accountId"
value = local.context.aws_caller_identity_account_id value = local.context.aws_caller_identity_account_id
@@ -2,5 +2,5 @@ apiVersion: v2
name: opentelemetry name: opentelemetry
description: A Helm chart to install otel operator description: A Helm chart to install otel operator
type: application type: application
version: 0.5.0 version: 0.6.0
appVersion: 0.5.0 appVersion: 0.6.0
@@ -83,6 +83,26 @@ spec:
regex: $K8S_NODE_NAME regex: $K8S_NODE_NAME
source_labels: [__meta_kubernetes_node_name] source_labels: [__meta_kubernetes_node_name]
{{ end }} {{ end }}
- job_name: 'kube-admin'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- target_label: __address__
replacement: kubernetes.default.svc.cluster.local:443
{{ if .Values.enableTracing }}
- action: keep
regex: $K8S_NODE_NAME
source_labels: [__meta_kubernetes_node_name]
{{ end }}
metric_relabel_configs:
- action: keep
source_labels: [__name__]
regex: 'apiserver_(request_duration_seconds|storage_list_duration_seconds|admission_controller_admission_duration_seconds|flowcontrol_request_wait_duration_seconds).*|apiserver_(admission_webhook_fail_open_count|tls_handshake_errors_total|request_total)|rest_client_request_duration_seconds.*|rest_client_requests_total|etcd_(request_duration_seconds|db_total_size_in_bytes).*'
- job_name: serviceMonitor/default/kube-prometheus-stack-prometheus-node-exporter/0 - job_name: serviceMonitor/default/kube-prometheus-stack-prometheus-node-exporter/0
honor_timestamps: true honor_timestamps: true
scrape_interval: {{ .Values.globalScrapeInterval }} scrape_interval: {{ .Values.globalScrapeInterval }}
@@ -1100,117 +1120,6 @@ spec:
own_namespace: false own_namespace: false
names: names:
- kube-system - kube-system
- job_name: serviceMonitor/default/kube-prometheus-stack-kube-etcd/0
honor_timestamps: true
scrape_interval: {{ .Values.globalScrapeInterval }}
scrape_timeout: {{ .Values.globalScrapeTimeout }}
scheme: http
authorization:
type: Bearer
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
follow_redirects: true
enable_http2: true
relabel_configs:
- source_labels: [job]
separator: ;
regex: (.*)
target_label: __tmp_prometheus_job_name
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_service_label_app, __meta_kubernetes_service_labelpresent_app]
separator: ;
regex: (kube-prometheus-stack-kube-etcd);true
replacement: $$1
action: keep
- source_labels: [__meta_kubernetes_service_label_release, __meta_kubernetes_service_labelpresent_release]
separator: ;
regex: (kube-prometheus-stack);true
replacement: $$1
action: keep
- source_labels: [__meta_kubernetes_endpoint_port_name]
separator: ;
regex: http-metrics
replacement: $$1
action: keep
- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: Node;(.*)
target_label: node
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: Pod;(.*)
target_label: pod
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_namespace]
separator: ;
regex: (.*)
target_label: namespace
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_service_name]
separator: ;
regex: (.*)
target_label: service
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_pod_name]
separator: ;
regex: (.*)
target_label: pod
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_pod_container_name]
separator: ;
regex: (.*)
target_label: container
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_service_name]
separator: ;
regex: (.*)
target_label: job
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_service_label_jobLabel]
separator: ;
regex: (.+)
target_label: job
replacement: $$1
action: replace
- separator: ;
regex: (.*)
target_label: endpoint
replacement: http-metrics
action: replace
- source_labels: [__address__]
separator: ;
regex: (.*)
modulus: 1
target_label: __tmp_hash
replacement: $$1
action: hashmod
- source_labels: [__tmp_hash]
separator: ;
regex: "0"
replacement: $$1
action: keep
{{ if .Values.enableTracing }}
- action: keep
regex: $K8S_NODE_NAME
source_labels: [__meta_kubernetes_endpoint_node_name]
{{ end }}
kubernetes_sd_configs:
- role: endpoints
kubeconfig_file: ""
follow_redirects: true
enable_http2: true
namespaces:
own_namespace: false
names:
- kube-system
- job_name: serviceMonitor/default/kube-prometheus-stack-kube-controller-manager/0 - job_name: serviceMonitor/default/kube-prometheus-stack-kube-controller-manager/0
honor_timestamps: true honor_timestamps: true
scrape_interval: {{ .Values.globalScrapeInterval }} scrape_interval: {{ .Values.globalScrapeInterval }}
@@ -1431,115 +1340,6 @@ spec:
own_namespace: false own_namespace: false
names: names:
- kube-system - kube-system
- job_name: serviceMonitor/default/kube-prometheus-stack-apiserver/0
honor_timestamps: true
scrape_interval: {{ .Values.globalScrapeInterval }}
scrape_timeout: {{ .Values.globalScrapeTimeout }}
scheme: https
authorization:
type: Bearer
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
server_name: kubernetes
follow_redirects: true
enable_http2: true
relabel_configs:
- source_labels: [job]
separator: ;
regex: (.*)
target_label: __tmp_prometheus_job_name
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_service_label_component, __meta_kubernetes_service_labelpresent_component]
separator: ;
regex: (kubernetes);true
replacement: $$1
action: keep
- source_labels: [__meta_kubernetes_endpoint_port_name]
separator: ;
regex: https
replacement: $$1
action: keep
- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: Node;(.*)
target_label: node
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]
separator: ;
regex: Pod;(.*)
target_label: pod
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_namespace]
separator: ;
regex: (.*)
target_label: namespace
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_service_name]
separator: ;
regex: (.*)
target_label: service
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_pod_name]
separator: ;
regex: (.*)
target_label: pod
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_pod_container_name]
separator: ;
regex: (.*)
target_label: container
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_service_name]
separator: ;
regex: (.*)
target_label: job
replacement: $$1
action: replace
- source_labels: [__meta_kubernetes_service_label_component]
separator: ;
regex: (.+)
target_label: job
replacement: $$1
action: replace
- separator: ;
regex: (.*)
target_label: endpoint
replacement: https
action: replace
- source_labels: [__address__]
separator: ;
regex: (.*)
modulus: 1
target_label: __tmp_hash
replacement: $$1
action: hashmod
- source_labels: [__tmp_hash]
separator: ;
regex: "0"
replacement: $$1
action: keep
{{ if .Values.enableTracing }}
- action: keep
regex: $K8S_NODE_NAME
source_labels: [__meta_kubernetes_endpoint_node_name]
{{ end }}
kubernetes_sd_configs:
- role: endpoints
kubeconfig_file: ""
follow_redirects: true
enable_http2: true
namespaces:
own_namespace: false
names:
- default
- job_name: serviceMonitor/default/kube-prometheus-stack-alertmanager/0 - job_name: serviceMonitor/default/kube-prometheus-stack-alertmanager/0
honor_timestamps: true honor_timestamps: true
scrape_interval: {{ .Values.globalScrapeInterval }} scrape_interval: {{ .Values.globalScrapeInterval }}
@@ -1776,7 +1576,7 @@ spec:
resource_to_telemetry_conversion: resource_to_telemetry_conversion:
enabled: true enabled: true
logging: logging:
loglevel: warn loglevel: {{ .Values.adotLoglevel }}
extensions: extensions:
sigv4auth: sigv4auth:
region: {{ .Values.region }} region: {{ .Values.region }}
@@ -23,3 +23,5 @@ javaPrometheusMetricsEndpoint: ${java_prometheus_metrics_endpoint}
enableNginx: ${enable_nginx} enableNginx: ${enable_nginx}
nginxScrapeSampleLimit: ${nginx_scrape_sample_limit} nginxScrapeSampleLimit: ${nginx_scrape_sample_limit}
nginxPrometheusMetricsEndpoint: ${nginx_prometheus_metrics_endpoint} nginxPrometheusMetricsEndpoint: ${nginx_prometheus_metrics_endpoint}
adotLoglevel: ${adot_loglevel}
+6
View File
@@ -33,6 +33,12 @@ variable "irsa_iam_permissions_boundary" {
default = null default = null
} }
variable "adot_loglevel" {
description = "Verbosity level for ADOT collector logs"
type = string
default = "warn"
}
variable "managed_prometheus_workspace_endpoint" { variable "managed_prometheus_workspace_endpoint" {
description = "Amazon Managed Prometheus Workspace Endpoint" description = "Amazon Managed Prometheus Workspace Endpoint"
type = string type = string