prometheus笔记

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介:

1.为什么要监控

维护业务可持续运行
能够实时的查看系统的运行状况

2.prometheus是什么

Prometheus受启发于Google的Brogmon监控系统
普罗米修斯是一个最初在SoundCloud上构建的监控系统;自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区;
为强调开源及独立维护,prometheus于2016年加入云原生计算基金会,成为继Kubernetes之后的第二个托管项目。

官方网站:
https://prometheus.io/

prometheus server: 收集指标和存储时间序列数据,并提供查询接口;
clientLibrary: 客户端库
push gateway: 短期存储指标数据,主要用于临时性的任务
exporters: 采集已有的第三方服务监控指标并暴露metrics
alertmanager: 告警
web ui: 简单的web控制台

白盒监控:通过白盒能够了解其内部的实际运行状态,通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化;
黑盒监控:常见的如HTTP探针、TCP探针等,可以在系统或者服务发生故障时能够快速通知相关的人员进行处理;

kubernetes容器探针:
1.TCP探针:对指定端口上的容器的IP地址进行TCP监控,如果端口打开,则诊断认为是成功的;
2.http探针:对指定的端口和路径上的容器ip地址执行http get请求,根据返回的状态码进行诊断;

prometheus:
示例:可以抓取的目标称为实例(instances)
作业:具有相同目标的实例集合称为作业(job)

3.基本部署

由于prometheus是由go语言开发的,所以安装之前需要安装go环境
下载地址
https://studygolang.com/dl/golang/go1.15.3.linux-amd64.tar.gz

上传到服务器上,解压并配置环境变量

[root@proxy1 ~]# tar -zxvf go1.15.3.linux-amd64.tar.gz -C /usr/local/
# vim /etc/profile
# 在最后添加
export PATH=$PATH:/usr/local/go/bin

# source
source /etc/profile
AI 代码解读

二进制包安装prometheus

https://github.com/prometheus/prometheus/releases/download/v2.13.0/prometheus-2.13.0.darwin-amd64.tar.gz

解压到/usr/local目录下
[root@proxy1 ~]# tar -zxvf prometheus-2.13.0.darwin-amd64.tar.gz -C /usr/local/
AI 代码解读

4.配置

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

[root@proxy1 ~]# mkdir /usr/local/prometheus-2.13.0.darwin-amd64/data

也可以通过参数--storage.tsdb.path="data/" 修改本地数据存储的路径
AI 代码解读

启动prometheus服务器,默认会加载安装目录下的prometheus.yaml文件

./prometheus
AI 代码解读

可以使用浏览器访问9090端口

Node Exporter
在prometheus的架构中,prometheus server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持;因此,为了能够监控到某些东西,如主机的CPU使用率,我们需要使用到exporter;
prometheus周期性的从exportser暴露的http服务地址(通常是/metrics)拉取监控样本数据;

exporter可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以为,也可以是直接内置在监控目标中;只要能够向prometheus提供标准格式的监控样本数据即可;

使用node exporter采集linux主机的数据,如CPU、内存、磁盘等

步骤:

# 直接下载二进制包解压即可
[root@proxy1 ~]# tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C /usr/local/
[root@proxy1 ~]# cd /usr/local/node_exporter-1.0.1.linux-amd64/
[root@proxy1 node_exporter-1.0.1.linux-amd64]# mv node_exporter /usr/local/bin/

# 启动
[root@proxy1 ~]# /usr/local/bin/node_exporter &

[root@proxy1 ~]# chmod +x /etc/init.d/node_exporter 
[root@proxy1 ~]# service node_exporter start        

# 访问9100端口验证
AI 代码解读

修改prometheus配置文件
使其能够从当前node exporter获取到监控数据

#编辑prometheus.yml文件,在scrape_configs节点下添加:
  # 采集node exporter监控数据
  - job_name: 'linux'
    static_configs:
    - targets: ['localhost:9100']
AI 代码解读

重新启动prometheus,浏览器访问输入 up 验证

如果prometheus能够正常从node exporter获取数据,则会看到:

up{instance="localhost:9090",job="prometheus"} 1
up{instance="localhost:9100",job="linux"} 1

1表示正常

使用PromQL查询监控数据

Prometheus UI是prometheus内置的一个可视化管理界面,通过prometheus UI用户能够轻松的了解prometheus当前的配置,监控任务运行状态等;通过graph面板,可以直接使用promql实时查询监控数据;

通过promql我们可以非常方便的对数据进行查询、过滤以及聚合、计算等操作,通过对这些丰富的表达式语句,监控指标不再是一个单独存在的个体,而是一个个能够表达出正式业务含义的语言;

使用Grafana创建可视化Dsahboard

prometheus UI提供了快速验证PromQL以及临时可视化支持的能力,而在大多数场景下引入监控系统通常还需要构建长期使用的监控数据可视化面板(Dsahboard);
可以考虑使用第三方的可视化工具如Grafana;
1.Grafana是什么?
Grafana是一个开源的可视化平台,并且提供了对prometheus的完整支持;
2.基本按照部署
官方下载地址:https://grafana.com/grafana/download
centos安装步骤:
wget https://dl.grafana.com/oss/release/grafana-7.3.1-1.x86_64.rpm
sudo yum install grafana-7.3.1-1.x86_64.rpm
启动服务:

[root@proxy1 ~]# systemctl start grafana-server
AI 代码解读

默认端口为3000
默认用户名密码都为admin

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
目录
打赏
0
0
0
0
1
分享
相关文章
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
131 0
架构学习——ER图
架构学习——ER图
349 0
【一文看懂】使用hape部署分布式版Havenask
本次分享内容为使用hape部署分布式版Havenask,共2个部分组成(部署分布式版Havenask集群、 分布式相关问题排查),希望可以帮助大家更好了解和使用Havenask。
165217 6
西电数据库实验二:XDSQL与PolarDB对比实验
实验二 XDSQL与PolarDB对比实验 姓名:贾瑞  学号:21009201172
Cityscapes数据集(智能驾驶场景的语义分割)
面向智能驾驶(辅助驾驶、自动驾驶)场景下的语义分割任务,由于非结构化场景的复杂性,是一个非常具有挑战性的任务,所以有许多研究者和研究机构公开了很多相关的数据集推动语义分割领域的发展。本文主要介绍Cityscapes数据集。
893 0
Nginx-https证书认证详解
Nginx-https 1.https基本概述 1.1.SSL主要功能 安全套接层 认证用户和服务器,确保数据发送到正确的客户机和服务器 加密数据以防止数据中途被窃取 维护数据的完整性,确保数据在传输过程中不被改变
972 0
Nginx-https证书认证详解
使用阿里云NLB获取客户端原地址
本文为您介绍NLB如何获取客户端真实IP,及通过Proxy Protocol获取客户端真实IP的场景和配置教程。
789 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等