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

വർഷങ്ങളോളം, നിരീക്ഷണക്ഷമത ഒരു വിതരണക്കാരനെ തെരഞ്ഞെടുക്കുകയും അവരുടെ ഏജന്റ് എല്ലായിടത്തും സ്ഥാപിക്കുകയും ചെയ്യേണ്ടതായിരുന്നു. പിന്നെ അവരുടെ 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 എല്ലാ കാര്യത്തിലും. അത് ഇല്ലാതെ, നിങ്ങളുടെ ഡാറ്റ ഒരു കുഴപ്പമാണ്.തീർച്ചയായും. ഓപ്പൺ ടെലിമെട്രി ആണ് ഈ വ്യവസായത്തിന്റെ ലക്ഷ്യം. ഇന്ന് ഇത് ഉപയോഗിച്ച് ഉപകരണങ്ങൾ നിർമ്മിക്കുന്നത് അർത്ഥമാക്കുന്നത് നിങ്ങൾ ഒരിക്കലും ഉപകരണങ്ങൾ പുനർനിർമ്മിക്കേണ്ടി വരില്ല, കാരണം നിങ്ങൾ വിതരണക്കാരെ മാറ്റി, നിങ്ങൾക്ക് ഒടുവിൽ പരസ്പരം സംസാരിക്കുന്ന ട്രാക്കുകളും അളവുകളും ലോഗുകളും ലഭിക്കും.
എന്റെ അഭിപ്രായം: ഒരു തവണയെങ്കിലും ഒരു തുറന്ന സ്റ്റാൻഡേർഡ് ഉപയോഗിച്ച് ഒരു ഉപകരണം ഉപയോഗിക്കുക, മറ്റെല്ലാ കാര്യങ്ങളിലും നിങ്ങളുടെ മനസ്സ് മാറ്റാനുള്ള സ്വാതന്ത്ര്യം നിലനിർത്തുക.
ഡെസ്ലി