搭建Prometheus+Grafana的云平台监控系统
1.1 Prometheus和Grafana概述
1.1.1 Prometheus概述
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。现在最常见的Docker、Mesos、Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。 Prometheus [prəˈmiθju:s] 普罗米修斯
Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。
输出被监控组件信息的HTTP接口被叫做exporter。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。 exporter ([ekˈspɔ:tə®] 出口商)
对比主流的监控工具的操作界面:
nagios监控界面:
zabbix监控界面
Grafana+Prometheus监控界面:
通过上面的界面,我们可以看出来Grafana+Prometheus展示界面更美观
1.1.2 Prometheus 架构图解
普罗米修斯(Prometheus)及其一些生态系统组件的整体架构:
retrieval [rɪˈtriːvl] 数据检索
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。
metrics [ˈmetrɪks] 衡量指标
2.Prometheus server在本地存储收集到的metrics,并运行定义好的alerts.rules,记录新的时间序列或者向Alert manager推送警报。
3.Alertmanager根据配置文件,对接收到的警报进行处理,发出告警。
4.在图形界面中,可视化采集数据。
实验拓扑图:
搭建Prometheus+Grafana的云平台监控系统工作流程:
1、安装exporter(出口)采集数据
2、美化采集到的数据
3、在web界面查看
懂:1不懂:2
1.2 安装配置Prometheus监控服务
1、安装go语言环境
方法1:使用tar包安装go语言环境
上传到go1.13.3.linux-amd64.tar.gz到linux服务器上
或在线下载:
[root@xuegod63 ~]# wget -c https://storage.googleapis.com/golang/go1.13.3.linux-amd64.tar.gz
[root@xuegod63 ~]# tar -zxvf go1.13.3.linux-amd64.tar.gz -C /usr/local
[root@xuegod63 ~]# echo “export PATH=$PATH:/usr/local/go/bin” > /etc/profile.d/go.sh
[root@xuegod63 ~]# source /etc/profile.d/go.sh
[root@xuegod63 ~]# go
方法2:使用yum安装go语言环境
[root@xuegod63 ~]# yum install -y epel-release
[root@xuegod63 ~]# yum install go -y
[root@xuegod63 ~]# go version
扩展:
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
下载安装Prometheus(https://prometheus.io/download/)
[root@xuegod63 ~]#wget https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz
[root@xuegod63 ~]# tar zxvf prometheus-2.27.1.linux-amd64.tar.gz -C /usr/local/
[root@xuegod63 ~]# cd /usr/local/prometheus-2.27.1.linux-amd64/
修改prometheus配置文件,配置监控linux主机和mysql数据库,配置文件为yml语法,注意缩进对齐
[root@xuegod63 prometheus-2.7.1.linux-amd64]# vim prometheus.yml #在文档的最后插入以下内容
- job_name: system-status
static_configs:- targets: [‘192.168.1.64:9100’]
labels:
instance: xuegod64
- targets: [‘192.168.1.64:9100’]
- job_name: mysql-status
static_configs:- targets: [‘192.168.1.64:9104’]
labels:
instance: xuegod64-mysql
插入时,要和文件之前的job_name保持对齐,如下图:
- targets: [‘192.168.1.64:9104’]
注释:
- job_name: system-status #每一个job_name都是一个监控项,这里代表监控操作系统状态
static_configs:- targets: [‘192.168.1.64:9100’] #被监控主机IP地址和端口
labels:
instance: xuegod64 #实例名称,在grafana中表示对应的主机。
- targets: [‘192.168.1.64:9100’] #被监控主机IP地址和端口
- job_name: mysql-status #监控mysql数据库状态
static_configs:- targets: [‘192.168.1.64:9104’] #目标主机IP地址和端口
labels:
instance: xuegod64-mysql #实例名称,在grafana中表示对应的主机。
[root@xuegod63prometheus-2.7.1.linux-amd64]# ./prometheus --config.file=prometheus.yml
- targets: [‘192.168.1.64:9104’] #目标主机IP地址和端口
出现以下信息吧表示启动成功。
或直接后台运行:
[root@xuegod63prometheus-2.7.1.linux-amd64]# nohup ./prometheus --config.file=prometheus.yml &
[root@xuegod63 ~]# systemctl stop firewalld && systemctl disable firewalld #关闭防火墙
浏览器输入http://192.168.1.63:9090
注:因为我们还没有开始配置xuegod64了,所以现在还获取不到xuegod64的信息
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监控xuegod64运行状态
[root@xuegod64 ~]# systemctl stop firewalld && systemctl disable firewalld #关闭防火墙
上传node_exporter-1.1.2.linux-amd64.tar.gz到linux上。
[root@xuegod64 ~]# tar zxvf /root/node_exporter-1.1.2.linux-amd64.tar.gz -C /usr/local/
[root@xuegod64 ~]# nohup /usr/local/node_exporter-1.1.2.linux-amd64/node_exporter &
2、配置mysqld_exporter用于监控xuegod64上的mysql服务
(1)、安装数据库服务
[root@xuegod64 ~]# yum install mariadb-server mariadb -y
[root@xuegod64 ~]# systemctl start mariadb
[root@xuegod64 ~]# mysql #直接登录mysql
mysql> GRANT REPLICATION CLIENT,PROCESS ON . TO ‘mysql_monitor’@‘localhost’ identified by ‘123456’;
mysql> GRANT SELECT ON . TO ‘mysql_monitor’@‘localhost’;
MariaDB [(none)]> exit;
注:mysql 用户权限说明:
(1)、replication client权限 #拥有此权限可以查询master server、slave server状态。
(2)、PROCESS权限 #通过这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程。如:
mysql> show processlist;
另外,管理权限 process不能够指定某个数据库,on后面必须跟*.*
(3)、select权限 #必须有select的权限,才可以使用select * from table 查看数据
(2)、安装mysqld_exporter
上传mysqld_exporter到linux系统上
[root@xuegod64 ~]# tar xf mysqld_exporter-0.13.0-rc.0.linux-amd64.tar.gz -C /usr/local/
创建隐藏配置文件.my.cnf,用于mysqld_exporter连接mysql采集数据。
[root@xuegod64 ~]# vim /usr/local/mysqld_exporter-0.13.0-rc.0.linux-amd64/.my.cnf
[client]
user=mysql_monitor
password= 123456
[root@xuegod64 ~]# nohup /usr/local/mysqld_exporter-0.13.0-rc.0.linux-amd64/mysqld_exporter --config.my-cnf=“/usr/local/mysqld_exporter-0.13.0-rc.0.linux-amd64/.my.cnf” &
在web界面,再次查看监控信息已经成功添加linux 和mysql节点,已经up了
浏览器输入http://192.168.1.63:9090
查看网络端口:
[root@xuegod64 ~]# netstat -antup | grep 91
tcp6 0 0 :::9100 ::
搭建Prometheus+Grafana的云平台监控系统相关推荐
- 提高电力物联网云平台监控系统应用能力的实践研究
摘要: 新时期,随着物联网云平台技术的不断发展,进一步为电力企业发展提供了有效的技术助力.在电力系统中,有效引入物联网云平台技术,有利于提高监控系统建设水平.因此,在进行实践研究过程中,要有效提高对于 ...
- 季冠CPM云平台监控系统——自动化链路的性能检测工具
网络监测 自动化 智能化 在互联网高度发展的今天,我们每一个人都有过被网络支配的恐惧,除了手机没电,最害怕的就是网络卡顿和网络延迟. 尤其是对于线下实体门店.互联网公司.工厂及酒店等多分支网点企业来说 ...
- 浅析电力物联网云平台监控系统分析
安科瑞王丹丹acrel2021 摘要:新时期,随着物联网云平台技术的不断发展,进一步为电力企业发展提供了有效的技术助力.在电力系统中,有效引入物联网云平台技术,有利于提高监控系统建设水平.因此,在进行 ...
- 使用Prometheus+grafana打造高逼格监控平台
前言: 笔者看来, 监控不应该只是监控,除了及时有效的报警,更应该"好看",因为视觉上的感受更能给我们直观的感受,更能从绚丽的走势中发现异常, 如果你觉得监控就应该像老牌监控nag ...
- linux 轮巡监控进程,一种基于云平台的系统监控方法专利_专利申请于2015-01-06_专利查询 - 天眼查...
1. 一种基于云平台的系统监控方法,其特征在于含有以下步骤: 步骤1.数据信息采集步骤: 对被管资源的数据采集支持"自动发现"和手工输入两种方式配置被监测对象的配置 参数,并通过主 ...
- (四) prometheus + grafana + alertmanager 配置Kafka监控
安装请看https://blog.51cto.com/liuqs/2027365 ,最好是对应的版本组件,否则可能会有差别. (一)prometheus + grafana + alertmanage ...
- 0基础搭建Prometheus+Grafana监控服务器CPU、磁盘、内存等信息
这里写自定义目录标题 0基础搭建Prometheus+Grafana监控服务器CPU.磁盘.内存等信息 1.实验环境准备 2.基础环境配置 3.部署prometheus 4.部署Grafana可视化图 ...
- 云平台设计系统,助力业务快速开发
用友进入3.0阶段,敏捷开发.逆向开发.双披萨饼原则快速作战,"用户之友"价值回归,这些都为快速原型.高保真验证.快速开发.体验一致提出了更高的要求.也带来了更大的压力. 新的变化 ...
- 基于 HTML5 的工业互联网云平台监控机房 U 位
前言 机柜 U 位管理是一项突破性创新技术--继承了 RFID 标签(电子标签)的优点的同时,完全解决了 RFID 技术(非接触式的自动识别技术)在机房 U 位资产监控场应用景中的四大缺陷,采用工业互 ...
最新文章
- 半导体二极管的直流电阻和动态电阻如何区别?
- shopex安装Zend Optimizer - 3.3.0后依然乱码
- 正面管教php_佛山市第三中学正面管教家长工作坊PHP分享会
- php递归算法排序,php全排列递归算法代码
- Mysql、navicat、SQL server 的关系
- Alt属性 添加的意义
- java中设置http响应头控制浏览器禁止缓存当前文档内容
- NOIP2016滚粗记
- C++11 auto类型推导
- 医疗物联网行业调研报告 - 市场现状分析与发展前景预测
- ubuntu 服务器 ip修改,修改Ubuntu server ip地址
- MongoDB for MAC 下载及安装
- 腾讯云文档数据库MongoDB怎么样?腾讯云文档数据库MongoDB有什么优点?
- 【翻译】十大要避免的Ext JS开发方法
- 电脑被格式化后数据还能恢复吗【图文】
- 蓝桥杯省赛 砝码称重(B组)
- VIVADO 11.Divider除法器IP
- Redis数据库常用操作命令(查询db、key、value)
- 《第一行代码》封面诞生记
- Openstack中为虚拟机挂载ISO镜像