7.Prometheus: мониторинг IOPS и Disk Latency

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

Наи­бо­лее важ­ные пара­мет­ры про­из­во­ди­тель­но­сти дис­ков — IOPS (Input/Output operations Per Second, опе­ра­ций вво­да-выво­да за секун­ду) и Latency (вре­мя выпол­не­ния опе­ра­ции, задерж­ка перед ответом).

Счи­та­ем, что у нас уста­нов­ле­на и настро­е­на систе­ма мони­то­рин­га Prometheus, а так­же необ­хо­ди­мые ком­по­нен­ты (node_exporter для сбо­ра мет­рик и Grafana для постро­е­ния гра­фи­ков). В дан­ном при­ме­ре настро­им мони­то­ринг пара­мет­ров Disk IOPS и Disk Latency для жест­ко­го дис­ка, на кото­ром рас­по­ло­же­на база данных.

Пере­хо­дим в веб-интер­фейс Grafana по адре­су http://[IP-адрес сервера]:3000, созда­ем новый даш­борд (назо­вем его Disk Performance). Для удоб­ства мы будем исполь­зо­вать шаб­ло­ны (в этом при­ме­ре — для интер­ва­лов вре­ме­ни), для этого:

  • в меню свер­ху нажи­ма­ем Manage dashboards (выгля­дит как шестеренка);
  • в открыв­шем­ся меню выби­ра­ем Templating;
  • для созда­ния пере­мен­ной нажи­ма­ем + New;
  • запол­ня­ем поля, жмем Add и сохра­ня­ем настрой­ки даш­бор­да (кноп­ка с изоб­ра­же­ни­ем дис­ке­ты в верх­нем меню).

Добав­ля­ем новый гра­фик, в поле Query вво­дим мет­ри­ку rate(node_disk_read_time_ms{instance='db1:9100',device='sdc'}[$interval])/rate(node_disk_reads_completed{instance='db1:9100',device='sdc'}[$interval]), а в поле Legend format вво­дим Read: {{device}}. На этом же гра­фи­ке добав­ля­ем еще одну мет­ри­ку — в поле Query вво­дим rate(node_disk_write_time_ms{instance='db1:9100',device='sdc'}[$interval])/rate(node_disk_writes_completed{instance='db1:9100',device='sdc'}[$interval]), в поле Legend format вво­дим Write: {{device}}.

С помо­щью сосед­них вкла­док меню, рас­по­ло­жен­но­го под гра­фи­ком, выби­ра­ем еди­ни­цы изме­ре­ния для шка­лы Y (ms), назва­ние гра­фи­ка (Disk Latency), стиль отоб­ра­же­ния графика/легенды — на ваше усмотрение.

Для отоб­ра­же­ния Disk IOPS мож­но создать отдель­ный гра­фик или же отоб­ра­зить дан­ный пара­метр на толь­ко что создан­ном гра­фи­ке Disk Latency. Какой бы вари­ант вы не выбра­ли, нуж­но будет исполь­зо­вать мет­ри­ку rate(node_disk_reads_completed{instance='db1:9100',device=~'sdc'}[$interval])+rate(node_disk_writes_completed{instance='db1:9100',device=~'sdc'}[$interval]) для вво­да в поле Query, а в поле Legend format IOPS: {{device}}.

При­ме­ча­ние. Не забудь­те изме­нить еди­ни­цы изме­ре­ния для шка­лы Y — теперь это будут I/O ops/sec (iops).