前言

用到的服务简述

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.16prometheus-server2c2G100G
192.168.10.17node_exporter2c2G100G

版本 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是多少
在这里插入图片描述

到这就算完成了
有问题可以直接私信
如果有真人看到这可以评论一下
感觉都没啥人看了

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐