使用Prometheus和Grafana监视Ceph集群

时间:2020-02-23 14:31:23  来源:igfitidea点击:

本文是"智能基础架构"监视系列的一部分,我们已经介绍了如何在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.
单击加号(+)>导入以导入仪表板。
在上方输入与我们要导入的信息中心相匹配的数字。

要查看导入的仪表板,请转到仪表板,然后选择要查看的仪表板的名称。