áĽá Badoo áŤáááá¨áĽ á áłá˛áľ á´áááááá˝á áĽá¨á°á¨áłá°áá áĽá á áľáááłá˝á ááľáĽ ááá áá ááá áááá áá áĽáááááááᢠá¨áĽááá áĽááśá˝ ááľáĽ á ááąá ááá á á¨á°áĄ ááŤáá áĽááááááᢠáááŞáŁ á¨áá áá°áŁá°áĽ áĽáááľ á°ááľááá˘
á᪠ááááŚá˝á ááá¨áá¸áľ áĽá ááááá¨áľ áááľá áá, áĽá áá ááá áĽááąá ááá°áá°á áĽá áá° ááŽáá˛á¨áľ ááἠáááá á°áááá áľáááľ áŤáááŁá. á áááŚáľ ááľáĽáŁ áá ááá á°áááᣠáĽáąá á ááŁáŞáá˝ á áááľ áŤáľá°ááááᢠá᪠áá ááľá¨á áĽáá°áá˝áᣠáá á áááľ áĽáľáá˝á áĽáá°áá°áĽ áĽá áá áŤá á ᨠELK áá áĽáá° á ááŤá ááľáŤáľ áĽáá°áá˝á ááááľ áá á¨áᣠá áá á¨ááá ááá áááá˘
á᪠áááľá áá?
ááŤáá á᪠áá°áá á¨áááἠááľáłááť áľáááľ á¨á áŤá áááá˝ áľáĽáľáĽ ááᢠá¨ááá˝ á°ááłáłá áľáááśá˝ á á°áᨠá᪠á¨áááἠááľáłááť ááłáłáł áĽáť - áááŤáá˝á (áá áĽáá° ááŽáá˛á¨áľ) áĽá ááááŚášá áá ááá áá° á°ááŤáŠ áááĽáŤáŽá˝ á áá á áá áá á¨á°áá á¨á° ááá˘
á¨á᪠áá áá ááľá¨á áĽáá°ááľá˝á á¨áááŁá´ á ááľáŁ "ááłáłáł áĽáť á¨áááŁáľ ááłáĽ" áá áááľ áĽáá°áá ááá˝ ááľá¨á áĽáááááᢠᨠnginx áá á¨ááľáá ááłáá á áá áá áĽáá° Elasticsearch áŁá áŁá áá áááľááá˝ ááľáĽ á¨ááŞá á áŤááľ áĽá á¨áá¨á á áá á ááŤá¨áĽá áĽáááłáľááĄ-
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"
áŁá áá áľáááśá˝ áĽá áአá¨á°á áá_ááłáá፠áĽá á¨ááĽá_ááłáá፠áĽá´áśá˝ áŤáá¸áá ááľáŽá˝ á¨áᎠáááá á¨áľá áá°ááľááłá áĽá áááá ááá á áľááá á˘áá´ááśá˝ áŤá¨áášá˘ á¨áá á ááŤá¨áĽ áĽá ááĽá áá˝ ááá áá¨ááá˝ á áá¨á á áá ááľáĽ áľáá ááľáĽáľáĽ áĽáŤááá˝á á ááĽááľ ááŤááľ áá˝áá. ááá áá ááá áááá á ááĽááľ á˘áá´ááľ áľáá áááá, áá á áá° áá á°á¨ áľááľáł ááľáááśá˝ áá°á¨áááá. á áá¤áąá, á¨áááἠááľáłááťáá˝ áá-á˝áá áá¨á á áá á áá á á¨áááš áá áááłá°áá. á áĽáą ááľáĽ á ááĽááľ ááááá, á ááá áá° áá á°á¨ áľááľáł ááŤá á áá áľ. áĽá áĽá áááἠááľáłááťáá˝, áá¨á á ááá á ááĽááľ áá¨ááŤá áĽá áĽá áá á°á¨ áľááľáłá áá ááá.
á¨á᪠á ááŤá¨áĽ á¨ááĽá¨áááá ááľáĽ á áľáááá áá¨á áĽáť áĽáá˛áᣠááááá ᣠá¨áĽá´áśáš áĽááľ áľáá˝ ááᢠá áá ááááľ áľáá˝ á˘áá´ááľ áĽááááá áĽá áááĄá á áá áĽá á áá¨á á áááá˝ á ááŁáŤáľ áĽá á ááá á á¨áá¨áá á áá°á á ááááŤáá˝ ááá á áááľ ááĽá¨ááá ááááá˝ áááá áĽáá˝ááá. áá°áą á áŁá ááŁá á áááľáá, ááá áá á᪠áĽáŤááá áá° áĽá áááá˝ á¨áá á áľáአáŤáľáá˝áá, á á áá áá ááľáĽ á¨áá°á áá á áŤáá áá¨áá áŤáááá. á ááľáŁá¸á á¨áťááśá˝ áĽá áľáአáĽáŤááá˝ áĽááľ áááá á¨áá˝á áá; áľááá á á ááľ áá áá°áŤ á¨áá˝á á¨ááἠáá á á¨ááá°áá á á°á°áĄáľ ááĽáśá˝ áá á áá ááá˘
á áľáá ááŁá á˘áá´ááľ áĽá á áľáá˝ áľáአáĽáŠáľ ááá á˘áá´ááľ ááŤá¨á áŤáá áá á¨áááľ áááἠá᪠á¨áľáááąá á᪠áĽáá˛ááŁá á áŤáľá˝áááᢠáĽáá° ááááśá˝á á á°áááá áááá áĽá áá°á áá˝ááá˘
á¨á᪠ááá áśáľáľ á áŤááľá áŤáá áááĄ- ááŽáá´ááᣠááŞáŁ ááŤáá Promtail áááἠááľáłááťáá˝á áá°á áľáŁáᣠáŤáľáŹáłá¸áá áĽá áá° á᪠áááŤá¸ááᢠá᪠áá áĽáá¸áá. áĽá Grafana áááĽá á¨á᪠á áá ááłá¨áľ áá˝ááᢠá á á ááá, Loki áááἠááľáłááťáá˝á ááá¨áá¸áľ áĽá á áĽááą ááľáĽ ááááá áĽáť áĽá
á áá ááá áá˝áá. á á ááá ááá á¨ááŽáá˛á¨áľ ááááľá á áá áá áᢠáá¨ááá˝á áááľáŤáľ áĽá ááá°áá°á áĽáŠ áĽáľáá˝á áá°áŁáá˘
á¨ááŤá áá°áą ááá፠ááá áá˝áá
á¨áááἠááľáłááť ááá
áááἠááľáłááťáášá á áአá áááá˝ ááľáĽ áááá áá˝áá Grafana â Explorer. áá áááš á¨LogQL áááá áá áááᣠáá á ááŽáá˛á¨áľ á¨áá ááá áľ PromQL áá á áŁá á°ááłáłá ááᢠá ááá á°á¨á, áĽáá° á¨á°á¨ááá ááŹá á°á°áá ááá°áľ áá˝áá.
á¨ááá á áááá˝ áá áá áááľááá˘
áá áá áŤáą áááľ áááá˝á áŤáá áá-ááŤá áĽá ááŁáŞáŤ. ááŤá (áááŤáá˝) á áá¨á á áá (áááŤáá˝) áááááŚá˝ á¨á°áá°áĄ ááá á˛áá ááŁáŞáŤ á°áá á ááŤáŠ á¨á°ááášáľá ááááŚá˝ á¨ááŤáŁáŤ á¨ááá ááĽá¨ááá ááá regexp ááᢠá á°á°á á ááłá ááľáĽ: á áĽááĽá á ááá˝ - ááŤáŠ, ááá ááá á áá - ááŁáŞáŤá.
{image_name="nginx.promtail.test"} |= "index"
á᪠á áá áŤá áľ ááááľ ááááŤáľáŁ áŤá ááŤá áĽáŤááá˝á áá á¨áĽ á áá˝ááᣠááá áá áááŤáá˝ á áááá° ááá á áá áá°á¨á áá˝ááá˘
ááŤáŠ á á°á ááá á ááá˝ ááľáĽ áŤáá á¨áĽá´áą ááá áĽá´áľ ááᢠááŤáŽá˝á á ááŁáá =, != áŚááŹá°áŽá˝á ááá áá°á á ááááŤáá˝á á áá áá á¨á°ááŤáŠ á¨ááá áááłáá˝á áááá˝ áá˝áá:
{instance=~"kafka-[23]",name!="kafka-dev"}
// ĐаКдŃŃ ĐťĐžĐłĐ¸ Ń ĐťĐľĐšĐąĐťĐžĐź instance, иПоŃŃио СнаŃонио kafka-2, kafka-3, и иŃкНŃŃĐ¸Ń dev
ááŁáŞáŤ á ááŤáŠ á¨á°áá ááľá áááá áá¨ááá˝ á¨ááŤáŁáŤ á˝áá ááá regexp ááá˘
á áááŞáŤ áááł áá á á°áá áá áá¨á áá°á¨áľ á¨ááľáłáááŤ-ááŤáá˝á ááááľ ááťáá. áááłáᣠá¨á˘áá´ááľ ááĽá¨áááá á áŤáá áá¤áľ á nginx áááἠááľáłááťáá˝ ááľáĽ á¨á°á¨á°áąáľá áľáááá˝ ááá áľá˝ááá áĄ-
áľá áŁá
áŞáŤáą áá ááá፠á á°ááą ááľáĽ ááá áá˝áá
á¨áááἠááľáłááť áá°áá°á
áááἠááľáłááťáá˝á ááá°áĽá°áĽ áĽá ááááśá˝ á á-
- áááἠááľáłááťáá˝á ááá°áĽá°áĽ á¨ááá áá°á á á áŤá á ááŽáá´áá áĽááá˘
- á ááĽáł á¨áśá¨á ááŤáŁá á áá áá
Loki Docker á¨áááἠááľáłááť ážáá. - áá° Loki ááἠááá á¨áá˝á Fluentd ááá Fluent Bit áá ááᢠáĽáá° ááŽáá´áá á á°áᨠááአáááááá á¨áááἠááľáłááť á áááľ ááá á¨áá á°ááłáá˝ á áá¸á áĽá áŁááĽá ááľáá áááἠááľáłááťáá˝áá ááľá°áááľ áá˝ááá˘
á áĽáááá áá ááŽáá´á ááá°áá°á áĽá á áá ááááᢠáśáľáľ áááŽá˝á áŤá°ááááĄ-
- á¨ááἠáááŽá˝á áŤááá.
- áááŤáá˝á á¨ááą áá áŤáŤááá˘
- ááἠáá° Loki áááŤáá˘
á á áá áá ááŽáá´á á¨á áŤáŁá˘áŤá áááá˝ áĽá á¨áľááá° áááá á¨áááἠááľáłááťáá˝á ááá ἠáá˝ááᢠáááἠááľáłááťáá˝ á áá°á á°áĄá áľ á áĽáŤááłááą áá˝á áá ááŤá á áá áľ.
ᨠKubernetes áá áá á°áľ á áᥠááŽáá´áá á¨áááľá°áá áááł á Kubernetes REST á¤áá á á áŠá á áŤáľ-á°á áŤááá áĽá áááἠááľáłááťáá˝á á¨á ááľ ááľááá ááááľáŁ á áááááľ ááá ááľ áá°á áľáŁáᣠáá˛áŤáá á¨áŠá áááľáľ ááłáłáł (á¨ááľ áľáᣠá¨ááá áľáᣠááá°) áá á¨á°áá°á¨áą áááŤáá˝á áááĽááá˘
áĽáá˛áá ááááá á áá áá á áááἠááľáłááťá áá áŁáá áá¨á áá á áááľá¨áľ áááŤáá˝á ááľáá áá˝ááᢠPipeline Promtail á áŤáľ ááááľ á°á¨ááá˝á ááŤáŤáľáľ áá˝áá. á°á¨á᪠ááááŽá˝ - ááľáĽ
- á¨áá°áá°á á°á¨ááá˝. áá ᨠRegEx áĽá JSON á°á¨á ááᢠá áá á°á¨á, áááĽá á¨áááἠááľáłááťáá˝ ááľáĽ áá° á°á áŤá áŤááł áĽáááŁáá. á ááá á¨áááááá¸áá ááľáŽá˝ áá°á°ááŁá áŤááł á áááá ἠááá á áá°á á á áááážá˝ (RegEx) á ááŤáááľ á¨JSON áááŁáľ áľá˝ááá˝áᣠáľáá¸á á¨á°á°á¨á áĄáľáá˝ á á°áááá áŤááł áá âáŤááłâ á°ááá á°ááᢠá¨á°ááá¨á áŤááł á¨ááá-áĽá´áľ áá¨ááť áááŁááá á¨ááľá áľá áĽá áĽá´áą á¨áááá˝ ááá˘
- á°á¨ááá˝á ááááĽ. áá
á°á¨á áááľ á ááŤáŽá˝ á ááľ: áľáŤááľáááá˝á, á¨áľáŤááľáááá˝á á°ááŚá˝á á¨áááľáááĽá áľ, áĽá ááá - á¨á°ááá áŤááł ááááἠá¨áá¨á ááá. á á°ááŁá áŤááł ááľáĽ áĽáá°áá
áŤá ááľá á¨áá, á¨ááŤá ááá áŤá. áľááá
, á á°ááŁá áŤááł áá áŤáá°áá á¨áą áááŤáá˝á ááá á ááťáá. á áá
á°á¨áᣠá á°ááŁá áŤááł ááľáĽ áŤááá áá¨á á áľááá áááá á áá áá áááá á áĽáá˝ááá
á¨áááá á áĽááľ . á á°á¨ááŞáᣠá áá°áá°á áá áľ á¨ááŁá áŤááł áá á áá áĽáá°á°áŤá ááľáłááľ á ááĽáᣠáá á áááłá á ááľáĄ áŤááá áá áááá°á˝ áŤáľá˝ááááĄ- â{{if .tag}tag value exists{end}}ᢠá áĽááľ áááłáá˝áᣠáá°áśá˝á áĽá á ááłááľ á¨ááĽá¨ááá á°ááŁáŤáľá áĽáá° áá°áŤáľ áĽá áá¨áá¨á áá°áááᢠ- á¨áľáááľ á°á¨ááá˝. á áá
á°á¨á ᣠá¨á°áá¨á°á áá á ááľ ááá ááľá¨á áá˝áá-
- á¨á°ááá ááἠáá áá፠ááá áŠáŁ áĽáąá á á᪠áá áááá˘
- á¨áááἠááľáłááťá áá á¨ááľá°áąá áá áááᥠááá áŤáááá˘
- áá° Loki á¨ááá°áá ááἠ(á¨áááἠá˝áá) ááááŠ.
- áááŞáŤáá˝á ááá áŠá˘
- á¨ááŁáŞáŤ á°á¨ááá˝. á¨ááĽááŤá á°á¨áᣠá¨ááŤáľááááá ááááŚá˝ á/dev/ null á¨ááááá áľáŁ ááá áááŁá áá°áľ á¨ááááá áľá˘
á°áŤ ᨠnginx áááá˝á á¨ááľáŹáľ ááłáá á áá ááᣠPromtailá á áá áá áĽáá´áľ áááἠááľáłááťáá˝á áá°áá°á áĽáá°áá˝á á áłááťááá˘
ááá°ááᣠá¨á°áťáťáá nginx image jwilder/nginx-proxy:alpine as nginx-proxy áĽá áĽáŤáąá á á¤á˝á˛á˛á áá áá á¨áá˝á áľáá˝ á´áá áĽááá°áľá˘ á´áá á¨á°ááŤáŠ á¨á¤á˝á˛á˛á áááłáá˝ áĽá á¨á°ááŤáŠ áááá¨áśá˝ á¨á°ááŤá¨ áá á áŤáá¸áá ááážá˝ áá°áĽáŁá¸á á¨áá˝á á ááŤáł á¨áá¨á¨áť ááĽáŚá˝ á ááľá˘
á ááááą /var/lib/docker/containers/ áá ááá á¨áá˝á ááááŚá˝á á¨áśá¨á áŽáá´áááŽá˝ áĽáá°á áľáŁáá / -json.log
á docker-compose.yml ááľáĽ Promtail á áááá áĽá áá° áá አá¨áááľá°áá ááááľ áĽáááááááĄ-
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 áŤáá (á áááአááľáĽ "áśá¨á" á á ááľ ááľáá ááľáĽ á°ááłáłá á¨ááŤá°áá á ááŤá á á ááá áá á áŁá ááá˝ á áááá)
scrape_configs:
- job_name: containers
static_configs:
labels:
job: containerlogs
__path__: /var/lib/docker/containers/*/*log # for linux only
áá áá á á˛áá á᪠á¨ááá áŽáá´áááŽá˝ áááἠááľáłááťáá˝á ááá ááᢠáá áá áááľáá¨áľ á¨áá¨áŤ 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"
á á°ááŁá áŤááł ááľáĽ á¨áá፠ááľáŠá ááľááἠá¨á°áťá áŹá ááľááľá á áá áá á¨ááľáá áĽá á¨áĽááá áľá áĽáááŁáá á˘
- labels:
image_name:
container_name:
áááŤáá˝á áĽáááľáŁáá. á¨ááľá_áľá áĽá á¨ááŤáŁ_áľá ááááš á á°ááŁá áá¨á ááľáĽ á¨á°áá áĽá´áśáťá¸á áá°áá˘á áááŤáá˝ ááá°áŁá á˘
- match:
selector: '{job="docker",container_name="",image_name=""}'
action: drop
á¨ááľá_áľá áĽá á¨ááŤáŁ_áľá áľáĽáľáĽ á¨ááá¸áá áááá áááἠááľáłááťáá˝ áĽááľáááłááá˘
- match:
selector: '{image_name="nginx.promtail.test"}'
stages:
- json:
expressions:
row: log
á¨ááľá_áľáá¸á á¨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>[^/?.]+).*$
áĽáŤá_áŠá áá¤áá á°ááľáᢠá regexp áĽáá á¨áĽáŤááá ááá áĽáááľáááᥠáá° áľáłá˛áľá˛ááľáŁ áá° ááśáá˝áŁ áá° á¤áá á áĽá á á°ááŁá áŤááł ááľáĽ áŤááá á°ááá ááá áĽááááááá˘
- template:
source: request_type
template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"
áááłá áŚááŹá°áŽá˝á á á áĽááľ ááľáĽ á áá áá á á°ááŁá áŤááł ááľáĽ á¨á°áŤááľá ááľáŽá˝ áĽáááľáťáá áĽá ááĽáŤáá ááááľ ááľá á áľááááášá áĽá´áśá˝ áĽáááááá-ááś áŁáľáłá˛á áŁá¤áá áᢠáŤáá°áłáŤ áá áááľáĄá˘ á áá request_type á¨áĽáŤá á áááľ áááá˘
- labels:
api_request:
virtual_host:
request_type:
status:
áááŤáášá api_requestᣠvirtual_hostᣠrequest_type áĽá status (HTTP status) áŤááááá á ááŁá áŤááł áá áŁáľáááĽáá áá°á¨áľ ááá˘
- output:
source: nginx_log_row
áá á˘áľ áááᢠá áá á¨á¸áłá nginx áá á¨á°ááŁá áŤááł áá° á᪠áááłáá˘
á¨áá áŤááá áá á¨áľ áŤá¨ááá á áá áĽáŤááłááą áá¤áľ á áááἠááľáłááťá áá áŁáá áá¨á áá á°ááľááˇá á˘
áĽá ááĽá áŤáá¸áá áĽá´áśá˝ (áŤáá˛ááááľ) áŤáá¸áá áááŤáá˝ áááŁáľ ááŞá á á¨áá°á áááł ááŤááá¨á áĽáá°áá˝á áŤáľáłááąá˘ áááľá ᣠá áá¨á á ááá ááľáĽ ááľááŁáľ á¨ááĽááľá ᣠáááłá ᣠuser_idᢠá á˝áá ááľáĽ áľááá
ááłá á¨á áá áŤááĽáĄ
á¨áááἠááľáłááť áĽááł
Loki LogQLá á áá áá áááŤáá áá áłáá˝ áĽáá° á¨ááἠááá áá ááľáŤáľ áá˝ááᢠá¨áá¨á°ááľ áŁá áŞáŤáľ áá°ááá:
- áá á - á á´áŽááľ á¨ááááá˘áŤ áĽááľ;
- á áá ááá á - á á°á°á á ááá ááľáĽ áŤá ááááŚá˝ áĽááľ.
áĽáá˛áá á¨ááááľ á°ááŁáŤáľ Sum, Avg áĽá ááá˝á á á. á áŁá ááľáĽáľáĽ ááŤáá˝á ááááŁáľ áá˝áá ᣠáááłá ᣠá¨á¤á˝á˛á˛á áľá á°áśá˝ áĽááľ ááŤáá˘
á¨á᪠ááŁáŞ á¨ááἠááá á¨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
á ááŤáŠ á¨á°ááŁá áŤááł áá áŁáá áá¨á áá á áááľá¨áľ áááŞáŤáá˝á áĽáá˛áááš áĽá áĽáá˛áŤááá áŤáľá˝áááłáᢠáĽááá áááŞáŤáá˝ áá° á᪠á áá°ááŠá - á ááŽáá´á/ááľáŞááľ áá¨á¨áť ááĽáĽ áá ááłáŤáᢠááŽáá˛á¨áľ á¨áá á°á¨á áá¨áá áááá á áááá á áá áľá˘ á¨áá áŁáá ááłá ááĽáŤá_type = "api" ááľáśááŤá áááŞáŤ áĽáá°á áľáŁáá:: á áá á áááľ áááŞáŤáá˝ ááá°ááľáá˝á áááááľ ááš áá. ááľáłá˛áľá˛ááľ áĽá áááśáá˝áŁ á ááŤáŠá áááľááľ áŁááľ á¨á°áá ááá áľá á¨á¨áľáá˝ áľáá áĽá á¨á¨áľáá˝ áĽááľ áĽáá°á áľáŁááá˘
áľá áááŞáŤáá˝ á¨á áá áŤááĽáĄ
á ááŽáá´á áá áá°áĽ ááááąáĄ-
promtail:
image: grafana/promtail:1.4.1
container_name: monitoring.promtail
expose:
- 9080
ports:
- "9080:9080"
ᨠpromtail_custom á áľá á áĽáŤ áŤáá ááľáŞááľ ááłá¨áąá áĽáá¨áááŁááá˘
ááŽáá˛á¨áľá á áááááľ áá. á¨áľáŤ ááľá°ááá፠á áááĄ
- job_name: 'promtail'
scrape_interval: 10s
static_configs:
- targets: ['promtail:9080']
áĽá ááŤá ááłá:
á áá ááááľ áááłá á áŤáąá á áŁá áááá áá ááá˝á ááá áá˝ááᢠááĽááá áááŞáŤáá˝ ááľáľáá ááááá áá˝ááá˘
áááŁá á
á᪠á áááąá á áá á áááľáŽá˝ áááł áĽá á á¸áá°áľ (á ááľá-áá°á á¨áá˝á áááł) ááá áá˝ááᢠá ááá°áá ááłá áá, áá¨áá áá° á°ááá ááľááἠáá˝áá, áĽá áááĽáŤáŽáš áĽá á˘áá´ááľ áá¨áĽáť ááááŁá. á áľáŞáľ 1.5 ááľáĽ á á ááľ áŚáł áá á¨áá¨áá¸áľ á˝ááł á°á°ááĽáŻá, ááá áá á áááľ ááľáĽ ááá áá áá á áá°áá¨á¨á.
áááĽáŤáŽá˝ á S3-á°áłáá áá¨ááť ááľáĽ áááᥠáá˝ááᣠá˘áá´ááśá˝á ááá¨áá¸áľáŁ á á ááľá áááᥠá¨áá˝á á¨ááἠááłáá˝á áá ááᥠáŤáłááľáŤáŁ á˘á áłááĽá ááá áłáááá˛á˘á˘ ááá˝ á¨á᪠áááá˝ - á á¨áááŽá˝ (áááťá) áĽá Querier (ááá ááá˝) - á áá á áᣠáá¸á áĽá áĽáá˛áá á á ááľá á¨áááá áá¸áá˘
á á´ááŚááľ á´ááľ áŤááŽá¨á 2019 áŽááá¨ááľ áá á¨á°áłáłáááš á ááą Callum Styan á¨á᪠áá ááŽáááą á¨á á
ááá áá á ᨠ1% áŤáá° áá¨á á áá áŤáá ááłáŁááľ áááἠááľáłááť áĽááłáá á áľáłáááá˘
á¨á᪠áĽá á¤áᏠááááá
á¨áá¨á á áá áá á
á¨á°áááá á¨áá¨á á áá áá á áááá°á˝ á¨áá áŤáá ááááá á¨á°ááá¨á ᾠᨠnginx áŽáá´ááá á¨áááἠááľáłááťáá˝á áá°áľáŠá˘ á¨áááἠááľáłááťá 406 ááľááŽá˝ á áľáአ624 áᣠáá á áááᢠáááἠááľáłááťáá˝ á á ááľ á°ááľ ááľáĽ á°ááĽá¨áá, á áááľ 109 áŞá¨ááśá˝ á á°á¨ááľ.
á¨áááᥠááľáĽ á¨áááľ ááľááŽá˝ ááłááĄ-
á ELK á˛á ááᣠáá 30,3 áᣠáá¨á á áá á°á áĄ-
á á᪠áááłáŁ áá áá° 128 áŞáŁ á˘áá´ááľ áĽá áá° 3,8 áᣠáŤá á áá¨á á áĄá˝ á°á ᢠáááἠááľáłááťá á°á á°áŤá˝ á áá ááááľ á¨á°áá ᨠáĽá áĽá á áááľ áá¨ááá˝á áŤááŤá ááá áἠááŁá áááŁáᢠá ááá á¨áśá¨á JSON áááἠáá áŤáá ááá gzip á¨ááἠáá 95,4% á¨ááŻáᣠáĽá á¨á¸áłá nginx áá áĽáť áá° á᪠áĽáá°á°áᨠá˛áłá°áĽáŁ áá° 4 áᣠáá¨ááŞáŤá áá¨áłáľ á¨ááťá ááᢠáá᪠áááŤáá˝ á á ááá á¨áአáááá˝ áĽááľ 35 áá á ᣠáá á á¨áá¨á á áááá á ááľá°á áá á áŤáĽáŤáŤáᢠáá¤ááŹáŁ áááἠááľáłááťá áĽáá˛á á¸áľáˇáᢠáľááá á á᪠áááá áá¨á á 96%ᣠáĽá ELK á 70% á¨ááá˘
á¨áá á°á¨ áľááľáł áááł
áááá á¨ááŽáá˛á¨áľ áĽá á¨á¤ááŹá ááá áŤááá á á᪠áĽá áá "áá áá"ᢠᨠGo á áááááľ á¨áááá á¨á፠á áááááľ áŤáá° áĽáá°áá ááá áá ᣠáĽá ᨠHeap Elasticsearch JVM áá á áĽá áá᪠á¨á°áá°á á áá á°á¨ áľááľáł ááááá áľááá á áá°áá ᣠáá á᪠á áŁá áŤáá° áá á°á¨ áľááľáłá áĽáá°áá áá áἠááŁá áááŁáᢠá¨á˛áአáĽá á áŤá áŤá á ááá˝ á áá°ááᣠáá á°áá á áá˘
ááĽááľ
Loki á ááĽááľ "áá áá" áááἠááľáłááťáá˝. ááĽááą á áĽá áááŽá˝ áá á¨á°áá°á¨á° áá - áá ááááľ ááááŚá˝, áá áŤá á ááľáĽáľáĽ áĽáá°ááá°ááá¸á, á ááłá¨ áá¨áĽ, á˛áľá, ááá° - áá á áĽááá ááᾠᨠELK (á áĽá áá¨áŤ - áááľ áá áŤá á) á¨á áŤá áá. áá á¨ááááá á᪠áá¨áá áá° áá¨á á ááá ááľáĽ áľáááŤáľááá á áĽá á áá áá á¨áľ á áá¨á á áá áá áŤáá° ááá áľáááŤá á ááᢠá áá áááł áááłá ââââá¨áááá ááĽááľ áá á°áááŻá-á᪠á¨áĽááľ áááŁááľ á áá á¨áá áá¨áá á á¨áá°á áááł ááááłá, á ELK áá á¨ááá ááĽááą á áá¨áá áá á áá á¨á°áá°á¨á° á áá°áá.
á¨áááἠááľáłááť ááá
á᪠á áá ááá á˝ááł á¨á¤áᏠá áĽá á áŤáá° ááᢠá¨áá°á á á áááážá˝ áá ââááá á á ááŤáŤ ááá ááᣠááá áá á¨á áááá˝ á¨ááἠááł áŤáá° ááᢠá¨áááá˝ áá ááá˝ áĽáĽá¨áľáŁ á áá°á¨ááŤáá˝ áĽáť áá áááᣠáŤá áááŤáá˝ áááá á áááťá - áá áá á á᪠áá ááááľ áŤáá áá¨á á áááá áá áááľá ááᢠáá ááŞá á áá áá ááá ááá ááá áĽáá°ááá˝á á áŤááááľá, ááá áá á¨ááááŚá˝ áá á¨áá°áŤáá áá°áľ ááááá, á ááááŞáŤ á ááŽáá˛á¨áľ áá áłáá˝ áá á˝áá á˛áŤáá áĽá á¨ááŤá áĽááá á áááŤáá˝ á áá áá á áááἠááľáłááťáá˝ ááľáĽ áá áĽáá°á°áá ᨠáááá.
á áááá˝
á ááááŞáŤáŁ ááá áá (áá ááłáŁ áááá á ááťááŠá)ᢠááŤáá áĽáŠ á¨áááľá á áááá˝ á ááᣠáá áŞáŁá á¨á áá á¨áá°áŤ ááá˘
á¨á᪠áĽá áá˝ áĽá ááłáśá˝
á¨áááľááš ááľáĽ, á᪠á¨ááŽáá˛á¨áľ áá áĽáá°ááááľ áἠááŁá áá˝áá, á á á°á á°á¨á°á, áááŞáŤáá˝á áĽááááá áĽá á¨áłáĽá ááľáĽ ááľá ááá . áááἠááľáłááťáá˝á ááá°áĽá°áĽ áĽá á Kubernetes Pods ááá¨áá¸áľ á ááş áá, ááááŤáąá á¨ááŽáá´á¨áľ á¨á°áá¨á° á¨á áááááľ áááľ áľááá áĽá áááŤáá˝á á áŤáľ-á°á á ááŤáŤá.
á¨ááááą - á°áŤá á°ááśá˝. á ááłááľ áááŽá˝áŁ áĽáá° á¨ááŽáá´áá áŁá áŞáŤáľ áĽá á˝ááłáá˝áŁ áŽáąá á ááĽááľ áá°áľ ááľáĽ áĽáťáŁ á¨áááľ áááá áĽá á á áááᢠááá ááłáľ á°áŤá á¨áá°áá°á á˝ááłáá˝ áá. áááłáᣠá᪠áŁááĽá ááľáá áááἠááľáłááťáá˝á áá°áá°á á áá˝ááᢠáĽáá˛áá ááłáśáš á᪠á á ááťáŤá ááŁáľ á´áááá á¨áááá áĽáááł áŤá áááá (á¨á°áááá 1.0 á ááŹáá á 2019 áá á)á˘
áá°áá°ááŤ
á᪠ááľáá˝ áĽá ááŤá¨áá ááŽáááśá˝ á°áľáá á¨áá 100% á áľá°áłá˝ á´áááá áá, áá á áĽá á¨áá áá°áŁá°áĽ, á¨áááἠááľáłááť ááá, á¨ááľáľá áĽá á¨áááἠááľáłááťáá˝ áľáá°á á˝ááŽá˝á ááááłáľ áŤáľá˝áá.
ááŞá á áŁáś á áá ááá ááááŤáąá ááĽá á¨ááľááá áĽá á á°ááŤáŠ áĽá áááľááá˝ á¨á°áá ᨠELK ááá áľááá ááááłáľá˘ ááĽá, áá°áá¨áŤá á áá ááľáĽ áááá áá. á áá áá° 100 áᢠá¨áááἠááľáłááťáá˝, áááá ááá áĽá áľáá˝ á°á¨á᪠áááááľ áĽá á ááĽááľ áááľáŤáľ á áľááá áá. ááťááľ áĽá áááľáľáᣠá¨ááááłá˝á áá á¨á°áŁáŁá áĽá áĽááľ á ááľ á¨á°áááą ááá˝ áááľááá˝á áĽáá ááááᢠá¨á᪠ááá á°á¨áŁá áĽá áá˝ á ááľáŁ ááá áá áŤáá ááá á áá á áá°á ááᣠáĽá áĽá á á áľááá á¨áľá°áľ áá á áá ááĽáá˘
áĽá ááá áĽááłá á¨áááá á áá ááŞá áá áá áĽáá°ááá˝á ááá˝ á˘ááá, áá ááĽá áááá¨áĽ áá¨áłááłá áĽáá á°áľá áĽáá°áááá.
á á áááš ááľáĽ áĽá
á áá á¨ááá áŽáľ áŤáá áá¨ááťá ááááá˘
ááá: hab.com