====== Мониторинг Ceph кластера ======
Мониторинг **Ceph** кластера используя **Prometheus** и платформу визуализации **Grafana**.
**Grafana** - открытая и бесплатная платформа визуализации данных и мониторинга с поддержкой **Graphite**, **InfluxDB**, **Prometheus**, **Elasticsearch** и многих других баз.
Для мониторинга **Ceph** кластера мы будем использовать **Prometheus**
**Prometheus** - это система мониторинга с открытым исходным кодом, разработанная **SoundCloud**. Как и другие системы мониторинга, такие как **InfluxDB** и **Graphite**, **Prometheus** хранит все свои данные в базе данных временных рядов.
==== Установка Grafana ====
Установим актуальную версию **Grafana** с [[http://docs.grafana.org/installation/rpm/|официального сайта]]:
|
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'':
|
[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
|
И ставим пакет:
|
yum install grafana
|
Добавляем сервис в автозагрузку:
|
systemctl enable grafana-server.service
|
Запускаем сервис:
|
systemctl start grafana-server
|
После установки **Grafana** будет доступна по адресу: ''[[http://IP_ADDRESS:3000|http://IP_ADDRESS:3000]]''
Логин/пароль по умолчанию ''admin/admin''.
==== Установка Prometheus ====
Создаем ''non-root sudo'' пользователя ''prometheus''.
|
echo "prometheus ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/prometheus && sudo chmod 0440 /etc/sudoers.d/prometheus
|
Загружаем стабильную версию продукта:
|
$ curl -LO "https://github.com/prometheus/prometheus/releases/download/v1.7.1/prometheus-1.7.1.linux-amd64.tar.gz"
|
Создаем директорию для **Prometheus**:
|
$ mkdir ~/Prometheus
|
И распаковываем в неё загруженный архив:
|
$ tar -xvzf ~/prometheus-1.7.1.linux-amd64.tar.gz
|
Проверяем установленную версию **Prometheus**:
|
$ /home/prometheus/Prometheus/prometheus-1.7.1.linux-amd64/prometheus -version
|
Увидим приблизительно следующий вывод:
|
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**
|
$ /home/prometheus/Prometheus/prometheus-1.7.1.linux-amd64/
|
Редактируем конфигурационный файл ''prometheus.yml'':
|
...
- job_name: 'ceph-exporter'
static_configs:
- targets: ['YOU_IP_ADDRESS:9128']
labels:
alias: ceph-exporter
|
Запускаем **Prometheus** в фоновом режиме:
|
nohup ./prometheus > prometheus.log 2>&1 &
|
Посмотреть лог-файл сервиса **Prometheus**:
|
tail -f prometheus.log
|
Вывод приблизительно следующий:
|
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** кластере будем использовать [[https://github.com/digitalocean/ceph_exporter|Ceph Exporter]]
В данной статье будет рассмотрен пример с **Docker**-контейнером, на ГХ можно найти мануал по установке на **Go**.
Итак, установим **Docker**, если он еще не установлен в системе:
|$ sudo yum install docker
|
Добавим в автозагрузку и запустим:
|
$ sudo systemctl enable docker
$ sudo systemctl start docker
|
Выгружаем контейнер:
|
$ sudo docker pull digitalocean/ceph_exporter
|
Запускаем контейнер с дополнительными опциями (//указываем папку с конфигурационными файлами **Ceph**, а также порт на котором будет слушаться экспортер//):
|
$ sudo docker run -v /etc/ceph:/etc/ceph -p=9128:9128 -td digitalocean/ceph_exporter
|
Проверяем, что контейнер запущен:
|
$ 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**:
{{https://fatalex.cifro.net/lib/plugins/ckgedit/fckeditor/userfiles/image/ceph/001.png?nolink&630x754}}
Затем добавляем дашборд. В данном примере используется [[https://grafana.com/dashboards/917|Ceph - Cluster]] шаблон с **Grafana Labs**. Добавляем его. (Для удобства можно использовать ID 917 для быстрого импорта).
{{https://fatalex.cifro.net/lib/plugins/ckgedit/fckeditor/userfiles/image/ceph/002.png?nolink&753x444}}
Переходим в добавленный дашборд и, если все действия были выполнены правильно, то наблюдаем информацию о нашем **Ceph** кластере.
{{https://fatalex.cifro.net/lib/plugins/ckgedit/fckeditor/userfiles/image/ceph/003.png?nolink&1450x736}}