2.Prometheus. сбор метрик от MySQL-сервера

Thank you for reading this post, don't forget to subscribe!

мы успеш­но уста­но­ви­ли и выпол­ни­ли базо­вую настрой­ку систе­мы мони­то­рин­га, теперь давай­те раз­бе­рем­ся со сбо­ром и экс­пор­том мет­рик от MySQL-сер­ве­ра с помо­щью ком­по­нен­та MySQL Server Exporter.

Уста­нав­ли­ва­ем ком­по­нент mysqld_exporter:

В даль­ней­ших инструк­ци­ях раз­ра­бот­чи­ки пред­ла­га­ют запус­кать mysqld_exporter так:

или создать скрипт-оберт­ку run_mysqld_exporter.sh с таким содержимым:

При­ме­ча­ние. Подроб­нее о фор­ма­те пере­мен­ной DATA_SOURCE_NAME мож­но почи­тать тут.

Поль­зо­ва­тель, опре­де­лен­ный в пере­мен­ной DATA_SOURCE_NAME, дол­жен иметь пра­ва SUPER или REPLICATION CLIENT на базу дан­ных MySQL, кото­рую вы соби­ра­е­тесь мони­то­рить. Луч­ше все­го создать для этих целей ново­го поль­зо­ва­те­ля сле­ду­ю­щим запросом:

На мой взгляд, пред­ла­га­е­мые раз­ра­бот­чи­ка­ми вари­ан­ты запус­ка ком­по­нен­та для сбо­ра мет­рик не слиш­ком удоб­ны, поэто­му копи­ру­ем испол­ня­е­мый файл mysqld_exporter в ката­лог /usr/sbin/:

Созда­ем init-скрипт в ката­ло­ге /etc/init.d/:

и дела­ем его исполняемым:

Содер­жи­мое скрип­та будет следующим:

[codesyntax lang="php"]

[/codesyntax]

Теперь мы лег­ко можем управ­лять (start|stop|status|restart|force-reload) ком­по­нен­том mysqld_exporter для сбо­ра мет­рик от MySQL-сер­ве­ра. Запу­стим его:

При­ме­ча­ние. Не забудь­те вве­сти свои зна­че­ния пере­мен­ной DATA_SOURCE_NAME.

После это тре­бу­ет­ся отре­дак­ти­ро­вать кон­фи­гу­ра­ци­он­ный файл /etc/prometheus/prometheus.yml, доба­вив в него:

[codesyntax lang="php"]

[/codesyntax]

и пере­за­пу­стить Prometheus для при­ме­не­ния изме­не­ний командой:

Если все сде­ла­но пра­виль­но, то собран­ные мет­ри­ки MySQL-сер­ве­ра будут доступ­ны из бра­у­зе­ра по адре­су http://[IP-адрес сервера]:9104/metrics, гра­фи­ки же мож­но стро­ить по адре­су http://[IP-адрес сервера]:9090/graph.

Боль­шин­ство мет­рик, кото­рые соби­ра­ет mysqld_exporter име­ют тип Counter — это озна­ча­ет, что зна­че­ние мет­ри­ки будет посто­ян­но уве­ли­чи­вать­ся. Конеч­но же, есть смысл выво­дить не абсо­лют­ное зна­че­ние мет­ри­ки, а ее ско­рость изме­не­ния (rate of change). Напри­мер, ско­рость изме­не­ния дан­ной мет­ри­ки за послед­ние 5 минут мож­но отоб­ра­зить как rate(mysql_global_status_queries[5m]).

Выве­сти на гра­фи­ке 5 самых боль­ших таб­лиц опре­де­лен­ной базы дан­ных мож­но так topk(5, sum(mysql_info_schema_table_size{schema='<ИМЯ_БД>'}) by (table)).

На этом все, со сбо­ром мет­рик от MySQL-сер­ве­ра в систе­ме мони­то­рин­га Prometheus мы разо­бра­лись, оста­лось толь­ко опре­де­лить важ­ные мет­ри­ки кон­крет­но для ваше­го слу­чая и сле­дить за ними.