pormethues是一个开源的系统监控以及报警系统。整合zabbix的功能,系统,网络,设备。
procmeteus可以兼容网络,设备。容器监控。告警系统。因为他和k8s是一个项目开发的产品,天生匹配k8s的原生系统。容器化和云原生服务适配性很高。
prometheus是一个服务监控和实现数据库,提供了通用的数据某些和快捷数据采集,存储和接口查询。
核心组件:prometheus server定期从精通配置的监控模板或者基于服务发现的自动配置模板中进行拉取数据。
拉取到数据会持久化的保存到存储设备之中。
先拉取数据,纳入到监控系统当中,才能进行时序数据采集,存储,告警和展示。
5,10,15
能够直接把api server作为服务发现系统使用。动态监控,动态发现。
procmeteus的特点:
1,多为的数据模型。根据不同的函数方法,对同一数据可以做出不同的结论。promQL是难点。
2,是时间序列的数据,按照时间的顺序记录系统,设备变化的数据,容器化数据。每一个数据都是一个样本。
服务器指示数据,应用程序的性能监控,网络数据都是时间序列数据。
3,通过精通,也可以通过服务自动发现搜集数据。
4,procmeteus自带的原生数据展示不是很友好,数据化展示工具,grafana.
prometheus的存储引擎:TSDB
1,能够存储的数据流很庞大
2,大部分都是写入操作。
3,写入操作是一个时序添加,大多数清空都是按照时间排序。
4,横向更新数据,采集到数据在秒级,或者是分钟级就会被写入数据库。
5,基本数据很大,一般超过了内存的大小。数据按照一定时间区间展示,缓存在这里起不到作用。
6,读操作,一般都是高并发的操作。
7,就是为了大数据高并发而生的。
prometheus的组件:
核心组件:
服务核心组件,采用pull方式采集监控数据,通过http协议进行传输,存储时间序列的数据。基于各宗教规则生成告警通知。
一,prometheus server是核心,核心分为三部分:
1,retrieval:负责在目标主机抓取指标数据
2,storage:存储,把采集的数据保存磁盘当中,默认只保存15天。
3,promQL:负责把数据按照一定的规则,通过指定的语法形成一个结果,最后展示出来。(grafana)
二,exports负责在节点收集数据,node-exports服务收集服务器节点的状态数据,CPU,内存,网络,磁盘等等都是他收集。默认端口9100
三,client Library:客户端库,用于应用程序的内部测试系统。内部测试
四,cadvisor:监控容器内部的资源信息,但是k8s从1.20之后自带这个部分组件。
五,blackbox-exporter:监控容器因为的存活性。(一般不用。)
六,Altermanager:独立的告警模块,从prometheus server收到告警通知之后,Altermanager进行重组,分类,发送到对应的接受方电子邮件 钉钉 企业微信。
七,pushgateway:类似于一个中转站,server端只会使用pull拉取数据,节点的数据只能以上传的方式(push)发送,先把数据保存在pushgateway,prometheus server统一从pushgateway拉取数据。
八,grafana:图形化工具。
工作流程
1,prometheus server为核心,收集和存储数据(时间序列数据),从监控目标总通过pull方式拉取数据。或者通过pushgateway把采集到的数据,拉取到server当中。
2,拉取到的数据保存到本地的磁盘当中。(监控指标数据)
3,如果监控的指标数据触发了告警,发送到altermanager模块,然后根据规则发送告警信息。
4,通过prometheus自带的uiweb页面,通过promql可以查询出监控数据
5,grafana可以介入prometheus数据源,把监控数据以图形化的方式展示出来
prometheus的局限性,以及和zabbix的对比:
只是一款指标监控系统,不适合存储时间,也不适合存储保存日志,更多的是一组趋势性的监控和展示。并非一个精确的数据。
2,认为最近的数据采用查询的需要,保存在本地的数据默认只有15天,不支持大量的历史数据进行存储。也不支持公网的历史数据。基于元的存储,上传了到influx或者openTSDB系统。
3,精确化程度不高,一般都是单节点部署
zabbix:大而全系统,而且功能非常完善,集中非常成熟。具有完善的web页面。可视化和告警。在界面上可以满足大部分的操作。上手难度很低,可以快速掌握。集成度高,定制化比较难,扩展性也比较差。
prometheus:最近几年比较火的嘉能可系统,基于go语言开发的。只是专注于监控的功能,提供一个简单的ui界面提供用户查询。
可视化---grafana告警----altermanager第三方程序来实现。比较小巧灵活,但是门槛高。
二者之间功能的比较:
zabbix指标收集方式:server和agent,agent部署在目标服务器,收集传送到server,基于头层皮进行通信
agent把收集推送到server,或者server主动发起请求,获取agent的数据。
prometeus:基于客户端进行数据收集,server端定时于客户端交互,提供PULL方式获取监控数据。
数据存储:
zabbix使用外部的数据来保存数据。
prometheus存储在内置的TSDB当中,时间序列数据库。
程序性能:
1,zabbix的查询性能较弱,只能在web界面做一些有限的操作
2,prometheus的查询功能强大,自带查询语句。查询结果都是以图形,表格数据展示。
zabbix更成熟,上手难度低,对于传统的服务器,系统的网络都有优秀的监控能力。不适配云原生,不适配容器监控。
prometeus,就是容器化监控,支持看k8s的监控功能,难,不好学。promql
实验:
二进制部署---比较简单,先路径组建的工作过程。
解压:
cd /opt/prometheus
tar -xf prometheus-2.45.0.linux-amd64.tar.gz
mv prometheus-2.45.0.linux-amd64 prometheus
最核心的就是prometheus.yml这个文件
scrape_interval: 15s 采集数据的间隔时间,默认是1分钟
evaluation_interval: 15s 告警的间隔时间,默认也是1分钟15s
scrape_timeout: 数据采集的超时时间,默认10s.
配置告警模块:
alerting:告警的实例配置
rule_files: 配置工具的规则
scrape_configs: 上传时序数据的源,配置采集的主机
-job_name: "prometheus" 每一个监控的实例都是以-job_name为开头
metrics_path defaults to '/metrics' 指标数采集的默认路径,可以不写
static_configs::静态配置发现实例(目标节点服务器)
将prometheus添加到系统服务当中
vim /usr/lib/systemd/system/prometheus.service
重启服务
systemctl daemon-reload
systemctl restart prometheus.service
集群要时间同步,不然报错。
部署node_export
tar -xf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64 node_exporter-1.5.0
mv 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.tcpstat ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target
启动服务并设置为开机自启
systemctl start node_exporter
systemctl enable node_exporter
systemctl enable prometheus.service
查看端口
通过静态的方式添加指定节点,
重新载入配置
curl -X POST http://192.168.176.61:9090/-/reload
在另外两个上添加node_export
tar -xf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64 node_exporter-1.5.0
mv node_exporter /usr/local/bin/
vim /usr/lib/systemd/system/node_exporter.service
通过静态的方式把服务节点添加到监控项当中了
把grafana安装
rpm -ivh grafana-enterprise-7.5.11-1.x86_64.rpm
systemctl start grafana-server.service
systemctl enable grafana-server.service
访问
账号:admin
密码:admin
Dashboards | Grafana Labs
下载模板 11047 15172 12633(中文版)
可以改,自定义语句,数据指标
删除模板:
总结:
prometheus:就是一个监控。实现数量的图形化监控的工具。不在于数据的持久化,只关注最近的需要查询的数据。
更适配k8s集群,当然了,也可以对服务器进行一般监控(内存,网络,cpu,硬盘)
在工作中把页面收藏。
每天查看,如果标红了,一定要到系统中检查,然后写报告,是什么原因看哪个进程。
如果10分钟15分钟没有降下了,和领导请示之后进行操作。
每周要记录下来,形成报告。看每周的平均值,看为什么高,找原因。
数据要是复现,每天都会出现这种情况,需要关注。
出现情况一定要记录在案,可以翻翻日志看看