support for mapper usage in diskio input
Opis
Dyski w systemie mogą być pod kilkoma "nazwami". Najbardziej popularna to oczywiście np. /dev/sda
. Czasami jednak są bardziej złożone kwestie, np. przy multipathie mamy taki ładny link /dev/mapper/mpathX
, który to linkuje sobie do /dev/dm-Y
.
Używanie mappera jest wygodne, bo można wtedy łatwo definiować np. partycje. Robi się to standardowo, powstaje sobie /dev/mapper/mpathX1
, który to linkuje się do jakiegoś /dev/dm-Z
(note: nie do /dev/dm-Y1
, to ważne).
Niestety żeby monitorować wydajność dysków aktualnie trzeba podawać te oryginalne nazwy, nie te mapperowe. Oczywiście można to osiągnąć babrając się jinją, ale można też dodać tutaj 2 rzeczy, i będzie działać.
Implementacja
- do templates/inputs.diskio.conf.j2 dodać
device_tags = ["DM_NAME"]
jakocustom_configuration
. Do decyzji czy robić to zqawsze, czy tylko gdy użytkownik dodaDM_NAME
do listy tagów. - do
docker_service_volumes
w tasks/deploy.yml dodać montowanie/run/udev
. Można to zrobić albo montując po prostu/run/udev:/run/udev:ro
, albo analogicznie doetc
,proc
, ale całyrun
:/run:{{ _telegraf_container_host_root }}/run:ro"
. wraz z definicją zmiennejHOST_RUN
- wada tego drugiego to szersze podmontowanie, ale za to bezpieczniejsze.
Przykład
Zamiast standardowego:
- name: "diskio"
type: "diskio"
devices:
- "sda"
- "vda"
names:
- "diskio"
fields:
- "reads"
- "writes"
- "read_bytes"
- "write_bytes"
- "read_time"
- "write_time"
- "io_time"
tags:
- "host"
- "name"
trzeba zrobić:
telegraf_inputs:
- name: "diskio"
type: "diskio"
names:
- "diskio"
fields:
- "reads"
- "writes"
- "read_bytes"
- "write_bytes"
- "read_time"
- "write_time"
- "io_time"
tags:
- "host"
- "name"
- "DM_NAME"
filters:
- tag: "name"
patterns:
- "sda"
- "vda"
- tag: "DM_NAME"
patterns:
- "mpathv"