1
组件介绍
Prometheus是一个开放性的监控解决方案,其灵感来自于Google的Borgmon,于2016年5月继k8s后加入CNCF基金会。Prometheus具备易于管理,高效,可扩展,易集成的特点。详细介绍见官网:https://prometheus.io/docs/introduction/overview/
部署环境
- CDH5.16.2
- CentOS 7
- Prometheus部署在CDH集群的工具节点上
2
组件安装
下载linux安装包
地址:https://prometheus.io/download/
安装Prometheus
部署服务器上建立文件夹并进行解压
代码语言:javascript复制tar -zxvf prometheus-2.17.2.linux-amd64.tar.gz -C /opt/
采用默认配置的yaml文件进行测试
当前Prometheus是安装在CDH集群的工具节点上的,9090端口被Hbase占用,因此启动的时候,需要指定启动端口号,这里采用9091端口进行启动
代码语言:javascript复制./prometheus --config.file=prometheus.yml
--web.listen-address=:9091
--storage.tsdb.path="/u01/prometheus-data"
访问部署机器的9091端口
Prometheus启动测试完成
配置Prometheus服务
创建prometheus用户和组
代码语言:javascript复制groupadd -r prometheus;
useradd -r -g prometheus -s /sbin/nologin -M -c "prometheus Daemons" prometheus;
编写启动脚本,放到prometheus的安装目录下,start_prometheus.sh
代码语言:javascript复制# 指定日志存放目录
mkdir -p /var/log/prometheus.log
# 指定数据存放目录,指定数据过期时间(默认15天)
/opt/prometheus-2.17.2.linux-amd64/prometheus --config.file=/opt/prometheus-2.17.2.linux-amd64/prometheus.yml
--web.listen-address=:9091
--web.enable-lifecycle
--storage.tsdb.path="/u01/prometheus-data"
--storage.tsdb.retention=15d &>> /var/log/prometheus.log
# 修改启动脚本权限
chmod 755 start_prometheus.sh
新增prometheus.service
代码语言:javascript复制# 增加服务
vi /usr/lib/systemd/system/prometheus.service
# 文件内容
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
# 启动脚本
ExecStart=/opt/prometheus-2.17.2.linux-amd64/start_prometheus.sh
[Install]
WantedBy=multi-user.target
启动服务
代码语言:javascript复制systemctl enable prometheus.serivce
systemctl start prometheus.service
systemctl status prometheus
更新配置
代码语言:javascript复制curl -X POST http://127.0.0.1:9091/-/reload
访问工具节点9091端口,promethus撸通
3
使用Node-Exporter收集节点数据
下载Node-Exporter
地址:https://prometheus.io/download/
使用Node-Exporter
将下载的tar包传到服务器上,执行解压启动
代码语言:javascript复制#解压
tar -zxvf node_exporter-1.0.0-rc.0.linux-amd64.tar.gz -C /opt/
#启动
/opt/node_exporter-1.0.0-rc.0.linux-amd64/node_exporter
抓出来的监控指标如下
配置node_exporter服务(集群每台机器都配置)
代码语言:javascript复制vi /usr/lib/systemd/system/node_exporter.service
# 配置
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
# 启动脚本
ExecStart=/opt/node_exporter-0.18.1.linux-amd64/node_exporter
[Install]
WantedBy=multi-user.target
启动node_exporter服务
代码语言:javascript复制# 配置开机启动
systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter
4
Prometheus收集Node_Exporter监控数据
配置yml文件,添加node_exporter收集数据配置
重启Prometheus
代码语言:javascript复制systemctl restart prometheus.service
访问部署机的9091端口 /targets,查看到node任务的状态是Up,证明Node_Exporter接收数据正常
切换到Graph使用PromQL表达式查一下机器的负载
CDH集群上最终部署情况如下图
5
小结
为什么会选择使用Prometheus呢?在数据平台上会运行很多不同类型的数据处理作业。以Spark为例,批处理任务可以使用SparkListener进行监控指标的抓取,流应用可以使用StreamListener进行监控,将这些指标采集到Prometheus后,可以实现作业级别的细粒度监控。Flink亦支持Prometheus抓取监控指标。再依赖于Prometheus提供的各种Exporter如kafka ES。目的是用Prometheus Grafana来构建一套大数据的监控平台。