1.1.1 Prometheus 概述
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由
SoundCloud 公司开发的。现在最常见的 Docker、Mesos、Kubernetes 容器管理系统中,通常会搭配
Prometheus 进行监控。
Prometheus 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,这样做的好处是任意组件只
要提供 HTTP 接口就可以接入监控系统,不需要任何 SDK 或者其他的集成过程。这样做非常适合虚拟化
环境比如 VM 或者 Docker 。
输出被监控组件信息的 HTTP 接口被叫做 exporter。目前互联网公司常用的组件大部分都有
exporter 可以直接使用,比如 Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、
内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。
1.12 Prometheus的特点
多维度数据模型。
灵活的查询语言。
不依赖分布式存储,单个服务器节点是自主的。
通过基于HTTP的pull方式采集时序数据。
可以通过中间网关进行时序列数据推送。
通过服务发现或者静态配置来发现目标服务对象。
支持多种多样的图表和界面展示,比如Grafana等。
官网地址:https://prometheus.io/

1.1.3 Prometheus 架构图解
普罗米修斯(Prometheus)及其一些生态系统组件的整体架构:

1.14 Prometheus 各组件运行流程如下:

  1. Prometheus Server:Prometheus Sever 是 Prometheus 组件中的核心部分,负责实现对监
    控数据的获取,存储及查询。Prometheus Server 可以通过静态配置管理监控目标,也可以配合使用
    Service Discovery(服务发现)的方式动态管理监控目标,并从这些监控目标中获取数据。其次
    Prometheus Sever 需要对采集到的数据进行存储,Prometheus Server 本身就是一个实时数据库,将
    采集到的监控数据按照时间序列的方式存储在本地磁盘当中。Prometheus Server 对外提供了自定义的
    PromQL,实现对数据的查询以及分析。另外 Prometheus Server 的集群能力可以使其从其他的
    Prometheus Server 实例中获取数据。

  2. Exporters:Exporter将监控数据采集的端点通过 HTTP 服务的形式暴露给Prometheus Server,
    Prometheus Server 通过访问该 Exporter 提供的 Endpoint 端点,即可以获取到需要采集的监控数据。
    可以将 Exporter 分为 2 类:
    (1)、直接采集:这一类 Exporter 直接内置了对 Prometheus 监控的支持,比如 cAdvisor,
    Kubernetes,Etcd,Gokit 等,都直接内置了用于向 Prometheus 暴露监控数据的端点。
    (2)、间接采集:原有监控目标并不直接支持 Prometheus,因此需要通过 Prometheus 提供的 Client
    Library 编写该监控目标的监控采集程序。例如:Mysql Exporter,JMX Exporter,Consul Exporter
    等。

  3. AlertManager:在 Prometheus Server 中支持基于 Prom QL 创建告警规则,如果满足 Prom
    QL 定义的规则,则会产生一条告警。常见的接收方式有:电子邮件,webhook 等。

  4. PushGateway:Prometheus 数据采集基于 Prometheus Server 从 Exporter pull 数据,因此
    当网络环境不允许 Prometheus Server和 Exporter 进行通信时,可以使用 PushGateway 来进行中转。
    Prometheus 的工作流:
    1.Prometheus server 定期从配置好的 jobs 和 exporters 中拉取 metrics,或者接收来自
    Pushgateway 发送过来的 metrics,或者从其它的 Prometheus server 中拉 metrics。
    2.Prometheus server 在本地存储收集到的 metrics,并运行定义好的 alerts.rules,记录新的时间
    序列或者向 Alert manager 推送警报。
    3.Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
    4.在图形界面中,可规化采集数据。

1.1.15 有了prometheus这个强大的监控开源系统之后,我们所需要投入的工作就是查询api的封装和配置文件的下发。查询api的封装没什么好说的,无非就是前端调用我们自己的server,我们的 server呢通过http协议去调用prometheus的api接口查询到原始数据,然后进行组装,最后返回给前端。 配置文件的话包含三部分吧,警报的定义,alertmanager的配置,以及prometheus的配置,这里也不好展开讲,有兴趣的可以去官网看看,最后给出一张我们的物理结构示意图,供大家参考。
(1) 基本原理
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。
(2) 服务过程
Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。
Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。
Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。
PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。
(3)三大套件
Server 主要负责数据采集和存储,提供PromQL查询语言的支持。
Alertmanager 警告管理器,用来进行报警。
Push Gateway 支持临时性Job主动推送指标的中间网关。

1.2 安装配置 Prometheus 监控服务

1.2.1 安装配置 Prometheus
安装 go 语言环境

  [root@localhost ~] #yum -y install epel-release[root@localhost ~] # yum install go -y [root@localhost ~] #go version

Go(又称 Golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编
程语言。
下载安装 Prometheus(https://prometheus.io/download/)

 [root@localhost ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.7.1/prometheus-2.7.1.linux-amd64.tar.gz[root@localhost ~]# cd /usr/local/prometheus-2.7.1.linux-amd64/

修改 prometheus 配置文件,配置监控 linux 主机和 mysql 数据库,配置文件为 yml 语法,注意缩进对齐

[root@localhost prometheus-2.7.1.linux-amd64]#  vim prometheus.yml #在文档的最后
- job_name: system-status    #每一个 job_name 都是一个监控项,这里代表监控操作系统状态
static_configs:
- targets: ['IP地址:9100']       #被监控主机 IP 地址和端口
labels:
instance: stsyem                     #实例名称,在 grafana 中表示对应的主机
- job_name: mysql-status      #监控 mysql 数据库状态
static_configs:
- targets: ['IP地址:9104']          #被监控主机 IP 地址和端口
labels:
instance: mysql                      #实例名称,在 grafana 中表示对应的主机
[root@localhost prometheus-2.7.1.linux-amd64]# ./prometheus --config.file=prometheus.yml &  #直接后台运行

出现以下信息表示启动成功

[root@localhost prometheus-2.7.1.linux-amd64]# systemctl stop firewalld && systemctl disable firewalld #关闭防火墙
  浏览器输入   http://IP地址:9090

1.3 启劢用于采集 linux 系统和 mysql 服务状态的 exporter 服务

prometheus 常见的 exporter 及作用:
(1)、node_exporter 用于监控操作系统的性能和运行状态
(2)、mysqld_exporter 用于监控 mysql 服务
(3)、snmp_exporter 用于监控网络设备
更多 exporter 可在官网下载:https://prometheus.io/download/#node_exporter
1、配置 node_exporter 监控运行状态

[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld #关闭防火墙
上传node_exporter-0.17.0.linux-amd64.tar.gz 到 linux 上
[root@localhost ~]# tar zxvf /root/node_exporter-0.17.0.linux-amd64.tar.gz -C  /usr/local/
[root@localhost ~]# /usr/local/node_exporter-0.17.0.linux-amd64/node_exporter &

2、配置 mysqld_exporter 用于监控mysql 服务
(1)、安装数据库服务

[root@localhost ~]#  yum install mariadb-server mariadb -y
[root@localhost ~]#   systemctl start mariadb
[root@localhost ~]#  mysql #直接登录 mysqlmysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'mysql_monitor'@'localhost' identified by '123456'MariaDB [(none)]> exit;
[root@localhost ~]#

(2)、安装 mysqld_exporter
上传 mysqld_exporter 到 linux 系统上

[root@localhost ~]#  tar zxvf /root/mysqld_exporter-0.11.0.linux-amd64.tar.gz -C    /usr/local/
[root@localhost ~]#  vim /usr/local/mysqld_exporter-0.11.0.linux-amd64/.my.cnf #创建隐藏文件.my.cnf,写入以下内容:
[client]
user=mysql_monitor
password= 123456
:wq
[root@localhost ~]# /usr/local/mysqld_exporter-0.11.0.linux-amd64/mysqld_exporter  --config.my-cnf="/usr/local/mysqld_exporter-0.11.0.linux-amd64/.my.cnf" &

在 web 界面,再次查看监控信息已经成功添加 linux 和 mysql 节点,已经 up 了
浏觅器输入 http://ip地址:9090
查看网络端口:

[root@localhost ~]#  netstat -antup | grep 91
tcp6       0      0 :::9121                 :::*                    LISTEN      18493/./redis_expor
tcp6       0      0 :::9100                 :::*                    LISTEN      15031/./node_export
tcp6       0      0 :::9104                 :::*                    LISTEN      15053/./mysqld_expo
tcp6       0      0 :::9913                 :::*                    LISTEN      65826/./nginx-vts-e 

总结 prometheus 使用方法:
1、想监控操作系统,只需要一步:
在被监控系统上安装 node_exporter 并启劢,就 ok 了
2、想监控操 mysql 数据库,只需要两步:
(1)、创建一个 mysql 用户
(2)、安装 mysqld_exporter 并启劢

1.4 使用 Grafana 可规化工具美化监控数据显示效果

1.4.1 配置 grafana
1、上传 grafana 到 linux 系统/root/下
[root@localhost ~]# yum install -y ./grafana-5.4.3-1.x86_64.rpm
戒在线下载:
[root@localhost ~]# wget https://dl.grafana.com/oss/release/grafana-5.4.3-1.x86_64.rpm
2、安装图形饼状图插件,斱便显示饼状图
[root@localhost ~]# grafana-cli plugins install grafana-piechart-panel
[root@localhost ~]# service grafana-server restart #安装完插件,需要重启服务
3、访问:http://IP地址:3000/login 用户名:admin 密码 admin
第一次登陆会提示修改密码,咱们改成 123456

用户名:admin 密码:123456

配置数据源


感兴趣的伙伴自行百度吧,实在是懒得截图了,就到这里吧!!!!
谢谢
写的不好的地方请大佬指教!!

这是我最终的仪表盘

搭建 Prometheus+Grafana 的云平台监控系统相关推荐

  1. 搭建Prometheus+Grafana的云平台监控系统

    1.1 Prometheus和Grafana概述 1.1.1 Prometheus概述 Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由Soun ...

  2. 提高电力物联网云平台监控系统应用能力的实践研究

    摘要: 新时期,随着物联网云平台技术的不断发展,进一步为电力企业发展提供了有效的技术助力.在电力系统中,有效引入物联网云平台技术,有利于提高监控系统建设水平.因此,在进行实践研究过程中,要有效提高对于 ...

  3. 季冠CPM云平台监控系统——自动化链路的性能检测工具

    网络监测 自动化 智能化 在互联网高度发展的今天,我们每一个人都有过被网络支配的恐惧,除了手机没电,最害怕的就是网络卡顿和网络延迟. 尤其是对于线下实体门店.互联网公司.工厂及酒店等多分支网点企业来说 ...

  4. 浅析电力物联网云平台监控系统分析

    安科瑞王丹丹acrel2021 摘要:新时期,随着物联网云平台技术的不断发展,进一步为电力企业发展提供了有效的技术助力.在电力系统中,有效引入物联网云平台技术,有利于提高监控系统建设水平.因此,在进行 ...

  5. 使用Prometheus+grafana打造高逼格监控平台

    前言: 笔者看来, 监控不应该只是监控,除了及时有效的报警,更应该"好看",因为视觉上的感受更能给我们直观的感受,更能从绚丽的走势中发现异常, 如果你觉得监控就应该像老牌监控nag ...

  6. linux 轮巡监控进程,一种基于云平台的系统监控方法专利_专利申请于2015-01-06_专利查询 - 天眼查...

    1. 一种基于云平台的系统监控方法,其特征在于含有以下步骤: 步骤1.数据信息采集步骤: 对被管资源的数据采集支持"自动发现"和手工输入两种方式配置被监测对象的配置 参数,并通过主 ...

  7. (四) prometheus + grafana + alertmanager 配置Kafka监控

    安装请看https://blog.51cto.com/liuqs/2027365 ,最好是对应的版本组件,否则可能会有差别. (一)prometheus + grafana + alertmanage ...

  8. 0基础搭建Prometheus+Grafana监控服务器CPU、磁盘、内存等信息

    这里写自定义目录标题 0基础搭建Prometheus+Grafana监控服务器CPU.磁盘.内存等信息 1.实验环境准备 2.基础环境配置 3.部署prometheus 4.部署Grafana可视化图 ...

  9. 云平台设计系统,助力业务快速开发

    用友进入3.0阶段,敏捷开发.逆向开发.双披萨饼原则快速作战,"用户之友"价值回归,这些都为快速原型.高保真验证.快速开发.体验一致提出了更高的要求.也带来了更大的压力. 新的变化 ...

  10. 基于 HTML5 的工业互联网云平台监控机房 U 位

    前言 机柜 U 位管理是一项突破性创新技术--继承了 RFID 标签(电子标签)的优点的同时,完全解决了 RFID 技术(非接触式的自动识别技术)在机房 U 位资产监控场应用景中的四大缺陷,采用工业互 ...

最新文章

  1. DOM之城市二级联动
  2. SQL优化—— 优化order by语句 || Filesort 的优化
  3. 红帽杯——childRE
  4. 定义跳转插件_虚幻插件Review:Logic Driver Pro 终极状态机插件
  5. mysql 主从 cap_Mysql 主从同步 slave_sql_running 为no
  6. 创新将会出现在云端,边缘还是其他地方?
  7. python函数的作用域_python函数的作用域和引用范围
  8. Feather包实现数据框快速读写,你值得拥有
  9. java 端口转发_用Java快速实现端口转发
  10. 扒一扒开源世界有哪些licenses?
  11. 零基础怎么开启编程之路 -(第1期)
  12. 职工档案管理系统报告与c语言,职工档案管理系统c语言
  13. 《深入理解计算机系统》第七章学习笔记
  14. [案例2-3]超市购物小程序
  15. canal使用过程中的报错
  16. 网页游戏的项目设计方案分享
  17. 激光钎焊的主要工艺参数
  18. Microsoft Windows PE
  19. netcat 使用方法
  20. 企业公众号怎么做内容?这四个阶段要做好

热门文章

  1. (转)cpio.gz文件解压方法
  2. 2021 AI年度报告-stateof.ai出品【2】
  3. 8.4工作记录-成勘院地图服务
  4. 显卡,显卡驱动,GPU,CUDA,cuDNN
  5. 数字图像其实就是一个矩阵
  6. 期货代码_名称映射表
  7. unicloud前端网页托管配置域名
  8. tripledes java_Java加密算法Triple DES详解
  9. 第五周 学习记录2--瞬间变装
  10. mtk 采用Fuel Gauge电量计可能出现的几种电量现象及解释