Prometheus 轻量化部署和使用

news/2024/5/19 0:03:50 标签: 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是一个功能强大的数据可视化和监控分析工具,它能够帮助用户更好地理解和分析各种数据,并通过可视化展示和警报功能,实现对系统和应用程序的实时监控和优化。

prometheusGrafana_31">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
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.niftyadmin.cn/n/5433627.html

相关文章

【STM32定时器(一)内部时钟定时与外部时钟 TIM小总结】

STM32 TIM详解 TIM介绍定时器类型基本定时器通用定时器高级定时器常用名词时序图预分频时序计数器时序图 定时器中断配置图定时器定时 代码调试代码案例1代码案例2 TIM介绍 定时器(Timer)是微控制器中的一个重要模块,用于生成定时和延时信号…

Android 使用adb操作WiFi相关指令

没有系统原生设置应用又需要调试WiFi功能时,可以使用如下指令来验证WiFi相关功能 最常用的就是 svc wifi enable/disable,再使用wpa_supplicant/wpa_cli来验证,但对于AP功能就没办法验证了,其实Android有组很强大的shell指令集&a…

WPF —— ComboBox控件详解

1 ConboBox简介 表示带有下拉列表的选择控件,通过单击控件上的箭头可显示或隐藏下拉列表。 ComboBox允许用户从下拉列表中选择项,或根据需要在控件的文本框中输入新文本。 ComboBox 是 ItemsControl ,这意味着它可以包含任何类型的对象的…

react框架中无构建模式直接使用es6组件

react框架,看到的总是使用es5,通过webpack编译构建。react官方,直到现在的v18.1.0版本中,只有cjs和umd版本,都没有esm(es6)版本,看起来是对es6的不认可? 但是&#xff0…

Android分区存储到底是怎么回事

文章目录 一、Android存储结构二、什么是分区存储?三、私有目录和公有目录三、存储权限和分区存储有什么关系?四、我们应该该怎么做适配?4.1、利用File进行操作4.2、使用MediaStore操作数据库 一、Android存储结构 Android存储分为内部存储和…

Python 查找并高亮PDF中的指定文本

在处理大量PDF文档时,有时我们需要快速找到特定的文本信息。本文将提供以下三个Python示例来帮助你在PDF文件中快速查找并高亮指定的文本。 查找并高亮PDF中所有的指定文本查找并高亮PDF某个区域内的指定文本使用正则表达式搜索指定文本并高亮 本文将用到国产第三方…

Docker 安装 LogStash

关于LogStash Logstash,作为Elastic Stack家族中的核心成员之一,是一个功能强大的开源数据收集引擎。它专长于从各种来源动态地获取、解析、转换和丰富数据,并将这些结构化或非结构化的数据高效地传输到诸如Elasticsearch等存储系统中进行集…

Lua中文语言编程源码-第三节,更改lualib.h Lua标准库, 使Lua支持中文关键词(与所有的基础库相关)

源码已经更新在CSDN的码库里: git clone https://gitcode.com/funsion/CLua.git 在src文件夹下的lualib.h,是Lua的标准库模块。 Lua标准库一共有有个10个库,base, 基本用不着改,所以没加中文名称。 函数声明宏名英文库名中文库…