前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搞定Prometheus普罗米修斯监控系统

搞定Prometheus普罗米修斯监控系统

作者头像
全栈程序员站长
发布2022-09-09 10:26:16
5.7K0
发布2022-09-09 10:26:16
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

目录

学习目录

任务背景

任务分析

一、普罗米修斯概述

二、时间序列数据

三、实验环境准备

1、安装prometheus

2、prometheus界面

3、主机数据展示

4、普罗米修斯默认的监控图像​

四、使用普罗米修斯监控Linux 主机

1、node组件介绍

2、安装node_exporter

3、让普罗米修斯监控可以拉取node 节点信息

五、使用普罗米修斯监控mysqld 服务

1、如何监控其他服务

2、安装mysqld_exporter 组件

3、安装mysql,并启动

4、创建mysql 账号

5、在mysqld_exporter 组件中配置msyql 信息

6、启动mysqld_exporter组件

7、让普罗米修斯监控可以拉取mysqld 节点信息

六、Grafana 可视化工具

1、什么是Grafana

2、安装Grafana

3、登录Grafana

4、添加普罗米修斯的数据源

5、为添加好的数据源做图形显示

七、Grafana图形显示MySQL监控数据

1、修改配置文件安装模板

2、在Grafana 中导入json 文件

3、设置数据库源

4、更改数据源名称

八、Grafana + onealert 报警

1、onealert

2、在Grafana中配置Webhook URL


学习目录

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

任务背景

AAA公司是一家电商网站,由于公司的业务快速发展,公司要求对现有机器进行为业务监控,责成运维部门来实施这个项目。

任务要求:

  1. 部署监控服务器,实现7*24实时监控
  2. 针对公司的为一务及研发部门设计监控系统,对监控项和触发器拿出合理意见
  3. 做好问题预警机制,对可能出的问题要及时告警并形成严格的处理机制
  4. 做好监控告警系统,要求可以实现告警分级
    1. 一级报警 电话通知
    2. 二级报警 微信通知
    3. 三级报警 邮件通知
  5. 处理好公司服务器异地集中监控问题,K8S内部使用的监控系统就是普罗米修斯

任务分析

为什么要监控?

实时收集数据,通过报警及时发现问题 ,及时处理。数据为优化也可以提供依据。

监控四要素:

  • 监控对象:【主机状态、服务、资源、页面、url】
  • 用什么监控:【zabbix-server zabbix-agent】 -> 普罗米修斯监控
  • 什么时间监控:【7 x 24、5×8】
  • 报警给谁:【管理员】

项目选型:

  • mrtg(Multi Router Traffic Grapher)通过snmp 协议得到设备的流量信息,并以包含PNG格式的图形的HTML文档方式显示给用户。
  • cacti(仙人掌)用php语言实现的一个软件,它的主要功能是用snmp 服务获取数据,然后用rrdtool 存储和更新数据。官网地址:https://www.cacti.net/
  • ntop 官网地址:https://www.stopo.org/
  • nagios 能够跨平台,插件多,报警功能强大。官网地址: https://www.nagios.org/
  • centreon 底层使用的就是nagios。是一个nagios整合版软件。官网地址:https://www.centreon.com/
  • ganglia 设计用于测量数以千计的节点,资源消耗非常小。官网地址:http://ganglia.info/
  • open-falcon 小米发布的运维监控软件,高效率,高可用。时间较短,用户基数小。官网地址: http://open-falcon.org/
  • zabbix 跨平台,画图,多条件告警,多种API接口。使用基数特别大。官网地址: https://www.zabbix.com/
  • prometheus 基于时间序列的数值数据的容器监控解决方案。官网地址: https://prometheus.io/

综合分析:Prometheus比较适合公司的监控需求


一、普罗米修斯概述

Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。https://prometheus.io/docs/introduction/overview/

二、时间序列数据

1、什么是序列数据 时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。应用的场景很多, 如:

  • 无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距
  • 离等等。每时每刻都要将数据记录下来做分析。
  • 某一个地区的各车辆的行驶轨迹数据
  • 传统证券行业实时交易数据
  • 实时运维监控数据等

2、时间序列数据特点

  • 性能好

关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理大规模数据,让依然比不上时间序列数据库。

  • 存储成本低

高效的压缩算法,节省存储空间,有效降低IO,Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(来自官方数据)

3、Prometheus的主要特征

  • 多维度数据模型
  • 灵活的查询语言
  • 不依赖分布式存储,单个服务器节点是自主的
  • 以HTTP方式,通过pull模型拉去时间序列数据
  • 也可以通过中间网关支持push模型
  • 通过服务发现或者静态配置,来发现目标服务对象
  • 支持多种多样的图表和界面展示

4、普罗米修斯原理架构图


三、实验环境准备

序号

服务器IP

角色

1

node-01 (172.20.10.7)

被监控服务器

2

node-02 (172.20.10.8)

Prometheus 服务器

3

node-03 (172.20.10.9)

grafana 服务器

1. 静态ip(要求能上外网)【三台服务器都要操作】 2. 主机名【三台服务器都要操作】: vi /etc/hosts

代码语言:javascript
复制
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

## BigData CDH 5.x
172.20.10.7 node-01.bigdata.com node-01
172.20.10.8 node-02.bigdata.com node-02
172.20.10.9 node-03.bigdata.com node-03

3. 时间同步(时间同步一定要确认一下)【三台服务器都要操作】

代码语言:javascript
复制
# crontab -e
# .------------------------------------------minute(0~59)
# | .----------------------------------------hours(0~23)
# | | .--------------------------------------day of month(1~31)
# | | | .------------------------------------month(1~12)
# | | | | .----------------------------------day of week(0~6)
# | | | | | .--------------------------------command
# | | | | | |
# | | | | | |
*/1 * * * * /usr/sbin/ntpdate cn.pool.ntp.org

4. 关闭防火墙

代码语言:javascript
复制
systemctl stop firewalld       (当前开机状态生效)
systemctl disable firewalld    (永久生效,重启才生效)
systemctl status firewalld 

5. SELINUX关闭

代码语言:javascript
复制
setenforce 0   (当前开机状态生效)
vi /etc/selinux/config (SELINUX=disabled)   (永久生效,重启生效)

1、安装prometheus

https://prometheus.io/download/ 下载相应版本,安装到服务器上官网提供的是二进制版,解压就能用,不需要编译

第一步:上传软件prometheus-2.5.0.linux-amd64.tar.gz 到Linux服务器目录下:/home/tools

第二步:解压软件:tar -zxvf /home/tools/prometheus-2.5.0.linux-amd64.tar.gz -C /usr/local/

第三步:创建prometheus软链接:ln -s /usr/local/prometheus-2.5.0.linux-amd64 /usr/local/prometheus

第四步:启动普罗米修斯软件

代码语言:javascript
复制
直接使用默认配置文件启动
[root@server ~]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

注: &连接符代表后台运行,不占用终端窗口

第五步:测试端口占用情况(判断是否真正的启动了)

如果没有安装的话:yum install lsof [root@server ~]# lsof -i:9090 或 ss -naltp | grep 9090

ss -naltp | grep 9090

2、prometheus界面

通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090

默认只监控了本机一台,点Status –》点Targets –》可以看到只监控了本机


3、主机数据展示

通过http://服务器IP:9090/metrics可以查看到监控的数据

在web主界面可以通过关键字查询监控项

4、普罗米修斯默认的监控图像


四、使用普罗米修斯监控Linux 主机

1、node组件介绍

在远程linux 主机(被监控端agent)上安装node_exporter组件(这样普罗米修斯就可以接收到其收集系统)。

下载地址:https://prometheus.io/download/

2、安装node_exporter

第一步:上传软件包到Linux 服务器中(Agent 被监控端)node-01服务器中:node_exporter-0.16.0.linux-amd64.tar.gz

第二步:解压安装node_exporter 组件

代码语言:javascript
复制
tar -zxvf /home/tools/node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/

ln -s /usr/local/node_exporter-0.16.0.linux-amd64 /usr/local/node_exporter

第三步:启动node_exporter组件

代码语言:javascript
复制
里面就一个启动命令node_exporter,可以直接使用此命令启动
ls /usr/local/node_exporter/
LICENSE node_exporter NOTICE

启动指令,&代表后台运行,nohup代表永久运行
nohup /usr/local/node_exporter/node_exporter &

扩展: nohup命令: 如果把启动node_exporter的终端给关闭,那么进程也会随之关闭。nohup命令会帮你解决这个问题。

第四步:查看9100 端口占用情况

代码语言:javascript
复制
ss -naltp | grep 9100

第五步:使用http 协议 + 9100 端口收集Linux 主机信息

通过浏览器访问 http://被监控端IP:9100/metrics 就可以查看到node_exporte在被监控端收集的监控信息。即:http://node-01:9100/metrics


3、让普罗米修斯监控可以拉取node 节点信息

回到prometheus服务器的配置文件里添加被监控机器的配置段

在主配置文件最后加上下面三行

vi /usr/local/prometheus/prometheus.yml

具体配置如下:文件的最后添加内容

代码语言:javascript
复制
  - job_name: 'node-01_agent1' # 取一个job名称来代 表被监控的机器
    static_configs:
    - targets: ['172.20.10.7:9100'] # 这里改成被监控机器 的IP,后面端口接9100 

设置完成后,保存,然后重新启动Prometheus 普罗米修斯监控系统

代码语言:javascript
复制
改完配置文件后,重启服务 
[root@node-02 prometheus]# pkill prometheus 
[root@node-02 prometheus]# lsof -i:9090 

# 确认端口没有进程占 用
[root@node-02 prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

[root@node-02 prometheus]# lsof -i:9090    # 确认端口被占用,说明重启成功
或
[root@node-02 prometheus]# ss -naltp | grep 9090

回到web 管理界面 –》点Status –》 点Targets –》可以看到多了一台监控目标

通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090


五、使用普罗米修斯监控mysqld 服务

1、如何监控其他服务

在node_exporter 的基础上,可以根据自己的需要收集其他信息

2、安装mysqld_exporter 组件

下载地址:https://prometheus.io/download/

第一步:上传组件到Linux 服务器

第二步:解压与安装mysqld组件

代码语言:javascript
复制
tar -zxvf /home/tools/mysqld_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/

ln -s /usr/local/mysqld_exporter-0.11.0.linux-amd64 /usr/local/mysqld_exporter

[root@node-01 local]# ls /usr/local/mysqld_exporter
LICENSE  mysqld_exporter  NOTICE

3、安装mysql,并启动

安装过程。这里不要误解哈,因为之前node-01节点上已经安装了社区版本的mysql服务,所以想直接使用。但发现还不是很满意,所以又在node-03上安装了mariadb

代码语言:javascript
复制
安装mariadb数据库,并授权
[root@node-03 ~]# yum install mariadb\* -y
[root@node-03 ~]# systemctl restart mariadb
[root@node-03 ~]# systemctl enable mariadb
[root@node-03 ~]# mysql

这个过程比较简单【跳过】:ss -naltp | grep 3306

4、创建mysql 账号

代码语言:javascript
复制
mysql -u root -p aa_bb_CC1234

grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by 'aa_bb_CC1234';
flush privileges;
quit

5、在mysqld_exporter 组件中配置msyql 信息

这个文件是手工创建

代码语言:javascript
复制
创建一个mysql 配置文件,写上连接的用户名与密码(和上面的授权的用户名
和密码要对应)
[root@node-01 mysqld_exporter]# vi /usr/local/mysqld_exporter/.my.cnf
[client]
user=mysql_monitor
password=aa_bb_CC1234

6、启动mysqld_exporter组件

代码语言:javascript
复制
启动mysqld_exporter
[root@node-01 ~]# nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &


确认端口(9104)
[root@node-01 ~]# ss -naltp | grep 9104

7、让普罗米修斯监控可以拉取mysqld 节点信息

回到prometheus服务器的配置文件里添加被监控机器的配置段

在主配置文件最后加上下面三行

vi /usr/local/prometheus/prometheus.yml

具体配置如下:文件的最后添加内容

代码语言:javascript
复制
  - job_name: 'mysql_agent' # 取一个job名称来代 表被监控的机器
    static_configs:
    - targets: ['172.20.10.7:9104'] # 这里改成被监控机器 的IP,后面端口接9100 

设置完成后,保存,然后重新启动Prometheus 普罗米修斯监控系统

代码语言:javascript
复制
改完配置文件后,重启服务 
[root@node-02 prometheus]# pkill prometheus 
[root@node-02 prometheus]# lsof -i:9090 

# 确认端口没有进程占 用
[root@node-02 prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &

[root@node-02 prometheus]# lsof -i:9090    # 确认端口被占用,说明重启成功
或
[root@node-02 prometheus]# ss -naltp | grep 9090

回到web 管理界面 –》点Status –》 点Targets –》可以看到多了一台监控目标

通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090


六、Grafana 可视化工具

1、什么是Grafana

Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。

网址: https://grafana.com/

它是开源的时序数据分析平台 目前支持52种数据源,其中promethus 就是其中支持的一种

2、安装Grafana

下载地址:https://grafana.com/grafana/download

代码语言:javascript
复制
我这里选择的rpm包,下载后直接rpm -ivh安装就OK
[root@node-03 ~]# rpm -ivh /home/tools/grafana-5.3.4-1.x86_64.rpm

或
yum install grafana-5.3.4-1.x86_64.rpm -y

启动服务
[root@node-03 ~]# systemctl start grafana-server
设置开机自启动
[root@node-03 ~]# systemctl enable grafana-server

确认端口(3000)
[root@node-03 ~]# ss -naltp | grep 3000

3、登录Grafana

http://node-03:3000/login

默认的账号与密码:admin。首次登录后,需要对admin的密码进行更改,如:123456

4、添加普罗米修斯的数据源

第一步:添加数据源

第二步:设置数据源、数据源名称、类型、IP地址、端口号…

5、为添加好的数据源做图形显示

第一步:点击加号,选择Dashboard

第二步:增加一个图形

第三步:选择需要呈现图形的数据(小三角 =》Edit 编辑)

第四步:选择DataSource 数据源,选择普罗米修斯

第五步:可以把我们设计完的图形保存起来

扩展,第六步:根据条件帅选我们想要的数据


七、Grafana图形显示MySQL监控数据

1、修改配置文件安装模板

在grafana上修改配置文件,并下载安装mysql监控的dashboard(包含相关json文件,这些json文件可以看作是开发人员开发的一个监控模板)

参考网址: https://github.com/percona/grafana-dashboards

代码语言:javascript
复制
在grafana配置文件里最后加上以下三行
[root@node-03 ~]# vi /etc/grafana/grafana.ini
[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards


[root@node-03 ~]# cd /var/lib/grafana/
[root@node-03 grafana]# git clone https://github.com/percona/grafana-dashboards.git
[root@grafana grafana]# cp -r grafanadashboards/dashboards/ /var/lib/grafana/

如果网速过慢,可以先通过windows下载好再上传至服务器
mkdir /var/lib/grafana/dashboards
然后下载好的dashboars目录下的.json文件全部上传至 /var/lib/grafana/dashboards

重启grafana服务
[root@node-03 grafana]# systemctl restart grafana-server

2、在Grafana 中导入json 文件

选择上传MySQL_Overview.json,设置完成后,单点Import

3、设置数据库源

点import导入后,报prometheus数据源找不到,因为这些json文件里默认要找的就是叫Prometheus的数据源,但我们前面建立的数据源却是叫 prometheus_data(坑啊

4、更改数据源名称

那么请自行把原来的prometheus_data源改名为Prometheus即可(注意:第一个字母P是大写)。然后再回去刷新,就有数据了(如下图所示)


八、Grafana + onealert 报警

1、onealert

https://caweb.aiops.com/#/integrate,需要先在这个系统中进行注册一个账号。然后登录。

2、在Grafana中配置Webhook URL

第一步:在Grafana中创建Notification channel,选择类型为Webhook;

第三步:将配置的Webhook Notification Channel添加到Grafana Alert中

设置告警内容:发送给运维负责人

CPU负载测试

代码语言:javascript
复制
cat /dev/urandom | md5sum

测试告警情况:

测试结果:

告警后,邮箱收到报警邮件

如果告警消除后,也会收到一封告警消除的邮件。

同时,使用手机扫描二维码,也可以详细了解告警信息。


文章最后,给大家推荐一些受欢迎的技术博客链接

  1. JAVA相关的深度技术博客链接
  2. Flink 相关技术博客链接
  3. Spark 核心技术链接
  4. 设计模式 —— 深度技术博客链接
  5. 机器学习 —— 深度技术博客链接
  6. Hadoop相关技术博客链接
  7. 超全干货–Flink思维导图,花了3周左右编写、校对
  8. 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
  9. 请谈谈你对volatile的理解?–最近小李子与面试官的一场“硬核较量”
  10. 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂
  11. 深入聊聊Java 垃圾回收机制【附原理图及调优方法】

欢迎扫描下方的二维码或 搜索 公众号“大数据高级架构师”,我们会有更多、且及时的资料推送给您,欢迎多多交流!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161736.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 学习目录
  • 任务背景
  • 任务分析
  • 一、普罗米修斯概述
  • 二、时间序列数据
  • 三、实验环境准备
    • 1、安装prometheus
      • 2、prometheus界面
        • 3、主机数据展示
          • 4、普罗米修斯默认的监控图像
          • 四、使用普罗米修斯监控Linux 主机
            • 1、node组件介绍
              • 2、安装node_exporter
                • 3、让普罗米修斯监控可以拉取node 节点信息
                • 五、使用普罗米修斯监控mysqld 服务
                  • 1、如何监控其他服务
                    • 2、安装mysqld_exporter 组件
                      • 3、安装mysql,并启动
                        • 4、创建mysql 账号
                          • 5、在mysqld_exporter 组件中配置msyql 信息
                            • 6、启动mysqld_exporter组件
                              • 7、让普罗米修斯监控可以拉取mysqld 节点信息
                              • 六、Grafana 可视化工具
                                • 1、什么是Grafana
                                  • 2、安装Grafana
                                    • 3、登录Grafana
                                      • 4、添加普罗米修斯的数据源
                                        • 5、为添加好的数据源做图形显示
                                        • 七、Grafana图形显示MySQL监控数据
                                          • 1、修改配置文件安装模板
                                            • 2、在Grafana 中导入json 文件
                                              • 3、设置数据库源
                                                • 4、更改数据源名称
                                                • 八、Grafana + onealert 报警
                                                  • 1、onealert
                                                    • 2、在Grafana中配置Webhook URL
                                                    相关产品与服务
                                                    云数据库 SQL Server
                                                    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                                                    领券
                                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档