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
二、安装 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 界面
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 数据源
三、安装 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" 添加数据源
选择 “Prometheus”,点击右侧的 “Select”
“URL” 填写 Prometheus 的访问地址,滑到最下方点击 “Save & test” 完成添加,配置正确的情况下会提示 "Data source is working" 的信息。
完成数据源的添加之后就可以在 Grafana 中创建可视化 Dashboard 了,选择左侧 Dashboards -> Manage
,点击 Import
,输入 Dashboard 模板编号 2842,点击 Load
,给 Dashboard 配置个名称,选择数据源为 Prometheus
,最后点击 Import
部署中遇到的几个小问题:
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
写在最后
文章主要参考自 使用 Prometheus+Grafana 监控 Ceph,在此基础上根据自身环境所撰写,如有侵权请联系删除!