Skip to content

Instantly share code, notes, and snippets.

@mfechtner
Created March 27, 2024 12:48
Show Gist options
  • Save mfechtner/54be875def936bf9beb62cf8b8274a20 to your computer and use it in GitHub Desktop.
Save mfechtner/54be875def936bf9beb62cf8b8274a20 to your computer and use it in GitHub Desktop.
apiVersion: v1
data:
datasource.yaml: |
apiVersion: 1
datasources:
- name: mimir
uid: cdgqpakkxq2gwd
type: prometheus
url: http://grafana-mimir-service:9090/prometheus
isDefault: true
- name: tempo
type: tempo
url: http://grafana-tempo-service:3200
jsonData:
tracesToLogsV2:
customQuery: false
datasourceUid: "bdgqpakkxq2gwd"
filterByTraceID: true
tracesToMetrics:
customQuery: false
datasourceUid: "cdgqpakkxq2gwd"
serviceMap:
datasourceUid: cdgqpakkxq2gwd
nodeGraph:
enabled: true
search:
datasourceUid: "bdgqpakkxq2gwd"
hide: false
- name: loki
uid: bdgqpakkxq2gwd
type: loki
url: http://grafana-loki-service:3100
kind: ConfigMap
metadata:
labels:
usage: poc
name: grafana-frontend-datasource-722mkccg68
---
apiVersion: v1
data:
key: value
kind: ConfigMap
metadata:
labels:
usage: poc
name: grafana-frontend-myapp
---
apiVersion: v1
data:
config.yaml: |
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
instance_addr: 127.0.0.1
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
query_range:
results_cache:
cache:
embedded_cache:
enabled: true
max_size_mb: 100
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v12
index:
prefix: index_
period: 24h
kind: ConfigMap
metadata:
labels:
app: loki
usage: poc
name: grafana-loki-config-files-hhc29k4t49
---
apiVersion: v1
data:
config.yaml: |
multitenancy_enabled: false
blocks_storage:
backend: filesystem
bucket_store:
sync_dir: /tmp/mimir/tsdb-sync
filesystem:
dir: /tmp/mimir/data/tsdb
tsdb:
dir: /tmp/mimir/tsdb
compactor:
data_dir: /tmp/mimir/compactor
sharding_ring:
kvstore:
store: memberlist
distributor:
ring:
instance_addr: 127.0.0.1
kvstore:
store: memberlist
ingester:
ring:
instance_addr: 127.0.0.1
kvstore:
store: memberlist
replication_factor: 1
ruler_storage:
backend: filesystem
filesystem:
dir: /tmp/mimir/rules
server:
http_listen_port: 9090
log_level: info
store_gateway:
sharding_ring:
replication_factor: 1
kind: ConfigMap
metadata:
labels:
app: mimir
usage: poc
name: grafana-mimir-config-files-bc998d2d67
---
apiVersion: v1
data:
config.yaml: |
stream_over_http_enabled: true
server:
http_listen_port: 3200
log_level: info
query_frontend:
search:
duration_slo: 5s
throughput_bytes_slo: 1.073741824e+09
trace_by_id:
duration_slo: 5s
distributor:
receivers: # this configuration will listen on all ports and protocols that tempo is capable of.
jaeger: # the receives all come from the OpenTelemetry collector. more configuration information can
protocols: # be found there: https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver
thrift_http: #
grpc: # for a production deployment you should only enable the receivers you need!
thrift_binary:
thrift_compact:
zipkin:
otlp:
protocols:
http:
grpc:
opencensus:
ingester:
max_block_duration: 5m # cut the headblock when this much time passes. this is being set for demo purposes and should probably be left alone normally
compactor:
compaction:
block_retention: 1h # overall Tempo trace retention. set for demo purposes
metrics_generator:
ring:
kvstore:
store: memberlist
registry:
external_labels:
source: tempo
storage:
path: /tmp/tempo/generator/wal
remote_write:
- url: http://grafana-mimir-service:9090/api/v1/push
send_exemplars: true
storage:
trace:
backend: local # backend configuration to use
wal:
path: /tmp/tempo/wal # where to store the the wal locally
local:
path: /tmp/tempo/blocks
overrides:
defaults:
metrics_generator:
processors: [service-graphs, span-metrics] # enables metrics generator
kind: ConfigMap
metadata:
labels:
app: tempo
usage: poc
name: grafana-tempo-config-files-2t6gk2tfh6
---
apiVersion: v1
data:
config.yaml: |
receivers:
otlp:
protocols:
grpc:
http:
hostmetrics:
scrapers:
cpu:
disk:
filesystem:
load:
memory:
network:
prometheus:
config:
scrape_configs:
- job_name: "collector"
scrape_interval: 10s
static_configs:
- targets: ["0.0.0.0:8888"]
metric_relabel_configs:
- source_labels: [__name__]
regex: ".*grpc_io.*"
action: drop
processors:
# Data sources: traces, metrics, logs
batch:
attributes:
actions:
- action: insert
key: loki.attribute.labels
value: label, duration, http.method, http.url, http.host, http.client_ip, http.user_agent, http.request_id, http.status_code, iam.user_id
resource:
attributes:
- action: insert
key: loki.resource.labels
value: service.namespace, service.name, service.version, deployment.environment
exporters:
prometheusremotewrite:
endpoint: http://grafana-mimir-service:9090/api/v1/push
loki:
endpoint: http://grafana-loki-service:3100/loki/api/v1/push
otlphttp/tempo:
endpoint: http://grafana-tempo-service:4318
service:
pipelines:
metrics:
receivers: [otlp, prometheus, hostmetrics]
processors: [batch]
exporters: [prometheusremotewrite]
logs:
receivers: [otlp]
processors: [attributes, resource]
exporters: [loki]
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlphttp/tempo]
kind: ConfigMap
metadata:
labels:
service: otel
usage: poc
name: otel-infra-grafana-ingress-config-files-bh227fkmkh
---
apiVersion: v1
kind: Service
metadata:
labels:
app: loki
usage: poc
name: grafana-loki-service
spec:
ports:
- name: loki
port: 3100
targetPort: 3100
- name: grpc
port: 9096
targetPort: 9096
selector:
app: loki
usage: poc
---
apiVersion: v1
kind: Service
metadata:
labels:
app: mimir
usage: poc
name: grafana-mimir-service
spec:
ports:
- port: 9090
targetPort: 9090
selector:
app: mimir
usage: poc
---
apiVersion: v1
kind: Service
metadata:
labels:
app: tempo
usage: poc
name: grafana-tempo-service
spec:
ports:
- name: loki
port: 3200
targetPort: 3200
- name: grpc-http
port: 4318
targetPort: 4318
selector:
app: tempo
usage: poc
---
apiVersion: v1
kind: Service
metadata:
labels:
service: otel
usage: poc
name: otel-infra-grafana-ingress-service
spec:
ports:
- name: grpc-http
port: 4318
targetPort: 4318
selector:
app: grafana-ingress-collector
service: otel
usage: poc
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
usage: poc
name: grafana-frontend-frontend
spec:
selector:
matchLabels:
app: frontend
usage: poc
template:
metadata:
labels:
app: frontend
usage: poc
spec:
containers:
- env:
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ORG_ROLE
value: Admin
image: grafana/grafana-oss
name: grafana
ports:
- containerPort: 3000
resources:
limits:
cpu: 500m
memory: 512Mi
volumeMounts:
- mountPath: /etc/grafana/provisioning/datasources
name: datasource
volumes:
- configMap:
name: grafana-frontend-datasource-722mkccg68
name: datasource
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: loki
usage: poc
name: grafana-loki-server
spec:
selector:
matchLabels:
app: loki
usage: poc
template:
metadata:
labels:
app: loki
usage: poc
spec:
containers:
- args:
- -config.file=/etc/loki/config.yaml
image: grafana/loki:latest
name: loki
ports:
- containerPort: 3200
- containerPort: 9096
resources:
limits:
cpu: 500m
memory: 128Mi
volumeMounts:
- mountPath: /etc/loki
name: config-files
volumes:
- configMap:
name: grafana-loki-config-files-hhc29k4t49
name: config-files
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mimir
usage: poc
name: grafana-mimir-server
spec:
selector:
matchLabels:
app: mimir
usage: poc
template:
metadata:
labels:
app: mimir
usage: poc
spec:
containers:
- args:
- -config.file=/etc/mimir/config.yaml
image: grafana/mimir:latest
name: mimir
ports:
- containerPort: 9090
resources:
limits:
cpu: 500m
memory: 128Mi
volumeMounts:
- mountPath: /etc/mimir
name: config-files
volumes:
- configMap:
name: grafana-mimir-config-files-bc998d2d67
name: config-files
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: tempo
usage: poc
name: grafana-tempo-server
spec:
selector:
matchLabels:
app: tempo
usage: poc
template:
metadata:
labels:
app: tempo
usage: poc
spec:
containers:
- args:
- -config.file=/etc/tempo/config.yaml
image: grafana/tempo:latest
name: tempo
ports:
- containerPort: 3200
- containerPort: 4318
resources:
limits:
cpu: 500m
memory: 128Mi
volumeMounts:
- mountPath: /etc/tempo
name: config-files
volumes:
- configMap:
name: grafana-tempo-config-files-2t6gk2tfh6
name: config-files
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
service: otel
usage: poc
name: otel-infra-grafana-ingress-collector
spec:
selector:
matchLabels:
app: grafana-ingress-collector
service: otel
usage: poc
template:
metadata:
labels:
app: grafana-ingress-collector
service: otel
usage: poc
spec:
containers:
- args:
- --config=/etc/otel/config.yaml
image: otel/opentelemetry-collector-contrib:latest
name: collector
ports:
- containerPort: 4318
resources:
limits:
cpu: 500m
memory: 128Mi
volumeMounts:
- mountPath: /etc/otel
name: config-files
volumes:
- configMap:
name: otel-infra-grafana-ingress-config-files-bh227fkmkh
name: config-files
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment