promethues是一个开源的系统监控以及报警系统,整个zabbix的功能,系统,网络,设备
promethues可以兼容网络和设置被,容器监控,告警系统,因为他和k8s是一个项目基金开发的产品,天生匹配k8s原生系统,人弄国企话和云原生服务适配性很高。
promethues是一个服务监控系统和时序监控系统,提供了通用数据模型和快捷数据采集,存储和接口查询。
核心组件:promethues server定期从静态配置的监控目标或者基于服务发现的自动配置目标中进行拉取数据
拉渠道数据会持久化的保存到存储设备之中
先拉取数据,纳入到监控系统当中,才能进行时许数据采集,存储警告和展示
能够直接把api server组排位哦服务发现系统使用,动态监控,动态发现
promethues的特点:
1、多维的数据模型,根据不同的函数计算方法,对同一数据可以做出不同的结论是。promQL是难点
2、是一个时间序列数据,按照时间的顺序,记录系统以及设备变化的数据,容器化的数据,每个数据都是都是一个样本。
服务器指标数据,应用程序的性能监控,网络数据的都是时间序列数据
3、通过静态,也可以通过服务自动发现收集数据
4、promethues自带的原生数据展示不是很友好,有专门数据化展示功能 ,grafana
prometheus的存储引擎:TSDB
1、能够存储的数据量很大
2、大部分都是写入操作
3、写入操作是一个时序添加,大多数都是按照时间排列
4、很少更新数据,采集到数据在妙计,或者是分钟级就会被写入数据库
5、基本数据大,一般超过了内存大小,数据按照一定的时间区间展示,缓存在这里不起作用
6、读操作,一般都是高并发的操作,
7、即使为了大数据,高并发而生的
prometheus组件:
核心组件:
服务核心组件采用的pull方式采集监控数据,通过协议进行传输,存储时间序列的数据,基于告警规则生成告警通知。
prometheus server:是核心,核心分为三部分。
1、retrieval:负责在目标主机抓取监控指标数据
Storage存储,把采集的数据保存磁盘当中,默认只保存15天
promQL:负责把数据按照一定的规则,通过指定语法展示出来(grafana)
2、exports负责在节点收集数据,node-Exports负责收集服务器节点的状态数据,cpu,内存,网络,磁盘等等都是exports收集的。默认端口9100
3、client Library:客户端库,用于应用程序的内部测量系统,内部测试
4、cadvisor:监控容器内部的资源信息,但是k8s从1.20之后自带这个组件
5、blackbox-exporter:监控业务容器的存活性,一般不用
6、Altermanager:独立的告警模块,从prometheus server收到告警通知之后,Altermanager进行重组,分类,发送到对应的接收方。
电子邮件 钉钉 企业微信。
7、pushgateway:类似于一个中转站,server端只会使用pull 数据
8、grafana:图形化工具,不是必须的
prometheus的工作流程
1、prometheus server为核心:收集和存储数据(时间序列数据),从监控目标中通过pull的方式拉取数据。或者通过pushgateway把采集到的数据,拉取到server当中去。
2、拉取到的数据,保存到本地的磁盘当中。(拉取数据监控本机数据)
3、如果监控指标数据出发了告警,发送到altermanager模块,然后根据规则发送告警信息
4、通过prometheus的自带uiweb页面,通过promql可以查询出监控户数据
5、grafana可以接入prometheus的数据源,把监控数据以图形化的方式展示出来
prometheus的局限性,以及和zabbix对比
只是一款指标监控系统,不适合存储时间,也不适合保存日志,更多的是一种趋势性的监控和展示,并非是一个精准的数据
2、任务最近的数据才有查询的需要,保存在本地数据默认只有15天,可视化的告警,在界面上可以满足绝大部分的擦做
上手难度很低,可以快速掌握,集成度,定制化比较难,扩展性比较差
prometheus:最近几年比较火的监控系统,基于go语言发开的明知是专注于监控的功能,提供一个简单的ui界面提供用户查询
可视化----grafana告警---Altermanager
prometheus和zabbix二者之间功能比较
传送到server,基于tcp进行通信
agent把数据推送到server或者server主动发起请求,获取agent的数据
prometheus:基于客户端进行数据收集,server端定时于客户端交互,通过pul方式获取监控数据
数据存储
zabbix使用外部的数据来保存数据
proetheus存储在内置的TSDB当中,时间序列数据库。
查询性能
1、zabbix的查询性能较弱,只能在web界面做一些有限的操作
2、prometheus的查询功能强大,自带查询语句。查询结果都是以图形表格数据展示的
zabbix更成熟,上手难度低一些,对于传统的服务器,系统和网络都有优秀的监控能力,不适配云原生,部署配容器监控
prometheus就是容器化监控,支持k8s监控
二进制部署
上创安装包
tar -xf prometheus-2.35.0.linux-amd64.tar.gz
mv prometheus-2.35.0.linux-amd64 /usr/local/prometheusvim /usr/lib/systemd/system/prometheus.service[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data/ \
--storage.tsdb.retention=15d \
--web.enable-lifecycleExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure[Install]
WantedBy=multi-user.target
上传 node_exporte
tar -xf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64.tar.gz/node_exporter /usr/local/bin/
vim /usr/local/prometheus/prometheus.yml在末尾添加
- job_name: "nodes"metrics_path: "/metrics"static_configs:- targets:- 20.0.0.92:9100- 20.0.0.94:9100- 20.0.0.93:9100labels:service: kubernetescurl -X POST http://20.0.0.92:9090/-/reload
systemctl reload prometheus再到另外两个node节点tar -xf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64.tar.gz/node_exporter /usr/local/bin/
vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstatExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure[Install]
WantedBy=multi-user.targetnetstat -antp | grep 9100
rpm -ivh grafana-enterprise-7.5.11.x86_74.rpm
systemctl daemon-reload
systemctl start grafana-server.service