ሰላምታ አቅርቡ፣ 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 ላይ ጠቅ ማድረግ ይችላሉ።
እንደተለመደው አስተያየቶቻችሁን በጉጉት እንጠብቃለን እና እንድትጋበዙ እንጋብዝዎታለን
ምንጭ: hab.com