赞
踩
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)的一个项目。
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定期拉取。这对于一些短暂存在的任务或作业非常有用。
Prometheus官网下载:Download | Prometheus
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
配置文件路径/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
- 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/
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
部署 node_exporter 收集机器的系统数据:
部署 node_exporter 收集机器的系统数据-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。