Мониторинг Ceph кластера

Мониторинг Ceph кластера

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Мониторинг Ceph кластера используя Prometheus и платформу визуализации Grafana.

Grafana - открытая и бесплатная платформа визуализации данных и мониторинга с поддержкой Graphite, InfluxDB, Prometheus, Elasticsearch и многих других баз.

Для мониторинга Ceph кластера мы будем использовать Prometheus

Prometheus - это система мониторинга с открытым исходным кодом, разработанная SoundCloud. Как и другие системы мониторинга, такие как InfluxDB и Graphite, Prometheus хранит все свои данные в базе данных временных рядов.

Установка Grafana

Установим актуальную версию Grafana с официального сайта:

1
yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.4.3-1.x86_64.rpm

Либо используя репозиторий /etc/yum.repos.d/grafana.repo:

1
2
3
4
5
6
7
8
9
[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/6/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

И ставим пакет:

1
yum install grafana

Добавляем сервис в автозагрузку:

1
systemctl enable grafana-server.service

Запускаем сервис:

1
systemctl start grafana-server

После установки Grafana будет доступна по адресу: http://IP_ADDRESS:3000

Логин/пароль по умолчанию admin/admin.

Установка Prometheus

Создаем non-root sudo пользователя prometheus.

1
echo "prometheus ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/prometheus && sudo chmod 0440 /etc/sudoers.d/prometheus

Загружаем стабильную версию продукта:

1
$ curl -LO "https://github.com/prometheus/prometheus/releases/download/v1.7.1/prometheus-1.7.1.linux-amd64.tar.gz"

Создаем директорию для Prometheus:

1
$ mkdir ~/Prometheus

И распаковываем в неё загруженный архив:

1
$ tar -xvzf ~/prometheus-1.7.1.linux-amd64.tar.gz

Проверяем установленную версию Prometheus:

1
$ /home/prometheus/Prometheus/prometheus-1.7.1.linux-amd64/prometheus -version

Увидим приблизительно следующий вывод:

1
2
3
4
prometheus, version 1.7.1 (branch: master, revision: 3afb3fffa3a29c3de865e1172fb740442e9d0133)
build user: root@0aa1b7fc430d
build date: 20170612-11:44:05
go version: go1.8.3

В целом установка Prometheus завершена.

Запускаем Prometheus сервер

Переходим в директорию с установленным Prometheus

1
$ /home/prometheus/Prometheus/prometheus-1.7.1.linux-amd64/

Редактируем конфигурационный файл prometheus.yml:

1
2
3
4
5
6
...
- job_name: 'ceph-exporter'
static_configs:
- targets: ['YOU_IP_ADDRESS:9128']
labels:
alias: ceph-exporter

Запускаем Prometheus в фоновом режиме:

1
nohup ./prometheus > prometheus.log 2>&1 &

Посмотреть лог-файл сервиса Prometheus:

1
tail -f prometheus.log

Вывод приблизительно следующий:

1
2
3
4
5
6
7
8
time="2017-09-14T12:21:58+03:00" level=info msg="Starting prometheus (version=1.7.1, branch=master, revision=3afb3fffa3a29c3de865e1172fb740442e9d0133)" source="main.go:88" 
time="2017-09-14T12:21:58+03:00" level=info msg="Build context (go=go1.8.3, user=root@0aa1b7fc430d, date=20170612-11:44:05)" source="main.go:89"
time="2017-09-14T12:21:58+03:00" level=info msg="Host details (Linux 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 InfraCephManage (none))" source="main.go:90"
time="2017-09-14T12:21:58+03:00" level=info msg="Loading configuration file prometheus.yml" source="main.go:252"
time="2017-09-14T12:21:58+03:00" level=info msg="Loading series map and head chunks..." source="storage.go:428"
time="2017-09-14T12:21:58+03:00" level=info msg="0 series loaded." source="storage.go:439"
time="2017-09-14T12:21:58+03:00" level=info msg="Starting target manager..." source="targetmanager.go:63"
time="2017-09-14T12:21:58+03:00" level=info msg="Listening on :9090" source="web.go:259"

Веб-интерфейс доступен по адресу: http://YOUR_IP_ADDRESS:9090

Настройка экспорта

Для экспорта данных о Ceph кластере будем использовать Ceph Exporter

В данной статье будет рассмотрен пример с Docker-контейнером, на ГХ можно найти мануал по установке на Go.

Итак, установим Docker, если он еще не установлен в системе:

1
$ sudo yum install docker

Добавим в автозагрузку и запустим:

1
2
$ sudo systemctl enable docker
$ sudo systemctl start docker

Выгружаем контейнер:

1
$ sudo docker pull digitalocean/ceph_exporter

Запускаем контейнер с дополнительными опциями (указываем папку с конфигурационными файлами Ceph, а также порт на котором будет слушаться экспортер):

1
$ sudo docker run -v /etc/ceph:/etc/ceph -p=9128:9128 -td digitalocean/ceph_exporter

Проверяем, что контейнер запущен:

1
2
3
$ sudo docker stats
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
bc05ae2b7acb 0.04% 5.922 MiB / 992.7 MiB 0.60% 47.11 kB / 16.86 kB 23.66 MB / 0 B 16

Настраиваем экспорт в Grafana

Добавляем источник данных в Grafana:

Затем добавляем дашборд. В данном примере используется Ceph - Cluster шаблон с Grafana Labs. Добавляем его. (Для удобства можно использовать ID 917 для быстрого импорта).

Переходим в добавленный дашборд и, если все действия были выполнены правильно, то наблюдаем информацию о нашем Ceph кластере.