Prometheus 轻量化部署和使用

文章目录

  • 说明
  • Prometheus简介
  • Grafana简介
  • prometheus和Grafana的关系
  • 环境准备(docker)
    • docker安装
    • 时间时区问题(我的代码中)
    • dockers镜像加速和服务器时区设置
  • 数据库准备(mysql、redis)
    • mysql配置
    • redis配置
  • Prometheus、grafana下载和安装
    • 拉取镜像
    • 启动exporter容器
    • 启动Prometheus
    • 启动grafana
    • 添加Prometheus数据源
    • 添加监控模板
  • Prometheus时区问题探讨

说明

  • 感谢csdn博主北城 半夏的《基于docker部署Prometheus》教程,提供了很大的帮助和指导,同时我也参考网络其他资源和教程,进行实践和完善后总结此文,愿我们的共同进步,只为一份热情!!!
  • 本文使用centos 7操作系统,使用1panel面板借助docker环境,安装Mysql、Redis数据库环境,借助Prometheus收集监控数据,最终通过Grafana借助图标等可视化展示数据
    在这里插入图片描述
  • 使用docker环境,保证对系统的侵入性和修改性降低到最低!本地环境安装,作者也做过一些尝试,操作麻烦,需要在系统上修改大量文件,同时设置系统服务启动时,遇到了棘手的权限问题!最终,选择使用docker环境快速部署!
  • 当然,本文只是一些基本的部署和学习的指导,有关高级的学习,还请移步官网和大佬博客!

Prometheus简介

  • Prometheus:一款开源的监控和警报工具,用于记录实时的指标数据并提供灵活的查询语言和仪表盘。最初由SoundCloud开发并于2012年发布。
  • 设计目标:实现高度可靠性、可扩展性和简单性,应对大规模的分布式系统的监控需求。
  • Prometheus采用拉取模型的方法,通过定期从目标服务中获取指标数据。支持服务发现,可以自动发现新的目标并开始监控。
  • Prometheus提供了一个灵活的查询语言PromQL,可以对指标数据进行多维度的查询和聚合。
  • Prometheus还提供了警报机制。用户可以定义自己的警报规则,并在指标达到特定条件时触发警报。警报可以通过电子邮件、Slack等方式进行通知。

  • Prometheus是一个功能强大的监控和警报工具,适用于各种规模的分布式系统。它的开源特性和活跃的社区使得它成为了许多组织的首选监控解决方案。

Grafana简介

  • Grafana是一个开源的数据可视化和监控分析平台,它提供了丰富的仪表盘和图表功能,用于展示和分析各种数据源的实时数据。Grafana支持多种数据源,包括Prometheus、InfluxDB、Elasticsearch、MySQL等。

Grafana的特点包括:

  1. 多数据源支持:Grafana可以从不同的数据源中获取数据,并将其集成在一个仪表盘中展示。

  2. 可视化丰富:Grafana提供丰富的可视化选项,包括折线图、柱状图、仪表盘等,用户可以根据需要自由选择并进行定制。

  3. 高度可配置:Grafana具有灵活的配置选项,用户可以自定义仪表盘、图表和警报规则,以适应各种监控和分析场景。

  4. 警报和通知功能:Grafana支持设置警报规则,并通过电子邮件、Slack等方式发送通知,以便及时响应和解决问题。

  5. 社区支持和活跃:Grafana是一个开源项目,拥有庞大的社区支持和活跃的开发者社区,用户可以在社区中获取帮助和分享经验。

Grafana是一个功能强大的数据可视化和监控分析工具,它能够帮助用户更好地理解和分析各种数据,并通过可视化展示和警报功能,实现对系统和应用程序的实时监控和优化。

prometheus和Grafana的关系

  • Grafana通常与Prometheus一起使用,用于可视化和分析Prometheus收集的监控数据。Prometheus是一个开源的系统监控和警报工具,它通过收集和存储时间序列数据来监控应用程序和系统的运行状态。

  • 通过将Prometheus与Grafana集成,用户可以使用Grafana创建漂亮的仪表盘和图表,以直观的方式展示Prometheus收集的监控数据。这样,用户可以更方便地监控和分析系统的运行状况,并及时做出相应的调整和优化。

环境准备(docker)

docker安装

  • 推荐直接安装1panel运维面板,在安装的过程中会一键安装docker环境,同时面板中提供应用商店和基本的docker管理功能!节省大量时间和操作成本,docker安装教程(请根据机器使用的系统选择不同的安装命令)

时间时区问题(我的代码中)

  • NTP服务器和系统时区要求
  • 对于系统的NTP服务器和时区设置,对于监控和报告的准确性和一致性是非常重要的。如果系统的时钟不准确或时区设置不正确,可能会导致监控数据的时间戳错误或显示不准确。

为了确保Grafana和Prometheus的正常运行,建议按照以下要求进行设置:

  1. NTP服务器:确保系统上配置可靠的NTP服务器,并确保系统时钟与NTP服务器同步。这将确保监控数据的时间戳准确,并避免由于时钟不同步而导致的数据错误。

  2. 时区设置:确保系统的时区设置正确。如果Prometheus和Grafana运行在不同的服务器上,确保它们的时区设置保持一致,这样可以避免在数据展示和分析时出现时区混乱或不一致的情况。

  • Can I change the timezone? Why is everything in UTC?
  • To avoid any kind of timezone confusion, especially when the so-called daylight saving time is involved, we decided to exclusively use Unix time internally and UTC for display purposes in all components of Prometheus. A carefully done timezone selection could be introduced into the UI. Contributions are welcome.
    我可以更改时区吗?为什么一切都是UTC?
    为了避免任何类型的时区混淆,特别是当涉及到所谓的夏令时时,我们决定在Prometheus的所有组件中专门使用Unix时间和UTC来显示目的。可以在UI中引入一个精心设计的时区选择

dockers镜像加速和服务器时区设置

在这里插入图片描述
在这里插入图片描述

数据库准备(mysql、redis)

  • 在1panel中选择安装即可,在配置页面记得勾选允许外部端口访问
  • 其他相关的配置比较简单,作者就不再赘述!先安装mysql,再安装redis,记住初始设置root用户的密码,后续需要使用
    在这里插入图片描述
  • 记得服务勾选允许外部访问
    在这里插入图片描述

mysql配置

  • 使用配置容器界面的root密码,进入容器然后设置访问用户
mysql -u root -p
mysql> create user mysql_exporter@'%' identified with mysql_native_password by 'root';
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'%';
mysql> flush privileges;

redis配置

  • 默认安装redis时,1panel官方没有默认提供时区的设置,可以在高级选项中添加
- /etc/localtime:/etc/localtime

在这里插入图片描述

  • 也可以在启动后,在编辑中手动添加,然后确定,重启容器
    在这里插入图片描述

Prometheus、grafana下载和安装

拉取镜像

docker pull prom/node-exporter
docker pull prom/mysqld-exporter
docker pull google/cadvisor
docker pull prom/prometheus
docker pull grafana/grafana
docker pull bitnami/redis-exporter

启动exporter容器

# 启动node-exporter
docker run -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter

# 启动redis-exporter
docker run -d --name redis_exporter --restart=always -p 9121:9121 \
  --network=1panel-network \
  -e REDIS_ADDR=redis://局域网/公网服务器Ip:6379 \
  -e REDIS_PASSWORD=redis服务器访问密码 \
  -v /etc/localtime:/etc/localtime \
  bitnami/redis-exporter

# 启动mysql-exporter
docker run -d --name mysqld_exporter --restart=always -p 9104:9104 \
-e DATA_SOURCE_NAME="mysql_exporter:root@(局域网/公网服务器Ip:3306)/" --network=1panel-network \
-v /etc/localtime:/etc/localtime \
prom/mysqld-exporter  

# 启动cadvisor-exporter
docker run  -v /:/rootfs:ro \
-v /var/run:/var/run:rw \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
-p 9101:8080 \
-d --name=cadvisor-exporter --restart=always \
--network=1panel-network \
google/cadvisor:latest
  • 运行容器后访问容器,IP:port/metrics查看收集的数据
# node-exporter
http://192.x.x.x:9100/metrics
# mysql-exporter
http://192.x.x.x:9104/metrics
# redis-exporter
http://192.x.x.x:9121/metrics
# cadvisor-exporter
http://192.x.x.x:9101/metrics

启动Prometheus

  1. 配置Prometheus.yml文件
mkdir /opt/prometheus
cd /opt/prometheus/
vim prometheus.yml
  1. 粘贴复制如下内容
global:
  scrape_interval:     60s
  evaluation_interval: 60s

scrape_configs:

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

  - job_name: linux
    static_configs:
      - targets: ['192.168.x.x:9100']
        labels:
          instance: linux

  - job_name: mysqld
    static_configs:
      - targets: ['192.168.x.x:9104']
        labels:
          instance: mysql
  
  - job_name: redis
    static_configs:
      - targets: ['192.168.x.x:9121']
        labels:
          instance: redis

  - job_name: cadvisor
    static_configs:
      - targets: ['192.168.x.x:9101']
        labels:
          instance: cadvisor    
  • 启动prometheus容器命令
# 启动prometheus
docker run  -d --name prometheus --restart=always --network=1panel-network \
-p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
 prom/prometheus
  • 访问url:http://x.x.x.x:9090/targets,查看服务连接情况,一般需要等一下,才可以都up
    在这里插入图片描述
    在这里插入图片描述

启动grafana

  • 新建空文件夹grafana-storage,用来存储数据
mkdir /opt/grafana-storage
chmod 777 -R /opt/grafana-storage
# 启动grafana
docker run -d --name grafana --restart=always  --network=1panel-network \
-p 3000:3000 \
-v /opt/grafana-storage:/var/lib/grafana \
-e TZ=Asia/Shanghai \
grafana/grafana
  • 访问url:ip:3000,然后使用默认用户admin和密码admin登录,然后重新设置密码(也可以是admin)
    在这里插入图片描述

添加Prometheus数据源

  1. 点击Setting—>Add data source->选择Prometheus
    在这里插入图片描述
  • name:Prometheus
  • type 选择Prometheus
  • url 输入http://IP:9090,IP可以是服务器IP,也可以是Prometheus容器ip
    在这里插入图片描述
  • 点击测试与保存,显示数据源working,即为成功
    在这里插入图片描述

添加监控模板

  • 导入grafana监控模板,mysql监控模板id为7362;主机的监控模板,模板id为8919;容器的监控模板,模板id为179;redis监控模板id为11835;
  • 官方模板网站地址
    在这里插入图片描述
    在这里插入图片描述
  • 导入后即可使用,更多的使用和学习,还请大家继续学习!!
    在这里插入图片描述

Prometheus时区问题探讨

  • 原生的Prometheus查询指标时页面显示的指标趋势图是根据GMT时间显示的,与北京时间相差8小时,勾选本地时间后显示正常
    在这里插入图片描述

在这里插入图片描述

  • 但是在grafana上面显示的数据还是北京时间的时间
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4-如何进行细分市场分析-03 竞争者分析

任何一个行业肯定都是有很多竞争者,我们如何判断这些竞争者对我们有什么样的威胁、什么样的机会、什么样的影响,我们需要去分析这些竞争者。 行业竞争格局如何分析? 我们可以从一些基本指标来入手,如市场集中度、行业利润率。 竞…

Win10系统使用IIS服务搭建WebDAV网站结合内网穿透公网访问本地文件

文章目录 推荐1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结: 推荐 前些天发现了一个巨牛的人工智能…

短剧小程序软件开发首页接口转发到Selectpage

工具&#xff1a;用的是uniapp开发 技术栈&#xff1a;vue、nide..js、云开发 用时&#xff1a;20工作天 软件&#xff1a;Hb、微信开发者工具 <?php namespace app\api\controller; use app\common\controller\Api; /** * 首页接口 */ class Index extends Api { …

算法思想总结:滑动窗口算法

创作不易&#xff0c;感谢三连 一.长度最小的数组 . - 力扣&#xff08;LeetCode&#xff09;长度最小的数组 class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int lenINT_MAX,nnums.size(),sum0;//len必须要给一个很大的数&#xf…

【LeetCode每日一题】2684. 矩阵中移动的最大次数

文章目录 [2684. 矩阵中移动的最大次数](https://leetcode.cn/problems/maximum-number-of-moves-in-a-grid/)思虑&#xff1a;代码&#xff1a; 2684. 矩阵中移动的最大次数 思虑&#xff1a; 1.将第一列的所有行坐标&#xff0c;用IntStream 来生成一个范围 [0, m) 内的整数…

reloading,一个很实用的Python库!

Python是一门非常流行的编程语言&#xff0c;它的广泛应用和丰富的第三方库使得开发者们能够轻松完成各种任务。reloading是Python中一个强大的库&#xff0c;它能够在程序运行时重新加载修改过的模块&#xff0c;为开发者提供了便利和灵活性。本文将全面介绍reloading库&#…

警惕MKP勒索病毒,您需要知道的预防和恢复方法。

引言&#xff1a; 在网络世界中&#xff0c;.mkp勒索病毒是一股威胁不可小觑的黑暗势力。它以其毒辣的加密手段威胁着我们的数据安全。本文将深入介绍.mkp勒索病毒&#xff0c;揭示如何恢复被其加密的数据文件&#xff0c;并分享一些预防措施&#xff0c;助您在数字世界中安全…

整数和浮点数在内存中存储及题目

一、整数在内存中存储 整数的2进制表⽰⽅法有三种&#xff0c;即原码、反码和补码。三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&#xff0c;⽤1表⽰“负”&#xff0c;⽽数值位最⾼位的⼀位是被当做符号位&#xff0c;剩余的都是数值位 正整数…

使用ChatGPT高效完成简历制作[中篇]-有爱AI实战教程(五)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 导读&#xff1a;在使用 ChatGPT 时&#xff0c;当你给的指令越精确&#xff0c;它的回答会越到位&#xff0c;举例来说&#xff0c;假如你要请它帮忙写文案&#xff0c;如果没…

【JS进阶】第一天

参考视频——黑马程序员 JavaScript 进阶 - 第 1 天 学习作用域、变量提升、闭包等语言特征&#xff0c;加深对 JavaScript 的理解&#xff0c;掌握变量赋值、函数声明的简洁语法&#xff0c;降低代码的冗余度。 理解作用域对程序执行的影响能够分析程序执行的作用域范围理解闭…

后端程序员入门react笔记(八)-redux的使用和项目搭建

一个更好用的文档 添加链接描述 箭头函数的简化 //简化前 function countIncreAction(data) {return {type:"INCREMENT",data} } //简化后 const countIncreAction data>({type:"INCREMENT",data })react UI组件库相关资料 组件库连接和推荐 antd组…

electron 学习

const { app, BrowserWindow } require(electron); const path require(path); function createWindow () {let mainWin new BrowserWindow({x: 100,y: 100,show:false, // 默认不显示窗体width: 800,height: 800,maxHeight: 1000,maxWidth: 1000,minHeight: 400,minWidth: …

Linux学习(4)——使用编辑器

1.gedit编辑器 简单易懂&#xff0c;依赖图形界面。可以使用ctrlc ctrlv等快捷键&#xff0c;ctrls进行保存&#xff0c;与windows系统中相类似。 2.vi/vim编辑器 vi/vim可以直接通过控制台的终端完成文本的编辑&#xff0c;不依赖图形界面&#xff0c;使用范围更广。它的编辑…

安装Pytorch——CPU版本

安装Pytorch——CPU版本 1. 打开pytorch官网2. 选择pip安装pytorch-cpu3.复制安装命令4. 在cmd命令窗口&#xff0c;进入你的虚拟环境4.1 创建虚拟环境4.2 进行安装 5. 安装成功6. 进行测试——如下面步骤&#xff0c;如图6.1 输入 python6.2 输入 import torch6.2 输入 print …

【Web开发】CSS教学(超详细,满满的干货)

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Web开发】CSS教学(超详细,满满的干货) &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 CSS一. 什么是CSS?1.1 基本语法规范1.2 引入方式1.3 规范 二. CSS选…

Spring Web MVC入门(3)

学习Spring MVC 请求 传递JSON数据 JSON概念 JSON: JavaScript Object Natation JSON是一种轻量的数据交互格式, 采用完全独立于编程语言的文本格式来存储和标识数据. 简单来说, JSON是一种数据格式, 有自己的格式和语法, 使用文本来表示对象或数组的信息, 因此JSON的本质…

下载、安装Maven

官网搜索Maven 进入官网 点击下载

蓝桥杯每日一题 走迷宫bfs 超超详细解释!!!

昨天学习了bfs的基本概念&#xff0c;今天来做一道经典习题练练手吧&#xff01; bfs常用的两类题型 1.从A出发是否存在到达B的路径(dfs也可) 2.从A出发到B的最短路径&#xff08;数小:<20才能用dfs&#xff09; 遗留的那个问题的答案- 题目&#xff1a;走迷宫 答案&…

在根据卷积核大小计算padding时要遵循什么原则

在计算卷积操作中的 padding 大小时&#xff0c;通常有以下原则&#xff1a; 保持输入输出尺寸相同&#xff1a;如果希望卷积操作前后输入和输出的尺寸保持不变&#xff0c;可以使用以下公式计算 padding 大小&#xff1a; 其中&#xff0c;filter size 是卷积核的大小。这个…

腾讯云免费服务器申请入口_2核2G、2核8G和4核8G配置

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云服务器网txyfwq.com分享2024年最新腾讯云免费…