200 lines
6.6 KiB
YAML
200 lines
6.6 KiB
YAML
alloy:
|
|
clustering:
|
|
enabled: true
|
|
configMap:
|
|
content: |-
|
|
logging {
|
|
level = "info"
|
|
format = "logfmt"
|
|
}
|
|
|
|
discovery.kubernetes "pods" {
|
|
role = "pod"
|
|
}
|
|
discovery.kubernetes "nodes" {
|
|
role = "node"
|
|
}
|
|
|
|
discovery.relabel "pods" {
|
|
targets = discovery.kubernetes.pods.targets
|
|
|
|
rule {
|
|
source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_label_app_kubernetes_io_name", "__meta_kubernetes_pod_container_name"]
|
|
separator = "/"
|
|
target_label = "deployment_name"
|
|
action = "replace"
|
|
}
|
|
}
|
|
loki.source.kubernetes "pods" {
|
|
targets = discovery.relabel.pods.output
|
|
forward_to = [loki.process.process.receiver]
|
|
}
|
|
loki.process "process" {
|
|
forward_to = [loki.write.loki.receiver]
|
|
|
|
stage.drop {
|
|
older_than = "1h"
|
|
drop_counter_reason = "too old"
|
|
}
|
|
stage.match {
|
|
selector = "{instance=~\".*\"}"
|
|
stage.json {
|
|
expressions = {
|
|
level = "\"level\"",
|
|
}
|
|
}
|
|
stage.labels {
|
|
values = {
|
|
level = "level",
|
|
}
|
|
}
|
|
}
|
|
stage.label_drop {
|
|
values = [ "job", "service_name" ]
|
|
}
|
|
}
|
|
loki.write "loki" {
|
|
endpoint {
|
|
url = "http://grafana-loki-distributor:3100/loki/api/v1/push"
|
|
}
|
|
}
|
|
|
|
discovery.relabel "metrics" {
|
|
targets = discovery.kubernetes.pods.targets
|
|
rule {
|
|
source_labels = ["__meta_kubernetes_pod_annotation_prometheus_io_port"]
|
|
target_label = "__meta_kubernetes_pod_container_port_number"
|
|
action = "keepequal"
|
|
}
|
|
rule {
|
|
source_labels = ["__meta_kubernetes_pod_container_port_number"]
|
|
regex = ""
|
|
action = "drop"
|
|
}
|
|
rule {
|
|
source_labels = ["__meta_kubernetes_pod_annotation_prometheus_io_path",]
|
|
target_label = "__metrics_path__"
|
|
separator = ""
|
|
action = "replace"
|
|
}
|
|
}
|
|
prometheus.scrape "metrics" {
|
|
clustering {
|
|
enabled = true
|
|
}
|
|
targets = discovery.relabel.metrics.output
|
|
forward_to = [prometheus.remote_write.metrics.receiver]
|
|
scrape_interval = "30s"
|
|
}
|
|
discovery.relabel "pods_metrics" {
|
|
targets = discovery.kubernetes.nodes.targets
|
|
rule {
|
|
replacement = "kubernetes.default.svc:443"
|
|
target_label = "__address__"
|
|
}
|
|
rule {
|
|
regex = "(.+)"
|
|
replacement = "/api/v1/nodes/$1/proxy/metrics/cadvisor"
|
|
source_labels = ["__meta_kubernetes_node_name"]
|
|
target_label = "__metrics_path__"
|
|
}
|
|
}
|
|
prometheus.scrape "pods_metrics" {
|
|
clustering {
|
|
enabled = true
|
|
}
|
|
targets = discovery.relabel.pods_metrics.output
|
|
job_name = "integrations/kubernetes/kubelet"
|
|
scheme = "https"
|
|
honor_labels = true
|
|
forward_to = [prometheus.remote_write.metrics.receiver]
|
|
bearer_token_file = "/run/secrets/kubernetes.io/serviceaccount/token"
|
|
tls_config {
|
|
insecure_skip_verify = true
|
|
server_name = "kubernetes"
|
|
}
|
|
scrape_interval = "30s"
|
|
}
|
|
prometheus.exporter.unix "os_metrics" { }
|
|
prometheus.scrape "os_metrics" {
|
|
clustering {
|
|
enabled = true
|
|
}
|
|
targets = prometheus.exporter.unix.os_metrics.targets
|
|
forward_to = [prometheus.remote_write.metrics.receiver]
|
|
scrape_interval = "30s"
|
|
}
|
|
|
|
discovery.kubernetes "kube_state_metrics" {
|
|
role = "endpoints"
|
|
|
|
selectors {
|
|
role = "endpoints"
|
|
label = "app.kubernetes.io/name=kube-state-metrics"
|
|
}
|
|
namespaces {
|
|
names = ["grafana"]
|
|
}
|
|
}
|
|
|
|
discovery.relabel "kube_state_metrics" {
|
|
targets = discovery.kubernetes.kube_state_metrics.targets
|
|
|
|
// only keep targets with a matching port name
|
|
rule {
|
|
source_labels = ["__meta_kubernetes_endpoint_port_name"]
|
|
regex = "http"
|
|
action = "keep"
|
|
}
|
|
|
|
rule {
|
|
action = "replace"
|
|
replacement = "kubernetes"
|
|
target_label = "source"
|
|
}
|
|
|
|
}
|
|
|
|
prometheus.scrape "kube_state_metrics" {
|
|
targets = discovery.relabel.kube_state_metrics.output
|
|
job_name = "integrations/kubernetes/kube-state-metrics"
|
|
scrape_interval = "30s"
|
|
scheme = "http"
|
|
bearer_token_file = ""
|
|
tls_config {
|
|
insecure_skip_verify = true
|
|
}
|
|
|
|
clustering {
|
|
enabled = true
|
|
}
|
|
forward_to = [prometheus.relabel.kube_state_metrics.receiver]
|
|
}
|
|
|
|
prometheus.relabel "kube_state_metrics" {
|
|
max_cache_size = 100000
|
|
rule {
|
|
source_labels = ["__name__"]
|
|
regex = "up|scrape_samples_scraped|kube_configmap_info|kube_configmap_metadata_resource_version|kube_daemonset.*|kube_deployment_metadata_generation|kube_deployment_spec_replicas|kube_deployment_status_condition|kube_deployment_status_observed_generation|kube_deployment_status_replicas_available|kube_deployment_status_replicas_updated|kube_horizontalpodautoscaler_spec_max_replicas|kube_horizontalpodautoscaler_spec_min_replicas|kube_horizontalpodautoscaler_status_current_replicas|kube_horizontalpodautoscaler_status_desired_replicas|kube_job.*|kube_namespace_status_phase|kube_node.*|kube_persistentvolume_status_phase|kube_persistentvolumeclaim_access_mode|kube_persistentvolumeclaim_info|kube_persistentvolumeclaim_labels|kube_persistentvolumeclaim_resource_requests_storage_bytes|kube_persistentvolumeclaim_status_phase|kube_pod_container_info|kube_pod_container_resource_limits|kube_pod_container_resource_requests|kube_pod_container_status_last_terminated_reason|kube_pod_container_status_restarts_total|kube_pod_container_status_waiting_reason|kube_pod_info|kube_pod_owner|kube_pod_spec_volumes_persistentvolumeclaims_info|kube_pod_start_time|kube_pod_status_phase|kube_pod_status_reason|kube_replicaset.*|kube_resourcequota|kube_secret_metadata_resource_version|kube_statefulset.*"
|
|
action = "keep"
|
|
}
|
|
|
|
forward_to = [prometheus.remote_write.metrics.receiver]
|
|
}
|
|
|
|
prometheus.remote_write "metrics" {
|
|
endpoint {
|
|
url = "http://grafana-mimir-nginx/api/v1/push"
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 1m
|
|
memory: 5Mi
|
|
limits:
|
|
cpu: 1
|
|
memory: 400Mi
|