Promethues基础及安装

Prometheus是一个开源监控解决方案,源自Google的Borgmon系统,现为CNCF项目。它以其易于管理、强大的PromQL查询语言、高效性和可扩展性著称。Prometheus核心组件包括服务器、exporters、AlertManager和PushGateway。工作流程涉及拉取(pull)和推送(push)数据,支持多种数据类型如counter、gauge、histogram和summary。实验环境展示了如何安装和配置Prometheus,包括集成InfluxDB作为远程存储。

目录

Promethues简介:

Promethues优势:

Promethues优缺点:

优点:

缺点:

Promethues核心组件:

Prometheus-server:

exporters:

AlertManager:

PushGateway:

Promethues架构图: 

Prometheus工作流程:

pull和pash的区别:

Prometheus的四种数据类型:

Promethues实验:

实验环境:

实验过程:

配置文件详解: 


Promethues简介:

prometheus受启发于Google的Brogmon监控系统(相似kubernetes是从Brog系统演变而来), 从2012年开始由google工程师Soundcloud以开源形式进行研发,并且与2015年早起对外发布早期版本。 2016年5月继kubernetes之后成为第二个加入CNCF基金会的项目,年6月正式发布1.0版本。2017年底发布基于全兴存储层的2.0版本,能更好地与容器平台、云平台配合。

Promethues优势:

prometheus是基于一个开源的完整监控方案,其对传统监控系统的测试和告警模型进行了彻底的颠覆,形成了基于中央化的规则计算、统一分析和告警的新模型。

相对传统的监控系统有如下几个优点:

  • 易于管理: 部署使用的是go编译的二进制文件,不存在任何第三方依赖问题,可以使用服务发现动态管理监控目标。
  • 监控服务内部运行状态: 我们可以使用prometheus提供的常用开发语言提供的client库完成应用层面暴露数据, 采集应用内部运行信息。
  • 强大的查询语言promQL: prometheus内置一个强大的数据查询语言PromQL,通过PromQL可以实现对监控数据的查询、聚合。同时PromQL也被应用于数据可视化(如grafana)以及告警中的。
  • 高效: 对于监控系统而言,大量的监控任务必然导致有大量的数据产生。 而Prometheus可以高效地处理这些数据。
  • 可扩展: prometheus配置比较简单, 可以在每个数据中心运行独立的prometheus server, 也可以使用联邦集群,让多个prometheus实例产生一个逻辑集群,还可以在单个prometheus server处理的任务量过大的时候,通过使用功能分区和联邦集群对其扩展。
  • 易于集成: 目前官方提供多种语言的客户端sdk,基于这些sdk可以快速让应用程序纳入到监控系统中,同时还可以支持与其他的监控系统集成。
  • 可视化: prometheus server自带一个ui, 通过这个ui可以方便对数据进行查询和图形化展示,可以对接grafana可视化工具展示精美监控指标。

Promethues优缺点:

优点:

  • 基于时间序列模型,时间序列是指将某种现象某一个统计指标在不同时间上的各个数值,按时间先后顺序排列而形成的序列 ,时间序列分析的主要目的是根据已有的历史数据对未来进行预测。
  • 基于K V的数据模型
  • 采样数据的查询,完全基于数学运算
  • 采用HTTP pull/push两种对应的数据采集传输方式
  • 本身自带图形调试

缺点:

  • 因其数据采集的精度 如果集群数量太⼤,那么单点的监控有性能瓶颈
  • 对磁盘资源也是耗费的较⼤,这个具体要看 监控的集群量 和 监控项的多少 和保存时间的长短

Promethues核心组件:

Prometheus-server:

Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。

exporters:

exporter简单说是采集端,通过http服务的形式保留一个url地址,prometheus server 通过访问该exporter提供的endpoint端点,即可获取到需要采集的监控数据。

exporter分为2大类:

  • 直接采集:这一类exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes等。原生监控
  • 间接采集: 原有监控目标不支持prometheus,需要通过prometheus提供的客户端库编写监控采集程序,例如Mysql Exporter, JMX Exporter等。  非原生监控

AlertManager:

在prometheus中,支持基于PromQL创建告警规则,如果满足定义的规则,则会产生一条告警信息,进入AlertManager进行处理。可以集成邮件,Slack或者通过webhook自定义报警。

PushGateway:

pushgateway是另一种数据采集的方式,采用被动推送来获取监控数据的

Promethues架构图: 

Prometheus工作流程:

  • 指标采集:prometheus server 通过 pull 形式采集监控指标,可以直接拉取监控指标,也可以通过 pushgateway 做中间环节,监控目标先 push 形式上报数据到 pushgateway;
  • 指标处理:prometheus server 将采集的数据存储在自身 db 或者第三方 db;
  • 指标展示:prometheus server 通过提供 http 接口,提供自带或者第三方展示系统;
  • 指标告警:prometheus server 通过 push 告警信息到 alert-manager,alert-manager 通过"静默-抑制-整合-下发"4个阶段处理通知到观察者。

pull和pash的区别:

pull模式:客户端使用library,变成exporter,然后prometheus server定时从exporter pull数据。

push模式:使用pushgateway,所有客户端push数据到pushgateway,然后prometheus server定时从pushgateway pull数据。

比较:

push模式的缺点:采用pushgateway的方式,如果某一个上报方挂了,pushgateway无法感知上报方的状态,所以这时候如果不做任何操作,那么prometheus依旧会从pushgateway中获取到旧的、不正确的数据。

pull的优点:采用exporter的方式,如果某一个exporter挂掉了,那么prometheus就pull不到数据,那么时序数据库没有新的数据产生。这是正确的。
 

Prometheus的四种数据类型:

  • counter (只增不减 计数)
  • Gauge (常规数值 可变化大小)
  • histogram (柱状图 小于上边界的 总数与次数)
  • summary (分位数  小于自定义值的百分比 总数与次数)

Promethues实验:

实验环境:

主机名称

Ip地址

安装软件

prometheus

192.168.100.2

prometheus

实验过程:

prometheus的官网的download页面,可以找到prometheus的下载二进制包。

# 上传包并解压
tar zxvf prometheus-2.43.0-rc.0.linux-amd64.tar.gz 

#移动到/usr/local/promethues
mv prometheus-2.43.0-rc.0.linux-amd64 /usr/local/promethues/

#cd进去
cd /usr/local/promethues/

#Promtheus作为一个时间序列数据库,其采集的数据会以文件的形似存储在本地中,默认的存储路径为data/,因此我们需要先手动创建该目录:
mkdir data

#将prometheus、promtool软连接到/usr/local/sbin
ln -sv prometheus /usr/local/sbin/
ln -sv promtool /usr/local/sbin/

#创建用户
useradd -s /sbin/nologin prometheus
chown -R  prometheus:prometheus /usr/local/prometheus/

#cd到/usr/lib/systemd/system
cd /usr/lib/systemd/system

#编写启动脚本
[Unit]
Description=prometheus
After=network.target 

[Service]
User=prometheus
Group=prometheus
WorkingDirectory=/usr/local/prometheus
ExecStart=/usr/local/prometheus/prometheus
[Install]
WantedBy=multi-user.target


#重载
systemctl daemon-reload

#启动
systemctl enable prometheus.service --now

#查看端口号9090
netstat -anpt |grep 9090

访问192.168.100.2:9090

默认情况下prometheus会将采集的数据存储到本机的data目录, 存储数据的大小受限和扩展不便,这时使用influxdb作为后端的数据库来存储数据。

#下载
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.8.x86_64.rpm

#安装
yum -y install influxdb-1.7.8.x86_64.rpm

#备份influxdb
cp /etc/influxdb/influxdb.conf  /etc/influxdb/influxdb.conf.default

#启动
systemctl enable influxdb --now

登录查看:输入influx

#创建prometheus库
create database prometheus;

#查看
show databases;

#退出
exit

 配置prometheus集成influxdb: 

官方的帮助文档在这里:Prometheus endpoints support in InfluxDB | InfluxDB OSS 1.7 Documentation

#备份配置文件
cp /usr/local/prometheus/prometheus.yml /usr/local/prometheus/prometheus.yml.bak

#编辑配置文件
vim /usr/local/prometheus/prometheus.yml

#末尾添加,意义是将prometheus的数据保存到prometheus数据库
remote_write:
  - url: "http://localhost:8086/api/v1/prom/write?db=prometheus"

remote_read:
  - url: "http://localhost:8086/api/v1/prom/read?db=prometheus"

#重启prometheus
systemctl restart prometheus 

注意: 如果influxdb配置有密码, 请参考上面的官方文档地址进行配置。
进入influx数据库查看prometheus库是否有数据

influx

use prometheus;

show MEASUREMENTS;

 

 select * from scrape_series_added limit 5 ; 

配置文件详解: 

 

一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetesdocker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值