• 保姆级教程--容器化部署prometheusd监控系统(yaml文件、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.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是多少
    在这里插入图片描述

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

  • 相关阅读:
    【Redis】Redis 的学习教程(十二)之在 Redis使用 lua 脚本
    点亮一个LED+LED闪烁+LED流水灯——“51单片机”
    设计模式|状态机模式(State Machine Pattern)
    shell编程初级
    Tree Shaking:优化前端项目的利器
    代码质量、重构、可测试性、解耦杂谈
    【MySQL 数据宝典】【索引原理】- 002 示例+逐个字段学明白 Explain
    Ubuntu下Git使用教程:从入门到实践
    两道面试小Demo
    【简单介绍下爬山算法】
  • 原文地址:https://blog.csdn.net/lwxvgdv/article/details/140407579