目录
一、分别在宿主机安装部署node-exporter+cadvisor
1、创建 Prometheus 配置文件 prometheus.yml,配置数据源
2、使用 Docker 运行 Prometheus,并挂载配置文件。
各组件解释
-
Node Exporter:
- Node Exporter 是一个用于收集服务器硬件和操作系统级别的指标的工具,它是 Prometheus 生态系统的一部分。
- 它暴露了一个 HTTP 服务,默认在端口 9100 上,提供了一系列的 metrics,包括 CPU 使用率、内存使用情况、磁盘空间、网络带宽等信息。
- Node Exporter 适用于各种 Linux、Windows、macOS 等操作系统,是监控服务器基础资源的常用工具。
-
cAdvisor:
- cadvisor(Container Advisor)是 Google 开发的一个容器监控工具,用于收集、监控、分析 Docker 容器的性能和资源使用情况。
- 它是一个运行在容器中的守护进程,可以监控宿主机和容器级别的资源使用情况,包括 CPU 使用率、内存使用情况、网络吞吐量、文件系统使用情况等。
- cadvisor通常用于帮助开发者和系统管理员理解容器的资源使用模式,诊断性能问题,以及优化容器的资源分配。
-
Prometheus:
- Prometheus 是一个开源监控系统,具有高度可扩展性和灵活性,由 SoundCloud 开发并捐赠给了 Cloud Native Computing Foundation。
- 它通过 HTTP pull 模型从配置好的目标(如 Node Exporter 和 cAdvisor)定期抓取指标数据,并存储在本地磁盘上。
- Prometheus 提供了强大的数据模型和查询语言(PromQL),支持高维数据查询和丰富的数据可视化功能。
- 它还包含一个告警manager,用于处理和发送告警通知。
-
Grafana:
- Grafana 是一个开源的数据可视化工具,它支持多种数据源,包括 Prometheus、InfluxDB、Graphite 等。
- 它允许用户创建自定义的仪表板和图表,用于展示和监控时间序列数据。
- Grafana 提供了丰富的可视化选项,如折线图、柱状图、热图等,并且支持告警和通知功能。
- 它还支持用户和团队协作,可以创建多个组织和用户,并控制对仪表板的访问权限。
Prometheus的基础架构
环境概述
宿主机直接安装node-exporter+cadvisor,然后使用docker部署prometheus,grafana,最后在grafana配置邮箱告警。
主机名 | IP地址 | 操作系统版本 |
node01 | 192.168.0.128 | ubuntu20.04.5 LTS |
node02 | 192.168.0.129 | ubuntu20.04.5 LTS |
node03 | 192.168.0.130 | ubuntu20.04.5 LTS |
一、分别在宿主机安装部署node-exporter+cadvisor
node-exporter
1、在github上下载tar包
https://github.com/prometheus/node_exporter/releaseshttps://github.com/prometheus/node_exporter/releaseshttps://github.com/google/cadvisor/releases/
https://github.com/google/cadvisor/releases
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz
2、解压并重定向
tar zxf node_exporter-1.8.1.linux-amd64.tar.gz
mv node_exporter /usr/local/bin/
3、创建node_exporter用户
useradd -M -s /bin/false node_exporter
4、给node_exporter命令设置属主属组并赋权
chown node_exporter:node_exporter /usr/local/bin/node_exporter
chmod 777 /usr/local/bin/node_exporter
5、设置开机自启动
cat << EOF | sudo tee /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
EOF
systemctl start node_exporter
systemctl enable node_exporter
6、查看是否监听9100端口
ss -anptl | grep 9100
cadvisor
1、下载cadvisor
wget https://github.com/google/cadvisor/releases/download/v0.49.1/cadvisor-v0.49.1-linux-amd64
2、重定向
mv cadvisor-v0.49.1-linux-amd64 /usr/local/bin/cadvisor
3、设置属主属组并赋权
chown root:root /usr/local/bin/cadvisor
chmod 777 /usr/local/bin/cadvisor
4、设置开机自启动
cat << EOF | sudo tee /etc/systemd/system/node_exporter.service
[Unit]
Description=Cadvisor
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/cadvisor
[Install]
WantedBy=multi-user.target
EOF
systemctl start cadvisor
systemctl enable cadvisor
5、开放8080跟9100端口
ufw allow 8080
ufw allow 9100
二、使用 Docker 部署 Prometheus
1、创建 Prometheus 配置文件 prometheus.yml,配置数据源
mkdir /data/to/prometheus/ -p
cat /data/to/prometheus/prometheus.yml
global:
scrape_interval: 15s # 默认抓取间隔,可以针对每个作业单独设置
evaluation_interval: 15s # 规则评估间隔
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
# Prometheus 自身 metrics
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# node_exporter targets
- job_name: 'node'
static_configs:
- targets: ['192.168.0.128:9100', '192.168.0.129:9100', '192.168.0.130:9100']
# cadvisor targets
- job_name: 'cadvisor'
static_configs:
- targets: ['192.168.0.128:8080', '192.168.0.129:8080', '192.168.0.130:8080']
2、使用 Docker 运行 Prometheus,并挂载配置文件。
docker run -d \
--name=prometheus \
-p 9090:9090 \
-v /data/to/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
3、开放端口
ufw allow 9090
4、浏览器访问Prometheus
http://192.168.0.128:9090
点击Status-Targets看到节点信息都在说明没问题
三、使用 Docker 部署 Grafana
1、使用 Docker 运行 Grafana。
docker run -d \
--name=grafana \
-p 3000:3000 \
-e "GF_SECURITY_ADMIN_PASSWORD=secret" \
-v /data/to/grafana-data/grafana.ini:/etc/grafana/grafana.ini \
grafana/grafana
2、修改配置文件使其支持邮箱告警
怎么弄的配置文件呢
先随便运行一台grafana,用docker stop给他停了
然后用docker cp grafana:/etc/grafana/grafana.ini /data/to/grafana-data/grafana.ini就copy下来了
vim grafana.ini
3、开放3000端口
ufw allow
4、配置grafana
浏览器访问http://192.168.0.128:3000
5、添加数据源
6、导入仪表盘
访问grafana官网的仪表盘模板
Grafana dashboards | Grafana Labs
我这分别导入node_exporter,cadvisor
导入方式可以选择模板号跟json文件导入
这里选择模板号导入,点击Copy ID to clipboard复制模板号
回到自己的grafana页面