개요

인내심이 매우 짧은편이다..

인내심이 매우 짧은편이다..

정말 어려웠다. 많은 포스팅을 읽어봤지만 이해되는것 같으면서도 설정하는 부분에서 막혀서 답답해 죽는줄 알았다.


Correlation

Grafana를 통해 설정하기 전 해당 내용을 이해하는 것이 우선이라고 생각했다.

Grafana Correlation - Metric, Trace, Log

Grafana Correlation - Metric, Trace, Log

각 요소별로 서로 다른 역할을 가지고 있지만 상관관계를 찾아내어 구성하면 어떤 이벤트가 발생했을때 원인을 파악하는데 큰 이점을 가지고 있습니다.

Observability는 다음과 같이 세가지 요소를 달성하여 필요한 답변을 찾아낼 수 있도록 도와주는 역할을 합니다.


Log - Grafana

먼저 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"
  }
}