Prometheus---图形化界面grafana(二进制)

news/2024/5/19 1:19:50 标签: prometheus, grafana

前言

Prometheus是一个开源的监控以及报警系统。整合zabbix的功能,系统,网络,设备。

proetheus可以兼容网络,设备。容器的监控。告警系统。因为他和k8s是一个项目基金开发的产品,天生匹配k8s的原生系统。容器化和云原生服务适配性很高。

Prometheus是一个服务监控系统和时序数据库,提供了通用的数据模型和快捷采集,存储和接口查询。

核心组件: prometheus server定期从静态配置的监控目标或者基于服务发现的自动配置目标中进行拉取数据。

拉取到数据会持久化的保存到存储设备之中。 先拉取数据,纳入到监控系统当中,才能进行时序数据采集,存储,告警和展示。

能够直接把api server作为服务发现系统使用。动态监控,动态发现。

Prometheus的特点:

1、多维的数据模型。根据不同的函数计算方法,对统一数据可以做出不同的结论。(promQL是一个难点。)

2、时间序列的数据,按照时间的顺序记录系统,设备变化的数据,容器化的数据。每个数据都是一个样本。

服务器指标数据,应用程序的性能监控,网络数据数据都是时间序列数据。 3、通过静态,也可以通过服务自动发现收集数据。

4、Prometheus自带的原生数据展示不是很友好,数据化展示工具grafana

prometheus的存储引擎:TSDB

1、能够存储的数据量很庞大 2、大部分都是写入操作。

3、大多数情况下,写入操作是一个时序添加

4、很少更新数据,采集到的数据在秒级或者分钟级会被写入数据库。

5、基本数据大,一般是超过了内存的大小。数据按照一定的时间区间展示,缓存在这里不起作用。

6、读操作,一般都是高并发的操作。

7、就是为了大数据,高并发而生的。

Prometheus的组件

核心组件:

服务核心组件,采用pul方式采集监控数据,通过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:图形化工具。

Prometheus的工作流程:

1、prometheus server为核心,收集和存储数据(时间序列数据),从监控目标中通过pull方式拉取数据。或者通过pushgateway把采集到数据,拉取到server当中。

2、拉取到的数据,保存到本地的磁盘当中。(监控指标数据)

3、如果监控的指标数据触发了告警,发送到altermanager模块,然后根据规则发送告警信息

4、通过Prometheus的自带uiweb页面,通过promql可以查询出监控用户数据。

5、grafana可以介入prometheus数据源,把监控数据以图形化的方式展示出来。

Prometheus和zabbix的对比

Prometheus的局限性

1、只是一款指标系统,不适合存储时间,也不适合保存日志,更多的是一种趋势性的监控和展示,并非一个准确的数据。

2、认为最近的数据才有查询的需要,保存在本地的数据默认只有15天,不支持大量的历史数据进行存储。也不支持查询过往的历史数据。基于远端存储,上传了到influxDB或者openTSDB系统。

3、集群化成都不高,一般都是单节点部署。

以及zabbix的对比

zabbix:是一个大而全的系统,而且功能非常完善,机制非常成熟。具有完善的web页面。可视化和告警。在界面上可以满足绝大部分的操作。上手难度很低,可以快速掌握。集成度台盖,定制化比较难,扩展也比较差。

Prometheus:最近几年比较火的监控系统,基于go语言开发的。只专注于监控的功能,提供一个简单的ui界面共用户查询。可视化-----------grafana,告警-----------Altermanager(第三方程序来实现,比较小巧灵活,但门槛高)

二者之间功能的比较:

zabbix指标收集方式:server和agent,agent部署在目标服务器,数据传送到server,基于tcp进行通信

agent八数据推送到serber,或者server主动发起请求,获取agent的数据。

Prometheus:基于客户端进行数据收集,server端定时于客户端交互,通过PULL方式获取监控数据。

数据存储:

zabbix使用外部的数据来保存数据。

Prometheus存储在内置的TSDB当中,时间序列数据库

查询性能:

1、zabbix的查询性能比较弱,只能在web界面做一些有限的操作。

2、Prometheus的查询功能强大,自带查询语句,查询结果都是以图形,表格数据展示。

zabbix更成熟,上手难度低,对于传统的服务器,系统和网络都有优秀的监控能力。不适配云原生,不适配容器监控。

Prometheus:就是容器化的监控,支持k8s的监控功能。难,不好学。PROMSL

二进制部署

prometheus-2.35.0.linux-amd64.tar.gz%EF%BC%8C%E5%B9%B6%E8%A7%A3%E5%8E%8B">(1)上传 prometheus-2.45.0.linux-amd64.tar.gz,并解压
mkdir -p /opt/prometheus
cd /opt/prometheus
tar xf prometheus-2.45.0.linux-amd64.tar.gz
mv prometheus-2.45.0.linux-amd64 /usr/local/prometheus
 
cat /usr/local/prometheus/prometheus.yml | grep -v "^#"
global:					#用于prometheus的全局配置,比如采集间隔,抓取超时时间等
  scrape_interval: 15s			#采集目标主机监控数据的时间间隔,默认为1m
  evaluation_interval: 15s 		#触发告警生成alert的时间间隔,默认是1m
  # scrape_timeout is set to the global default (10s).
  scrape_timeout: 10s			#数据采集超时时间,默认10s
 
alerting:				#用于alertmanager实例的配置,支持静态配置和动态服务发现的机制
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093
 
rule_files:				#用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制
  # - "first_rules.yml"
  # - "second_rules.yml"
 
scrape_configs:			#用于采集时序数据源的配置
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"		#每个被监控实例的集合用job_name命名,支持静态配置(static_configs)和动态服务发现的机制(*_sd_configs)
 
    # metrics_path defaults to '/metrics'
    metrics_path: '/metrics'    #指标数据采集路径,默认为 /metrics
    # scheme defaults to 'http'.
 
    static_configs:				#静态目标配置,固定从某个target拉取数据
      - targets: ["localhost:9090"]
(2) 将Prometheus加入到系统服务 
cat > /usr/lib/systemd/system/prometheus.service <<'EOF'
[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-lifecycle
  
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
 
 
systemctl start prometheus
systemctl enable prometheus
 
netstat -natp | grep 9090
(3)进行界面访问

http://192.168.10.10:9090(主机IP) ,访问到 Prometheus 的 Web UI 界面 

访问:http://192.168.10.10:metrics,查看prometheus的数据采集信息

(2)将 node_exporter添加到系统服务中
cat > /usr/lib/systemd/system/node_exporter.service <<'EOF'
[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
EOF
 
(3)启动 
systemctl start node_exporter
systemctl enable node_exporter
 
netstat -natp | grep :9100

部署 Exporters ,添加监控主机

部署 Node Exporter 监控系统级指标(对每一个node节点)

(1)上传 node_exporter-1.3.1.linux-amd64.tar.gz 进行解压
mdkir -p /opt/prometheus
cd /opt/prometheus
tar xf node_exporter-1.5.0.linux-amd64.tar.gz
mv nnode_exporter-1.5.0.linux-amd64/node_exporter /usr/local/bin
(2)将 node_exporter添加到系统服务中
cat > /usr/lib/systemd/system/node_exporter.service <<'EOF'
[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
EOF
 
(3)启动 
systemctl start node_exporter
systemctl enable node_exporter
 
netstat -natp | grep 9100

prometheus%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%EF%BC%8C%E5%8A%A0%E5%85%A5%E5%88%B0%20prometheus%20%E7%9B%91%E6%8E%A7%E4%B8%AD">(3)修改 prometheus 配置文件,加入到 prometheus 监控中
vim /usr/local/prometheus/prometheus.yml
#在尾部增加如下内容
  - job_name: nodes
    metrics_path: "/metrics"
    static_configs:
    - targets:
	  - 192.168.10.10:9100
	  - 192.168.10.20:9100
	  - 192.168.10.30:9100
      labels:
        service: kubernetes
		
(5)重新载入配置
curl -X POST http://192.168.10.10:9090/-/reload
或
systemctl reload prometheus
浏览器查看 Prometheus 页面的 Status -> Targets

部署 grafana 

grafana%C2%A0" style="background-color:transparent;">(1)安装grafana 

rpm -ivh grafana-enterprise-7.5.11-1.x86_64.rpm

systemctl start grafana-server
systemctl enable grafana-server

netstat -natp | grep :3000
 
浏览器访问:http://192.168.73.108:3000 ,默认账号和密码为 admin/admin

(2)配置数据源

 Configuration -> Data Sources -> Add data source -> 选择 Prometheus
HTTP -> URL 输入 http://192.168.10.10:9090
点击 Save & Test

(3)添加监控模版

https://grafana.com/grafana/dashboards

模版网站。找模版,填写模版id

此处可用

12633
11074
15172


http://www.niftyadmin.cn/n/5353563.html

相关文章

sklearn.preprocessing中的标准化StandardScaler与scale的区别

StandardScaler与scale 1、标准化概述2、两种标准化的区别 1、标准化概述 标准化主要用于对样本数据在不同特征维度进行伸缩变换&#xff0c;目的是使得不同度量之间的特征具有可比性&#xff0c;同时不改变原始数据的分布 一些机器学习算法对输入数据的规模和量纲非常敏感&am…

websocket 通信协议

websocket是什么 答: 它是一种网络通信协议&#xff0c;是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 意思就是服务器可以主动向客户端推送信息&#xff0c;客户端也可以主动向服务器发送信息 属于服务器推送技术的一种. 为什么需要websocket? 疑问?…

禅道添加自定义字段

1&#xff0c;数据库表 zt_story 添加自定义字段 bakDate1&#xff0c;bakDate2&#xff0c;bakDate3&#xff0c;bakDate4 2&#xff0c;在 /opt/lampp/htdocs/zentaopms/extension/custom/story/ext/config 中添加bakDate.php文件 <?php $config->story->datatab…

Python实现时间序列分析AR定阶自回归模型(ar_select_order算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 时间序列分析中&#xff0c;AR定阶自回归模型&#xff08;AR order selection&#xff09;是指确定自回…

Windows系统本地安装Wnmp服务并结合内网穿透公网远程访问

目录 前言 1.Wnmp下载安装 2.Wnmp设置 3.安装cpolar内网穿透 3.1 注册账号 3.2 下载cpolar客户端 3.3 登录cpolar web ui管理界面 3.4 创建公网地址 4.固定公网地址访问 结语 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊Windows…

bert提取词向量比较两文本相似度

使用 bert-base-chinese 预训练模型做词嵌入&#xff08;文本转向量&#xff09; 模型下载&#xff1a;bert预训练模型下载-CSDN博客 参考文章&#xff1a;使用bert提取词向量 下面这段代码是一个传入句子转为词向量的函数 from transformers import BertTokenizer, BertMod…

【Java】SSM入门开发流程总结

1.1 SSM整合流程 创建工程SSM整合 Spring SpringConfig MyBatis MybatisConfigJdbcConfigjdbc.properties SpringMVC ServletConfigSpringMvcConfig 功能模块 表与实体类dao&#xff08;接口自动代理&#xff09;service&#xff08;接口实现类&#xff09; 业务层接口测试&a…

Spring Cache简明教程

Spring Cache简明教程 引言什么是Spring Cache&#xff1f;核心特性应用场景如何工作 如何使用1. 添加依赖2. 启用缓存3. 配置缓存4. 使用缓存注解 使用缓存的注意事项缓存的数据序列化缓存键的生成缓存内容的一致性缓存的并发问题缓存穿透缓存雪崩缓存的存储容量方法的可见性和…