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:     60sevaluation_interval: 60sscrape_configs:- job_name: prometheusstatic_configs:- targets: ['localhost:9090']labels:instance: prometheus- job_name: linuxstatic_configs:- targets: ['192.168.x.x:9100']labels:instance: linux- job_name: mysqldstatic_configs:- targets: ['192.168.x.x:9104']labels:instance: mysql- job_name: redisstatic_configs:- targets: ['192.168.x.x:9121']labels:instance: redis- job_name: cadvisorstatic_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上面显示的数据还是北京时间的时间
    在这里插入图片描述

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

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

相关文章

最小化战斗力差距——算法思路

题目链接:1.最小化战斗力差距 - 蓝桥云课 (lanqiao.cn) 可分析,把一个数组分成两组,求一组的最大值与另一组的最小值的差值的绝对值最小,可以转换为求任意两个相邻数字之间的最小插值的绝对值。 可看图示: package lan…

一文速通ESP32(基于MicroPython)——含示例代码

ESP32 简介 ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片,支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa 32 位 LX7 双核处理器,主频高达 240 MHz,内置 512 KB SRAM (TCM),具有 45 个可编程 GPIO 管…

App推广不再难!Xinstall神器助你快速获客,提升用户留存

在如今的移动互联网时代,App推广已经成为了各大应用商家争夺用户的重要手段。然而,面对竞争激烈的市场环境,如何快速提升推广效率,先人一步获得用户呢?这就需要我们借助专业的App全渠道统计服务商——Xinstall的力量。…

MySQL 多表查询强化练习

环境准备 create table dept(id int PRIMARY KEY,dname VARCHAR(50),loc VARCHAR(50) ); insert into dept values (10,研发部,北京), (20,学工部, 上海), (30,销售部,广州 ), (40,财务部,深圳);create table job(id int PRIMARY KEY,jname VARCHAR(20),descripition VARCHAR(…

机器学习——压缩网络作业

文章目录 任务描述介绍知识蒸馏网络设计 Baseline实践 任务描述 网络压缩:使用小模型模拟大模型的预测/准确性。在这个任务中,需要训练一个非常小的模型来完成HW3,即在food-11数据集上进行分类。 介绍 有许多种网络/模型压缩的类型&#xff0…

ElasticSearch常见用法,看这一篇就够了(文末送书)

2024送书福利正式起航 关注「哪吒编程」,提升Java技能 文末送3本《一本书讲透Elasticsearch:原理、进阶与工程实践》 大家好,我是哪吒。 ElasticSearch是一款由Java开发的开源搜索引擎,它以其出色的实时搜索、稳定可靠、快速安…

【Linux】进程与可执行程序的关系fork创建子进程写实拷贝的理解

一、进程与可执行程序之间关系的理解 系统会将此时在系统运行的进程的各种属性都以文件的形式给你保存在系统的proc目录下。运行一个程序的时候,本质就是把磁盘中的程序拷贝到内存中,当一个进程运行起来的时候,它本质已经和磁盘中的可执行程序…

Epuck2 在 ROS 下的运动控制

文章目录 前言一、初始配置二、运动控制三、移动机器人总结 前言 在对Epuck2机器人进行完固件更新及IP地址查询后,接下来通过ROS来对Epuck2机器人进行运动控制。 一、初始配置 (1)创建一个 catkin 工作空间 mkdir -p ~/catkin_ws/src cd ~…

cmd常用指令

cmd全称Command Prompt,中文译为命令提示符。 命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。 在不同的操作系统环境下,命令提示符各不相同。 在windows环境下,命令行程序为cmd.exe,是一个32位的命令…

通俗易懂的Python循环讲解

循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。 for循环 for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次。 基本构造是 for 元素 in 序列: statemen…

ClickHouse中的设置的分类

ClickHouse中的各种设置 ClickHouse中的设置有几百个,下面对这些设置做了一个简单的分类。

C语言疑难题:杨辉三角形、辗转相除求最大公约数、求π的近似值、兔子问题、打印菱形

杨辉三角形&#xff1a;打印杨辉三角形的前10行 /* 杨辉三角形&#xff1a;打印杨辉三角形的前10行 */ #include<stdio.h> int main(){ int i,j; int a[10][10]; printf("\n"); for(i0;i<10;i){ a[i][0]1; a[i][i]1; …

提升Java IO性能!探究BufferedOutputStream的奥秘

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java IO相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

【系统架构师】-第4章-信息安全技术

1、基础知识 五要素&#xff1a; (1)机密性&#xff1a;确保信息不暴露给未授权的实体或进程。 (2)完整性&#xff1a;只有得到允许的人才能修改数据&#xff0c;并且能够判别出数据是否已被篡改。 (3)可用性&#xff1a;得到授权的实体在需要时可访问数据&#xff0c;即攻击…

力扣刷题Days20-151. 反转字符串中的单词(js)

目录 1,题目 2&#xff0c;代码 1&#xff0c;利用js函数 2&#xff0c;双指针 3&#xff0c;双指针加队列 3&#xff0c;学习与总结 1&#xff0c;正则表达式 / \s /&#xff1a; 2&#xff0c;结合使用 split 和正则表达式&#xff1a; 1,题目 给你一个字符串 s &am…

ChatGPT提示词方法的原理

关于提示词&#xff0c;我之前的一些文章可以参考&#xff1a; 【AIGC】AI作图最全提示词prompt集合&#xff08;收藏级&#xff09;https://giszz.blog.csdn.net/article/details/134815245?ydrefereraHR0cHM6Ly9tcC5jc2RuLm5ldC9tcF9ibG9nL21hbmFnZS9hcnRpY2xlP3NwbT0xMDExL…

RunnerGo测试平台的安装和使用

文章适用于想RunnerGo入门的同学&#xff0c;本人主要是后端&#xff0c;这里做一个入门的学习记录。想深入适用RunnerGo的同学可以参考官网文档&#xff1a; https://wiki.runnergo.cn/docs/ 这里我测试的代码是之前搭建的一个前后端分离小demo&#xff0c;代码地址是https:/…

Rocket MQ 从入门到实践

为什么要使用消息队列&#xff0c;解决什么问题&#xff1f;&#xff08;消峰、解藕、异步&#xff09; 消峰填谷 客户端》 网关 〉 消息队列》秒杀服务 异步解耦 消息队列中的重要概念理解。&#xff08;主题、消费组、队列&#xff0c;游标&#xff1f;&#xff09; 主题&…

Vulnhub - Toppo

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog Toppo 靶机下载地址&#xff1a;Toppo: 1 ~ VulnHub 搭建&#xff1a;创建任意虚拟机&#xff0c;然后…

【网络编程基础(一)】网络基础和SOCKET

这里写目录标题 1、网络三要素2、IPV4和IPV6区别3、网络交互3.1、交互模型图3.2、基础通信协议3.3、OSI参考模型与TCP/IP参考模型对应关系 4、SOCKET网络套接字4.1、SOCKET分类4.2、基于流式套接字的编程流程4.3、网络通信雏形4.4、socket函数4.4.1、socket函数示例 4.5、bind函…