@metrics_ru

Страница 31 из 681
Maxim
12.09.2016
14:25:03
в скрапере описываешь: - job_name: 'http' ... metrics_path: /probe params: module: [http_2xx] static_configs: - targets: - https://link_1 - https://user:password@link_2 ... relabel_configs: - source_labels: [__address__] regex: (.*)(:80)? target_label: __param_target replacement: ${1} - source_labels: [__param_target] regex: ^https?://([^/]+).*$ target_label: instance replacement: ${1} - source_labels: [] regex: .* target_label: __address__ replacement: <где-ты-там-его-поднял>:9115 # Blackbox exporter.

его можно хоть в докере, хоть в где

Alexander
12.09.2016
14:28:16
понял. пойду экспериментировать

спасибо :)

Google
Maxim
12.09.2016
14:28:53
самое сложное с прометеем после заббикса - осознать его принцип работы

Alexander
12.09.2016
14:29:10
вот с этим сложно да.. пока вообще не могу ничего понять)

Maxim
12.09.2016
14:29:29
он не запускает никаких чеков, не делает никаких хттп-запросов, etc

он ТОЛЬКО собирает метрики

Alexander
12.09.2016
14:29:56
т.е. по сути все собирается локально - и потом он просто все это забирает?

Maxim
12.09.2016
14:32:01
то есть вот твой чек-на-успешный-логин в терминах прометея это что-то вроде sum(successfull_logins_to_porno_ru)[5m] >= 5

и если за пять минут логинов было меньше пяти (ну мы подразумеваем чек раз в минуту), то надо колотить в рынду

но вот эту МЕТРИКУ прометею кто-то должен отдать

то есть должен быть какой-то сервис (exporter в терминах прометея), который будет монотонно логиниться и по заранее известному урлу отдавать прометею текущую статистику

Alexander
12.09.2016
14:35:18
Хм. Окей. Сейчас будем вкуривать. Идея понятна. Спасибо за ликбез

Maxim
12.09.2016
14:37:38
если тебе для проверки чего-то нужно запускать шелл-скрипты, то можно сделать например так:

# crontab -l | grep update # Chef Name: security_updates 0 * * * * /usr/lib/update-notifier/apt-check 2>&1 | awk -F\; '{print "debian_updates_pending{type=\"security\"} "$1"\ndebian_updates_pending{type=\"others\"} "$2}' > /var/lib/node_exporter/textfile_collector/debian_updates.prom.$$ && mv /var/lib/node_exporter/textfile_collector/debian_updates.prom.$$ /var/lib/node_exporter/textfile_collector/debian_updates.prom

тут мы воспользовались textfile_collector'ом node_exporter'a

Google
Maxim
12.09.2016
14:38:48
https://github.com/prometheus/node_exporter#textfile-collector

Maxim
12.09.2016
14:39:53
второй путь - запускать кучу шелл-скриптов консулами, и собирать метрики с них

пример:

# cat /var/lib/consul/checks/unicorn_workers_check #!/bin/bash workers=$(ps aux | grep '[u]nicorn_rails worker'|wc -l) echo $workers if [ "${workers}" -ge "2" ]; then exit 0; fi exit 255

тут мы проверяем, что воркер-процессов юникорна больше двух

этот чек зарегистрирован в консуле:

# cat /etc/consul/conf.d/unicorn_workers.json { "check": { "script": "/var/lib/consul/checks/unicorn_workers_check", "interval": "15s", "service_id": "application", "name": "unicorn_workers" } }

тут консул каждые 15 секунд проверяет количество юникорн-воркеров

скрапер выглядит вот так: - job_name: 'consul' scrape_interval: 15s scrape_timeout: 10s static_configs: - targets: ['192.168.222.2:9107']

192.168.222.2:9107 - это адрес консул-експортера

https://github.com/prometheus/consul_exporter

он монотонно собирает все метрики со всего кластера консулов

так я имею в прометее все метрики по шелл-чекам

Alexander
12.09.2016
14:47:03
Огонь. Т.е. по сути скриптами собирает все данные и все...

Maxim
12.09.2016
14:47:18
алерт по приложенькам выглядит вот так:

ALERT service_is_unreachable IF sum by (node, service)(consul_catalog_service_node_healthy == 0 and (consul_catalog_service_node_healthy{node !~ ".*beta.+"} or consul_catalog_service_node_healthy{service = "blackbox-exporter"})) FOR 3m LABELS { severity = "critical" } ANNOTATIONS { summary = "ALARM! service \"{{ $labels.service }}\" on node {{ $labels.node }} is unreachable", }

Alexander
12.09.2016
14:47:36
Кстати, а зависимости тут есть?

Google
Maxim
12.09.2016
14:47:52
хотя не, это какой-то слишком хитроебаный алерт

ща попроще покажу

Alexander
12.09.2016
14:48:12
Ну из банального упал nginx на одном сервере - недоступен портал А.

И алерт только один на основопричину

Maxim
12.09.2016
14:48:49
да, это называется "подавления"

вот алерт попроще:

ALERT SecurityUpdates IF debian_updates_pending{type="security"} > 0 LABELS { severity = "warning" } ANNOTATIONS { summary = "Node {{ $labels.instance }} has {{ $value }} pending security updates", description = "Run `# apt-get -s dist-upgrade | grep \"^Inst\" | grep -i securi | awk -F \" \" {'print $2'} | xargs apt-get install` on {{ $labels.instance }} ASAP!" }

это как-раз я про крон там выше показывал

вот про подавления: https://prometheus.io/docs/alerting/alertmanager/#inhibition

https://prometheus.io/docs/alerting/configuration/#inhibit-rule-<inhibit_rule>

Alexander
12.09.2016
14:52:31
Почитаю

Maxim
12.09.2016
14:52:34
короче, самое сложное в прометее после заббикс-лайк систем - это осознать, что он работает по-другому

а дальше все встает на свои места и становится логично, легко и приятно

Alexander
12.09.2016
14:56:00
попробуем)

а еще из тупых вопросов, а это что? https://github.com/knyar/nginx-lua-prometheus

позволяет отдавать нужные метрики самим nginx?

Maxim
12.09.2016
15:01:20
да

location /metrics { content_by_lua 'prometheus:collect()'; }

но это чот сложно как-то

луа там какая-то...

Google
Maxim
12.09.2016
15:02:55
я вот этот юзаю: https://github.com/discordianfish/nginx_exporter

а еще вот офигенная штука: https://github.com/google/mtail

превращает логи в метрики

очень крутая хрень в некоторых случаях

Alexander
12.09.2016
15:04:48
луа там какая-то...
я отсюда взял это https://prometheus.io/docs/instrumenting/exporters/

Maxim
12.09.2016
15:05:10
да я ж не говорю, что это плохо

просто оно считает nginx_http_requests_total и nginx_http_request_duration_seconds

которые доступны из stub_status'a без всяких луй

Alexander
12.09.2016
15:07:34
ага

Fduch
12.09.2016
15:27:29
я вот этот юзаю: https://github.com/discordianfish/nginx_exporter
Копия логсташа:) только на го вместо явы.

Maxim
12.09.2016
15:27:49
wat? o_O

при чем тут вообще логстэш?

Fduch
12.09.2016
15:28:32
:)) сори

Alexander
12.09.2016
15:28:35
он имел ввиду mtail

Fduch
12.09.2016
15:28:43
Maxim
12.09.2016
15:28:46
а

нууу, да

Fduch
12.09.2016
15:28:51
Только меньше и на го:)

Maxim
12.09.2016
15:28:52
близко

и быстрее

Google
Alexander
12.09.2016
15:29:15
блекбокс в докере не собирается)) что ж за люди такие(

Fduch
12.09.2016
15:29:29
Ну да, брать метрики из логов хорошо.

Но надо еще и просто логи смотреть :) Например урл и рефер из лога апача:) В таймсериес бд плохо такое запихивать.

Maxim
12.09.2016
15:30:51
не, ну конечно это не отменяет всяких лосей

Alexander
12.09.2016
15:45:07
root@ubuntu:~/go/blackbox_exporter# make docker >> building docker image Sending build context to Docker daemon 6.686 MB Step 1 : FROM quay.io/prometheus/busybox:latest ---> 00ff5d2279a5 Step 2 : MAINTAINER The Prometheus Authors <prometheus-developers@googlegroups.com> ---> Using cache ---> 90a67f632a9b Step 3 : COPY blackbox_exporter /bin/blackbox_exporter lstat blackbox_exporter: no such file or directory Makefile:51: recipe for target 'docker' failed make: *** [docker] Error 1 root@ubuntu:~/go/blackbox_exporter#

я где то лох? или тупо контейнер кривой?)

Maxim
12.09.2016
15:50:30
да собери ты руками

Alexander
12.09.2016
15:50:49
там еще хуже ?

Maxim
12.09.2016
15:51:20
ммм

ща я попробую

Alexander
12.09.2016
15:51:31
root@ubuntu:~/go/blackbox_exporter# make build >> building binaries > blackbox_exporter can't load package: package github.com/prometheus/blackbox_exporter: cannot find package "github.com/prometheus/blackbox_exporter" in any of: /usr/lib/go-1.6/src/github.com/prometheus/blackbox_exporter (from $GOROOT) /home/kurachav/go/src/github.com/prometheus/blackbox_exporter (from $GOPATH) [1] /home/kurachav/go/src/github.com/prometheus/blackbox_exporter (from $GOPATH) Makefile:43: recipe for target 'build' failed make: *** [build] Error 1

почему он гитхаб у меня в gopath ищет?)

Maxim
12.09.2016
15:54:12
ну а где он еще его должен искать?

так устроен го

$ go get -v -d github.com/prometheus/blackbox_exporter $ cd $GOPATH/src/github.com/prometheus/blackbox_exporter $ CGO_ENABLED=0 go build --ldflags '-s -w --extldflags "-static"' $ file blackbox_exporter blackbox_exporter: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

все отлично билдится

Alexander
12.09.2016
15:58:16
понял

Maxim
12.09.2016
16:00:25
прислать тебе бинарь готовый?

Alexander
12.09.2016
16:00:38
уже сделал :)

Maxim
12.09.2016
16:00:41
ок

ptchol
12.09.2016
18:15:49
https://github.com/grafana/grafana/issues/5996 расходимся.... =(

хотя рано паникую, руками если зафигачить работает

Страница 31 из 681