保姆级教程:容器化部署Prometheus监控系统(含详细步骤与配置说明)
保姆级教程:容器化部署Prometheus监控系统(含详细步骤与配置说明)
Prometheus是一个开源的监控系统,用于收集和存储来自各种服务和主机的性能数据。它会定期检查系统的状态,并把这些数据保存下来,方便以后查看和分析。Grafana是一个数据可视化工具,可以把 Prometheus 收集到的数据用图表的形式展示出来。Node Exporter是一个小工具,用来从服务器或主机上收集硬件和操作系统的性能数据,比如 CPU、内存、磁盘和网络的使用情况。
使用容器化部署Prometheus有以下几个简单易懂的好处:
- 方便快速部署:容器化让部署 Prometheus 变得非常简单。你只需要一个命令就可以启动 Prometheus,而不需要手动配置各种依赖和环境。
- 一致性和可移植性:容器化保证了 Prometheus 在不同环境中的运行效果一致。无论是在开发环境、测试环境还是生产环境,Prometheus 都能表现得一样好。
- 隔离性和安全性:容器将 Prometheus 运行所需的所有东西都打包在一起,与其他应用隔离开来。这样可以减少不同应用之间的干扰,提高安全性。
- 易于扩展和管理:使用容器编排工具(如 Kubernetes),可以很容易地扩展 Prometheus 的实例数量,处理更多的数据。此外,管理和更新也变得更加简单,可以自动处理。
- 资源高效利用:容器可以在同一主机上运行多个实例,充分利用系统资源。而且容器启动和停止速度快,资源利用率高。
环境
虚拟机配置如下:
IP | 主机名 | CPU | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.16 | prometheus-server | 2c | 2G | 100G |
192.168.10.17 | node_exporter | 2c | 2G | 100G |
版本:CentOS 7.9
初始化已完成(防火墙、沙盒、主机名)
一、安装Docker
下载阿里Yum源并安装Docker社区版:
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl enable --now docker
二、容器化构建Prometheus监控系统
1. 部署Prometheus
创建持久存储目录:
mkdir -p /opt/prometheus/config
mkdir -p /opt/prometheus/data
mkdir -p /opt/prometheus/rules
准备Prometheus配置文件:
vim /opt/prometheus/config/prometheus.yml
配置文件内容:
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting:
alertmanagers:
- static_configs:
- targets: ['192.168.10.16:9093']
rule_files:
- "/usr/local/prometheus/rules/*.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["192.168.10.16:9090"]
使用Docker运行Prometheus:
docker run -d \
--privileged=true \
-u root \
--restart=always \
-p 9090:9090 \
-v /opt/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/data:/prometheus \
-v /opt/prometheus/rules:/usr/local/prometheus/rules \
prom/prometheus:latest \
--storage.tsdb.retention.time=100d \
--config.file=/etc/prometheus/prometheus.yml
查看容器是否创建成功:
docker ps
如果没有提前准备镜像,需要一定时间下载镜像,稍等几分钟后再查看即可。看到running后就可以在宿主机浏览器上查看页面了。
如果出现容器启动后马上停止,多半是端口被占用。查看是什么服务占用了9090端口,停止或在docker命令上更换映射的端口。
如果容器状态为err开头,查看容器日志:
docker logs 容器名
分析原因即可。
容器up了之后,在浏览器上搜索本机IP:9090端口,这里是:
192.168.10.16:9090
就可以看到页面了。
如果容器已经running了还是访问不到,查看防火墙等基础设置。
2. 部署Grafana
创建持久存储目录:
mkdir -p /opt/grafana/data
chmod 777 /opt/grafana/data
接下来直接使用Docker运行Grafana:
docker run -d \
-p 3000:3000 \
--name grafana \
-v /opt/grafana/data:/var/lib/grafana \
-v /etc/localtime:/etc/localtime \
grafana/grafana:latest
查看:
docker ps
up了即可。
查看图形化界面,在浏览器搜索:
192.168.10.16:3000
一般它都会先跳一会加载,等待半分钟刷新即可。
输入默认账户密码:
账户:admin
密码:admin
后面会让你重置密码,跳过或重置密码都行。这里跳过了。
后面就是添加Prometheus源的过程,跟着截图做就行,很详细。
如果已经展开就不用按home旁边的那三条杠了。
在Prometheus server URL后输入Prometheus访问地址,也就是:
http://192.168.10.16:9090
其他不用动,默认就行。翻到最下面,有对号就说明好了。
到这里Prometheus本机的一些配置就做好了。下面是关于Prometheus如何监控其他服务器的教程。
三、Prometheus监控其他主机
这里监视的服务器也就是IP为17的那台。操作也是在17上操作。
1. 部署Docker
下载阿里Yum源并安装Docker社区版:
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl enable --now docker
直接使用Docker运行Node Exporter:
docker run -d \
-p 9100:9100 \
--restart=always \
--name node-exporter \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter:latest
查看:
docker ps
up了即可。
访问,在浏览器访问:
192.168.10.17:9100
应该能看到收集到的日志。
在Prometheus.yml文件中添加otherhost主机:
vim /opt/prometheus/config/prometheus.yml
在最后面添加即可:
# 要添加的部分
- job_name: "node-exporter-otherhost"
static_configs:
- targets: ["192.168.10.17:9100"]
查看Prometheus容器的ID:
docker ps
重启Prometheus容器让配置生效。这里假设容器ID为93af35162346:
docker restart 93af35162346
在Grafana中展示otherhost主机监控dashboard:
主机浏览器访问:
192.168.10.16:3000
可以看到有两种方式添加仪表盘:一种是JSON格式,一种是ID。这里我们使用ID。这是一个关于Linux主机的仪表盘:
12633
注意:下面的那个Prometheus数据源的选择要和之前创建的名称一致,也就是这张图最上面的name。
最后就能看到17主机的监控画面了。
补充、如何查找仪表盘
浏览器搜索:
grafana.com
这里需要先注册账户。注册完毕之后再访问:
即可。然后就可以根据需要搜索仪表盘。搜索Linux主机,可以看到第一个就是我们使用的仪表盘模板:
点击它,在这个界面提供了两种使用方法:下载JSON文件或复制ID,也可以看到它的ID是多少。到这就算完成了。