实战-docker方式给自己网站部署prometheus监控ecs资源使用情况-2024.1.7(测试成功)

news2024/9/24 5:31:15

title: 实战-docker方式给自己网站部署prometheus监控ecs资源使用情况-2024.1.7(测试成功) date: 2024-1-7 categories:

  • linux tags:
  • promtheues summary: prometheus+grafana

更新于:2024年1月7日

实战-docker方式给自己网站部署prometheus监控ecs资源使用情况-2024.1.7(测试成功)

目录

最终效果

原文链接

https://onedayxyy.cn/docs/prometheus-grafana-ecs

参考模板

https://i4t.com/

https://grafana.frps.cn

  • 🔰 额,注意哦:

他这个是通过frp来访问的哦!

哦,应该不是,估计是一个域名;

方案选型

方案1:prometheus和grafana都用docker部署在ecs

将grafana的访问链接放到网站的一个超链接 网站监控上。

次2个问题已闭环。

问题1:rometheus和grafana容器部署在ecs里,资源应该够吧?--应该够的。--经测试,可以的。

问题2:grafana可以支持用户公开访问不?--应该可以支持的,我看别人有用过的。--经测试,可以的。

方案2:将prometheus和grafana部署在本地,再通过frp方式来监控ecs

如果要使用本地服务器来提高prometheus+grafna服务,那么自己就需要学习下frp技术了。

本次方案

prometheus和grafana都用docker部署在ecs。

为什么选择docker部署呢,因为docker部署是在是太爽了。

测试环境

事项
ecs ip(公网ip)47.100.215.163
ecs配置2c CPU,2g内存,40G硬盘
系统centos7.9
dockerVersion: 19.03.9
个容器镜像都是最新的(2024年1月7日测试)prom/prometheus:latest grafana/grafana:latest prom/node-exporter:latest
自己网站把公开链接集成到自己网站上

1、部署prometheus

docker pull prom/prometheus
docker run -itd --name=prometheus --restart=always -p 9090:9090 prom/prometheus

查看:

[root@docusaurus-wiki ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
4fcf1c8687df        prom/prometheus     "/bin/prometheus --c…"   5 seconds ago       Up 3 seconds        0.0.0.0:9090->9090/tcp   prometheus

容器创建成功后,即可通过http://47.100.215.163:9090来访问prometheus了:

2、部署grafna

#创建grafana数据目录
mkdir -p /opt/grafana-storage
chmod 777 -R /opt/grafana-storage

docker pull grafana/grafana
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v /opt/grafana-storage:/var/lib/grafana \
grafana/grafana

查看:

[root@docusaurus-wiki ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
70f677303f8b        grafana/grafana     "/run.sh"           8 seconds ago       Up 5 seconds        0.0.0.0:3000->3000/tcp   grafana

容器创建成功后,即可通过http://47.100.215.163:3000来访问prometheus了:

默认用户名和面都是admin,这里第一次登录需要强制修改默认密码,我们这里修改下初始密码

3、安装node_exporter

因为 Prometheus 本身不具备监控功能,所以想要通过 Prometheus 收集数据的话,需要安装对应的 exporter。

docker pull prom/node-exporter
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter

查看:

[root@docusaurus-wiki ~]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES
fbdf420ec57e        prom/node-exporter   "/bin/node_exporter"     3 seconds ago       Up 2 seconds        0.0.0.0:9100->9100/tcp   node-exporter
70f677303f8b        grafana/grafana      "/run.sh"                6 minutes ago       Up 6 minutes        0.0.0.0:3000->3000/tcp   grafana
4fcf1c8687df        prom/prometheus      "/bin/prometheus --c…"   12 minutes ago      Up 12 minutes       0.0.0.0:9090->9090/tcp   prometheus
[root@docusaurus-wiki ~]

容器创建成功后,即可通过http://47.100.215.163:9100/metrics来查看监控收集的数据:

4.配置 Prometheus 监控 Node 节点

(1)修改Prometheus主配置文件

[root@docusaurus-wiki ~]# mkdir prometheus-grafana
[root@docusaurus-wiki ~]# cd prometheus-grafana/

#在Prometheus配置文件按以下内容修改:
[root@docusaurus-wiki ~]# vim prometheus.yml
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
      labels:
        instance: prometheus

  - job_name: linux
    static_configs:
    - targets: ['47.100.215.163:9100']     #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
      labels:
        instance: localhost
[root@docusaurus-wiki prometheus-grafana]# docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml

(2)重启prometheus容器

[root@docusaurus-wiki prometheus-grafana]# docker restart prometheus

5、grafna里配置prometheus源并导入模板

登录grafana界面:

http://47.100.215.163:3000/

按如下方式添加prometheus为grafana数据源:

这里填写prometheus访问地址:

http://47.100.215.163:9090

点击保存&test:

可以看到能正常连接到prometheus数据源:

  • 接下来,我们导入grafna监控模板

Grafana 官方提供模板地址:https://grafana.com/grafana/dashboards/

本次使用12884这个模板:

image-20240107094810601
image-20240107094810601

点击+号-import

输入12884,再点击右边的load

选择perometheus为其数据源,在点击Import即可:

观察:

完美。

6、设置grafna为匿名登录

背景

经常会有这样一种场景,在办公室或是监控中心能够有一块屏幕来监控和展示一些软件、硬件的详细信息,比如运维比较关心的CPU/内存/硬盘的指标或者系统软件的运行信息等。当我们用grafana来展示时,发现每次都需要手动登录并切换到标签页,才能看到详细信息,而我们希望系统操作系统只要一开机后就能自动切换到我们的屏幕上,方便实现自动化。

当然,我是想给自己ecs配置这个prometheus监控功能,装b哈哈。

实现原理

创建一个免密登录用户,使用大屏归属于此用户上,使用grafana的免密登录加大屏的链接分享实现。即直接访问一个固定链接(无论是否登录)都能够看到此页面。

image-20240107095635622
image-20240107095635622

实现过程

1.创建免密用户

首先使用 admin 管理员账户登录 grafana,找到 orgs 用户组管理。

添加一个用户组 home(根据实际情况修改,我这里以家庭演示为例):

创建完会新增一个 home 用户组:

在 user 下边创建一个 home 用户:

(home密码先随便设置一个,后续会设置home组下的用户免密登录的)

创建完如下图所示:

这里要特别注意下:

我们来配置以下权限问题:

将组织切换到Main Org.下:

来到home用户下:

home用户添加到home组织下:

home用户从Main Org.组织下移除掉:

按上述同样方式,打算把admin用户从home组织里移除出去:(这个移除会报错哦)🤣(那就不移除了呗)

最终如下:

2. 授权免密登录
  • 打开 grafana 的配置文件,在修改前备份:
[root@docusaurus-wiki prometheus-grafana]# docker cp grafana:/etc/grafana/grafana.ini grafana.ini 
[root@docusaurus-wiki prometheus-grafana]# cp grafana.ini{,.bak}
[root@docusaurus-wiki prometheus-grafana]# ll
总用量 92
-rw-r--r-- 1 root root 43461 12月 11 2021 grafana.ini
-rw-r--r-- 1 root root 43461 1月   7 10:16 grafana.ini.bak
-rw-r--r-- 1 root root   550 1月   7 09:36 prometheus.yml
[root@docusaurus-wiki prometheus-grafana]
  • 打开配置文件:
vim grafana.ini

找到如图所示的配置:

将注释取消:

#表示开启匿名登录 enabled = true

#修改为之前建立的 home 组织 org_name = home

#角色为观看者 org_role = Viewer

#隐藏版本 hide_version = true
[auth.anonymous]
# enable anonymous access
enabled = true

# specify organization name that should be used for unauthenticated users
org_name = home

# specify role for unauthenticated users
org_role = Viewer

# mask the Grafana version number for unauthenticated users
hide_version = true

修改完后保存配置后重启:

[root@docusaurus-wiki prometheus-grafana]#  docker cp  grafana.ini grafana:/etc/grafana/grafana.ini
[root@docusaurus-wiki prometheus-grafana]#  docker restart grafana
grafana
3.配置大屏
  • 切换到 home 组织下:
  • 在组织下根据自己的情况再建立一个数据源和和大屏:(和上述方式一样)

导入模板12884

  • 对大屏配置 “仅浏览权限”,点击右上角的齿轮:

确保 Viewer 权限为 view,然后保存。

  • 回到大屏,点击分享图标:

将 shorten URL 打勾,最后拷贝生成的链接即可。

http://47.100.215.163/:3000/goto/BzsWB-KSz?orgId=2

4.测试

完美,符合预期:😘

http://47.100.215.163:3000/d/9CWBz0bik/ecsfu-wu-qi-jian-kong?orgId=2&from=1704551535181&to=1704594735181

另外,也能看到,次只有只读权限哦,nice。

7、给自己网站整上监控功能

nice😘

参考

https://blog.csdn.net/weixin_46902396/article/details/115294424 使用 Docker 部署 Prometheus + Grafana 监控平台

https://zhuanlan.zhihu.com/p/669096500 Grafana搭建免密登录大屏教程

https://help.aliyun.com/zh/arms/observable-visualization-grafana-edition/generate-links-to-share-grafana-dashboards 为Grafana大盘生成免登录查看的共享链接

感谢大佬们的文章哦。

待优化

问题:能不能用nginx来代理grafana登录链接呢

问题来了:

能不能用nginx来代理grafana登录链接呢,该如何处理?(后续再说把)

像如下大佬设置:

https://i4t.com/

https://grafana.frps.cn

奇怪,这个简短方式不支持,是哪里要配置解析吗?

http://47.100.215.163:3000/goto/rSAtf-KIk?orgId=2

FAQ

其它方案:ecs提供的周报

这个还可以哦。

性能数据:
    CPU平均使用率、最大使用率
    内存平均使用率、最大使用率

    公网带宽平均使用带宽、最大使用带宽

云盘数据:
   磁盘读 IOPS平均
   磁盘读 IOPS最大
   磁盘写 IOPS平均
   磁盘写 IOPS最大  

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

image-20230107215114763
image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971
image-20230107215126971

🍀 个人博客站点

https://onedayxyy.cn/

🍀 语雀

https://www.yuque.com/xyy-onlyone

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885
image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185
image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

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

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

相关文章

二叉树与堆的深度解析:数据结构中的关键概念及应用

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 前言树概念注意&#xff1a; 树的基本概念及术语基本概念及术语以家谱为例 树的表示孩子兄弟表示法简介优势应用示例 树在实际中的运用文件系统的目录树…

【Maven笔记3】Maven基础入门案例

本篇通过一个最基础的入门案例&#xff0c;熟悉一下maven最基础的使用方法。 编写POM maven项目的核心是pom.xml文件&#xff0c;pom定义了项目的基本信息&#xff0c;用于描述项目如何构建&#xff0c;声明项目依赖等等。 这里我们新建一个maven-demo-hello项目&#xff0c;…

VS Code结合Live Server插件快速搭建小游戏并发布至公网可随时远程访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 前言 本篇教程&#xff0c;我们将通过VS Code实现远程开发MENJA小游戏&#xff0c;并通过cpolar内网穿透发布到公网&#xff0c;分…

黑莓系统的安全性如何?

黑莓系统的安全性非常高&#xff01; 在过去很长一段时间里&#xff0c;都被认为是手机市场上最安全的操作系统。这主要得益于黑莓在安全性方面的重视和投入。 &#xff08;在世界上最安全的 6 款手机排名中&#xff0c;iPhone未能入围&#xff09; 世界上最安全的 6 款手机&…

CNN——ResNet

深度残差网络&#xff08;Deep residual network, ResNet&#xff09;的提出是CNN图像史上的一件里程碑事件&#xff0c;并且让深度学习真正可以继续做下去&#xff0c;斩获2016 CVPR Best Paper。此外ResNet的作者都是中国人&#xff0c;一作何恺明。ResNet被提出以后很多的网…

Mac 16g约等于Windows多少g?

Mac 16g 内存等于 Windows 320g 内存 何为“黄金内存”&#xff1f; Mac 的内存是用黄金做的&#xff0c;而 Windows 的内存是用铁做的。 黄金的密度是 19.32 g/cm&#xff0c;而铁的密度是 7.874 g/cm。 因此&#xff0c;16g 的黄金体积是 0.082 cm&#xff0c;而 16g 的铁…

交换机_05VLAN

一、VLAN技术的引入 VLAN&#xff08;Virtual Lan&#xff09;主要应用在交换机上 一台交换机默认情况下连接一个广播域&#xff0c;因为默认情况下所有的接口都是属于同一个vlan的&#xff0c;默认vlan1&#xff0c;所以是在同一个广播域中。 结合交换机工作原理&#xff0…

Python 利用PYQT5设计基于RSA算法盲签名的匿名化电子支付系统设计与实现

基于RSA算法的盲签名算法 David Chaum 于1982年提出盲签名的概念&#xff0c;并利用RSA算法设计了第一个盲签名方案. 该方案的安全性基于大整数分解问题 盲签名的步骤 1.密钥生成 签名者执行以下步骤生成密钥对: ①签名者选择两个大素数p,q&#xff0c; 计算npq&#xff0…

OpenCV-18图像的翻转和旋转

一、图像的翻转 使用API---cv.flip&#xff08;src, flipCode&#xff09; flipCode 0表示上下翻转 flipCode > 0表示左右翻转 flipCode < 0上下 左右翻转 或者使用np的翻转src[: : -1,: : -1]实现上下翻转。 示例代码如下&#xff1a; import cv2 import numpy…

GPT(Generative Pre-Training)论文解读及源码实现(二)

本篇为gpt2的pytorch实现&#xff0c;参考 nanoGPT nanoGPT如何使用见后面第5节 1 数据准备及预处理 data/shakespeare/prepare.py 文件源码分析 1.1 数据划分 下载数据后90%作为训练集&#xff0c;10%作为验证集 with open(input_file_path, r) as f:data f.read() n …

yolo 分割label格式标注信息图片显示可视化查看

参考: https://github.com/ultralytics/ultralytics/issues/3137 https://blog.csdn.net/weixin_42357472/article/details/135218349?spm=1001.2014.3001.5501 需要把坐标信息在图片上显示 代码 1)只画出了坐标边缘 import cv2 import numpy as np from random impor…

html 原生网页使用ElementPlus 日期控件el-date-picker换成中文

项目&#xff1a; 原生的html,加jQuery使用不习惯&#xff0c;新html页面导入vue3,element plus做界面&#xff0c;现在需要把日历上英文切成中文。 最终效果&#xff1a; 导入能让element plus日历变成中文脚本&#xff1a; elementplus, vue3对应的js都可以通过创建一个vu…

idea 以文本形式输出 SpringBoot项目 目录结构

第1步&#xff1a;AltF12 打开 Terminal 终端 第2步&#xff1a;cd 到 项目路径下 第3步&#xff1a;使用 tree 命令 结果 D:. ├─.mvn │ └─wrapper ├─applog │ └─logs ├─src │ ├─main │ │ ├─java │ │ │ └─com │ │ │ └─zhangziwa …

【软件测试】学习笔记-如何做好单元测试

什么是单元测试&#xff1f; 在正式开始今天的话题之前&#xff0c;我先给你分享一个工厂生产电视机的例子。 工厂首先会将各种电子元器件按照图纸组装在一起构成各个功能电路板&#xff0c;比如供电板、音视频解码板、射频接收板等&#xff0c;然后再将这些电路板组装起来构…

【计算机网络】网络编程套接字socket--UDP/TCP简单服务器实现/TCP协议通信流程

文章目录 一、预备知识1.IP和端口号2.TCP协议和UDP协议3.网络字节序 二、socket编程接口1.socket 常见API2.sockaddr结构 三、UDP服务器相关重要接口介绍sendtorecvfrompopen 1.udpServer.hpp2.udpServer.cc3.udpClient.hpp4.udpClient.cc5.onlineUser.hpp 四、TCP服务器socket…

高性能、可扩展、分布式对象存储系统MinIO的介绍、部署步骤以及代码示例

详细介绍 MinIO 是一款流行的开源对象存储系统&#xff0c;设计上兼容 Amazon S3 API&#xff0c;主要用于私有云和边缘计算场景。它提供了高性能、高可用性以及易于管理的对象存储服务。以下是 MinIO 的详细介绍及优缺点&#xff1a; 架构与特性&#xff1a; 开源与跨平台&am…

HTML---JavaScript操作DOM对象

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 本章目标 了解DOM的分类和节点间的关系熟练使用JavaScript操作DOM节点 访问DOM节点 能够熟练的进行节点的创建、添加、删除、替换等 能够熟练的设置元素的样式 能够灵活运用JavaScript获取元素…

SpringBoot学习(八)-SpringBoot + Dubbo + zookeeper

分布式DubboZookeeper 1、分布式理论 1&#xff09;什么是分布式系统&#xff1f; 在《分布式系统原理与范型》一书中有如下定义&#xff1a;“分布式系统是若干独立计算机的集合&#xff0c;这些计算机对于用户来说就像单个相关系统”&#xff1b; 分布式系统是由一组通过…

【AI视野·今日CV 计算机视觉论文速览 第284期】Fri, 5 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Fri, 5 Jan 2024 Totally 62 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Learning to Prompt with Text Only Supervision for Vision-Language Models Authors Muhammad Uzair Khattak, Muhammad F…

2024.1.7-实战-docker方式给自己网站部署prometheus监控ecs资源使用情况-2024.1.7(测试成功)

实战-docker方式给自己网站部署prometheus监控ecs资源使用情况-2024.1.7(测试成功) 目录 最终效果 原文链接 https://onedayxyy.cn/docs/prometheus-grafana-ecs 参考模板 https://i4t.com/ https://grafana.frps.cn &#x1f530; 额&#xff0c;注意哦: 他这个是通过frp来…