Prometheus监控工具安装部署

2020-07-10 14:55:34 浏览数 (1)

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来构建一套大数据的监控平台。

0 人点赞