Prometheus普罗米修斯-入门

2023-05-16

Promethus(普罗米修斯)适合k8s和docker的监控系统

功能

能够安装prometheus服务器
能够通过安装node_exporter监控远程linux
能够通过安装mysqld_exporter监控远程mysql数据库
能够安装grafana
能够在grafana添加prometheus数据源
能够在grafana添加监控cpu负载的图形
能够在grafana图形显示mysql监控数据

https://blog.csdn.net/weixin_52492280/article/details/116069980

基本原理

Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。
在这里插入图片描述

它的服务过程是这样的Prometheus daemon负责定时去目标上抓取metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。

Prometheus:支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。

Alertmanager:是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

PushGateway:这个组件是支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据

https://blog.csdn.net/weixin_52492280/article/details/116069980

架构图

如上图,通过 mysql_exporter 获取 MySQL 的监控数据,通过 node_exporter 获得 Linux 服务器的监控数据。将获得的监控数据传到 Prometheus 中,最终通过 Grafana 展示出来
在这里插入图片描述

监控exporter

Prometheus为了支持各种中间件以及第三方的监控提供了exporter,大家可以把它理解成监控适配器,将不同指标类型和格式的数据统一转化为Prometheus能够识别的指标类型。

例如Node exporter主要通过读取Linux的/proc以及/sys目录下的系统文件获取操作系统运行状态,reids exporter通过Reids命令行获取指标,mysql exporter通过读取数据库监控表获取MySQL的性能数据。他们将这些异构的数据转化为标准的Prometheus格式,并提供HTTP查询接口。

https://blog.csdn.net/qq_31725371/article/details/114697770

安装

普罗米修斯下载网址
安装到服务器上官网提供的是二进制版,解压就能用,不需要编译。选择Linux版本

在这里插入图片描述

#下载完解压
tar xvfz prometheus-*.tar.gz
cd prometheus-*

prometheus.yml 配置解释

# my global config  控制着全局配置
global:
  # 默认情况下,每15s拉取一次目标采样点数据。
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  # 每15秒评估一次规则。默认值为每1分钟。
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration  报警管理配置
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.规则配置文件位置
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
# 控制着普罗米修斯监控的资源,他也会监控自己
scrape_configs:
  # job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上
  # 每添加一个exprter就添加一个job
  - job_name: 'prometheus'

    # 覆盖global的采样点,拉取时间间隔5s
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:9090']


启动服务

# 启动服务
[/usr/local/prometheus]# ./prometheus --config.file=prometheus.yml


# 指定配置文件
--config.file="prometheus.yml"
# 默认指定监听地址端口,可修改端口
--web.listen-address="0.0.0.0:9090" 
# 最大连接数
--web.max-connections=512
# tsdb数据存储的目录,默认当前data/
--storage.tsdb.path="data/"
# premetheus 存储数据的时间,默认保存15天
--storage.tsdb.retention=15d 
# 通过命令热加载无需重启 curl -XPOST 192.168.2.45:9090/-/reload
--web.enable-lifecycle
# 可以启用 TLS 或 身份验证 的配置文件的路径
--web.config.file=""


启动选项了解:./prometheus --help

访问服务

http://localhost:9090

查看监控的属性

http://localhost:9090/metrics

以图的方式查看监控的属性
查询指令:promhttp_metric_handler_requests_total
在这里插入图片描述

在这里插入图片描述

客户端安装node_exporter监控适配器

Node exporter主要通过读取Linux的/proc以及/sys目录下的系统文件获取操作系统运行状态。

  • 下载网址 选择Linux版本

在这里插入图片描述

  • 安装
# tar xf node_exporter-1.1.2.linux-amd64.tar.gz -C /usr/local/
# mv node_exporter-1.1.2.linux-amd64/ node_exporter
  • 开启服务
# 直接启动
[root@VM_2-44 /usr/local/node_exporter]# ./node_exporter &
# & 表示开启后运行在后台
# 启动后会监听9100端口


# 添加为服务方式启动
# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target 

[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 启动node_exporter
systemctl daemon-reload
systemctl start node_exporter

  • 添加配置项-服务端配置文件添加监控项 即:prometheus.yml

在scrape_configs:区域添加如下配置

  - job_name: 'linux'
    static_configs:
    - targets: ['ip:9100','192.168.1.2:9100'] # 多个用,分开
  • 重启普罗米修斯
./prometheus --config.file=prometheus.yml
或者 systemctl restart prometheus.service

打开普罗米修斯自带的监控页面,Status -> Targets 查看:
在这里插入图片描述

客户端安装mysql_exporter监控适配器

下载位置同上

需要添加配置文件 详情见GitHub网站

(base) wuliuqi@wuliuqi:~/Documents/mysqld_exporter$ vim .my.cnf
(base) wuliuqi@wuliuqi:~/Documents/mysqld_exporter$ cat .my.cnf 
[client]
user=root
password=123456789
  • 启动mysqld-exporte
# 直接启动
(base) wuliuqi@wuliuqi:~/Documents/mysqld_exporter$ ./mysqld_exporter --config.my-cnf=".my.cnf" 
(base) wuliuqi@wuliuqi:~/Documents$ ss -lntp |grep 4647
(base) wuliuqi@wuliuqi:~/Documents$ ps -ef |grep exporter
wuliuqi     8809    8679  0 19:15 pts/2    00:00:07 ./node_exporter
wuliuqi    11328   11228  0 20:16 pts/4    00:00:00 ./mysqld_exporter --config.my-cnf=.my.cnf
wuliuqi    11401   11092  0 20:16 pts/3    00:00:00 grep --color=auto exporter
(base) wuliuqi@wuliuqi:~/Documents$ ss -lntp |grep 11328
LISTEN    0         4096                     *:9104                   *:*        users:(("mysqld_exporter",pid=11328,fd=3)) 
#	启动会监控 9104端口
  • 普罗米修斯配置文件添加监控项后重启
  - job_name: 'mysql'
    static_configs:
    - targets: ['locahost:9104']  
# 此处监控本机 需要可以换成其他主机ip地址
  • 重启普罗米修斯
systemctl restart prometheus.service

在这里插入图片描述

部署 Grafana

参考博客: https://cloud.tencent.com/developer/article/1986945

Ubuntu 系统安装

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_9.4.7_amd64.deb
sudo dpkg -i grafana-enterprise_9.4.7_amd64.deb

登录(账号:admin 密码:admin)http://localhost:3000/
用户名密码都是 admin。登录后,会让我们修改密码,则按提示操作即可,当然也可以点击跳过。

这里就可以看到 Grafana 的主界面了:
在这里插入图片描述

为 Grafana 配置 Prometheus 数据源

  • 选择左下角配置选项
    在这里插入图片描述
  • 添加普罗米修斯数据源
    在这里插入图片描述
  • 增加 Prometheus 的 URL 即可:

在这里插入图片描述
点击最下方的 Save & Test,显示“Data source is working”,则表示数据源配置正常:
在这里插入图片描述

Grafana 展示node_exporter监控数据

按照下图的方式进入模板导入界面:
在这里插入图片描述

  • 在 “Import via grafana.com” 下方输入:11074
    点击 Load 会出现如下界面:
    在这里插入图片描述

将 Name 改成你希望定义的名字,在 VictoriaMetrics 位置选择之前创建的 Prometheus 数据源,如下图:

在这里插入图片描述
点击 “Import”,会自动跳转到如下界面:
在这里插入图片描述

到这里,完成了 Grafana 展示 Prometheus 中 Linux 操作系统的监控数据。

Grafana 展示 MySQL 的监控数据

按照下图的方式进入模板导入界面:
在 “Import via grafana.com” 下方输入 7362
或者在 https://grafana.com/grafana/dashboards/7362 页面下载 JSON 模板,然后点击 “Upload JSON file” 导入,然后会显示如下信息(目前还有其他一些模板,比如 https://github.com/percona/grafana-dashboards,有兴趣的可以尝试一下):
在这里插入图片描述
在这里插入图片描述

显示效果如下:
在这里插入图片描述

未完待续

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prometheus普罗米修斯-入门 的相关文章

随机推荐

  • 基于stm32F103HAL库+cubemx+freertos无感无刷电机BLDC控制程序开发

    基于stm32F103HAL库 43 cubemx 43 freertos无感无刷电机BLDC控制程序开发 最近在做一个舵机控制项目 xff0c 控制对象为大功率无感无刷电机 xff0c 网上搜遍了资源 xff0c 貌似这方面的资源真得十分
  • C++思路

    1 统计英文单词 在进行文章重复度检查时 xff0c 经常需要统计一段英文中的单词数量 xff0c 并找出长度最长的单词 设有如下定义 xff1a char str 500 编写程序 xff0c 通过利用cin getline str 50
  • 基于OpenCV构建停车场车位识别项目

    OpenCV是一个基于 xff08 开源 xff09 发行的跨平台计算机视觉库 xff0c 能实现图像处理和计算机视觉方面的很多通用算法 车位识别的图像处理过程如图所示 在python中设置完所有内容后 xff0c 最重要的依赖关系将是Op
  • 学生成绩管理系统-python

    乱写的成绩管理系统 派森 span class token comment 定义学生类型 姓名 学号 科目 span span class token keyword class span span class token class na
  • 11_3、Java集合之迭代器Iterator接口

    一 引入 Iterator对象称为迭代器 设计模式的一种 xff0c 主要用于遍历 Collection 集合中的元素 GOF给迭代器模式的定义为 xff1a 提供一种方法访问一个容器 container 对象中各个元 素 xff0c 而又
  • 进程切换和进程调度的区别

    进程切换和进程调度的区别 调度是决定将系统资源分配给哪个进程 xff0c 进程切换是实际分配系统资源 另外需要注意进程切换一定会产生中断 xff0c 进行处理器模式切换 xff0c 即从用户态进入内核态 xff0c 之后又回到用户态 xff
  • 树莓派3b+安装ubuntu server,安装mysql

    1 下载镜像 http cdimage ubuntu com ubuntu releases 18 04 5 release ubuntu 18 04 5 preinstalled server arm64 43 raspi3 img xz
  • 【GVINS初体验】

    在Ubuntu18 04下跑通GVINS GVINS介绍 环境配置 1 C 11编译器 2 ROS 3 Eigen 4 Ceres 5 gnss comm Build GVINS 跑VINS啦 GVINS介绍 GVINS是一个基于非线性优化
  • 【OpenCV】基于Adaboost和Haar-like特征人脸识别

    毕设算是告一段落 xff0c 里面用了一点点人脸识别 xff0c 其实完全是OpenCV自带的 xff0c 源自两篇论文 xff1a P Viola and M Jones Rapid object detection using a bo
  • Jetson Tx2上跑MYNT_EYE的ORB SLAM示例

    愁呀 xff0c 按照官网的说明文档 xff0c 好长时间郁闷在跑不起来 每次都是在加载词袋时报bad malloc 打开MYNT EYE ORB SLAM2 Sample Vocabulary ORBvoc txt词袋看见1082073行
  • 解决ST-LINK无法连接设备(解决不了你顺着网线来打我)

    问题分析 问题描述 在mdk中 xff0c 点击下载按钮提示找不到目标设备 xff0c 无法自动下载程序 原因猜想 单片机只有在停止状态下才可以下载程序 xff1f 猜想验证 如果让单片机处在停止状态 xff0c 是不是就能正常下载了呢 x
  • tensorflow 利用tfrecords文件制作数据集

    TensorFlow之tfrecords文件详细教程 制作数据集思路 xff1a 将训练数据和测试数据生成tfrecords文件 为什么呢 xff1f 这种文件以二进制进行存储 xff0c 只占用一个内存块 对于大数据能够提高cpu效率 代
  • 解决mininet运行报错“ImportError: No module named mininet.log”

    解决mininet运行报错 ImportError No module named mininet log 运行环境 系统Ubuntu 04 安装Mininet 2 3 0d6问题描述 运行miniedit py时报错ImportError
  • C++ 用结构体和类创建单向链表

    一 结构体 include lt iostream gt using namespace std 一个链表要实现的操作有 建立链表 xff0c 遍历链表 xff0c 查找链表 xff0c 插入和删除节点 查找和遍历某种程度上来说是一样的 x
  • 巨星星座paper研究

    巨星星座paper研究 ICM1篇 Exploring the Internet from space with Hypatia Hypatia论文 xff1a 摘要 xff1a Hypatia 提出了一个框架 xff0c 通过结合这些星座
  • Ubuntu20.04中安装ns3网络仿真器

    前言 我的环境 Ubuntu 20 04 xff0c 安装的是ns3 3 33 1 安装前的准备工作 建议先了解一下ns3的文件结构 参考博客 xff1a https blog csdn net sinat 36418396 article
  • ubuntu 20.04配置ssh远程root连接

    ubuntu 20 04配置ssh远程服务 1 开启服务 etc init d ssh start 查看ssh服务状态 sudo service ssh status 正常是active xff08 running xff09 2 修改ss
  • docker 遇到的问题

    docker stop container id 失败 显示 root 64 docker stop onos1 Error response from daemon cannot stop container onos1 permissi
  • docker ubuntu20.04 dockerfile 换源

    dockerfile 换源 FROM ubuntu 20 04 ARG span class token assign left variable DEBIAN FRONTEND span span class token operator
  • Prometheus普罗米修斯-入门

    Promethus 普罗米修斯 xff09 适合k8s和docker的监控系统 功能 能够安装prometheus服务器 能够通过安装node exporter监控远程linux 能够通过安装mysqld exporter监控远程mysql