返回顶部

prometheus + grafana 监测ceph集群状态

起因

最近在使用海量小文件压测ceph集群,想要一个可视化的界面来方便监测ceph集群状态,由于很久之前使用过prometheus + grafana 监测 k8s 集群状态,想着用来监测 ceph 集群应该问题不大,那么就开始吧!

首先了解下 prometheus 和 grafana 是什么
通俗来讲,Prometheus可以通过各种方式采集应用程序和系统的指标数据,例如服务器的 CPU 使用率、内存使用率、网络流量等等。采集到的数据会存储在一个时间序列数据库中,用户可以使用PromQL查询语言进行查询和分析。同时,Prometheus还提供了告警机制,可以在监控数据超出设定的阈值时发出告警通知。而Grafana可以通过连接Prometheus数据源,将采集到的数据进行可视化展示,例如将 CPU 使用率和内存使用率用折线图的形式展示出来。用户可以通过配置仪表盘来自定义展示的数据和样式,以及添加告警规则和面板等。

Prometheus + Grafana组合就是一套监控和可视化解决方案,可以帮助用户更好地监控和管理他们的应用程序、服务器和网络设备。

在 Ceph Luminous (12.x) 之前的版本,可以使用第三方的 ceph_exporter 采集 Ceph 集群的监控信息。 从 Ceph Luminous 12.2.1 版本开始,MGR 中自带了 Prometheus 插件,内置了 Prometheus Ceph Exporter,可以使用 Ceph MGR 内置的 exporter 作为 Prometheus 的 target。

一、启用 ceph prometheus 模块

任意一台ceph mgr节点执行

ceph mgr module enable prometheus

启用成功后可以看到

[root@node1 ~]# ceph mgr services
{
    "dashboard": "https://node1:8443/",
    "prometheus": "http://node1:9283/"
}

其中 9283 是 ceph_exporter 的默认监听端口,访问 http://<MGR>:9283/metrics 可以获取到 metrics

image

二、安装 prometheus server

1、二进制安装

Prometheus 基于 Golang 编写,编译后的软件包,不依赖于任何的第三方依赖。所以只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启动 Prometheus Server。

下载地址:https://prometheus.io/download/

解压并且移动到 /opt/ 目录

[root@node1 ~]# tar zxvf prometheus-2.45.0.linux-amd64.tar.gz
[root@node1 ~]# mv prometheus-2.45.0.linux-amd64 /opt/prometheus/
[root@node1 ~]# cd /opt/prometheus/
2、将 prometheus 配置为系统服务进行管理
cat > /usr/lib/systemd/system/prometheus.service << EOF
[Unit]
Description=prometheus
[Service]
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data/ --web.enable-lifecycle
ExecReload=/bin/kill -HUP \$MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
3、启动服务
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus

出现关键信息Server is ready to receive web requests. 则启动成功,此时可以通过 http://<IP>:9090 访问 Prometheus 的 UI 界面

image

4、配置 prometheus 数据源

为了让 Prometheus Server 能够从 Ceph Exporter 获取到监控数据,需要修改 Prometheus 配置文件。编辑 prometheus.yml 并在 scrape_configs 节点下添加以下内容:

[root@node1 ~]# vim /opt/prometheus/prometheus.yml
...
  - job_name: "Ceph"
    static_configs:
      - targets: ["<IP>:9283"]

重新加载 systemctl reload prometheus,再次访问 http://<IP>:9090,选择Status -> Targets,此时可以成功获取到 prometheus 数据源

image

三、安装 grafana

1、二进制安装

下载地址:https://grafana.com/grafana/download

[root@node1 ~]# tar zxvf grafana-enterprise-8.0.5.linux-amd64.tar.gz
[root@node1 ~]# mv grafana-8.0.5/ /opt/grafana/
[root@node1 ~]# cd /opt/grafana/

2、将 grafana 配置为系统服务进行管理

cat > /usr/lib/systemd/system/grafana.service << EOF
[Unit]
Description=grafana
[Service]
ExecStart=/opt/grafana/bin/grafana-server -homepath=/opt/grafana
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
3、启动 grafana 服务
systemctl daemon-reload
systemctl start grafana
systemctl enable grafana

启动成功后可通过http://<IP>:3000 进入到 Grafana UI,默认情况下使用账户 admin/admin 进行登录(首次登录会要求修改默认密码)。点击 "Add your first data source" 添加数据源

image

选择 “Prometheus”,点击右侧的 “Select”

image

“URL” 填写 Prometheus 的访问地址,滑到最下方点击 “Save & test” 完成添加,配置正确的情况下会提示 "Data source is working" 的信息。

完成数据源的添加之后就可以在 Grafana 中创建可视化 Dashboard 了,选择左侧 Dashboards -> Manage,点击 Import,输入 Dashboard 模板编号 2842,点击 Load,给 Dashboard 配置个名称,选择数据源为 Prometheus,最后点击 Import

image

部署中遇到的几个小问题:

1、由于服务器是局域网,时间服务器设置问题,导致 prometheus 对接数据源的时候会有警告Warning: Error fetching server time: Detected 229.88299989700317 seconds time difference between your browser and the server. Prometheus relies on accurate time and time drift might cause unexpected query results.

先选择了笨办法手动改一下时间

date -s "2023-06-28 11:41:00"
hwclock --systohc

2、添加 dashboard 模板时,输入模板编号提示Bad Gateway,此时可以去grafana dashboards官网自行下载json文件然后Upload JSON file
image

写在最后

文章主要参考自 使用 Prometheus+Grafana 监控 Ceph,在此基础上根据自身环境所撰写,如有侵权请联系删除!

posted @ 2023-06-27 17:30  十方央丶  阅读(515)  评论(0编辑  收藏  举报