Kubernetes
Grafana, Tempo 모니터링 간단 예시 - springboot, mongodb
kyeongjun-dev
2024. 1. 2. 00:34
Grafana, Tempo 설치 - docker desktop
제일 미니멈 설정으로 grafana라는 네임스페이스에 설치
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
kubectl create ns grafana
helm install grafana grafana/grafana -n grafana
helm install tempo grafana/tempo -n grafana
Spring boot앱 배포
먼저 spring boot 컨테이너에 설정하는 환경변수는 아래 yaml 파일과 같다
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot
spec:
selector:
matchLabels:
app: springboot
template:
metadata:
labels:
app: springboot
spec:
containers:
- name: springboot
image: springboot:test
imagePullPolicy: Never
ports:
- containerPort: 8000
env:
- name: OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
value: "grpc"
- name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
value: "http://tempo.grafana.svc.cluster.local:4317"
- name: OTEL_LOGS_EXPORTER
value: "none"
- name: OTEL_METRICS_EXPORTER
value: "none"
- name: OTEL_SERVICE_NAME
value: "demo"
- name: OTEL_TRACES_EXPORTER
value: "otlp"
- name: OTEL_EXPORTER_OTLP_INSECURE
value: "true"
- name: OTEL_INSTRUMENTATION_COMMON_DB_STATEMENT_SANITIZER_ENABLED
value: "false"
여기서 OTEL_INSTRUMENTATION_COMMON_DB_STATEMENT_SANITIZER_ENABLED를 false로 지정하면, 데이터베이스 trace에 대한 정보가 전부 표시된다.
해당 값을 true로 하거나, 따로 설정하지 않으면(기본값이 true), 아래와 같이 ?로 표시된다
Dockerfile
FROM openjdk:17
WORKDIR /app
COPY demo.jar demo.jar
COPY opentelemetry-javaagent.jar opentelemetry-javaagent.jar
CMD ["java", "-javaagent:opentelemetry-javaagent.jar", "-Dotel.javaagent.debug=true","-jar", "demo.jar"]