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://www.hqwc.cn/news/541831.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《操作系统真相还原》读书笔记九:用c编写内核

用c语言先编写一个死循环 main.c int main(void) {while(1);return 0; }编译该文件 gcc -c -o main.o main.c-- Ttext参数表示起始虚拟地址为0xc0001500 -e参数表示程序入口地址 ld main.o -Ttext 0xc0001500 -e main -o kernel.bin-- 将kernel.bin写入第9个扇区 dd if/ho…

【Session】Tomcat Session 集群

设备 nginx:192.168.67.11 tomcat1:192.168.67.12 tomcat2:192.168.67.13安装nginx (192.168.67.11) #关闭防火墙和安全机制 [roottest1 ~]# systemctl stop firewalld [roottest1 ~]# setenforce 0#安装epel源 [ro…

Unity类银河恶魔城学习记录10-10 p98 UI health bar源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili HealthBar_UI.cs using System.Collections; using System.Collections.G…

5 个适用于 Windows 10 和 11 的最佳 PDF 转 Word 转换器

PDF 文件是共享文档的首选格式,但是此类文件存在一些限制,导致难以修改或编辑。因此,您可能会发现自己正在寻找一种将 PDF 文件转换为 Word 或其他可编辑格式的方法。 有许多不同的 PDF 转换器,每种转换器提供的功能略有不同。本…

❤ css布局篇

❤ css布局篇 一、基础布局 &#xff08;1&#xff09;居中布局 ① 文字居中 <div class"div1">测试文字居中</div> body {margin: 0;padding: 0;padding: 10%; } .div1 {width: 100px;height: 100px;background: cadetblue;text-align: center; }te…

【elasticsearch实战】从零开始设计全站搜索引擎

业务需求 最近需要一个全站搜索的功能&#xff0c;我们的站点的特点是数据多源&#xff0c;即有我们本地数据库&#xff0c;也包含了第三方数据源&#xff0c;我们的数据类型除了网页&#xff0c;还包括了各种类型的文档&#xff0c;例如&#xff1a;doc、pdf、excel、ppt等格…

IDEA编译安卓源码TVBox(2)

一、项目结构&#xff1a;主要app和player app结构 二、增加遥控器按键选台 修改LivePlayActivity.java 1、声明变量 public String channelId "";public Timer timer new Timer();public Toast mToast;2、定义方法 private void mToastShow(String s){mToast …

Soft Robotics 变结构手掌和变刚度手指的仿人软体手的人机交互操作-武科大ESIR课题组师兄成果

一、引言 在当今的机器人技术领域&#xff0c;人类对机器人的需求日益增长&#xff0c;涉及到工业生产、医疗护理、服务业等各个领域。然而&#xff0c;由于任务的多样性和复杂性&#xff0c;单独依靠自主机器人操作往往难以满足实际需求。为了解决这一问题&#xff0c;人机协作…

微信小程序-webview分享

项目背景 最近有个讨论区项目需要补充分享功能&#xff0c;希望可以支持在微信小程序进行分享&#xff0c;讨论区是基于react的h5项目&#xff0c;在小程序中是使用we-view进行承载的 可行性 目标是在打开web-view的页面进行分享&#xff0c;那就需要涉及h5和小程序的通讯问…

如何使用ROS和easymqos快速搭建一辆语音控制导航的机器人

之前做的机器人小车基本都属于电脑或手机控制操作。目前&#xff0c;使用语音控制机器人小车运动&#xff0c;让机器人导航去指定地点&#xff0c;已经成为热门&#xff0c;并且语音识别技术已经有落地方案&#xff0c;可满足生活中的基本需要。有些语音芯片通过高算力处理器运…

【C语言】—— 指针二 : 初识指针(下)

【C语言】——函数栈帧 一、 c o n s t const const 修饰指针1.1、 c o n s t const const 修饰变量1.2、 c o n s t const const 修饰指针 二、野指针2.1野指针的成因&#xff08;1&#xff09;指针未初始化&#xff08;2&#xff09;指针越界访问&#xff08;3&#xff09;指…

Spring Web MVC 入门使用

1. 什么是Spring Web MVC Spring Web MVC是基于Servlet API 构建的原始Web框架&#xff0c;从一开始就包含在Spring框架中。 Servlet 是一套Java Web 开发的规范&#xff0c;或者说是一套Java Web 开发的技术标准。只有规范并不能做任何事情&#xff0c;必须要有人去实现它&a…