文章目录
- 前言
- 用到的服务简述
- 容器化部署prometheus的优势
- 环境
- 一、安装docker
- 二、容器化构建Prometheus监控系统
- 1 部署Prometheus
- 2.部署grafana
- 三、prometheus监控其他主机
- 1.部署docker
- 补充、如何查找仪表盘
前言
用到的服务简述
Prometheus:这是一个开源的监控系统,用来收集和存储来自各种服务和主机的性能数据。它会定期检查系统的状态,并把这些数据保存下来,方便以后查看和分析。
Grafana:这是一个数据可视化工具,可以把 Prometheus 收集到的数据用图表的形式展示出来。这样你就可以直观地看到系统的性能情况,比如 CPU 使用率、内存占用等。
Node Exporter:这是一个小工具,用来从你的服务器或主机上收集硬件和操作系统的性能数据,比如 CPU、内存、磁盘和网络的使用情况。它把这些数据发送给 Prometheus 进行存储和分析。
直观一点理解
Prometheus 负责收集和存储数据。
Grafana 负责展示这些数据。
Node Exporter 负责从服务器上收集数据并发给 Prometheus。
这样,你就能方便地监控系统、查看数据图表,并在出现问题时及时收到通知。
容器化部署prometheus的优势
用容器化部署 Prometheus 有以下几个简单易懂的好处:
方便快速部署: 容器化让部署 Prometheus 变得非常简单。你只需要一个命令就可以启动 Prometheus,而不需要手动配置各种依赖和环境。
一致性和可移植性: 容器化保证了 Prometheus 在不同环境中的运行效果一致。无论是在开发环境、测试环境还是生产环境,Prometheus 都能表现得一样好。
隔离性和安全性: 容器将 Prometheus 运行所需的所有东西都打包在一起,与其他应用隔离开来。这样可以减少不同应用之间的干扰,提高安全性。
易于扩展和管理: 使用容器编排工具(如 Kubernetes),可以很容易地扩展 Prometheus 的实例数量,处理更多的数据。此外,管理和更新也变得更加简单,可以自动处理。
资源高效利用: 容器可以在同一主机上运行多个实例,充分利用系统资源。而且容器启动和停止速度快,资源利用率高。
如果对二进制安装prometheus的方式感兴趣,也可以看
链接: prometheus回顾(1)–在liunx上以二进制的方式安装prometheus监控
链接: prometheus回顾(2)–如何使用Grafana对接Prometheus数据源的详细过程,清晰易懂。
也是博主写的,比较详细
环境
虚拟机
Ip | 主机名 | cpu | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.16 | prometheus-server | 2c | 2G | 100G |
192.168.10.17 | node_exporter | 2c | 2G | 100G |
版本 centos7.9
初始化已完成(防火墙,沙盒,主机名)
一、安装docker
下载阿里yum源
安装docker社区版
启动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.yml文件
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"]
详细解释:
global部分
scrape_interval: 这是全局的抓取间隔时间,设定为15秒。这意味着Prometheus将每15秒抓取一次目标数据。
evaluation_interval: 这是全局的规则评估间隔时间,设定为15秒。这意味着Prometheus将每15秒评估一次定义的规则。
alerting部分
alertmanagers: 配置Alertmanager的静态目标。Alertmanager负责处理Prometheus生成的警报。
static_configs: 定义静态配置。
targets: 这是Alertmanager的目标地址。在这里,地址是192.168.10.16:9093。
rule_files部分
rule_files: 指定Prometheus加载规则文件的位置。这里定义了一个路径/usr/local/prometheus/rules/*.yml,这意味着Prometheus会加载该目录下所有以.yml结尾的文件作为规则文件。
scrape_configs部分
scrape_configs: 配置Prometheus抓取数据的目标。
job_name: 抓取任务的名称,这里设定为"prometheus"。
static_configs: 定义静态配置。
targets: 这是Prometheus要抓取数据的目标地址。在这里,地址是192.168.10.16:9090,通常是Prometheus自身的地址。
使用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 run -d:
-d: 表示以分离模式运行容器,也就是后台运行。
--privileged=true:
赋予容器扩展特权,通常用于需要访问主机系统的特殊权限场景。
-u root:
指定容器内以 root 用户运行。
--restart=always:
配置容器在意外停止后自动重启。
-p 9090:9090:
将主机的 9090 端口映射到容器的 9090 端口,允许外部通过主机的 9090 端口访问 Prometheus。
-v /opt/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml:
将主机上的配置文件 /opt/prometheus/config/prometheus.yml 挂载到容器内的 /etc/prometheus/prometheus.yml。这允许你在主机上编辑配置文件,并让容器内的 Prometheus 使用这个配置。
-v /opt/prometheus/data:/prometheus:
将主机上的 /opt/prometheus/data 目录挂载到容器内的 /prometheus 目录。这个目录用于存储 Prometheus 的数据。
-v /opt/prometheus/rules:/usr/local/prometheus/rules:
将主机上的 /opt/prometheus/rules 目录挂载到容器内的 /usr/local/prometheus/rules 目录。这个目录用于存储 Prometheus 的规则文件。
prom/prometheus:latest:
使用 prom/prometheus 镜像的最新版本来创建容器。
--storage.tsdb.retention.time=100d:
配置 Prometheus 的数据保留时间为 100 天。
--config.file=/etc/prometheus/prometheus.yml:
指定 Prometheus 使用 /etc/prometheus/prometheus.yml 作为其配置文件。
查看容器是否创建成功
docker ps
如果没有提前准备镜像,需要一定时间下载镜像,稍等几分钟后再查看即可
看到running后就可以在宿主机浏览器上查看页面了
如果出现容器启动后马上停止
多半是端口被占用
查看是什么服务占用了9090端口停止或在docker命令上更换映射的端口
如
docker run -d \
--privileged=true \
-u root \
--restart=always \
-p 9089: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
在这条命令中把映射的端口改为了9089
如果容器状态为err开头
查看容器日志
docker log 容器名
分析原因即可
容器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社区版
启动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_export就行
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主机
返回16操作
vim /opt/prometheus/config/prometheus.yml
在最后面添加即可
# 要添加的部分
- job_name: "node-exporter-otherhost"
static_configs:
- targets: ["192.168.10.17:9100"]
查看prometheus容器的id
docker ps
重启prometheus容器让配置生效
我这里是93af35162346
根据容器名称来
docker restart 93af35162346
在Grafana中展示otherhost主机监控dashboard
主机浏览器访问
192.168.10.16:3000
可以看到有两种方式添加仪表盘
一种是json格式
一种是ID
这里我们使用ID
这是一个关于liunx主机的仪表盘
12633
在结尾会有如何根据需求查找合适的仪表盘的教程
注意:下面的那个prometheus数据源的选择要和之前创建的名称一致
也就是这张图最上面的name
最后就能看到17主机的监控画面了
补充、如何查找仪表盘
浏览器搜索
grafana.com
这里需要先注册账户
注册完毕之后再访问
https://grafana.com/grafana/dashboards/
即可
然后就可以根据需要搜索仪表盘
搜索liunx主机
可以看到第一个就是我们使用的仪表盘模板
点击它
在这个界面提供了两种使用方法
下载json文件或复制ID
也可以看到它的id是多少
到这就算完成了
有问题可以直接私信
如果有真人看到这可以评论一下
感觉都没啥人看了