
ααΎααα Badoo αααα»αααΆαααΆαααΆαα·α αα ααΌααα αα αααα·ααααΆααααΈα αα·αααΆααααααααΆααΎααααΌαααααΎααΆαα αααα»αααααααααααααααΎαα¬α’ααα ααΎαα ααα αααααααααΆααα·ααααΆαα½ααααα»αα ααααααΆααα·ααααΆααΆαααααααΆαα½ααα ααααα ααΆααααΌαααΆαα§αααα·αααα Loki αααααΆαααααααααααααΌααααα»ααααααα ααα»α
Loki ααΊααΆαααααααααΆααααααΆααααΆααααααΆαα»α αα·αααΎααααααα ααα» α αΎααααααααααααααααΌααααααααααααα’αΆα ααααααααΆααααααΆααααΆααα·ααΆα αα·ααααααΌααα·αααααααα ααΆαα Prometheus αααααα αα αααα»αααα§αααΆ ααΆαα’αΆααααααα½αααααααααααααΌαααΆαα ααααααΆα αααααααΌαααΆαααααααααααΆααααΆαααααααααα’ααααααααΎαα ααΎαα αΆααα’αΆααααααααΎα’αααΈααα Loki α’αΆα ααααΎααΆα αααααααα·αααα’αααΈαααααΆααααα αα·αααααα·αααΆαααααΆα’αΆα ααΎααα½ααΆαααααΎααααα½α ELK αααααΆααααααααΎαααααΎα₯α‘αΌααααα
ααΎα‘αΌααΈααΊααΆα’αααΈ
Grafana Loki ααΊααΆαααα»ααααααΆαααΆαα»αααααΆαααααααααααααααααΆααααααα αα·αααΌα ααααααααααααααααααΆαααααααααα Loki ααΊααα’ααααΎαααα·αααααΆαααααΎαα·αα·αααααααα·ααααααααααΆαααααααα ααα» - ααααΆα (ααΌα αα αααα»α Prometheus) α αΎαααααα½ααααααα ααα»ααααααα½αα―αααααααααααααΆαααα ααΆααααΆααααΆα ααααα‘ααα
,
αα»αααααααα»αα αΌααα αααα»αα’αααΈαααα’αααα’αΆα ααααΎααΆαααΆαα½α Loki αααα»αα αααααααΆααααΈα’αααΈαααααΆααααααα "αααα·αααααΆαααααΎαα·αα·αααααααα·ααααααααααΆ" α α αΌαααΎααααααααααα·ααΈααΆααααα Loki αα·ααα·ααΈααΆαααααααααΎαα·αα·αααααα αααα»ααααααααααΆαααααααααααΈ ααΌα ααΆ Elasticsearch αααααααΎα§ααΆα ααααααααααΆααααΈαααααα ααα» nginxα
172.19.0.4 - - [01/Jun/2020:12:05:03 +0000] "GET /purchase?user_id=75146478&item_id=34234 HTTP/1.1" 500 8102 "-" "Stub_Bot/3.0" "0.001"αααααααααααααααΈααααα½αααΆααααΌα αα½αααΆααααΆααααααΆαααααα user_id αα·α item_id ααααααααΆα αααΎα α αΎααααααΆαα»αα’αααΈααααααααΆαααΆαα·αα·αααααααα α’ααααααααααααααα·ααΈααΆααααααααααΊααΆα’αααα’αΆα ααααΎαααΆααααα½ααααα»αααααααΆαααΆααααΆαααΆαααα αα αααααΆααα·ααααααααααΎαααααΆααα’αααααα·ααα αααα»ααα·αα·ααααα ααα»ααααα’αααααααΌαα αααΆααααααΆααααΆαααααα αααα»αααααα·αα·ααααααααΆαααΆααααααααααααα ααΆαααααΌαααΆαα’αααα αα αΆαα ααΆαααααα αα·αα·ααααα’αααααααααααααααα ααα»ααΊα’αΆα ααααααααααΆααααα»αααα ααα ααΉααααααα ααα»αααα½αα―αα ααΎααααΈααααααααααΆαααΆαααα αα αα·αα·ααααααααΌααααααα»ααα αααα»αα’αααα αα αΆαα α αΎαααΆααααααααΆααΆααααα αααΎα αααααααααααΎαα‘αΎαααΆααααααΏα αα·αααΆαααααΎααααΆααα’αααα αα αΆαααΆααααα αααΎαα
αα·ααΈααΆααααα Loki αααααΌαα±ααααΆααααα·ααααααα αΆαααΆα αααα»ααααααααααααΌαααΆααααααα ααααΈααααα’αααααααααΆα ααα½αααααααααααααΌα α αα·ααΈαααααΎαααα½αααΆααα·αα·ααααααΌα αα½α α αΎαα’αΆα ααααααααα·αααααααααααααααΆααΆααααααααΆ αα·αααΆααααααΆαααααΎαα·αα·αααα α αΎααααααΆαααααααααα’αααΈααααα ααααααααααΎααααααααααααΆ α¬ααΆααααααααααααα’ααααααα ααααΎαααΆααααα αΆααααΌα ααΆαα·αααΏααααα»αααααα ααα»αααα Loki αααααααααΎαα ααΆαααααααΆα αααΎα α αΎαααααα·ααααα·αα½αααΆααααααααΆ αααααααΎαααΆααα·αααααααα½αα ααα½ααααααα»αααααααααααααΈα α ααα½ααα shards αα·αααααΎαααΆαααΆα‘αααα αααα»ααα½αααΆααΊα’αΆα ααααααα ααΆααααααααααΆα; ααΌα ααααα ααα½ααα·αααααααααα’αΆα ααααΎαααΆααααα»ααα½αα―αααΆαααααααααΆααΊα’αΆααααααα ααΎααα·ααΆαααααααΆααααααΆααααααα
ααΆααααααΌααααΆαααααααααααα ααΏα αα·αααααααααααααααΆαα brute-force ααααααααΆααΌα αα½αα’αα»ααααΆαα±αα Loki αααααααααααααααΎαααααααααααα ααΆα’αΆα ααααΌαααΆαααααααα ααΆαααααααααααααα αα·ααααααΈαααΆααααααΌαααΆαα
ααα Loki ααΆααααΆαααΆαα»ααΈααΊ Promtail, Loki, Grafana α Promtail αααααΌααααααα ααα» ααααΎαααΆααα½αααΆ α αΎααααααΌαααΆαα
Loki α Loki αααααΆαα½αααα α αΎα Grafana α’αΆα
ααααΎαα»ααα·ααααααααΈ Loki α αΎααααα αΆαααΆα ααΆααΌαα
Loki α’αΆα
ααααΌαααΆαααααΎαα·αααααΉααααααααΆααααΆααααααΆαα»ααααααα ααα» αα·αααΆααααααααααΆαααααα½αααΆααα»αααααααα αααααΆααααΌααααααααΌαα±ααΆαααα’ααα
αΆααααααααΆααααααΎαααΆα αα·ααα·ααΆααα·ααααααα
αΌααααααααΎαα·ααΈ Prometheus α
ααΆααα·αααααΆα’αααΈααααΎαααΆαααα‘αΎαα’αΆα
ααααΆα .
ααΆαααααααααααααα ααα»
α’αααα’αΆα ααααααααααααα ααα»αα αααα»αα ααα»α αααααΆαααα·ααα Grafana β Explorer α αααα½αααααΎααΆααΆ LogQL αααααααααααΉα PromQL αααααααΎααα Prometheus α ααΆαααααΆααα ααΆα’αΆα ααααΌαααΆααα·αααΆααΆ grep α ααα αΆαα
α ααα»α αααααΆαααααααααααΎααα ααΌα αααα

αααα½ααααα½αααΆααΆαααΈααααααα α§αααααααααΎαααΎα αα·ααααααα α§αααααααααΎαααΎαααΊααΆααΆααααααααααααα·ααααααααααΆαααααΆαααααΎαα·αα·αααα (ααααΆα) αααααααΌαααΆαααααααα αααααα ααα» α αΎααααααααΊααΆααααα’ααααααααααα α¬ regexp αααααααα ααααΌααααααααααΆαααααααααααα’αααααααΎαααΎαα αα αααα»αα§ααΆα αααααΆαααΎ: αα αααα»αααααααα’ααααΆαα - α§αααααααααΎαααΎαα’αααΈααααααααΆααααααΆααααΈ - αααααα
{image_name="nginx.promtail.test"} |= "index"αααααΆααααα·ααΈααα Loki ααααΎαααΆα α’ααααα·αα’αΆα αααααΎααααα½ααααααααΆαα§αααααααααΎαααΎααα ααα»ααααααααΆαα’αΆα ααααΌαααΆααααααΎαααΆααΌαα ααΆααααα’αααα αΌαα α·αααα
α§αααααααααΎαααΎαααΊααΆααααααααααΉαααααααααα αααα»αααααααα’ααααΆααα α’αααα’αΆα αααα αΌαααααΆααΌαα§αααααααααΎαααΎα αα·ααααααΆαααααααααααααααααααααααααααΆαααααααΎαααααΆαααααΆααα·ααΈ =, != α¬ααααααααααααΆα
{instance=~"kafka-[23]",name!="kafka-dev"}
// ΠΠ°ΠΉΠ΄ΡΡ Π»ΠΎΠ³ΠΈ Ρ Π»Π΅ΠΉΠ±Π»ΠΎΠΌ instance, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ kafka-2, kafka-3, ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡ dev αααααααΊααΆα’ααααα α¬ regexp αααααΉααααααα·ααααααααΆααα’αααααααα½αααΆααααα’αααααααΎαααΎαα
ααΆα’αΆα αα αα½α ααΎααααΈααα½αααΆαααααΆα ααα’αΆαα α»ααααααα’ααααΎαα·αααααααααααα½αααΆααααα»αααααααααααααα α§ααΆα ααα α’αααα’αΆα ααααααααααΈααΆαααΉαααΆααααααΆαααΎαα‘αΎααα αααα»ααααααα ααα» nginx ααααΆαα»αααααΆαααααα’αααααααααααααα

ααΆααα·αααααΆαααααααααααααααα·αααα’αΆα ααααΆααα αααα»αα―αααΆα .
ααΆααα·ααΆααααααα ααα»
ααΆααα·ααΈααΆα αααΎαααΎααααΈαααααΌααααααα ααα»α
- αααααΆααααα½αααΈ Promtail αααααΆαααΆαααΆαα»αααααααΆαααααααααααΆαααααααΌααααααα ααα»α
- αααααααΆααααΈαα»α docker αααααααΎ
- ααααΎ Fluentd α¬ Fluent Bit αααα’αΆα αααααΌααα·αααααααα Loki α αα·αααΌα Promtail αα½αααααΆαα§αααααααααααααααααα½α ααΆααααα αααααΆαααααααα ααα»ααααΎαααααααααααααα α αΎαααα’αΆα ααααααααααααααα ααα»α αααΎααα½ααααααα
ααΆααααααΆ Promtail ααααΌαααΆαααααΎαααααΆααααΆααααα ααΆααααΎααΈαααΆαα
- αααααααααααααα·ααααααα
- ααααΆααααααΆααα αα½αααα
- αααααΌααα·αααααααα Loki α
αα αα α»αααααα Promtail α’αΆα α’αΆααααααα ααα»ααΈα―αααΆαααΌαααααΆα αα·αααΈαα·ααΆαα»αααααααα· systemd α ααΆααααΌαααααααΌαααΆαααα‘αΎααα ααΎαααΆαααΈαααΈαα½ααααααααααα ααα»ααααΌαααΆααααααΌαα
ααΆαααΆααα½ααααα αΌαααΆαα½α Kubernetesα Promtail ααααΎαααααΆαααΆαααα ααααααααααααααααααααα·ααΆαααα Kubernetes REST API α αΎααααααΌααααααα ααα»ααΈααααΆαα ααααΆαααα α¬αα αααααΆααααααΆαααααΆαααααααα’ααααΎαα·ααααααααααΆααΈ Kubernetes (ααααααα αααααα―αααΆαααα)α
α’αααααα’αΆα αααα½αααααΆααααααα’ααααΎαα·ααααααααΈαααααα ααα»αααααααΎ Pipeline α Pipeline Promtail α’αΆα ααΆααα½αααααααααααααΆααααΆαα ααααααΆααααα’α·ααααααα - in αααα»αααΉαααααααααΆααααααΆααααΌαααΆα nuances αα½αα ααα½αα
- ααααΆααααΆααα·ααΆα. αααααΊααΆααααΆααααΆα RegEx αα·α JSON α αα ααααΆααααΆαααα ααΎαααααααα·ααααααα ααααΈαααααα ααα»α αΌααα αααα»αα’αααΈαααααα α ααΆ αααααΈαααααα ααα ααΎαα’αΆα αααααα ααααΈ JSON αααααααΆααααα ααααααΆααααααΎαααααΌαααΆααα αααα»ααααααΈαααααΆααααααα αα α¬ααΆααααααααααααααααΆ (RegEx) ααααααα»ααααααΆααααααααααΌαααΆα "ααΌαααΆα" αα αααα»ααααααΈαααααΆααααααα ααα αααααΈαααααΆααααααα ααααΊααΆααααΆααααααααααααααΆααα α»α ααΊααΆαααααααααααΆα α αΎααααααααΊααΆαααααααααααΆααΈαααααα ααα»α
- ααααΆααααΆαααααΆααααααΌα. ααααΆααβααΆαβαααβααΆαβαααααΎαβααΈαα ααααα αααβααΎαβαααααβα αααΆααβααααααα αα·αβααααα - αααααβαα·ααααααβαααααΆααβααΆαβαααααααβααΈβαααααΈβαααααβα ααα ααααα·αααΎαα·αααΆαααΆααααααααα αααα»ααααααΈαααααΆααααααα αααααααααΆααΉαααααΌαααΆααααααΎαα ααΌα ααααααΆα’αΆα ααααΎαα ααΆαααΎααααΈαααααΎαααααΆαααααα·αααα’ααααΎαααααΈαααααΆααααααα ααα αα ααααΆααααΆαααα ααΎαα’αΆα αααα ααα·αααααααα αααα»ααααααΈαααααΆααααααα αααααααααΎααΆαααααααΆαα . ααΎαααΈααα ααΎαααααΌαααα αα αΆαααΆ αααααΈαααααΆααααααα ααααααΌαααΆααααα»ααααααα‘α»ααααααα αααααααΎα±ααααΆα’αΆα ααααΎαα ααΆα α§ααΆα ααα ααΎααααΈαα·αα·αααααΎαααααααα αααα»αααΆα β{{if .tag}αααααααααΆαααΆα{end}}βα αα»αααααΆαααααααααααα ααααα·ααα»α αα·ααα»αααΆαααααα’αααααα½αα ααα½αααΌα ααΆ αααα½α αα·αααΆααα
- ααααΆααααΆααααααααααΆα. αα
ααααΆααααΆαααα α’αααα’αΆα
ααααΎα’αααΈαα½αααΆαα½αααΆααααααααα
- αααααΎαααααΆαααΈαα·αααααααααααΆααααααα αα αααααΉαααααΌαααΆαααααΎαα·αα·ααααααα Loki α
- ααααΆααααααΌα α¬ααααααααααααΆααααΉαααα·ααΆαααααΈαααααα ααα»α
- ααααΆααααααΌααα·αααααα (αααααα ααα»α’ααααα) αααααΉααα Loki α
- αααααΎααααααΆααα
- ααααΆααααΆααααα. ααααΆααααΆαααααΆαααααα½α αααααΎαα’αΆα ααααΎαααααααααΆαααααΎααα·αααααΌαααΆα /dev/null α¬ααααΎαα½αααΆαααααΆααααααΎαααΆαααααααα
αααααααΎα§ααΆα αααααααααΎαααΆααααααα ααα» nginx ααααααΆ αααα»αααΉααααα αΆαααΈαααααααα’αααα’αΆα ααααααααα ααα»αααααααΎ Promtail α
αααααΆααααΆαααααΎααααα ααΌαααααΌαααΆα nginx αααααΆααααααα jwilder/nginx-proxy:alpine ααΆ nginx-proxy αα·ααααα·αααΌα αα½ααααα’αΆα αα½ααααα½αα―αααΆαααα HTTP α αααα·αβααΆαβα ααα»α βαααα ααβααΆβα αααΎα αααβααΆβα’αΆα βαααααβααΆαβααααΎαβααβαααβααΆαβααα αβαα»αβααααΆ αααβααΆαβααααΆαααΆα HTTP αα»αβααααΆ αα·αβααΆαβααΆαβαααααΆαβαααβαααααβααααΆα
ααΎαβααΉαβαααααΌαβαααααβα ααα»βααΈ docker containers αααβα’αΆα βααβααΎαβααΆαβααααΌα /var/lib/docker/containers/ / -json.log
αα αααα»α docker-compose.yml ααΎαααααααα ααΆαααααααα Promtail α αΎααααααΆααααααΌααα ααΆαα configα
promtail:
image: grafana/promtail:1.4.1
// ...
volumes:
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- promtail-data:/var/lib/promtail/positions
- ${PWD}/promtail/docker.yml:/etc/promtail/promtail.yml
command:
- '-config.file=/etc/promtail/promtail.yml'
// ...
ααααααααααΌααα ααΆαααααααα ααα»αα ααΆαα promtail.yml (ααΆααααααΎα "docker" αα αααα»α config αααααααΎααΌα ααααΆαααα»ααααααΆαααα½α ααα»ααααααΆαα·αα αααΆαααα)α
scrape_configs:
- job_name: containers
static_configs:
labels:
job: containerlogs
__path__: /var/lib/docker/containers/*/*log # for linux onlyαα ααααααααΆαααααααα ααΆαααααααααααααααΌαααΆαααΎα Loki ααΉαααα½αααΆααααααα ααα»ααΈαα»αααΊαααααΆααα’ααα ααΎααααΈαααααΆααααα αΆααα ααΎαααααΆααααααΌαααΆααααααααααΆαααααΎααααα nginx αα αααα»α docker-compose.yml - ααααααααΆααααααααΆαα αααα»αααΆαααααΆαα
proxy:
image: nginx.test.v3
//β¦
logging:
driver: "json-file"
options:
tag: "{{.ImageName}}|{{.Name}}"ααααααα½α promtail.yml αα·αααα‘αΎα Pipeline α αααααα ααα»ααΆαααΌα ααΆααααααα
{"log":"u001b[0;33;1mnginx.1 | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /api/index HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.096"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.66740443Z"}
{"log":"u001b[0;33;1mnginx.1 | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /200 HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.000"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.702925272Z"}ααααΆααααΆααααααα
- json:
expressions:
stream: stream
attrs: attrs
tag: attrs.tagααΎαααΆαααααΆαααααααΈα attrs attrs.tag (ααααα·αααΎααΆα) ααΈ JSON α αΌα α αΎαααΆααααΆα αΌααα αααα»ααααααΈαααααα ααα
- regex:
expression: ^(?P<image_name>([^|]+))|(?P<container_name>([^|]+))$
source: "tag"ααααα·αααΎααΆα’αΆα ααααΎαα ααΆαααΎααααΈααΆααααΆαααααΆααα αααα»ααααααΈαααααΆααααααα ααααααααααααΎ regexp ααΎαααααααααααααΌαααΆααα·ααα»αααΊαααα
- labels:
image_name:
container_name:ααΎααααααααααΆαα ααααα·αααΎααααΆααα α»α image_name αα·α container_name ααααΌαααΆαααααΎααα αααα»ααα·αααααααααααΆααααααα αα αααααααααααααα½αααααΉαααααΌαααΆαααααααα ααααΆααααααααααα
- match:
selector: '{job="docker",container_name="",image_name=""}'
action: dropααΎααααααααααααα ααα»ααΆααα’ααααααα·αααΆαααααΆα image_name αα·α container_name αααααα
- match:
selector: '{image_name="nginx.promtail.test"}'
stages:
- json:
expressions:
row: logαααααΆαααααααα ααα»ααΆααα’αααααααααα image_name ααααΎααΉα nginx.promtail.test ααΆαααααΆααααααα ααα»α ααααΈαααααα ααα»ααααα α αΎαααΆααααΆαα αααα»ααααααΈαααααΆααααααα αααααααααΎααααΆααα α»α αα½ααααα
- regex:
# suppress forego colors
expression: .+nginx.+|.+[0m(?P<virtual_host>[a-z_.-]+) +(?P<nginxlog>.+)
source: logrowααΎααααα’αΆααααααΆαααααα αΌαααΆαα½αααααααααααααΆ α αΎαααΆααααΆαααΈααα·αααα·α nginx αα·ααααααΆαααααααα ααα» nginx α ααα
- regex:
source: nginxlog
expression: ^(?P<ip>[w.]+) - (?P<user>[^ ]*) [(?P<timestamp>[^ ]+).*] "(?P<method>[^ ]*) (?P<request_url>[^ ]*) (?P<request_http_protocol>[^ ]*)" (?P<status>[d]+) (?P<bytes_out>[d]+) "(?P<http_referer>[^"]*)" "(?P<user_agent>[^"]*)"( "(?P<response_time>[d.]+)")?ααααααααα ααα» nginx ααΆαα½αααααααααααααΆα
- regex:
source: request_url
expression: ^.+.(?P<static_type>jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$
- regex:
source: request_url
expression: ^/photo/(?P<photo>[^/?.]+).*$
- regex:
source: request_url
expression: ^/api/(?P<api_request>[^/?.]+).*$αααααααΎ_urlα αααααΆααααα½αααΈ regexp ααΎαααααααααααααααααααΎα ααΎααααΈαα·αα·αααα ααΌααα αα API αα·αααααααααααααααΌαααααΆαα αααα»ααααααΈαααααΆααααααα ααα
- template:
source: request_type
template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"αααααααΎααααα·ααααα·ααααΆααααααααααα αααα»α Template ααΎααα·αα·αααααΎαααΆααααααΆαααα‘αΎααα αααα»ααααααΈαααααΆααααααα αα α αΎααααααααααααααααααΌαααΆααααααΆααααΆα request_type: photo, static, APIα α αΆααα ααααααααααααααα·αααΎαααΆαααα α₯α‘αΌαααα request_type ααΆαααααααααααΎα
- labels:
api_request:
virtual_host:
request_type:
status:ααΎααααααααααΆα api_request, virtual_host, request_type αα·αααααΆαααΆα (ααααΆαααΆα HTTP) αααααα’ααααΎα’αααΈαααααΎαααΆααααααααααααΎααααΈααΆαααα αααα»ααααααΈαααααΆααααααα ααα
- output:
source: nginx_log_rowααααΆααααααΌααα·αααααα α₯α‘αΌαααααααααα ααα» nginx αααααααΌαααΆααααα’αΆαααΈαααααΈαααααΆααααααα αααα ααΆαα Loki α

αααααΆααααΈααααΎαααΆαααΆααααααααΆαααΎ α’αααα’αΆα ααΎαααΎαααΆααΆαα»ααΈαα½ααααααΌαααΆαααΆααααααΆααααααα’ααααΎαα·ααααααααΈαααααα ααα»α
ααΌαα αα αΆαααΆααΆααααααα ααααααΆαααΆαα½αααΉαα ααα½αααα αααΎαααααααα (cardinality) α’αΆα αααααααααΏα Loki αααΆαααααΆααα αααααΊα’ααααα·ααα½αααΆαααα αααα»ααα·αα·ααααα§ααΆα ααα user_id α ααΌαα’αΆαααααααα’αααΈααΏαααααα αααα»αα’ααααα"α ααα»ααααααααα·αααΆααααααΆα’ααααα·αα’αΆα αααααααααα user_id αααααααΆααα·αα·ααααααα ααΆα αΆαααΆα ααααα»αααΆαααααΎααααααα αααααααααα ("α αΆαααα" ααααα ααΆααα·αααααα) α αΎααα·αα·αααααα ααΈαααααΎααα½ααΆα’ααααααααα’ααααααααΆαααααααΈαα
ααΆαααΎαααΎααααααα ααα»

Loki α’αΆα ααΎααα½ααΆααααααα·αααααααααααΆααααααΌαααΆα Grafana αααααααΎ LogQL α αα»αααΆαααΆααααααααααΌαααΆαααΆααααα
- α’ααααΆ - α ααα½ααααααααααΆαααα»ααα½ααα·ααΆααΈ;
- ααΆααααΆααααααααΆ - α ααα½ααααααααααΆαα αααα»ααα½ααααααΆααααααα±ααα
ααΆααααΆααα»αααΆαααα»α ααααΌα ααααα αα·αααααααααααααααα α’αααα’αΆα αααααΎαααααΆα αααααααα»αααααΆα α§ααΆα ααα ααααΆα ααααα ααα½αααα α»α HTTPα

ααααααα·ααααααααααΆαααΎααααα Loki ααΆααα»αααΆααα·α ααΆαααααααα·αααααα Prometheus ααααα·α (α§ααΆα ααα α’ααααα·αα’αΆα ααααΆααααααΌαααΏααααααααΆααα) ααα»αααα Loki α’αΆα ααααΌαααΆαααααΆααααΆααααααααααα Prometheus α αααα»αβαα·αβααααΆααβααΆβααΎβαααβααΆβα’αΆαααααα·αα·ααΆβαααβααΆαβα αβααααβααΆβα―αααΆαβα¬βα’ααβαααβαα ααα»ααααβααΆαβαα·αα·α ααααβαααβααΆαβααααΎαβααβααΈβα’αααβα’αα·αααααααβ ααΆα§ααΆα ααα ααΆααΊααααα αααΆααα₯αααα αα α αΎα Loki ααΊααααΌαααααΆαααΆαααααααααΆαα½α PromQL α
αααααα Loki ααΆααααααα·αααααααααααΆααααααα Prometheus α αΎααααααα URL /lokiα

α αΎαααΎαα’αΆα αααααΎαααααΆα αα ααΌα ααΆααΎααααα»αααααΎααΆαααΆαα½αααααααααΈ Prometheusα

αααα»ααα·αααΆααΆααα»αααααΆαααα»αααΆαααΊααααααα’αΆαααα α αΎαα’αααα’αα·ααααααααΉααα½ααα»αααΆαα αααα’ααΆααα

αααααα
Loki αααααααΌααααααααΆααααα»αααΆαααΆααααααααααααααΈαααααα ααα» α αΎααααααΌαααΆαα Prometheus α α§ααΆα ααα αααααα ααα» nginx ααΆαα ααα½ααααααα»ααα½αααΆαααααΎααα α αΎαααΆαα½αααΉαααΆαααααααααΆααααΆαααααααααααααααα ααα»αααααααΆα αααααααΆαα·αααΆαα·ααΆααΈαααααΆααααΌαααΆαααΎααααΈααααΎαααα αα·αααααααααα’αΆα ααααΌαααΆααααααα αα αα·αααααΎαα ααΆαα Prometheus α
ααααααααααααα½αααααα promtail.ymlα
- match:
selector: '{request_type="api"}'
stages:
- metrics:
http_nginx_response_time:
type: Histogram
description: "response time ms"
source: response_time
config:
buckets: [0.010,0.050,0.100,0.200,0.500,1.0]
- match:
selector: '{request_type=~"static|photo"}'
stages:
- metrics:
http_nginx_response_bytes_sum:
type: Counter
description: "response bytes sum"
source: bytes_out
config:
action: add
http_nginx_response_bytes_count:
type: Counter
description: "response bytes count"
source: bytes_out
config:
action: incαααααΎαα’αα»ααααΆαα±ααα’αααααααα αα·αααααΎαα αα α»ααααααααΆααααααααααααα’ααααΎαα·ααααααααΈαααααΈαααααΆααααααα ααα ααααααααΆααααααα·αααααΌαααΆαααααΎαα Loki αα - αα½αααΆαααα αΆααα αααα»α Promtail /metrics endpointα Prometheus ααααΌαααααααΌαααΆαααααααα ααΆααααααααααΎααααΈααα½ααα·ααααααααΈααααΆααααΆααααα αααα»αα§ααΆα αααααΆαααΎ αααααΆαα request_type="api" ααΎααααααΌαααααααα’ααΈααααΌααααΆαα ααΆαα½αααΉαααααααααααααααα ααΆααΆααααα½ααααα»αααΆαααα½αααΆαααΆαααα αααααΆαααα·αα·αααα αα·αααΌααα ααΎααααααΌαααααΌααααα αα·αα ααα½ααα½αααααααααΎαααΆαααα½αααααΎααααΈααααΆααΆαααααα
ααΌαα’αΆαααααααα’αααΈαααααα .
ααΎαα ααααα ααΎ Promtailα
promtail:
image: grafana/promtail:1.4.1
container_name: monitoring.promtail
expose:
- 9080
ports:
- "9080:9080"ααΎαααααΎα±ααααααΆααααΆαααααααααααΆααα»ααααα promtail_custom ααΆααααα αΆααααα½αα

ααΆαααα‘αΎα Prometheus α ααααααααααΉαααΆαααΆαα
- job_name: 'promtail'
scrape_interval: 10s
static_configs:
- targets: ['promtail:9080']α αΎαααΌαααααΆα ααα

αα·ααΈαααα’αααα’αΆα ααααΎαα§ααΆα ααα αααα½αααΊααααα»αα ααα½ααα½αα α’αααααα’αΆα ααααααα ααΆααααααααααΆααααα½ααα·αα·ααααααααΆααααααααααΆααααααααααα
ααΆαααααΎααΆαααααααΆα
Loki α’αΆα βααΆαβααΆααβααααβααααααααβαααααΈαβαααα½α αα·αβααααα (ααααβαααβα’αΆα βααααΎβααΆαααααααΆαβααΆα)α αααα»αααααΈααΈααΈα ααΆα’αΆα αααααΆαα»ααα·αααααααα αααα»αααα α αΎαααααΆαα αα·ααα·αα·ααααααααΌαααΆααααααΆαα»ααααα‘ααααΈααααΆα αα αααα»ααααα 1.5 αααααααΆααααα»αααΆααααααΆαα»ααα αααααααα½αααααΌαααΆαα’αα»αααα ααα»ααααααΆαα·αααΆααααααΌαααΆαααααααΆαα±ααααααΎααΆαα αααα»αααΆαααα·ααααααα

ααααΆααα’αΆα ααααΌαααΆααααααΆαα»ααααα»αααα ααααα»ααααααααΌαααααΆααΆαα½α S3 α αΎαααΌαααααΆααα·αααααααααα’αΆα ααααΎααΆαααααααΆαααΆαααααααααα’αΆα ααααΌαααΆαααααΎααΎααααΈαααααΆαα»ααααααααααα Cassandra, BigTable α¬ DynamoDB α ααααααααααααααα Loki - α’αααα ααα αΆα (αααααΆααααΆαααααα) αα·α Querier (αααααΆαααααα½α) - ααΊααααΆααααα α αΎαααα’αΆα ααααΎααΆαααααααΆαααααααααααα
αα αααα»αααααα·αα·α DevOpsDays Vancouver 2019 α’αααα αΌααα½αααααΆααααααα Callum Styan ααΆααααααΆαααΆααΆαα½αααΉα Loki ααααααααααααΆααααΆααααααα ααα»α ααα½α petabytes ααΆαα½αααΉαααααααααααα·α ααΆα 1% ααααα αααα»αα ""α
ααΆααααααααα Loki αα·α ELK
ααα αααααααααα
ααΎααααΈααΆαααααααα ααα·αα·αααααααααα αααα»αααΆααααααααα ααα»ααΈαα»αααΊααα nginx ααααααααααΆαααΎααααΌαααΆαααααααα ααΆααααααααα α―αααΆααααααα ααα»ααΆα 406 αααααΆαααααααΆαααα·ααΆαααα»α 624 ααααΆααα αααααβα ααα»βααααΌαβααΆαβαααααΎαβα‘αΎαβαααα»αβαααβαααβαα½αβααααβαααα αα 109 αααααααααΆβαααα»αβαα½αβαα·ααΆααΈα
α§ααΆα ααααααααααΆααααΈαααΈαααααα ααα»α

αα αααααααΎαα·αα·ααααααα ELK ααΆαααααααα ααα·αα·αααα 30,3 MBα

αααα»αααααΈ Loki αααααΆαααααααα·αα·αααααααα αα 128 KB αα·ααα·αααααααααα αα 3,8 MB ααΆααααΆααα αα½αααααααααΆααααΆαααααα ααα»ααααΌαααΆααααααΎαααααα·ααααα·αααα·α α αΎααα·αααΆααα·ααααααα αααΎαααααααααα gzip ααΆαααααα ααΎαααααα ααα» Docker JSON ααΎααααααΆααα·ααααααααΆααααααααΆααααα αΆαα 95,4% α αΎαααΆααααααα±ααααΆααΆααααααααα ααα» nginx αααααααΌαααΆααααα’αΆαααα»αααααααααΌαααΆααααααΌααα Loki αααα½αααΆ ααΆααααα αΆααααα 4 MB ααΊα’αΆα αααααΆαα α ααα½αααα»αααααααααααα½αααααααααΆααααααΆα Loki ααΊ 35 αααααααααααΈααα αααΌα αααααααααααα αααααΆαα ELK αααααα ααα»ααααααΌαααΆααααα’αΆααααααα ααΌα αααα Loki ααΆααααα αΆαααα·ααααααααΎα 96% αα·α ELK 70% α
ααΆαααααΎααααΆααα’αααα αα αΆα

ααααα·αααΎααΎαααααααααααα Prometheus αα·α ELK ααΆααααΌα ααα Loki "αααΆα" αα·α ααΆαα αααΎαααα ααΆα αααΆααααΆααααΆααααΆ Go ααααΎααααΆαααα·α ααΆαααααΆ Java α αΎαααΆαααααααααααα ααα JVM Heap Elasticsearch αα·αα’αααα αα αΆααααααΆααααα αααααααΆαα Loki ααΊαα·αααααΉαααααΌααα ααα»αααααααααΆαααΆαααΆααααα αα½αααααααααΆααααΆ Loki ααααΎααααΆααα’αααα αα αΆααα·α ααΆαα αααΎαα α’ααααααααααα CPU ααααααΆαα·αααΌαα αααΆαααα ααα»ααααααΆααααΆαααααααΆααααααα
ααααΏα
Loki "ααααααααΆαα" αααααααΆααΆααααααΏαα ααααΏαα’αΆαααααααΎαααααΆααΆα αααΎα - ααΎαααααα ααα»ααααααααΆ αααααααααΎαααααα½αααΆ αααααΆα ααΆαααα - ααα»ααααααΆαα·αααΆαααααααΆα ELK (αα αααα»αααΆαααααΎααααααααααααα»α - αααα ααααΈααα) αααααααΌαααΆααααααααααααΆααα·ααααααΆ Loki ααΆαααα·αααααααα·α ααΆαα αααΎααα αααα»ααα·αα·αααα α αΎαααΆαααα α αααΆαααααα·α ααΎααΆαααααΎαα·αα·ααααα αααα»αααααΈααα ααααΆαααΆαααααΌαααΆααααα αααΆααααΆαα½αααΉαααααΏααααααααα Loki ααα α»ααα½αα±ααααααααααΆααααΎαα·ααααααααααΆαααΈαααΈααΈα αααΆαα αααααααααααΆαα ELK ααααΏαααααααααα·αα’αΆαααααααΎααα ααα·ααααααααα
ααΆαααααααααααααα ααα»
Loki ααΊααΆαααΆα ELK αααΆαααααΆαααα αααα»ααααααααααααααααααΆαααααααααααααα ααα»α Grep ααΆαα½αααΉαααααααααααααΆααΊααΆαα₯αααα·ααααα»ααααααΆααΆαααΆαααΌαααααΆααα·ααααααα αΆαααα»αα ααααααααα½ααααα½α ααΆααααααΌααααα»ααααααααΆαααααα»ααααα α’αααααααΆααααα»αααΆαααααααααααααααΆαααααΆα - ααΆααα’ααααααααααααΎααααα»αααΆααααααααααααααΆααααα αΆααα’αΆααααααααΎ Loki α ααααα·αααΆααααααΆααααΆαα’αααΈα’αΆα ααααΌαααΆαααααΎααααααααΎ Loki ααααα ααα»ααααααΆαααααααα αΌαααααΆαααααΎααΆαααΆαα½ααααααα ααα» αα αααα’αααααααΎααααα αΆααααΌααα αααα»αααΆααΆα Prometheus α αΎααααααΆααααααααΎααααΆαααΆαααααααΎααααΈααααΎαα’αααΈαααααΆαααΎαα‘αΎααα αααα»ααααααα ααα»α
α ααα»α αααααΆαα
ααααΌαααΆααα’αΆαααΆαα (αα»αααα αα·αα’αΆα ααααΆαααΆα)α Grafana ααΆαα ααα»α αααααΆααααΎααα ααα’αΆα ααα»αααα Kibana ααΆααα»αααΆαα αααΎαααΆαα
αα»ααααααααα·αα·ααα»ααα·ααααα·αααα Loki
αααα»αα αααααα»ααααααααα· ααΆα’αΆα ααααΌαααΆαααααααααΆααααΆ Loki αα½ααααα αΌαααΆαα½α Prometheus αααααααΆ ααΎαααα½αααΆααααααα αα·αααΆαααΌαααααΉαα ααααΈαααα’ααα ααΆααΆααααα½ααααααΆααααΆααααααΌααααααα ααα» αα·ααααααΆαα»ααα½αααΆααΆαα½α Kubernetes Pods αααααΆαααααΆααΆαααΆαααααΎαααααΆαααααααααα½αααααααΈ Prometheus αα·αααααΆααααααΆααααααααααααααααα·α
αα minuses - α―αααΆααα·αααα’α ααΏααα½αα ααα½αααΌα ααΆαααααααα·ααα αα·ααααααααΆααααα Promtail αααα»αααΆαααααΎααααα αααα»αααααΎαααΆαααααΆααα·ααααΆααΌα α’ααααααααααααααααααααΎαα αα ααα»αααααα αα»ααα·ααααα·αα½ααααααΊαααααααΆααα·ααΆααααααα α§ααΆα ααα Loki αα·αα’αΆα ααααααααα ααα»α αααΎααα½αααΆαααα ααΌα ααααΆαααααααααα»ααα·ααααα·αα½αααΆαααΆααα·ααααααΆ Loki ααΊααΆαα αα αααα·ααααΆαααααααα (ααΆαα ααααααΆα 1.0 ααΊαα αααα»ααααα·α ααα·ααΆ 2019) α
ααα ααααΈααααα·ααααΆα
Loki ααΊααΆαα αα αααα·ααααΆαα½αα±ααα αΆααα’αΆαααααα 100% αααααΆααααααααΆααααααααααααΆαααΌα αα·αααααα αααα’αα»ααααΆαα±ααα’ααααααααααΆααααα αΆααΆα αααΎαααααΆααααααΌααααα»ααααααα ααα» ααΆαααααααααααααα ααα» ααΆααααα½ααα·αα·ααα αα·αααΆααα·ααΆααααααα ααα»α
ααΎααα·αααααΎ Loki αα αααα»α Badoo αα ααΈαααααααΎαααΆαααα ELK αααααΆαααααΉαααΎα α αΎααααααααΌαααΆαααααΆααααΆαα½αααΉααααααααααΆαααααΆαααααα½αααΆα αααΎαααααΆααααααα αααααΆαααα½αααΎα ααΆαααααααα½ααααα»ααααααααααΆαααααααααα ααα»α ααΆαα½αααΉααααααα ααα»ααααΎααα 100 ααΈααΆαααααα»ααα½ααααα ααΆααΆααΏαααααΆαααααααΆαααα½αααΎαααΎααααΈα’αΆα αααααααα’αααΈαααααααααΆα αα·ααα·α αα½α ααααααααα α αΎαααααΎααΆααΆααααΆαααΆαααα ααα αααααΆααααΆααΆα αα·αααΆααααα½ααα·αα·ααα ααΎαααααΎαααααααααΆαααααααααααααααααΌαααΆααααααΌαααΆαααααααΎα α αΎααα½ααααα αΌαααΆαα½αααααΆαα αα·ααα ααα ααα Loki ααΆαα’αααααααααααααΆααααααα ααα»ααααααΆααΉααα·ααααααα±ααααΎαα αααΎαααΆαααΎαααΆααα½α α αΎα α αΎαα’αααααααααααααααααΆααααΆααααΆαα·αααΎααααααααααΆαααααΎα αααΆααααα»ααααααα
α αΎααααααΈααΆαααααΆααααΈααΆαααααΆαααααΆαααΆα αααΆααααΆααΎααα·αα’αΆα ααααΎ Loki αααααααααΎααααααΉαααΆααΆααααααΆααααααΉααα½αα’ααααααα»αααΆαααααΎαααΎαα
ααααΆαααααααΆααααααΌααααααααΎαααα»αα’αααααααΆαααΈααΆαααα .
ααααα: www.habr.com
