保姆级教程--容器化部署prometheusd监控系统(yaml文件、docker命令均有详细解释、大白话描述服务作用、适合小白)

news2024/11/15 10:46:51

文章目录

  • 前言
    • 用到的服务简述
    • 容器化部署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.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是多少
在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Copilot 高效开发繁忙的一天

在现代软件开发的世界里,使用AI工具如GitHub Copilot可以显著提高开发效率。 早晨:规划与启动 7:00 AM - 起床与准备 开发者早早起床,享用健康的早餐,并浏览新闻和技术博客,了解最新的科技动态。快速整理思路&#x…

WordPress:无法创建新文章?创建新帖子时候页面空白

wordPress中我们新建文章的时候,会遇到页面空白,这个问题是怎么导致呢?我们可以打开F12开发者模式看下报错信息,这是一个警告信息 Warning: Creating default object from empty value in /pub 到数据库 wp_posts中查看生成了很…

网络配置命令

文章目录 一、查看网络接口信息 ifconfig1.1 网络接口名称1.2 使用 ifconfig 查看网络接口信息1.2.1 输出示例1.2.2 输出解释 1.3 查看特定网络接口信息1.3.1 输出示例 1.4 查看所有网络接口信息1.5 特殊网络接口 二、修改网络配置文件2.1 配置文件示例2.2 使配置生效2.3 关闭 …

【07】分布式事务解决方案

1、事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有ACID四个特性:原子性、一致性、隔离性、持久性。任何事务机制在实现时,都应该考虑事务…

【Nuxt3】vue3+tailwindcss+vuetify引入自定义字体样式

一、目的 在项目中引入自定义的字体样式(全局页面都可使用) 二、步骤 1、下载好字体 字体的后缀可以是ttf、otf、woff、eot或者svg(推荐前三种) 以抖音字体为例下载好放在静态文件夹(font)下 案例字…

Python for循环while循环实战: 原神加载画面

原神加载画面在我们看起来是能一直运行的,实际上,它就是用了循环。今天,我们来模拟一下。 我们用123、234、345、456分别代表四个画面,结果是这样的。 这是代码: a [123, 234, 345, 456] while True:for i in a:pri…

python获取豆瓣评分9分以上的电影

我想生成的文件用excel保存,所以得安装一下这个 pip install pandas openpyxl代码 import requests import pandas as pd# 模拟浏览器请求头 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91…

轻空间强势维护知识产权,捍卫气膜声学专利

在当前创新驱动的时代,知识产权已成为企业核心竞争力的重要组成部分。轻空间,作为一家以技术创新为驱动的公司,一直致力于为客户提供高质量的气膜建筑产品和服务。近期,我们注意到有不法分子冒用苏州大学多功能气膜综合馆项目的名…

springboot 适配ARM 架构

下载对应的maven https://hub.docker.com/_/maven/tags?page&page_size&ordering&name3.5.3-alpinedocker pull maven:3.5.3-alpinesha256:4c4e266aacf8ea6976b52df8467134b9f628cfed347c2f6aaf9e6aff832f7c45 2、下载对应的jdk https://hub.docker.com/_/o…

Ceph集群部署(基于ceph-deploy)

目录 部署Ceph集群的方法 Ceph生产环境推荐 部署Ceph实验(基于ceph-deploy) 一、准备工作 二、环境准备 1.关闭selinux与防火墙 2.修改主机名并且配置hosts解析映射 3.admin管理节点配置ssh免密登录node节点 4.安装常用软件和依赖包 5.配置时间…

【全网最全最详细】Spring与SpringBoot最新面试题

目录 一、Spring框架概述 1.1 什么是Spring? 1.2 spring优点有哪些? 二、IOC与DI 2.1 你知道getBean方法的有几种重载方式吗? 2.2 Spring有几种依赖注入方式? 2.3 为什么Spring不建议使用字段注入方式? 2.4 B…

数据结构_顺序表专题

何为数据结构? 咱今天也来说道说道...... 数据结构介绍 准确概念 数据结构就是计算机存储、组织数据的方式 概念分析 从上句分析,数据结构是一种方式。一种管理数据的方式。为了做什么?为的就是计算机存储数据,组织数据。 …

docker部署seata 2.0.0

环境准备 当前使用的环境: MySQL:8.0 nacos:2.2.3 关于如何在docker中部署nacos 2.2.3,请参考之前文章: docker部署nacos 2.2.3 拉取镜像 docker pull seataio/seata-server:2.0.0查看nacos、mysql、宿主机的ip d…

探索Facebook:数字社交的魔力源泉

在当今信息爆炸和全球互联的时代,社交媒体平台成为了人们生活中不可或缺的一部分。而在这些平台中,Facebook无疑是最具影响力和创新性的代表之一。自2004年成立以来,Facebook不仅改变了人们的沟通方式,更通过不断的技术创新和用户…

Oracle查询超时问题,聊聊思路!

🏆本文收录于《CSDN问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

【系统架构设计师】九、软件工程(面向对象方法|逆向工程)

目录 六、面向对象方法 6.1 基本概念 6.2 面向对象的分析 6.2.1 用例关系 6.2.2 类之间的关系 6.3 面向对象的设计 6.4 面向对象设计原则与设计模式 6.5 面向对象软件的测试 七、逆向工程 历年真题练习 六、面向对象方法 面向对象的分析方法 (Object-Oriented Analys…

C++初阶:类和对象(二)

✨✨所属专栏:C✨✨ ✨✨作者主页:嶔某✨✨ 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注…

Verilog基础:简单标识符和转义标识符

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 标识符(identifier)是一个为了引用而给一个对象起的名字。一个标识符可以是一个简单标识符,也可以是一个转义标识符。本文将对两者进行详细阐述。 简…

ctfshow-web入门-php特性(web109-web115)

目录 1、web109 2、web110 3、web111 4、web112 5、web113 6、web114 7、web115 1、web109 正则匹配要求 v1 和 v2 都包含字母,eval 函数将字符串作为 PHP 代码执行:new $v1 创建一个名为 v1 的类的实例,($v2()) 调用 v2 方法&#xff…

使用Nginx OpenResty与Redis实现高效IP黑白名单管理

1、引言 在当今数字化时代,网络安全已成为企业和个人用户关注的焦点。IP黑白名单作为一种有效的网络安全策略,允许我们精确控制对Web资源的访问权限。通过白名单,我们可以确保只有可信的IP地址能够访问敏感资源;而黑名单则可以阻…