阶段五:Prometheus+Grafana监控系统基础(K8s)

Prometheus监控系统

Prometheus简介

Prometheus是一套开源的系统监控报警框架,作为新一代的云原生监控系统,Prometheus既可以实现以主机为中心的监控,也可以完成以服务为导向的动态架构监控。在微服务的世界,它支持多维度的数据集合,查询功能非常强大。

Pometheus的优势:

与zabbix相比,使用场景区别:

Prometheus 的组件与架构

image

Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及提供查询。

主要是用来接收由Client push过来的指标数据,在指定的时间间隔,由Prometheus Server来抓取。

管理告警,主要是负责实现监控报警功能。在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。

时间序列数据库

image
  <--------------- metric ---------------------><-timestamp -><-value->
  http_request_total{status="200", method="GET"}@1434417560938 => 94345
  http_request_total{status="200", method="GET"}@1434417561287 => 94355
  
  http_request_total{status="404", method="GET"}@1434417560938 => 38473
  http_request_total{status="404", method="GET"}@1434417561287 => 38544
  
  http_request_total{status="200", method="POST"}@1434417560938 => 4748
  http_request_total{status="200", method="POST"}@1434417561287 => 4785

指标(metric)的定义:

     <metric name>{<label name>=<label value>, ...}  #指标的名称(metric name)可以反映被监控样本的含义(比如,http_request_total - 表示当前系统接收到的HTTP请求总量);标签(label)反映了当前样本的特征维度,通过这些维度Prometheus可以对样本数据进行过滤,聚合等

样本数据(value):

# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 3.0703125

时序数据库特点

常用应用场景

Prometheus环境搭建

实验环境准备

image

a. 所有服务器静态ip(要求能上外网)

b. 所有服务器各配置主机名并绑定

各自配置好主机名

# node1(中心服务器)
hostnamectl set-hostname --static server

# node2(可视化)
hostnamectl set-hostname --static grafana

# node3(被监控服务器)
hostnamectl set-hostname --static agent1

三台都互相绑定IP与主机名

# vim /etc/hosts
192.168.88.107 server
192.168.88.108 grafana
192.168.88.109 agent

命令作用:

执行结果:

关键参数:

注意事项:

SELINUX=disabled

关键参数:

注意事项:

注意事项:

image

说明:其它都不变,只添加了最后3行配置,注意YAML格式要求。

2:global: 8:alerting: 12: 15:rule_files: 19: 21:scrape_configs:


注意事项:

YAML比传统配置文件更加严格,不能使用Tab键进行缩进。

尽量保持同级内容,缩进相同,缩进只能通过Space空格实现,

在YAML文件中,

-代表列表,其后面必须保留一个空格,

:右边也必须保留一个空格。否则语法都会报错。

注意事项:

image

Prometheus监控自身9090端口,主要监控以下指标:

小结:

Prometheus默认只采集Prometheus本身,但是我们可以借助于(xxx_exporter)组件采集各种系统、应用层面的信息。

如果官网没有对应的采集组件,可以到(github)去获取

练习:

前面实现了prometheus监控本机9090,但是还有很多metrics无法监控,比如cpu负载信息等。

这个时候我们在prometheus服务器上也安装node_exporter,并监控。请自行实现。

最终配置文件如下:

2:global: 8:alerting: 12: 15:rule_files: 19: 21:scrape_configs:



作用:能通过mysqld_exporter实现应用数据库监控。(既可以监控MariaDB,还可以监控MySQL5\~MySQL8)


在agent1上安装mariadb并启动,用于被监控

注意事项:

MariaDB配置:

'mysql_monitor'@'%':任意主机均可通过mysql_monitor访问MariaDB 'mysql_monitor'@'localhost':只有在当前主机上才可以通过mysql_monitor访问MariaDB


MySQL8配置:

注意事项:

2:global: 8:alerting: 12: 15:rule_files: 19: 21:scrape_configs:

注意事项:

image
image

小结:

基于(mysqld_exporter)组件实现了mysqld(mariadb-server)数据库监控

因为数据库通常需要账号和密码访问,首先建立监控之前,我们必须先创建授权账号,允许exporter组件采集MySQL信息

作用:把Prometheus采集到的系统信息、应用信息(MySQL)通过图形化方式进行数据呈现。

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

image

在grafana服务器上安装grafana

image

第一步:拷贝软件包到grafana服务器上安装


**注意事项:**

注意事项:

把prometheus服务器收集的数据做为数据源添加到grafana,让grafana可以得到prometheus的数据。

image
image
image
image
image

小结:

把Prometheus作为Grafana数据源。

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

image
image
image
image
image
image

模板另存为

image

以上设置完成后,我们还可以通过stress-ng压测工具对平台负载进行测试


**注意事项:**



根据上面的思路,我们可以将**mysql_global_status_threads_connected**这个metrics加到dashboard实现对MySQL数据库的当前连接数的监控。

![](/assets/feishu-images/7398b6f99c4b7bed1d122719.png)


答案是有的,需要开发人员开发出相应的json格式的模板,然后导入进去就可以了。那么问题来了,谁开发?

有这么几种途径:



c.寻找别人开发好的开源项目

> 

**第一种方案:**下载grafana-dashboards开源项目

注意事项:

image

#解压


**注意事项:**



https://www.aiops.com/

![](/assets/feishu-images/0f1b4b0ca546a79eccbb1bc4.png)

![](/assets/feishu-images/1ff09ad105aed68ccc91320f.png)

![](/assets/feishu-images/1b167329276d29ab6bb73501.png)


route:
receivers:
    webhook_configs:
inhibit_rules:
    target_match:

 #启动服务

注意事项:

groups: rules: labels: annotations: labels: annotations:


**注意事项:**



global:

alerting:
  alertmanagers:

rule_files:

scrape_configs:


    static_configs:
        labels:
    static_configs:

#停掉服务并重启

注意事项:

配置完成后,在agent1节点进行压力测试

#安装压测工具 #进行压测


**注意事项:**




![](/assets/feishu-images/bb11819534cdcede97121d5b.png)

![](/assets/feishu-images/55dd2cbd11eb602c5965bf2d.png)




https://www.cnblogs.com/chanshuyi/p/04_quick_start_of_promql.html

https://prometheus.dbaup.com/promql/


Kimi:https://kimi.moonshot.cn/

DeepSeek:[www.deepseek.com/](http://www.baidu.com/link?url=p7oVz_nFgPBGtD5ai7aZqXNQbMS2fVBB1ax5pMqHHs00PGHXkOmhgSXJNwRGFrEC)

通义千问:https://tongyi.aliyun.com/

第一步:首先找到Prometheus采集到的指标信息

![](/assets/feishu-images/21017ecde3c70c015014d75b.png)

第二步:复制对应的指标信息,如下获取系统相关指标

![](/assets/feishu-images/bbc55d359329f4e6eff64df5.png)

第三步:把以上指标信息拷贝到大模型中,提出需求,结果以PromQL进行展示

![](/assets/feishu-images/ff9fd4ff1ac41113ae975d1f.png)

第四步:把生成的PromQL粘贴到Prometheus或者Grafana进行验证

![](/assets/feishu-images/446359f21fa8f624ceaaa0b1.png)


本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。