ሎኪ - የፕሮሜቲየስ አቀራረብን በመጠቀም ምዝግብ ማስታወሻዎችን መሰብሰብ

ሰላምታ አቅርቡ፣ Khabrovites! ለትምህርቱ አዲስ ምዝገባ እንደሚጀምር በመጠባበቅ ላይ "የዴቭኦፕስ ልምዶች እና መሳሪያዎች" አስደሳች ቁሳቁስ ትርጉም አዘጋጅቶልዎታል.

ይህ ጽሑፍ የሎኪ አጭር መግቢያ ነው። ፕሮጀክት Loki በግራፋና የተደገፈ እና የተማከለ የምዝግብ ማስታወሻዎች ስብስብ ላይ ያለመ ነው (ከሰርቨሮች ወይም ኮንቴይነሮች)።

ለሎኪ ዋናው መነሳሳት ነበር ፕሮሚትየስ የእሱን አቀራረቦች ወደ ሎግ አስተዳደር የመተግበር ሀሳብ ጋር-

  • መረጃን ለማከማቸት መለያዎችን በመጠቀም
  • ዝቅተኛ የሃብት ፍጆታ

ወደ ፕሮሜቴየስ መርሆች እንመለሳለን እና በ Kubernetes አውድ ውስጥ ስለ አጠቃቀሙ አንዳንድ ምሳሌዎችን እንሰጣለን.

ስለ ፕሮሜቲየስ ጥቂት ቃላት

ሎኪ እንዴት እንደሚሰራ ሙሉ በሙሉ ለመረዳት ወደ ኋላ መለስ ብሎ ፕሮሜቲየስን ትንሽ መጎብኘት አስፈላጊ ነው።

የፕሮሜቴየስ ልዩ ባህሪያት አንዱ መለኪያዎችን ከስብስብ ነጥቦች (በላኪዎች በኩል) ማውጣት እና በ TSDB (Time Series Data Base, የጊዜ ተከታታይ ዳታቤዝ) ውስጥ ማስቀመጥ እና ሜታዳታ በመለያዎች መልክ መጨመር ነው.

ለምን አስፈለገዎት?

በቅርቡ ፕሮሜቴየስ በመያዣዎች እና በኩበርኔትስ ዓለም ውስጥ የእውነተኛ ደረጃ ደረጃ ሆኗል-መጫኑ በጣም ቀላል ነው ፣ እና የኩበርኔትስ ክላስተር መጀመሪያ የፕሮሜቲየስ የመጨረሻ ነጥብ አለው። ፕሮሜቲየስ ልዩ መለያዎችን በሚይዝበት ጊዜ በኮንቴይነር ውስጥ ከተዘረጉ መተግበሪያዎች ውስጥ መለኪያዎችን ማውጣት ይችላል። ስለዚህ, የመተግበሪያ ቁጥጥርን ለመተግበር በጣም ቀላል ነው.

እንደ አለመታደል ሆኖ ለሎግ አስተዳደር ምንም የማዞሪያ ቁልፍ መፍትሄ የለም እና ለራስዎ መፍትሄ መፈለግ አለብዎት:

  • የሚተዳደር የደመና አገልግሎት ምዝግብ ማስታወሻዎችን (AWS፣ Azure ወይም Google) ለማማከል
  • የክትትል አገልግሎት "እንደ አገልግሎት መከታተል" (ለምሳሌ, Datadog)
  • የራስዎን የምዝግብ ማስታወሻ መሰብሰብ አገልግሎት መፍጠር.

ለሦስተኛው አማራጭ፣ ምንም እንኳን ሁልጊዜ ደስተኛ ባልሆን (በተለይ የክብደቱ እና የማዋቀሩ ውስብስብነቱ) ቢሆንም፣ እኔ በተለምዶ Elasticsearchን ተጠቅሜበታለሁ።

ሎኪ የተነደፈው በሚከተሉት መርሆች መሰረት በቀላሉ እንዲተገበር ነው።

  • ለመጀመር ቀላል ይሁኑ
  • ጥቂት ሀብቶችን መጠቀም
  • ያለ ልዩ ጥገና በተናጥል መሥራት
  • የሳንካ ምርመራዎችን ለማገዝ የፕሮሜቲየስ ተጨማሪ አገልግሎትን ያገልግሉ

ይሁን እንጂ ይህ ቀላልነት የሚመጣው ከአንዳንድ ስምምነቶች ወጪ ነው። ከመካከላቸው አንዱ ይዘቱን መረጃ ጠቋሚ ማድረግ አይደለም. ስለዚህ, የጽሑፍ ፍለጋ በጣም ቀልጣፋ ወይም ሀብታም አይደለም እና በጽሑፉ ይዘት ላይ ስታቲስቲክስን እንዲይዙ አይፈቅድልዎትም. ግን ሎኪ የ grep አቻ መሆን እና ከፕሮሜቴየስ ጋር ማሟያ መሆን ስለሚፈልግ ይህ ጉዳቱ አይደለም።

የክስተት ምርመራ

ሎኪ ለምን መረጃ ጠቋሚ እንደማያስፈልገው በተሻለ ለመረዳት የሎኪ ገንቢዎች ወደ ተጠቀሙበት የአደጋ ምርመራ ዘዴ እንመለስ፡-

ሎኪ - የፕሮሜቲየስ አቀራረብን በመጠቀም ምዝግብ ማስታወሻዎችን መሰብሰብ
1 ማንቂያ → 2 ዳሽቦርድ → 3 አድሆክ መጠይቅ → 4 የምዝግብ ማስታወሻ ስብስብ → 5 የተከፋፈለ ክትትል → 6 አስተካክል!
(1 ማስጠንቀቂያ → 2 ዳሽቦርድ → 3 አድሆክ መጠይቅ → 4 የምዝግብ ማስታወሻ ስብስብ → 5 የተከፋፈለ ክትትል → 6 አስተካክል!)

ሀሳቡ አንድ ዓይነት ማንቂያ (Slack Notification፣ SMS፣ ወዘተ) እናገኛለን እና ከዚያ በኋላ፡-

  • የግራፋና ዳሽቦርዶችን ይመልከቱ
  • የአገልግሎት መለኪያዎችን ይመልከቱ (ለምሳሌ፣ በፕሮሜቲየስ)
  • የምዝግብ ማስታወሻዎችን ይመልከቱ (ለምሳሌ፣ በ Elasticsearch)
  • ምናልባት የተከፋፈሉ ዱካዎችን (Jaeger፣ Zipkin፣ ወዘተ) ይመልከቱ።
  • እና በመጨረሻም የመጀመሪያውን ችግር ያስተካክሉ.

እዚህ፣ በ Grafana + Prometheus + Elasticsearch + ዚፕኪን ቁልል፣ አራት የተለያዩ መሳሪያዎችን መጠቀም አለቦት። ጊዜን ለመቆጠብ እነዚህን ሁሉ እርምጃዎች በአንድ መሣሪያ ማከናወን መቻል ጥሩ ይሆናል: Grafana. ይህ የምርምር አካሄድ በግራፋና ውስጥ ከስሪት 6 ጀምሮ መተግበሩን ልብ ሊባል ይገባል ። ስለዚህ የፕሮሜቲየስን መረጃ ከግራፋና በቀጥታ ማግኘት ይቻላል ።

ሎኪ - የፕሮሜቲየስ አቀራረብን በመጠቀም ምዝግብ ማስታወሻዎችን መሰብሰብ
የአሳሽ ማያ ገጽ በፕሮሜቲየስ እና በሎኪ መካከል ተከፈለ

ከዚህ ማያ ገጽ ላይ የተከፈለ ስክሪን ጽንሰ-ሀሳብን በመጠቀም ከፕሮሜቲየስ ሜትሪክስ ጋር የሚዛመዱ የሎኪ ምዝግብ ማስታወሻዎችን ማየት ይችላሉ። ከስሪት 6.5 ጀምሮ፣ ግራፋና ወደሚወዷቸው የተከፋፈሉ የመከታተያ መሳሪያዎች (Jaeger) አገናኞችን ለመከተል በሎኪ ሎግ ምዝግብ ማስታወሻዎች ውስጥ ያለውን የመከታተያ መታወቂያ እንዲተነተኑ ይፈቅድልዎታል።

Loki የአካባቢ ሙከራ

ሎኪን በአገር ውስጥ ለመፈተሽ ቀላሉ መንገድ docker-compose መጠቀም ነው። ዶከር አዘጋጅ ፋይል በሎኪ ማከማቻ ውስጥ ይገኛል። ማከማቻውን በሚከተለው ትዕዛዝ ማግኘት ይችላሉ። git:

$ git clone https://github.com/grafana/loki.git

ከዚያ ወደ የምርት ማውጫው መቀየር አለብዎት:

$ cd production

ከዚያ በኋላ የቅርብ ጊዜዎቹን የዶከር ምስሎች ማግኘት ይችላሉ፡-

$ docker-compose pull

በመጨረሻም የሎኪ ቁልል በሚከተለው ትዕዛዝ ተጀምሯል፡

$ docker-compose up

Loki ሥነ ሕንፃ

ከሎኪ አርክቴክቸር ጋር አንድ ትንሽ ንድፍ ይኸውና፡-

ሎኪ - የፕሮሜቲየስ አቀራረብን በመጠቀም ምዝግብ ማስታወሻዎችን መሰብሰብ
የሎኪ አርክቴክቸር መርሆዎች

የድር ደንበኛ አፕሊኬሽኖችን በአገልጋዩ ላይ ያካሂዳል፣ Promtail ምዝግብ ማስታወሻዎችን ይሰበስባል እና ወደ ሎኪ ይልካቸዋል፣ የድር ደንበኛ ደግሞ ሜታዳታ ወደ Loki ይልካል። ሎኪ ሁሉንም ነገር ሰብስቦ ወደ ግራፋና ያስተላልፋል።
ሎኪ እየሮጠ ነው። ያሉትን አካላት ለማየት የሚከተለውን ትዕዛዝ ያሂዱ፡-

$ docker ps

አዲስ የተጫነ ዶከር ከሆነ ትዕዛዙ የሚከተለውን ውጤት መመለስ አለበት፡-

IMAGE               PORTS                  NAMES
grafana/promtail:                          production_promtail_1
grafana/grafana: m  0.0.0.0:3000->3000/tcp production_grafana_1
grafana/loki: late  80/tcp,0.0.0.0:3100... production_loki_1

የሚከተሉትን ክፍሎች እናያለን:

  • Promtail፡ ምዝግብ ማስታወሻዎችን የማማለል ኃላፊነት ያለው ወኪል
  • ግራፋና፡ ታዋቂው ዳሽቦርድ መሳሪያ
  • ሎኪ፡ የውሂብ ማእከላዊነት ዴሞን

እንደ ክላሲክ መሠረተ ልማት (ለምሳሌ በምናባዊ ማሽኖች ላይ የተመሰረተ) የፕሮምቴይል ወኪል በእያንዳንዱ ማሽን ላይ መሰማራት አለበት። ግራፋና እና ሎኪ በአንድ ማሽን ላይ ሊጫኑ ይችላሉ.

ወደ ኩበርኔትስ ማሰማራት

በ Kubernetes ውስጥ የሎኪ ክፍሎችን መጫን እንደሚከተለው ይሆናል

  • daemonSet የፕሮምቴይል ወኪልን በአገልጋይ ክላስተር ውስጥ ባሉ በእያንዳንዱ ማሽኖች ላይ ለማሰማራት
  • የሎኪ ማሰማራት
  • እና የመጨረሻው የግራፋናን ማሰማራት ነው.

እንደ እድል ሆኖ, Loki እንደ Helm ጥቅል ይገኛል, ይህም ለማሰማራት ቀላል ያደርገዋል.

በ Heml በኩል መጫን

ሄኤምኤልን አስቀድመው መጫን አለብዎት። ከፕሮጀክቱ GitHub ማከማቻ ሊወርድ ይችላል። የተጫነው ለሥነ ሕንፃህ ተስማሚ የሆነውን ማህደር በማውጣት እና helm ላይ በመጨመር ነው። $PATH.

ማስታወሻ: የ Helm ስሪት 3.0.0 በቅርቡ ተለቋል። በውስጡ ብዙ ለውጦች ስለነበሩ አንባቢው ለመጠቀም ከመጀመሩ በፊት ትንሽ እንዲጠብቅ ይመከራል..

ለ Helm ምንጭ በማከል ላይ

የመጀመሪያው እርምጃ በሚከተለው ትዕዛዝ የ "loki" ማከማቻ ማከል ነው.

$ helm add loki https://grafana.github.io/loki/charts

ከዚያ በኋላ “ሎኪ” የተሰየሙ ጥቅሎችን መፈለግ ይችላሉ-

$ helm search loki

ውጤት:

loki/loki       0.17.2 v0.4.0 Loki: like Prometheus, but for logs.
loki/loki-stack 0.19.1 v0.4.0 Loki: like Prometheus, but for logs.
loki/fluent-bit 0.0.2  v0.0.1 Uses fluent-bit Loki go plugin for...
loki/promtail   0.13.1 v0.4.0 Responsible for gathering logs and...

እነዚህ ጥቅሎች የሚከተሉት ባህሪያት አሏቸው:

  • ጥቅል loki/loki ከሎኪ አገልጋይ ጋር ብቻ ይዛመዳል
  • ጥቅል loki / አቀላጥፎ-ቢት ከPromtail ይልቅ ምዝግብ ማስታወሻዎችን ለመሰብሰብ ፍሉንት-ቢን በመጠቀም DaemonSet እንዲያሰማሩ ይፈቅድልዎታል።
  • ጥቅል loki/promtail የምዝግብ ማስታወሻ ስብስብ ወኪል ይዟል
  • ጥቅል loki / loki-ቁልል፣ ሎኪን ከፕሮምቴይል ጋር ወዲያውኑ እንዲያሰማሩ ይፈቅድልዎታል።

Loki በመጫን ላይ

ሎኪን ወደ ኩበርኔትስ ለማሰማራት በ"ክትትል" የስም ቦታ ላይ የሚከተለውን ትዕዛዝ ያሂዱ፡

$ helm upgrade --install loki loki/loki-stack --namespace monitoring

ወደ ዲስክ ለማስቀመጥ አማራጩን ያክሉ --set loki.persistence.enabled = true:

$ helm upgrade --install loki loki/loki-stack 
              --namespace monitoring 
              --set loki.persistence.enabled=true

ማስታወሻ: Grafana ን በተመሳሳይ ጊዜ ማሰማራት ከፈለጉ፣ ከዚያ መለኪያውን ያክሉ --set grafana.enabled = true

ይህንን ትእዛዝ ሲያሄዱ የሚከተለውን ውጤት ማግኘት አለብዎት።

LAST DEPLOYED: Tue Nov 19 15:56:54 2019
NAMESPACE: monitoring
STATUS: DEPLOYED
RESOURCES:
==> v1/ClusterRole
NAME AGE
loki-promtail-clusterrole 189d
…
NOTES:
The Loki stack has been deployed to your cluster. Loki can now be added as a datasource in Grafana.
See <a href="http://docs.grafana.org/features/datasources/loki/">http://docs.grafana.org/features/datasources/loki/</a> for more details.

በ “ክትትል” የስም ቦታ ውስጥ ያሉትን የፖዳዎች ሁኔታ ስንመለከት ፣ ሁሉም ነገር እንደተዘረጋ እናያለን-

$ kubectl -n monitoring get pods -l release=loki

ውጤት:

NAME                 READY  STATUS   RESTARTS  AGE
loki-0               1/1    Running  0         147m
loki-promtail-9zjvc  1/1    Running  0         3h25m
loki-promtail-f6brf  1/1    Running  0         11h
loki-promtail-hdcj7  1/1    Running  0         3h23m
loki-promtail-jbqhc  1/1    Running  0         11h
loki-promtail-mj642  1/1    Running  0         62m
loki-promtail-nm64g  1/1    Running  0         24m

ሁሉም እንክብሎች እየሮጡ ናቸው። አንዳንድ ሙከራዎችን ለማድረግ ጊዜው አሁን ነው!

ከግራፋና ጋር በመገናኘት ላይ

በኩበርኔትስ ስር ከግራፋና ጋር ለመገናኘት በፖዳው ላይ ዋሻ መክፈት ያስፈልግዎታል። ለግራፋና ፖድ ወደብ 3000 ለመክፈት ትእዛዝ የሚከተለው ነው።

$ kubectl -n port-forward monitoring svc/loki-grafana 3000:80

ሌላው አስፈላጊ ነጥብ የ Grafana አስተዳዳሪ የይለፍ ቃል መልሶ ማግኘት አስፈላጊ ነው. የይለፍ ቃሉ በሚስጥር ይጠበቃል loki-grafana በመስክ ውስጥ .data.admin-user በ base64 ቅርጸት.

እሱን ወደነበረበት ለመመለስ, የሚከተለውን ትዕዛዝ ማስኬድ ያስፈልግዎታል:

$ kubectl -n monitoring get secret loki-grafana 
 --template '{{index .data "admin-password" | base64decode}}'; echo

ይህን የይለፍ ቃል ከነባሪው የአስተዳዳሪ መለያ (አስተዳዳሪ) ጋር ተጠቀም።

Grafana ውስጥ Loki ውሂብ ምንጭ ትርጉም

በመጀመሪያ የሎኪ መረጃ ምንጭ (ውቅር / የውሂብ ምንጭ) መፈጠሩን ያረጋግጡ።
አንድ ምሳሌ እነሆ:

ሎኪ - የፕሮሜቲየስ አቀራረብን በመጠቀም ምዝግብ ማስታወሻዎችን መሰብሰብ
ለሎኪ የውሂብ ምንጭ የማዘጋጀት ምሳሌ

"ሙከራ" ላይ ጠቅ በማድረግ ከሎኪ ጋር ያለውን ግንኙነት መሞከር ይችላሉ.

ለሎኪ ጥያቄዎችን በማቅረብ ላይ

አሁን ወደ ግራፋና ይሂዱ እና ወደ "አስስ" ክፍል ይሂዱ. ምዝግብ ማስታወሻዎችን ከመያዣዎች ሲቀበሉ ሎኪ የኩበርኔትስ ሜታዳታን ይጨምራል። ስለዚህ, የአንድ የተወሰነ መያዣ ምዝግብ ማስታወሻዎች ማየት ይቻላል.

ለምሳሌ፣ የፕሮምቴይል መያዣ ምዝግብ ማስታወሻዎችን ለመምረጥ፣ የሚከተለውን መጠይቅ መጠቀም ይችላሉ። {container_name = "promtail"}.
የሎኪ ውሂብ ምንጭ እዚህም መምረጥን አይርሱ።

ይህ መጠይቅ የመያዣ እንቅስቃሴን እንደሚከተለው ይመልሳል፡-

ሎኪ - የፕሮሜቲየስ አቀራረብን በመጠቀም ምዝግብ ማስታወሻዎችን መሰብሰብ
የጥያቄ ውጤት በግራፋና ውስጥ

ወደ ዳሽቦርድ በማከል ላይ

ከግራፋና 6.4 ጀምሮ የምዝግብ ማስታወሻ መረጃዎችን በቀጥታ በዳሽቦርዱ ላይ ማስቀመጥ ይቻላል። ከዚያ በኋላ ተጠቃሚው በጣቢያው ላይ ባሉት የጥያቄዎች ብዛት መካከል ወደ የመተግበሪያ ዱካዎች በፍጥነት መቀያየር ይችላል።

ይህን መስተጋብር የሚተገብር ምሳሌ ዳሽቦርድ ከዚህ በታች አለ።

ሎኪ - የፕሮሜቲየስ አቀራረብን በመጠቀም ምዝግብ ማስታወሻዎችን መሰብሰብ
የናሙና ዳሽቦርድ ከፕሮሜቲየስ ሜትሪክስ እና ከሎኪ ምዝግብ ማስታወሻዎች ጋር

የሎኪ የወደፊት

ሎኪን በግንቦት/ሰኔ ወር ከስሪት 0.1 ጋር መጠቀም ጀመርኩ። ስሪት 1 አስቀድሞ ዛሬ ተለቋል፣ እና 1.1 እና 1.2 እንኳን።

ስሪት 0.1 በበቂ ሁኔታ የተረጋጋ እንዳልሆነ መቀበል አለበት. ነገር ግን 0.3 ቀድሞውኑ ትክክለኛ የብስለት ምልክቶችን አሳይቷል, እና የሚቀጥሉት ስሪቶች (0.4, ከዚያም 1.0) ይህን ስሜት ብቻ አጠናክረውታል.

ከ 1.0.0 በኋላ ማንም ሰው ይህን ድንቅ መሳሪያ ላለመጠቀም ሰበብ ሊኖረው አይችልም.

ተጨማሪ ማሻሻያዎች ስለ ሎኪ መሆን የለባቸውም ፣ ግን ይልቁንስ ከምርጥ ግራፋና ጋር ያለው ውህደት። በእርግጥ፣ Grafana 6.4 አስቀድሞ ከዳሽቦርድ ጋር ጥሩ ውህደት አለው።

Grafana 6.5፣ በቅርብ ጊዜ የተለቀቀው፣ የምዝግብ ማስታወሻዎችን ይዘቶች በJSON ቅርጸት በራስ-ሰር በመገንዘብ ይህን ውህደት የበለጠ ያሻሽላል።

ከታች ያለው ቪዲዮ የዚህን ዘዴ ትንሽ ምሳሌ ያሳያል.

ሎኪ - የፕሮሜቲየስ አቀራረብን በመጠቀም ምዝግብ ማስታወሻዎችን መሰብሰብ
በግራፋና ውስጥ የተሰሩ የሎኪ ሕብረቁምፊዎችን መጠቀም

ከJSON መስኮች አንዱን ለምሳሌ፣ ለሚከተሉት መጠቀም ይቻል ይሆናል።

  • ወደ ውጫዊ መሳሪያ ያገናኛል
  • የምዝግብ ማስታወሻ ይዘት ማጣሪያ

ለምሳሌ፣ ወደ ዚፕኪን ወይም ጄገር ለመሄድ traceID ላይ ጠቅ ማድረግ ይችላሉ።

እንደተለመደው አስተያየቶቻችሁን በጉጉት እንጠብቃለን እና እንድትጋበዙ እንጋብዝዎታለን ዌቢናርን ይክፈቱበ 2019 የዴቭኦፕስ ኢንዱስትሪ እንዴት እንደዳበረ እና ለ 2020 ሊሆኑ የሚችሉ የልማት መንገዶችን የምንወያይበት።

ምንጭ: hab.com