Prometheus部署安装
尽管Grafana不是Prometheus的官方组件,但它经常与Prometheus一起使用,用于创建仪表盘和可视化监控数据。: Prometheus采用pull型数据模型,意味着监控目标(例如应用程序、服务器等)定期向Prometheus服务器推送自己的度量数据。Push Gateway允许短暂的、临时性的任务将其度量数据推送到Prometheus,而不是等待Prometheus定期拉取。: P
一、相关概念
1.1概念和特点
Prometheus(普罗米修斯)是一个开源的系统监控和报警工具。它最初由SoundCloud使用Go语言开发,并于2012年开源。Prometheus专注于实时监控和警报,并具有高度灵活的查询语言PromQL,使用户能够实时查询和分析系统的度量数据。
以下是Prometheus的一些关键特点和概念:
1.多维度数据模型: Prometheus使用多维度数据模型来存储时间序列数据,其中每个时间序列由其指标名称和一组键值对标签唯一标识。这使得用户能够非常灵活地查询和过滤数据。
2.查询语言PromQL: PromQL是Prometheus的查询语言,用于从存储的时间序列数据中提取有用的信息。它支持范围查询、聚合函数、算术运算符等功能,使用户能够轻松构建复杂的查询。
3.Pull型数据模型: Prometheus采用pull型数据模型,意味着监控目标(例如应用程序、服务器等)定期向Prometheus服务器推送自己的度量数据。这种模型相对于传统的push型模型更为灵活,允许用户有选择地监控特定的目标。
4.警报和通知: Prometheus支持基于规则的警报,用户可以定义规则来描述潜在的问题,并在符合规则条件时触发警报。警报可以与通知管理器集成,以便通过各种通知渠道(例如电子邮件、Slack等)通知运维团队。
5.可扩展性: Prometheus具有良好的可扩展性,支持通过插件和服务发现机制集成其他工具和系统。它还支持水平扩展,可以构建具有高可用性的监控解决方案。
6.图形化界面: Prometheus本身提供了一个基本的Web界面,用于实时查看度量数据、运行查询和检查警报状态。
Prometheus通常与Grafana等工具结合使用,以实现更强大的可视化和仪表盘功能。它在云原生和容器化环境中得到广泛应用,是CNCF(Cloud Native Computing Foundation)的一个项目。
1.2 Prometheus相关组件
Prometheus是由多个组件构成的系统,这些组件共同协作以实现监控、存储和报警等功能。
以下是Prometheus的一些主要组件:
Prometheus Server:
Prometheus服务器是核心组件,负责收集、存储和查询监控数据。它通过定期从配置的目标(例如应用程序、服务器)拉取度量数据,存储在本地时间序列数据库中,并提供PromQL查询接口供用户查询和分析数据。
Prometheus Storage (TSDB - Time Series Database):
Prometheus使用自己的时间序列数据库(TSDB)来存储监控数据。这个数据库是为高效存储和检索时间序列数据而优化的,支持快速范围查询、聚合和数据压缩。
Exporters:
Exporters是用于将不同系统的监控数据暴露给Prometheus的中间件。它们可以作为目标被Prometheus轮询,然后将系统的度量数据转换为Prometheus可理解的格式。例如,Node Exporter用于收集操作系统级别的度量,而其他Exporters可用于不同的应用程序和服务。
Alertmanager:
Alertmanager负责处理警报规则产生的警报。它可以对警报进行静默、去重,还可以集成通知方式,例如发送电子邮件、Slack消息或调用自定义Webhook等。Alertmanager与Prometheus Server集成,接收来自Prometheus的警报数据。
Grafana:
尽管Grafana不是Prometheus的官方组件,但它经常与Prometheus一起使用,用于创建仪表盘和可视化监控数据。Grafana提供了丰富的图形化界面,可以连接到Prometheus进行查询,并以图形和表格的形式显示监控数据。
Push Gateway:
Push Gateway允许短暂的、临时性的任务将其度量数据推送到Prometheus,而不是等待Prometheus定期拉取。这对于一些短暂存在的任务或作业非常有用。
1.3 Prometheus架构图
二、prometheus安装部署
Prometheus官网下载:Download | Prometheus
Prometheus-2.37.2下载:
2.1下载Prometheus-2.37.2
yum -y install wget
wget https://github.com/prometheus/prometheus/releases/download/v2.37.2/prometheus-2.37.2.linux-amd64.tar.gz
tar zxf prometheus-2.37.2.linux-amd64.tar.gz -C /usr
cd /usr
mv prometheus-2.37.2.linux-amd64 prometheus
2.2 Prometheus配置文件详解
配置文件路径/usr/prometheus/prometheus.yml
# my global config
global:
# 设置Prometheus对目标进行抓取的时间间隔
scrape_interval: 15s
# 设置规则的评估时间间隔
evaluation_interval: 15s
# Alertmanager 配置
alerting:
# Alertmanager实例列表,此处被注释掉表示禁用Alertmanager
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# 一次性加载规则并根据全局的 'evaluation_interval' 定期评估规则
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# 监控配置,包含抓取的作业和目标
scrape_configs:
- job_name: "prometheus"
static_configs:
# Prometheus自身的监控指标
- targets: ["192.168.118.136:9090"]
- job_name: "prometheus-001"
# 抓取间隔为10秒
scrape_interval: 10s
static_configs:
# 目标为'192.168.118.135:9100',并带有标签 'instance: prometheus-001'
- targets: ['192.168.118.135:9100']
labels:
instance: prometheus001
2.3 添加prometheus账户启动服务
groupadd prometheus
useradd -g prometheus -s /sbin/nologin prometheus
目录授权
chown -R prometheus:prometheus /usr/prometheus/
创建prometheus 本地TSDB数据存储目录
mkdir -p /var/lib/prometheus
chown -R prometheus:prometheus /var/lib/prometheus/
2.4 将prometheus添加为服务启动
vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=prometheus
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/prometheus/prometheus --config.file=/usr/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service
systemctl daemon-reload
systemctl start prometheus
systemctl status prometheus
2.5 启动服务
部署 node_exporter 收集机器的系统数据:
部署 node_exporter 收集机器的系统数据-CSDN博客
更多推荐
所有评论(0)