Text size
പരീക്ഷിച്ചറിഞ്ഞത്7 മിനിറ്റ് വായന

തുറന്ന ടെലിമെട്രി

ഒരു സ്റ്റാൻഡേർഡ് ഉള്ള ട്രാക്കുകളും, അളവുകളും, ലോഗുകളും, വിതരണക്കാരെ അടച്ചിടാതെ.

OpenTelemetry from the ground up
AI ഉപയോഗിച്ച് സൃഷ്ടിച്ച ചിത്രീകരണം

വർഷങ്ങളോളം, നിരീക്ഷണക്ഷമത ഒരു വിതരണക്കാരനെ തെരഞ്ഞെടുക്കുകയും അവരുടെ ഏജന്റ് എല്ലായിടത്തും സ്ഥാപിക്കുകയും ചെയ്യേണ്ടതായിരുന്നു. പിന്നെ അവരുടെ SDK നിങ്ങളുടെ കോഡില് . പിന്നെ അവരുടെ ചോദ്യ ഭാഷ നിങ്ങളുടെ തലയില് . വിതരണക്കാരെ മാറ്റിയത് എല്ലാം വീണ്ടും ഇൻസ്ട്രുമെന്റ് ചെയ്യുകയെന്നതായിരുന്നു, അതുകൊണ്ട് ആരും മാറിയില്ല, വിലകൾ ഉയർന്നു.

ഓപ്പൺ ടെലിമെട്രി അത് മാറ്റി. ഇത് ഇപ്പോൾ ഏറ്റവും സജീവമായ രണ്ടാമത്തെ സി. എൻ. സി. എഫ്. പ്രോജക്ട് ആണ്, കുബർനെറ്റിസിന് ശേഷം, ടെലിമെട്രി ശേഖരിക്കുന്നതിനുള്ള സാധാരണ മാർഗവും. ഇന്ന് നിങ്ങൾ നിരീക്ഷണത്തിൽ നിന്ന് തുടങ്ങുകയാണെങ്കിൽ ഇവിടെ നിന്ന് തുടങ്ങുക.

എന്തിന് ഓപ്പൺ ടെലിമെട്രി

ഓപ്പൺ ടെലിമെട്രി (പലപ്പോഴും ചുരുക്കത്തിൽ ഒ. ടി. എൽ) ടെലിമെട്രി ഡാറ്റ സൃഷ്ടിക്കുന്നതിനും ശേഖരിക്കുന്നതിനുമുള്ള തുറന്ന മാനദണ്ഡങ്ങളും SDK കളും ഉപകരണങ്ങളും ആണ്. പ്രധാന ആശയം: ഒരു തവണയെങ്കിലും ഉപകരണത്തെ അയച്ചു തരൂ..

നിങ്ങളുടെ കോഡും ഇൻഫ്രാസ്ട്രക്ചറും ഒരു സാധാരണ ഫോർമാറ്റിൽ ഡാറ്റ ഉല്പാദിപ്പിക്കുന്നു. ആ ഡാറ്റ എവിടെ പോകുന്നുവോ അവിടെ, പ്രമേത്യുസ്, ഗ്രഫാന, ജാഗർ, ഡാറ്റാഡോഗ്, ഹണികോംബ്, ന്യൂ റെലിക്, എലാസ്റ്റിക് അല്ലെങ്കിൽ മറ്റെന്തെങ്കിലും, അത് വെറും ക്രമീകരണമാണ്. ബാക്ക് എൻഡ് മാറ്റുക, ഉപകരണങ്ങൾ സൂക്ഷിക്കുക.

നാല് സിഗ്നലുകൾ

അടയാളങ്ങൾ നിങ്ങളുടെ സിസ്റ്റത്തിലൂടെ ഒരൊറ്റ അഭ്യർത്ഥന പിന്തുടരുക. ഒരു അടയാളം ഉണ്ടാക്കിയതാണ് സ്പാൻസ്, ഓരോ ഓപ്പറേഷനും ഒന്ന്: HTTP അഭ്യർത്ഥന, ഡാറ്റാബേസ് അന്വേഷണം, മറ്റൊരു സേവനത്തിലേക്കുള്ള കോൾ. "സമയം എവിടെ പോയി" എന്നും "എവിടെയാണ് അത് പരാജയപ്പെട്ടത്" എന്നും ചോദിക്കുന്ന ചോദ്യത്തിന് റെ ഉത്തരം

അളവുകൾ കാലത്തിനനുസരിച്ച് വരുന്ന സംഖ്യകളാണ്: അഭ്യർത്ഥന നിരക്ക്, പിശക് നിരക്ക്, ലേറ്റൻസി ശതമാനം, സിപിയു ഉപയോഗം, ക്യൂ ദൈർഘ്യം. സൂക്ഷിക്കാൻ വിലകുറഞ്ഞത്, ഡാഷ്ബോർഡിനും അലേർട്ടുകൾക്കും ഉത്തമം.

തണ്ടുകൾ സമയമുദ്രയുള്ള സംഭവങ്ങളാണ്. ഓപ്പൺ ടെലിമെട്രിക്ക് ട്രെയ്സ് ഐഡികൾ ലോഗുകളിലേക്ക് അറ്റാച്ചുചെയ്യാൻ കഴിയും, അതിനാൽ ഒരു ലോഗ് ലൈനിൽ നിന്ന് അത് സൃഷ്ടിച്ച അഭ്യർത്ഥനയുടെ പൂർണ്ണ ട്രെയ്സിലേക്ക് നിങ്ങൾക്ക് പോകാം.

പ്രൊഫൈലുകൾ ഏത് കോഡാണ് സിപിയുവും മെമ്മറിയും ഉപയോഗിക്കുന്നതെന്ന് കാണിക്കുക. ഇത് ഓപ്പൺ ടെലിമെട്രി യുടെ ഏറ്റവും പുതിയ സിഗ്നലാണ്, ഇപ്പോഴും പക്വത പ്രാപിക്കുന്നു.

അവ ബന്ധിപ്പിച്ചിരിക്കുമ്പോൾ അത് അത്ഭുതകരമായി സംഭവിക്കുന്നു. ലേറ്റൻസി മെട്രിക് വർദ്ധിക്കുന്നു, ഉദാഹരണ ട്രെയ്സുകളുമായി ബന്ധിപ്പിക്കുന്നു, വേഗത കുറഞ്ഞ അഭ്യർത്ഥനകളുടെ ലോഗുകളുമായി ബന്ധപ്പെടുത്തുന്നു.

മെട്രിക്സ് പറയുന്നത് എന്തോ കുഴപ്പമുണ്ടെന്ന്. എവിടെയാണെന്ന് തെളിവ് കാണും. ലോഗ്സ് അത് നിങ്ങള് ക്ക് പറഞ്ഞു തരും.

കെട്ടിട ഘടകങ്ങൾ

  • എപിഐകളും എസ്ഡികെയും ഓരോ ഭാഷയ്ക്കും (ജാവ, ഗോ, പൈത്തൺ, ജാവാസ്ക്രിപ്റ്റ്, .നെറ്റ്, റൂബി, പിഎച്ച്പി, റസ്റ്റ് തുടങ്ങിയവ) കോഡിൽ നിന്ന് ടെലിമെട്രി സൃഷ്ടിക്കാൻ.
  • ഓട്ടോ-ഇൻസ്ട്രുമെന്റേഷൻ കോഡ് മാറ്റങ്ങളില്ലാതെ സാധാരണ ലൈബ്രറികൾ (എച്ച്ടിടിപി ഫ്രെയിം വർക്കുകൾ, ഡാറ്റാബേസ് ഡ്രൈവറുകൾ, മെസേജിംഗ് ക്ലയന്റുകൾ) പിടിച്ചെടുക്കുന്നു.
  • ഒടിഎൽപി, ഓപ്പൺ ടെലിമെട്രി പ്രോട്ടോക്കോൾ, ഡാറ്റ അയയ്ക്കുന്നതിനുള്ള സാധാരണ വയർ ഫോർമാറ്റ്.
  • ശേഖരക്കാരൻ, ടെലിമെട്രി സ്വീകരിക്കുകയും പ്രോസസ്സ് ചെയ്യുകയും കയറ്റുമതി ചെയ്യുകയും ചെയ്യുന്ന ഒരു സ്വതന്ത്ര സേവനമാണ്.
  • സെമാന്റിക് കൺവെൻഷനുകൾ: പോലുള്ള ഗുണങ്ങളുടെ സാധാരണ നാമങ്ങൾ http.request.method അല്ലെങ്കില് db.system, ഡാറ്റ എല്ലായിടത്തും ഒരുപോലെ കാണപ്പെടുന്നു.

എന്റെ ആദ്യകാലത്തെ പടികൾ

ഓപ്പൺ ടെലിമെട്രി പ്രവർത്തനക്ഷമമായി കാണാനുള്ള ഏറ്റവും വേഗതയേറിയ മാർഗം ഓട്ടോ-ഇൻസ്ട്രുമെന്റേഷനാണ്. ഒരു പൈഥണ് ആപ്ലിക്കേഷന് വേണ്ടി:

pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install

export OTEL_SERVICE_NAME=shop-api
export OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
opentelemetry-instrument python app.py

ജാവയ്ക്കായി, ഏജന്റിനെ -javaagent:opentelemetry-javaagent.jar. Node.js-ൽ, ഓട്ടോ-ഇൻസ്ട്രുമെന്റേഷൻ പാക്കേജ് സ്റ്റാർട്ടപ്പിൽ ലോഡ് ചെയ്യുക. കുബർനെറ്റിസിൽ, ഓപ്പൺ ടെലിമെട്രി ഓപ്പറേറ്റർ ഒറ്റ കുറിപ്പിനൊപ്പം ഓട്ടോ-ഇൻസ്ട്രുമെന്റേഷൻ പോലും പോഡുകളിലേക്ക് ചേർക്കാം.

മിനിറ്റുകൾക്കുള്ളിൽ, ഓരോ ഇൻകമിംഗ് അഭ്യർത്ഥനയും, ഔട്ട്ഗോയിംഗ് HTTP കോൾ, ഡാറ്റാബേസ് അന്വേഷണം എന്നിവയും ഒരു സ്പാൻ ആയി മാറുന്നു.

പിന്നെ കുറച്ചു കൂടി കൂട്ടുക. മാനുവൽ സ്പാൻസ് പ്രധാനപ്പെട്ട ബിസിനസ് പ്രവര് ത്തനങ്ങള് ക്ക്:

from opentelemetry import trace

tracer = trace.get_tracer("shop")

def place_order(order):
    with tracer.start_as_current_span("place_order") as span:
        span.set_attribute("order.items", len(order.items))
        # ... business logic

കളക്ടര്: ഈ സംവിധാനത്തിന്റെ ഹൃദയം

ഞാന് എല്ലായ്പ്പോഴും ടെലിമെട്രി ഒരു ശേഖരക്കാരൻ ആദ്യം, ആപ്ലിക്കേഷനുകളിൽ നിന്നും നേരിട്ട് ബാക്ക് എൻഡിലേക്ക്. ഇത് ആപ്ലിക്കേഷനുകളെ വിതരണക്കാരിൽ നിന്നും വേർതിരിക്കുകയും ഡാറ്റ കേന്ദ്രീകൃതമായി പ്രോസസ്സ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുകയും ചെയ്യുന്നു.

receivers:
  otlp:
    protocols:
      grpc:
      http:

processors:
  memory_limiter:
    check_interval: 1s
    limit_percentage: 80
  batch:
  attributes:
    actions:
      - key: user.email
        action: delete      # don't ship personal data

exporters:
  otlp/tempo:
    endpoint: tempo:4317
    tls:
      insecure: true
  prometheusremotewrite:
    endpoint: http://prometheus:9090/api/v1/write

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [memory_limiter, attributes, batch]
      exporters: [otlp/tempo]
    metrics:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [prometheusremotewrite]

കുബർനെറ്റിലെ ഒരു സാധാരണ മാതൃക: ഒരു കളക്ടർ ഒരു ഡെമോൺസെറ്റ് ഓരോ നോഡിലും (ലോക്കൽ പോഡുകളിൽ നിന്നും സ്വീകരിക്കുകയും നോഡ് ഡാറ്റ ശേഖരിക്കുകയും ചെയ്യുന്നു), ഒരു കേന്ദ്രത്തിലേക്ക് അയയ്ക്കുന്നു ഗേറ്റ് വേ സാമ്പിളുകള് എടുക്കുന്നതും ഫിൽട്ടറിംഗ് നടത്തുന്നതും കയറ്റുമതി ചെയ്യുന്നതുമായ ഒരു കളക്ടര് .

എവിടെയും ഡാറ്റ അയയ്ക്കുക

ശേഖരകന് മധ്യത്തിലായാല് ഒരു ബാക്ക്എന് ഡ് മാറ്റുകയോ കൂട്ടിച്ചേര് ക്കുകയോ ചെയ്യുന്നത് ഒരു ക്രമീകരണ മാറ്റമാണ്. ജനപ്രിയമായ ഓപ്പൺ സോഴ്സ് ലക്ഷ്യസ്ഥാനങ്ങൾ:

  • പ്രമേത്യുസ് അല്ലെങ്കില് മിമിര് അളവുകള് ക്ക് വേണ്ടി
  • ടേംപോ അല്ലെങ്കില് ജാഗർ അടയാളങ്ങൾക്കായി
  • ലോക്കി തടിക്ക് വേണ്ടി
  • ഗ്രാഫാന എല്ലാറ്റിനും മുകളില്

അല്ലെങ്കിൽ OTLP സ്വീകരിക്കുന്ന ഏതെങ്കിലും വാണിജ്യ വിതരണക്കാരന്, ഇന്ന് മിക്കവാറും എല്ലാവരും.

തുടക്കത്തിലെ നുറുങ്ങുകൾ

  • സജ്ജീകരിച്ചു service.name എല്ലാ കാര്യത്തിലും. അത് ഇല്ലാതെ, നിങ്ങളുടെ ഡാറ്റ ഒരു കുഴപ്പമാണ്.
  • വിഭവ ആട്രിബ്യൂട്ടുകൾ ഉപയോഗിക്കുക പരിസ്ഥിതി, പതിപ്പ്, ക്ലസ്റ്റർ എന്നിവയ്ക്കായി
  • ഓട്ടോ-ഇൻസ്ട്രുമെന്റേഷനുമായി തുടങ്ങുക, പിന്നെ ബിസിനസ് ലോജിക് പ്രധാനമാണ് എവിടെ മാനുവൽ സ്പാനുകൾ ചേർക്കുക.
  • ശബ്ദം കുറയ്ക്കൂ.: തിരക്കേറിയ ഒരു സിസ്റ്റത്തിലെ എല്ലാ അഭ്യർത്ഥനകളും ട്രാക്കുചെയ്യുന്നത് ചെലവേറിയതാണ്. സാമ്പിളുകൾ നേരത്തെ എടുക്കുക.
  • വ്യക്തിഗത ഡാറ്റ പുറത്തു വയ്ക്കരുത്, സെൻസിറ്റീവ് ആട്രിബ്യൂട്ടുകൾ ഒഴിവാക്കാനോ മറയ്ക്കാനോ കളക്ടർ പ്രോസസ്സറുകൾ ഉപയോഗിക്കുന്നു.

അത് വിലപ്പെട്ടതാണോ?

തീർച്ചയായും. ഓപ്പൺ ടെലിമെട്രി ആണ് ഈ വ്യവസായത്തിന്റെ ലക്ഷ്യം. ഇന്ന് ഇത് ഉപയോഗിച്ച് ഉപകരണങ്ങൾ നിർമ്മിക്കുന്നത് അർത്ഥമാക്കുന്നത് നിങ്ങൾ ഒരിക്കലും ഉപകരണങ്ങൾ പുനർനിർമ്മിക്കേണ്ടി വരില്ല, കാരണം നിങ്ങൾ വിതരണക്കാരെ മാറ്റി, നിങ്ങൾക്ക് ഒടുവിൽ പരസ്പരം സംസാരിക്കുന്ന ട്രാക്കുകളും അളവുകളും ലോഗുകളും ലഭിക്കും.

എന്റെ അഭിപ്രായം: ഒരു തവണയെങ്കിലും ഒരു തുറന്ന സ്റ്റാൻഡേർഡ് ഉപയോഗിച്ച് ഒരു ഉപകരണം ഉപയോഗിക്കുക, മറ്റെല്ലാ കാര്യങ്ങളിലും നിങ്ങളുടെ മനസ്സ് മാറ്റാനുള്ള സ്വാതന്ത്ര്യം നിലനിർത്തുക.

ഡെസ്ലി