前言
Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。
https://prometheus.io
https://github.com/prometheus
Prometheus特点:
-
多维数据模型:由度量名称和键值对标识的时间序列数据
-
PromQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
-
不依赖分布式存储,单个服务器节点可直接工作
-
基于HTTP的pull方式采集时间序列数据
-
推送时间序列数据通过PushGateway组件支持
-
通过服务发现或静态配置发现目标
-
多种图形模式及仪表盘支持(grafana)
架构图
- Prometheus Server:收集指标和存储时间序列数据,并提供查询接
- ClientLibrary:客户端库
- Push Gateway: 短期存储指标数据。主要用于临时性的任务
- Exporters:采集已有的第三方服务监控指标并暴metrics
- Alertmanager:告警
- Web UI:简单的Web控制台
实例 : 可以抓取的目标称为实例(Instances),可以理解为被监控端
作业 : 具有相同目标的实例集合称为作业(Job) 被监控端的集合
普罗米修斯监控系统的部署
服务器类型 | 系统和IP地址 | 备注 |
---|---|---|
Prometheus服务器 | 192.168.118.12 | Prometheus |
grafana服务器 | 192.168.80.20 | mariadb、node_exporter |
被监控服务器 | 192.168.118.18 | Grafana |
加粗样式下载地址
wget https://github.com/prometheus/prometheus/releases/download/v2.29.1/prometheus-2.29.1.linux-amd64.tar.gz
systemctl stop firewalld
setenforce 0
安装时间同步
yum install ntpdate -y
ntpdate cn.ntp.org.cn
date
cd /opt/
rz -E ##传入安装包
tar zxvf prometheus-2.29.1.linux-amd64.tar.gz
mv prometheus-2.29.1.linux-amd64 /usr/local/promethues
cd /usr/local/promethues/
cd /usr/local/promethues/
./prometheus --config.file="/usr/local/promethues/prometheus.yml" &
netstat -napt | grep prometheus #查看服务是否启动 端口为9090
或
lsof -i:9090
访问测试 http://192.168.118.12:9090
Grafana可视化图形工具
下载地址
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.1.2.linux-amd64.tar.gz
cd /opt/
rz -E
tar zxvf grafana-enterprise-8.1.2.linux-amd64.tar.gz
./bin/grafana-server web 启动
lsof -i:3000
http://192.168.118.18:3000/login
容器安装 prometheus
使用 Docker
所有 Prometheus 服务都可以作为 Docker 镜像在 Quay.io或 Docker Hub 上使用。
在 Docker 上运行 Prometheus 就像docker run -p 9090:9090 prom/prometheus. 这将使用示例配置启动 Prometheus 并将其暴露在端口 9090 上。
Prometheus 图像使用一个卷来存储实际指标。对于生产部署,强烈建议使用 命名卷 来简化 Prometheus 升级数据的管理。
要提供您自己的配置,有几个选项。这里有两个例子。
卷和绑定安装
prometheus.yml通过运行从主机绑定安装:
docker run \
-p 9090:9090 \
-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
或绑定贴装包含目录prometheus.yml上 /etc/prometheus运行:
docker run \
-p 9090:9090 \
-v /path/to/config:/etc/prometheus \
prom/prometheus
自定义图片
为了避免管理主机上的文件并绑定挂载它,可以将配置烘焙到映像中。如果配置本身是相当静态的并且在所有环境中都相同,那么这很有效。
为此,使用 Prometheus 配置创建一个新目录, Dockerfile如下所示:
FROM prom/prometheus
ADD prometheus.yml /etc/prometheus/
现在构建并运行它:
docker build -t my-prometheus .
docker run -p 9090:9090 my-prometheus