인내심이 매우 짧은편이다..
정말 어려웠다. 많은 포스팅을 읽어봤지만 이해되는것 같으면서도 설정하는 부분에서 막혀서 답답해 죽는줄 알았다.
Grafana를 통해 설정하기 전 해당 내용을 이해하는 것이 우선이라고 생각했다.
Grafana Correlation - Metric, Trace, Log
각 요소별로 서로 다른 역할을 가지고 있지만 상관관계를 찾아내어 구성하면 어떤 이벤트가 발생했을때 원인을 파악하는데 큰 이점을 가지고 있습니다.
Observability는 다음과 같이 세가지 요소를 달성하여 필요한 답변을 찾아낼 수 있도록 도와주는 역할을 합니다.
먼저 Log를 통해서 Trace(Tempo)와 연결지을 수 있도록 설정합니다.
연결짓기 위해 필요한 정보인 TraceID, SpanID를 Log에서 분석합니다.
Json 형식으로 로그를 전달받게 되며, 내부에 “traceid”, “spanid”도 포함되어 있어 해당 내용을 바탕으로 추출합니다.
{
"body": "10.244.1.8 - - [29/Jan/2025 13:01:54] \\"GET /dashboard?user_id=2&order_id=102 HTTP/1.1\\" 200 -",
"traceid": "6e2e7ef9ed625abc2382014ef654ac80",
"spanid": "70cb220639b32a93",
"severity": "INFO",
"flags": 1,
"attributes": {
"code.filepath": "/usr/local/lib/python3.9/site-packages/werkzeug/_internal.py",
"code.function": "_log",
"code.lineno": 97,
"otelServiceName": "flask-web",
"otelSpanID": "70cb220639b32a93",
"otelTraceID": "6e2e7ef9ed625abc2382014ef654ac80",
"otelTraceSampled": true
},
"resources": {
"k8s.container.name": "flask-web",
"k8s.namespace.name": "default",
"k8s.node.name": "kind-worker",
"k8s.pod.name": "flask-web",
"service.instance.id": "default.flask-web.flask-web",
"service.name": "flask-web",
"service.version": "web",
"telemetry.auto.version": "0.50b0",
"telemetry.sdk.language": "python",
"telemetry.sdk.name": "opentelemetry",
"telemetry.sdk.version": "1.29.0"
},
"instrumentation_scope": {
"name": "werkzeug"
}
}