Grafana 是一套开源的跨平台的可视化工具,可以将采集的数据进行可视化展示,并进行通知,展示方式多样,能够让我们随时掌控系统的运行情况。这里我们介绍如何使用 Grafana 来对 Ceph 集群进行性能和运行状态的监控。
Table of Contents 在 CentoS 7 下安装 Grafana 使用 Telegraf 和 InfluxDB 监控 Ceph 利用 Prometheus 监控 Ceph 在 CentoS 7 下安装 Prometheus 安装 Docker 构建 Ceph-exporter 镜像 将 Prometheus 数据添加到 Grafana 启用 Ceph 的 Prometheus 模块 导入 Ceph 集群的 Grafana Dashboards 参考
在 CentoS 7 下安装 Grafana
最简单的方法是通过 Grafana 的官方 Repo 来安装 Grafana。
添加 grafana repo
1 2 3 4 5 6 7 8 9 10 11 $ cat << EOF | sudo tee /etc/yum.repos.d/grafana.repo [grafana] name=grafana baseurl=https://packagecloud.io/grafana/stable/el/7/ 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 EOF
安装 grafana
1 $ sudo yum install -y grafana
启动 Grafana:
1 $ sudo systemctl enable --now grafana-server
设置防火墙,打开 3000 端口:
1 2 $ sudo firewall-cmd --permanent --add-port=3000/tcp $ sudo firewall-cmd --reload
在浏览器中访问 server-ip:3000
就可以看到 Grafana 界面了。默认用户和组都是 admin
。
Grafana 默认配置文件在 /etc/grafana/grafana.in
, 数据库在 /var/lib/grafana/grafana.db
, log 存储在 /var/log/grafana
。
使用 Telegraf 和 InfluxDB 监控 Ceph
to be updated…
利用 Prometheus 监控 Ceph
我们需要安装 Prometheus 和 ceph-exporter 来为 Grafana 提供 Ceph 的信息,
在 CentoS 7 下安装 Prometheus
创建一个 Prometheus 系统组和账户:
1 2 3 $ sudo useradd -s /sbin/nologin -r -U prometheus
创建 Prometheus 数据和配置文件夹
1 2 $ sudo mkdir -p /etc/prometheus/{rules,rules.d} $ sudo mkdir -p /var/lib/prometheus
下载最新的 Prometheus 二进制包进行安装(2。7.1)
1 2 3 4 5 6 7 8 9 $ VER=2.7.1 $ wget https://github.com/prometheus/prometheus/releases/download/v${VER} /prometheus-${VER} .linux-amd64.tar.gz $ tar xf prometheus-${VER} .linux-amd64.tar.bz2 && cd prometheus-${VER} .linux-amd64 $ sudo cp prometheus promtool /usr/bin/ $ sudo cp -r consoles console_libraries prometheus.yml /etc/prometheus $ sudo chown -R prometheus:prometheus /var/lib/prometheus /etc/prometheus/
创建 Prometheus 配置文件:
1 2 3 4 5 6 7 8 9 10 global: scrape_interval: 15s evaluation_interval: 15s scrape_timeout: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090' ]
创建 systemd 服务单元 prometheus.service
, 其中,Environment="GOMAXPROCS=2"
是服务器上的 vCPUs 数量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [Unit] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple Environment="GOMAXPROCS=2" User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --web.listen-address=0.0.0.0:9090 \ --web.external-url= SyslogIdentifier=prometheus Restart=always [Install] WantedBy=multi-user.target
启动 Prometheus 服务:
1 2 3 $ sudo cp prometheus.service /usr/lib/systemd/system $ sudo systemctl daemon-reload $ sudo systemctl enable --now prometheus
配置防火墙,打开相应的端口
1 2 3 4 5 $ sudo firewall-cmd --permanent --add-port=9090/tcp $ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.60.0/24" port protocol="tcp" port="9090" accept' $ sudo firewall-cmd --reload
安装 Docker
在用作 Docker 服务器上安装 Docker:
移除之前安装的 Docker:
1 $ sudo yum remove -y docker docker-common docker-selinux docker-engine
安装依赖包
1 $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加 Docker 源:
1 $ sudo wget https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
安装 Docker CE:
1 $ sudo yum install docker-ce
启动 Docker 服务:
1 $ sudo systemctl enable --now docker
构建 Ceph-exporter 镜像
从 Github clone ceph-exporter
:
1 $ git clone https://github.com/digitalocean/ceph_exporter
构建 ceph-exporter 镜像:
1 $ docker build . -t ceph-exporter
启动一个 Docker 容器运行 Ceph-exporter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 $ docker run --name ceph-exporter -v /etc/ceph:/etc/ceph --net host -p 9128:9128 --restart unless-stopped -dit digitalocean/ceph-exporter $ cat << EOF >> docker-compose.yml # Example usage of exporter in use version: '2' services: ceph-exporter: image: ceph_exporter restart: unless-stopped network_mode: "host" volumes: - /etc/ceph:/etc/ceph ports: - '9128:9128' EOF $ docker-compose up -d $ cat << EOF | sudo tee /usr/lib/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 EOF $ sudo systemctl daemon-reload $ sudo systemctl enable ceph-exporter $ sudo systemctl status ceph-exporter
设置防火墙,打开 9128 端口:
1 2 3 $ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" \ source address="192.168.60.0/24" port protocol="tcp" port="9128" accept' $ sudo firewall-cmd --reload
Grafana 配置文件中加入 ceph-exporter
部分,修改 ceph-exporter-ip 为真实的 IP.IP,并重启 Grafana 服务。
1 2 3 4 5 6 7 8 9 scrape_configs: - job_name: prometheus static_configs: - targets: ['localhost:9090' ] - job_name: 'ceph-exporter' static_configs: - targets: ['ceph-exporter-ip:9128' ] labels: alias : ceph-exporter
将 Prometheus 数据添加到 Grafana
安装配置好上面的之后,我们需要在 Grafana 中添加 Prometheus 数据源。登陆到 Grafana Web 服务器,在设置中,添加数据源,选择 Prometheus:
添加数据源,需要提供的是:
Name: 数据源名
URL: 数据源地址
Access: Server(Proxy) or Browser(Direct)
添加界面如下:
填好后,点击 Save and Test
按钮即可。
启用 Ceph 的 Prometheus 模块
在 Ceph 中启用 mgr 的 promtheus 监控模块:
1 $ ceph mgr module enable prometheus
导入 Ceph 集群的 Grafana Dashboards
Grafana 官网上有一些已经写好的 Dashboards, 我们可以从上面导入一些设计比较好的。 Dashboard 是 json 文件,我们也可以自己修改设计 Ceph 的 Dashboard。Ceph 本身也有一些 Dashboards , 可以作为参考。在 Grafana Web 界面左侧的工具栏选择 + -> Import ,导入界面大致如下:
有三种方法可以导入 Dashboard:
填写 Dashboard 在 Grafana.com Dashboard 中的 url 或 id
上传 JSON 文件
直接粘贴 JSON 内容
导入合适的 Dashboard 后,就可以在 Dashboards 界面选择查看导入的 Dashboards 了。
PS : ceph-exporter 中提供了 docker-compose.yml
,包含了 Prometheus、Grafana 和 ceph-exporter, 我们可以使用 docker-compose 一起运行这三个服务。
参考
Grafana Ceph - Cluster 7056
Grafana Ceph - Cluster 2842
Grafana Ceph - Cluster 917
Grafana Ceph - Cluster 923
Grafana Ceph - Cluster 926
Monitoring Ceph Cluster with Prometheus and Grafana
Prometheus plugin
Ceph Monitoring
Install Prometheus Server on CentOS 7 and Ubuntu 18.04
Monitoring Ceph Cluster with Prometheus and Grafana