====== Мониторинг 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}}