使用Prometheus和Grafana监视Ceph集群
本文是"智能基础架构"监视系列的一部分,我们已经介绍了如何在CentOS 7上安装Prometheus Server以及如何在CentOS 7上安装Grafana和InfluxDB。
为了监控它,很幸运,我们遇到了Prometheus和Grafana。
使用Prometheus进行Ceph群集监视需要Prometheus导出程序来刮取有关ceph群集的元信息。
在本指南中,我们将使用DigitalOcean Ceph导出器。
准备工作:
已安装Prometheus Server,已安装Grafana Server,已安装在服务器上的Docker以运行Prometheus Ceph导出器。
它应该能够与ceph群集进行通信。
将Ceph Cluster访问Ceph群集以复制ceph.conf配置文件和ceph。
<user> .keyring以便对群集进行身份验证。
请按照以下步骤获取有关如何进行设置的完整指南。
步骤1:安装Prometheus Server和Grafana:
使用这些链接来了解如何安装Prometheus和Grafana。
在CentOS 7上安装Prometheus Server以及在CentOS 7上安装Grafana和InfluxDB。
第2步:在Prometheus Ceph导出器客户端上安装Docker
请注意,Prometheus Ceph导出器客户端应有权访问Ceph群集网络以提取群集指标。
使用我们的官方Docker安装指南在该服务器上安装Docker:如何在Ubuntu/Debian/Fedora/Arch/CentOS上安装Docker CE以及安装docker-compose。
由于在安装Docker Engine之前添加了docker存储库,因此我们应该能够从yum或者apt-get安装docker-compose。
sudo yum -y install docker-compose
对于Ubuntu:
sudo apt-get -y install docker-compose
步骤3:建立Ceph Exporter Docker镜像
安装Docker Engine并运行服务后。
我们应该已经准备好从DigitalOcean Ceph导出器项目构建docker镜像。
如果还没有安装,请考虑安装它。
sudo yum -y install git
如果我们使用的是Ubuntu,请运行:
sudo apt-get -y install git
然后从Github克隆项目:
git clone https://github.com/digitalocean/ceph_exporter.git
切换到ceph_exporter目录并构建docker镜像:
$docker build -t ceph_exporter
这将生成一个名为ceph_exporter的镜像。
可能需要一段时间,具体取决于Internet和磁盘写入速度。
步骤4:启动Prometheus ceph导出器客户端容器
将ceph.conf配置文件和ceph。
<user> .keyring复制到/etc/ceph目录,并启动docker容器主机的网络堆栈。
我们可以使用vanilla docker命令,docker-compose或者systemd来管理容器。
对于docker命令行工具,请运行以下命令。
$docker run -it -v /etc/ceph:/etc/ceph --net=host \ -p=9128:9128 digitalocean/ceph_exporter
对于docker-compose,创建以下文件:
# Example usage of exporter in use version: '2' services: ceph-exporter: image: ceph_exporter restart: always network_mode: "host" volumes: - /etc/ceph:/etc/ceph ports: - '9128:9128'
然后使用以下命令启动Docker容器:
$docker-compose up -d
对于systemd,创建如下的服务单元文件:
$sudo vim /etc/systemd/system/ceph_exporter.service [Service] Restart=always TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker kill ceph_exporter ExecStartPre=-/usr/bin/docker rm ceph_exporter ExecStart=/usr/bin/docker run \ --name ceph_exporter \ -v /etc/ceph:/etc/ceph \ --net=host \ -p=9128:9128 \ ceph_exporter ExecStop=-/usr/bin/docker kill ceph_exporter ExecStop=-/usr/bin/docker rm ceph_exporter
检查容器状态:
sudo systemctl status ceph_exporter
如果一切正常,我们应该获得如下所示的输出。
步骤5:在防火墙上打开9128.
我使用防火墙,因为这是一台CentOS 7服务器,允许从我们受信任的网络访问端口9128.
$sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" \ source address="192.168.10.0/24" port protocol="tcp" port="9128" accept' $sudo firewall-cmd --reload
使用nc或者telnet命令测试访问。
$telnet 127.0.0.1 9128 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. $nc -v 127.0.0.1 9128 Ncat: Version 6.40 ( http://nmap.org/ncat ) Ncat: Connected to 127.0.0.1:9128.
步骤6:使用Ceph导出器配置Prometheus抓取目标
我们需要为创建的ceph导出器容器定义Prometheus static_configs行。
在Prometheus服务器上编辑文件/etc/prometheus/prometheus.yml,如下所示。
scrape_configs: - job_name: prometheus static_configs: - targets: ['localhost:9090'] - job_name: 'ceph-exporter' static_configs: - targets: ['localhost:9128'] labels: alias: ceph-exporter
用ceph导出器主机IP地址替换localhost。
进行更改后,请记住重新启动Prometheus服务:
sudo systemctl restart prometheus
步骤7:将Prometheus数据源添加到Grafana
登录到Grafana仪表板并添加Prometheus数据源。
我们需要提供以下信息:名称:为此数据源指定的名称类型:数据源的类型,在本例中为Prometheus URL:我们要添加的Prometheus服务器的IP地址和端口号。
访问:指定是通过代理访问还是直接访问。
代理是指通过Grafana服务器进行访问,直接是指从Web进行访问。
通过单击"保存并测试"按钮来保存设置。
步骤8:导入Ceph Cluster Grafana仪表板
最后一步是导入Ceph Cluster Grafana仪表板。
从我的研究中,我发现了Cristian Calin.Ceph群集概述的以下仪表板:https://grafana.com/dashboards/917 Ceph池概述:https://grafana.com/dashboards/926 Ceph OSD概述:https://grafana.com/dashboards/923在Grafana上导入仪表板时,我们将使用仪表板ID 917、926和923.
单击加号(+)>导入以导入仪表板。
在上方输入与我们要导入的信息中心相匹配的数字。
要查看导入的仪表板,请转到仪表板,然后选择要查看的仪表板的名称。