【Linux】部署Prometheus + Grafana简介、监控及设置告警详细操作(多种方式安装,亲测无问题)

news2024/11/17 11:35:03

🍁博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!

文章目录

  • 一、环境准备
  • 二、部署 Prometheus(普罗米修斯)
    • 1、Prometheus 简介
    • 2、Prometheus 部署
      • 2.1 下载安装包(两种方式)
      • 2.2 解压安装包并放到指定目录
      • 2.3 修改 Prometheus 配置文件
      • 2.4 配置系统启动文件,设置开机自启 (两种方式:推荐第一种)
      • 2.5 页面访问
      • 2.6 服务端安装完成
  • 三、部署 Exporters(普罗米修斯客户端)
    • 1、Exporters 部署
      • 1.1 下载安装包(两种方式)
      • 1.2 解压安装包并放到指定目录
      • 1.3 配置系统启动文件,设置开机自启 (两种方式:推荐第一种)
      • 1.4 页面访问
      • 1.5 客户端安装完成
    • 2、修改Prometheus服务端的配置文件
      • 2.1 添加客户端到服务端(分为添加单个客户端与多个客户端两部分)
        • 2.1.1 添加单个 客户端
        • 2.1.2 添加多个 客户端(两种方式,暂无推荐,根据自己的需求选择)
      • 2.2 重启服务端
      • 2.3 服务端添加客户端完成
    • 3、附加(服务端配置文件)
      • 3.1 监测 Prometheus配置文件是否正确
      • 3.2 监测服务ip添加后缀
    • 4、实例:监控远程MySQL服务
      • 4.1 下载安装包(两种方式)
      • 4.2 解压安装包并放到指定目录
      • 4.3 安装mysql数据库,并授权
      • 4.4 创建一个mysqld_exporter配置文件
      • 4.5 配置系统启动文件,设置开机自启 (两种方式:推荐第二种)
      • 4.6 页面访问
      • 4.7 客户端安装完成
      • 4.8 将 mysql 服务添加到服务端【修改Prometheus服务器的配置文件】
      • 4.9 添加成功!!!
  • 四、部署 Grafana(可视化)
    • 1、Grafana 简介
    • 2、Grafana 部署
      • 2.1 下载安装包
      • 2.2 启动 grafana 并设置开机自启
      • 2.3 页面访问
      • 2.4 配置数据源
      • 2.5 导入模板
      • 2.6 为数据源做自定义数据展示
      • 2.7 导入grafana监控面板
      • 2.8 为已有的监控面板添加自定义监控模块展示
      • 2.9 修改已有的模块数据
    • 3、实例:Grafana 图形显示 MySQL 监控数据
      • 3.1 修改 grafana.ini 配置文件
      • 3.2 克隆 dashboards 到 /var/lib/grafana/
      • 3.3 在grafana图形化界面导入相关的json文件
    • 4、Grafana + onealert 实现服务告警
      • 4.1 在Grafana中配置Webhook URL
        • 4.1.1 填写应用名称,点击保存生成AppKey(上面已经生成)
        • 4.1.2 创建 contact points
        • 4.4 创建 Notification policies
        • 4.5 配置Alert rules

一、环境准备

服务器类型IP地址组件
Prometheus 服务器、agent 服务器、grafana 服务器172.16.11.209Prometheus、node_exporter、Grafana
agent 服务器172.16.11.220node_exporter

如果有防火墙记得开启:9090(Prometheus)、9100(Exporters)、3000(Grafana)

二、部署 Prometheus(普罗米修斯)

1、Prometheus 简介

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),基于Go语言开发,是Google BorgMon监控系统的开源版本。Prometheus在2016年加入了云原生计算基金会,成为继Kubernetes之后的第二个项目。

Prometheus是一个开源的监控系统,它可以帮助用户监控各种不同类型的系统和应用程序。Prometheus采用的是pull模型,即它定期从目标系统中拉取指标数据并存储在本地数据库中。这些指标数据可以用于生成图表、警报和报告,以帮助用户了解他们系统的运作状况和性能表现。

Prometheus通过多种数学算法能实现强大的监控需求,原生支持K8S服务发现,能监控容器的动态变化。并且结合Grafana能绘出漂亮图形,然后使用alertmanager或Grafana实现报警。它与其他监控相比有以下主要优势:

  • 1>数据格式是Key/Value形式,简单、速度快;采用多维数据模型(由指标名称和键/值维集定义的timeseries)

  • 2>timeseries收集是通过HTTP上的拉取(pull mode)模型进行,通过中间网关支持timeseries的推送,通过服务发现或静态配置来发现目标,监控数据的精细程度可达到秒级(数据采集精度高情况下,对磁盘消耗大,存在性能瓶颈,且不支持集群,但可以通过联邦能力进行扩展);,

  • 3>不依赖分布式存储,数据直接保存在本地,单节点是自治的,可独立运行管理,可以不需要额外的数据库配置。但是如果对历史数据有较高要求,可以结合OpenTSDB;支持分层和水平联合。

  • 4> 周边插件丰富,如果对监控要求不是特别严格的话,默认的几个成品插件已经足够使用;支持多种图形和仪表板。

  • 5>本身基于数学计算模型,有大量的函数可用,可以实现很复杂的监控(故学习成本高,需要有一定数学思维,独有的数学命令行很难入门);

  • 6>可以嵌入很多开源工具的内部去进行监控,数据更可信。

  • 7>使用PromQL,它是一种强大而灵活的查询语言,PromQL作为Prometheus强大的查询语言,可以灵活地处理监视数据。

Prometheus最初是由SoundCloud开发的,现在已经成为了Cloud Native Computing Foundation(CNCF)旗下的一个项目。它有很多优点,包括易于安装和配置、支持动态发现、具有高可用性和灵活的查询语言等。此外,Prometheus集成了一个强大的警报系统,可以根据用户自定义的规则进行警报通知,并支持多种通知方式,如Email、Slack和PagerDuty等。

在现代应用程序和微服务架构的时代,Prometheus已经成为了一个被广泛采用的监控解决方案。

【Prometheus的3大局限性】

1.更多地展示的是趋势性的监控
Prometheus作为一个基于度量的系统,不适合存储事件或者日志等,它更多地展示的是趋势性的监控。如果用户需要数据的精准性,可以考虑ELK或其他日志架构。另外,APM更适用于链路追踪的场景。

2.Prometheus本地存储不适合大量历史数据存储
Prometheus认为只有最近的监控数据才有查询的需要,所有Prometheus本地存储的设计初衷只是保存短期(如一个月)的数据,不会针对大量的历史数据进行存储。如果需要历史数据,则建议使用Prometheus的远端存储,如OpenTSDB、M3DB等。

3.成熟度没有InfluxDB高
Prometheus在集群上不论是采用联邦集群还是采用Improbable开源的Thanos等方案,都没有InfluxDB成熟度高,需要解决很多细节上的技术问题(如耗尽CPU、消耗机器资源等问题),部分互联网公司拥有海量业务,出于集群的原因会考虑对单机免费但是集群收费的InfluxDB进行自主研发。

总之,使用Prometheus一定要了解它的设计理念:它并不是为了解决大容量存储问题,TB级以上数据建议保存到远端TSDB中;它是为运行时正确的监控数据准备的,无法做到100%精准,存在由内核故障、刮擦故障等因素造成的微小误差。

Prometheus它可使用联合模型(federation mode)进行扩展,该模型使得一个 Prometheus 服务器能够抓取另一个 Prometheus 服务器的数据。这允许创建分层拓扑,其中中央系统或更高级别的 Prometheus 服务器可以抓取已从下级实例收集的聚合数据。你可以将 Prometheus 作为后端,配置 Grafana 来提供数据可视化和仪表板功能。

1.1 工作原理
Prometheus直接从目标主机上运行的代理程序中抓取指标,并将收集的样本集中存储在自己服务器上(主要以拉模式为主)。也可以使用像 collectd_exporter 这样的插件推送指标,尽管这不是 Promethius 的默认行为,但在主机位于防火墙后面或位于安全策略禁止打开端口的某些环境中它可能很有用。另外,它可通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如:VM、Docker、Kubernetes等;它以给定的时间间隔从已配置的目标收集指标,评估规则表达式,显示结果,并在发现某些情况为真时触发警报。

1.2 Prometheus的主要构成:
1、服务端

Prometheus服务端以一个进程方式启动,如果不考虑参数和后台运行的话,只需要解压安装包之后运行==./prometheus脚本==即可启动,程序默认监听在9090端口。每次采集到的数据叫做metrics。这些采集到的数据会先存放在内存中,然后定期再写入硬盘,如果服务重新启动的话会将硬盘数据写回到内存中,所以对内存有一定消耗。Prometheus不需要重视历史数据,所以默认只会保留15天的数据。

2、客户端

Prometheus客户端分为pull和push两种方式。如果是pull形式的话则是服务端主动向客户端拉取数据,这样需要客户端上安装exporters(导出器)作为守护进程,官网上也提供了很多exporters可以下载使用,比如使用最多的node_exporters,几乎把系统自身相关数据全部采集了,非常全面,node_exporter默认监听9100端口。

如果是push形式的话客户端需要安装pushgateway插件,然后运需要运维人员用脚本把监控数据组织成键值形式提交给pushgateway,再由它提交给服务端。它适合于现有exporters无法满足需求时,自己灵活定制。

1.3 prometheus 相关核心概念

a)、指标

prometheus 所有的监控指标(Metric) 被统一定义为

<metric name >{
	<label name>=<label value>,
	 ...
	 }

指标名称: 说明指标的含义,例如 tcp_request_total 代表 tcp 的请求总数,指标名称必须由 字母、数值下画线或者冒号组成,符合正则表达式,如 [a-zA-Z:][a-zA-Z0-9:]*。标签(label) 则用于过滤和聚合;

b)、数据采集

prometheus 采用pull 方式采集监控数据,和采用push 方式采集监控数据不同,

push 方式: agent 主动上报数据,可以将采集的数据立即上报到监控中心,push 方式本地不会保存采集的数据,agent 本身是无状态的服务,master 需要维护各种agent 状态

pull 方式: master 主动拉取 agent 的数据,周期性采集,采集时间为30s 或者更长时间,
agent 本身需要一定的数据存储能力,master 只负责简单的数据拉取

c)、数据处理

prometheus 支持数据处理,主要包括 relabel 、replace、keep、drop

d)、数据存储

prometheus 支持本地存储和远程存储两种方式

e)、数据查询

prometheus 使用promQL 查询

f)、告警

prometheus 本身不会对报警进行处理、需要借助一个组件alertmanager ,prometheus 会配置alertmanager 地址,这样prometheus 发出的告警记录变可以发送到alertmanager 进行处理

1.4 系统架构

在这里插入图片描述
在这里插入图片描述

2、Prometheus 部署

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

2.1 下载安装包(两种方式)

2.1.1 直接在官网下载

访问下载官网:https://prometheus.io/download/

在这里插入图片描述
选择版本,在哪部署选择哪个哪个,本文在linux上部署,所以,选择linux的tar包;

点击,等待下载完成,上传到服务器中;

2.1.2 服务器上直接使用wget下载

也是同样的先打开官网:找到自己要下载的版本;右击点击复制连接;

在这里插入图片描述

在服务器上使用wget下载

wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz

在这里插入图片描述

等待下载完成之后,

2.2 解压安装包并放到指定目录

#解压安装包
tar xf prometheus-2.44.0.linux-amd64.tar.gz

#移动到/usr/local/目录,并修改名字
mv prometheus-2.44.0.linux-amd64 /usr/local/prometheus

2.3 修改 Prometheus 配置文件

#进入Prometheus目录
cd /usr/local/prometheus/

#备份配置文件
cp -ar prometheus.yml prometheus.yml-bak

#修改配置文件
## 第六行添加
scrape_timeout: 10s
## 最后一行localhost改为本机的ip(其实不改也可以,为了分辨,建议修改)
 - targets: ["172.16.11.209:9090"]   

修改两处。

在这里插入图片描述

2.4 配置系统启动文件,设置开机自启 (两种方式:推荐第一种)

2.4.1 第一种:配置系统启动文件,启动并设置开机自启

#进入这个文件,默认是没有的,直接进入就行
vim /usr/lib/systemd/system/prometheus.service 

#将下面的全部写进去
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data/ \
--storage.tsdb.retention=15d \
--web.enable-lifecycle

ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure 
[Install]
WantedBy=multi-user.target

在这里插入图片描述

#启动
systemctl restart prometheus

#设置开机自启
systemctl enable prometheus

#查看端口是否启动9090
netstat -anput | grep 9090

在这里插入图片描述
2.4.2 第二种:进入解压目录,挂后台执行./prometheus

#进入解压目录
cd /usr/local/prometheus

#挂后台执行./prometheus
./prometheus &

#查看端口是否启动
netstat -anput | grep 9090

在这里插入图片描述

也是可以启动的,但是不好的是,不能设置开机自启,如果想要开机自启,还需要手动写一个启动服务器去执行他的命令或者周期性计划任务,所以不推荐使用方法二;推荐使用第一种。

2.5 页面访问

ip:port
172.16.11.209:9090
浏览器访问:http://172.16.11.209:9090 ,访问到 Prometheus 的 Web UI 界面
点击页面的 Status -> Targets,如看到 Target 状态都为 UP,说明 Prometheus 能正常采集到数据
http://192.168.100.20:9090/metrics ,可以看到 Prometheus 采集到自己的指标数据

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

点击graph可以查看折线图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.6 服务端安装完成

至此,Prometheus 服务端安装完成。

三、部署 Exporters(普罗米修斯客户端)

Exporters 远程监控linux主机,也就是普罗米修斯客户端

1、Exporters 部署

在远程 linux 主机(客户端 agent)上安装 node_exporter 组件。
下载地址:https://prometheus.io/download/

1.1 下载安装包(两种方式)

1.1.1 直接在官网下载

访问下载官网:https://prometheus.io/download/

可以ctrl+f搜索node_exporter

在这里插入图片描述

同样也是下载linux版本;点击,等待下载完成,上传到服务器中;

1.1.2 服务器上直接使用wget下载

也是同样的先打开官网:找到自己要下载的版本;右击点击复制连接;

在这里插入图片描述

在服务器上使用wget下载

wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz

在这里插入图片描述

等待下载完成之后,

1.2 解压安装包并放到指定目录

#解压安装包
tar xf node_exporter-1.6.0.linux-amd64.tar.gz

#移动到/usr/local/目录,并修改名字(名字可自行修改,只要记住这个文件夹是干什么的就行)
mv node_exporter-1.6.0.linux-amd64 /usr/local/prometheus_node

1.3 配置系统启动文件,设置开机自启 (两种方式:推荐第一种)

1.3.1 第一种:配置系统启动文件,启动并设置开机自启

#进入这个文件,默认是没有的,直接进入就行
vim /usr/lib/systemd/system/node_exporter.service

#将下面的全部写进去
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/prometheus_node/node_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
#启动
systemctl restart node_exporter

#设置开机自启
systemctl enable node_exporter

#查看端口是否启动9100
netstat -anput | grep 9100

在这里插入图片描述

1.3.2 第二种:进入解压目录,挂后台执行./node_exporter

#进入解压目录
cd /usr/local/prometheus_node

#挂后台执行./prometheus
./node_exporter &

#查看端口是否启动
netstat -anput | grep 9100

在这里插入图片描述

也是可以启动的,但是不好的是,不能设置开机自启,如果想要开机自启,还需要手动写一个启动服务器去执行他的命令或者周期性计划任务,所以不推荐使用方法二;推荐使用第一种。

1.4 页面访问

ip:port
172.16.11.220:9100

在这里插入图片描述
点击Metrics可以查看node_exporter 在被监控端收集的监控信息:

在这里插入图片描述

1.5 客户端安装完成

2、修改Prometheus服务端的配置文件

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

2.1 添加客户端到服务端(分为添加单个客户端与多个客户端两部分)

2.1.1 添加单个 客户端

#进入prometheus的配置文件中
vim /usr/local/prometheus/prometheus.yml

#添加以下几行,到最后(格式和上面的服务端一样,因为yml文件格式要求严格,所以必须一样,否则启动会报错)
  - job_name: 'agent'
    static_configs:
      - targets: ['172.16.11.220:9100']

在这里插入图片描述

2.1.2 添加多个 客户端(两种方式,暂无推荐,根据自己的需求选择)

给服务端也安装一个客户端,添加到服务端。

添加方式一:使用多个命名来命名客户端的作用

  - job_name: "agent1"
    static_configs:
      - targets: ["172.16.11.220:9100"]
  - job_name: "agent2"
    static_configs:
      - targets: ["172.16.11.209:9100"]

在这里插入图片描述

添加方式二:使用单个命名来命名多个客户端的作用(两种方式,推荐使用方法二)

方法一:

  - job_name: "node测试"
    static_configs:
      - targets: ["172.16.11.220:9100"]
      - targets: ["172.16.11.209:9100"]

在这里插入图片描述

方法二:

  - job_name: "node测试"
    static_configs:
      - targets: 
        - 172.16.11.220:9100
        - 172.16.11.209:9100

在这里插入图片描述

2.2 重启服务端

systemctl restart prometheus

等待重启完成,刷新一下页面,如果还是没有可以清除一下缓存,试试。

在这里插入图片描述

2.3 服务端添加客户端完成

注:服务端的服务器上也可以安装客户端,操作也是和安装客户端一样的哦!

3、附加(服务端配置文件)

3.1 监测 Prometheus配置文件是否正确

#进入prometheus目录
cd /usr/local/prometheus/

#执行promtool,监测配置是否正确
./promtool check config prometheus.yml

正常状态返回:

Checking prometheus.yml
 SUCCESS: prometheus.yml is valid prometheus config file syntax

失败状态返回:

Checking prometheus.yml
  FAILED: parsing YAML file prometheus.yml: "172.16.11.209:9999/cs" is not a valid hostname

或其他错误,只有前面是FAILED:都是有问题的,则 SUCCESS:就是没问题的。

3.2 监测服务ip添加后缀

  - job_name: "cs"
    metrics_path: /liu/cy/
    static_configs:
      - targets: ['172.16.11.209:9999']

Prometheus页面显示:

在这里插入图片描述

报错说明:为什么会报错呢,当然,只是为了测试加后缀,随便写的,所以会报错,只是连接被拒绝,因为并没有这个服务。

4、实例:监控远程MySQL服务

在被客户端 agent上安装 mysqld_exporter 组件
下载地址:https://prometheus.io/download/

4.1 下载安装包(两种方式)

4.1.1 直接在官网下载

访问下载官网:https://prometheus.io/download/

可以ctrl+f搜索mysqld_exporter,选择要下载的版本。

在这里插入图片描述

同样也是下载linux版本;点击,等待下载完成,上传到服务器中;

4.1.2 服务器上直接使用wget下载

也是同样的先打开官网:找到自己要下载的版本;右击点击复制连接;

在这里插入图片描述

在服务器上使用wget下载

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0-rc.0/mysqld_exporter-0.15.0-rc.0.linux-amd64.tar.gz

在这里插入图片描述

等待下载完成之后,

4.2 解压安装包并放到指定目录

#解压安装包并放到/usr/local/下
tar xf mysqld_exporter-0.15.0-rc.0.linux-amd64.tar.gz -C /usr/local/

#进入/usr/local/下给重命名为:mysqld_exporter
mv mysqld_exporter-0.15.0-rc.0.linux-amd64/ mysqld_exporter

在这里插入图片描述

4.3 安装mysql数据库,并授权

4.3.1 安装mysql数据库并进行用户授权

  • 第一种:新安装mariadb开始
#安装mariadb
yum install mariadb\* -y

#启动数据库
systemctl start mariadb
#设置开机自启
systemctl enable mariadb

#查看数据库是否启动(有进程则启动)
netstat -anput | grep 3306

#数据库初始化操作(设置密码)
mysql_secure_installation

提示:如果回车没有反应,先检查mariadb是否启动。

在这里插入图片描述

#进入mysql数据库
mysql -uroot -p密码

#创建mysql_exporter用户并设置密码
create user 'mysql_exporter'@'localhost' identified by '123456';
#给mysql_exporter查询权限
grant select,replication client,process on *.* to 'mysql_exporter'@'localhost';
#刷新权限
flush privileges;

在这里插入图片描述

  • 第二种:已经有数据库的
#进入mysql数据库
mysql -uroot -p密码

#创建mysql_exporter用户并设置密码
create user 'mysql_exporter'@'localhost' identified by '123456';
#给mysql_exporter查询权限
grant select,replication client,process on *.* to 'mysql_exporter'@'localhost';
#刷新权限
flush privileges;

在这里插入图片描述

4.4 创建一个mysqld_exporter配置文件

创建一个mysqld_exporter配置文件,写上连接的用户名和密码(和上面的授权的用户名和密码要对应)

vim /usr/local/mysqld_exporter/.my.cnf

[client]
user=mysql_exporter
password=123456

在这里插入图片描述

4.5 配置系统启动文件,设置开机自启 (两种方式:推荐第二种)

4.5.1 第一种:配置系统启动文件,启动并设置开机自启

#进入这个文件,默认是没有的,直接进入就行
vim /usr/lib/systemd/system/mysqld_exporter.service 

#将下面的全部写进去
[Unit]
Description=mysqld_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat

ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

在这里插入图片描述

#启动
systemctl restart mysqld_exporter

#设置开机自启
systemctl enable mysqld_exporter

#查看端口是否启动9104
netstat -anput | grep 9104

在这里插入图片描述

4.5.2 第二种:进入解压目录,挂后台执行 mysqld_exporter

#进入解压目录
cd /usr/local/mysqld_exporter

#挂后台执行 mysqld_exporter
nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &

#查看端口是否启动
netstat -anput | grep 9104

在这里插入图片描述

4.6 页面访问

ip:port
172.16.11.220:9104

在这里插入图片描述

点击Metrics可以查看node_exporter 在被监控端收集的监控信息:

在这里插入图片描述

4.7 客户端安装完成

4.8 将 mysql 服务添加到服务端【修改Prometheus服务器的配置文件】

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

#进入prometheus的配置文件中
vim /usr/local/prometheus/prometheus.yml

#追加以下几行
  - job_name: "agetn-mysql"
    static_configs:
      - targets: ['172.16.11.220:9104']

在这里插入图片描述
添加完之后,重启服务端

systemctl restart prometheus

等待重启完成,刷新一下页面,如果还是没有可以清除一下缓存,试试。

在这里插入图片描述

4.9 添加成功!!!

四、部署 Grafana(可视化)

1、Grafana 简介

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

Grafana是一个开源的数据可视化工具,它可以拉取各种不同的数据源并将它们呈现为漂亮而易于理解的图表。 Grafana可以用于监控和分析各种服务和应用程序的性能和状况,包括数据库、Web服务器、应用程序服务器等。Grafana具有可扩展性,可以支持许多不同的数据源和可视化库,例如Graphite、InfluxDB、Prometheus、Elasticsearch等。同时,Grafana还提供了丰富的插件和面板,帮助用户更好地理解和管理数据。

随着公司业务的不断发展,紧接来的是业务种类的增加、服务器数量的增长、网络环境的越发复杂以及发布更加频繁,从而不可避免地带来了线上事故的增多,因此需要对服务器到应用的全方位监控,提前预警,急需一个工具来解决这个问题,而Grafana的出现完美的解决了这个问题。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

主要特点

1.grafana提供了快速灵活的可视化效果,可以让自己以任何想要的方式来可视化数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.支持众多插件 ,使用Grafana插件可以连接自己的工具和团队,数据源插件通过 API 挂接到现有数据源中,实时呈现数据,而无需迁移或引入数据

在这里插入图片描述

3.告警系统,可以在一个简单的UI中创建,管理所有警报从而轻松整合和集中所有警报。

在这里插入图片描述

在这里插入图片描述

2、Grafana 部署

下载地址:Download Grafana | Grafana Labs

2.1 下载安装包

官网下载地址:Download Grafana | Grafana Labs

可以选择版本和系统,我们这里就直接选择最新版:9.5.2

在这里插入图片描述

下载推荐rpm包,点击一下,就会自动下载;或者复制一下,粘贴到服务器上也会下载。

在这里插入图片描述

等待下载完成…

如果是直接在服务器执行下载的,直接等待下载完成启动即可,如果是下载的rpm包,就需要上传到服务器上,然后使用rpm -ivh grafana-enterprise-9.5.2-1.x86_64.rpm 进行安装;

2.2 启动 grafana 并设置开机自启

#启动grafana-server服务
systemctl start grafana-server

#设置开机自启
systemctl enable grafana-server

#查看端口(默认为3000)
netstat -natp | grep 3000

在这里插入图片描述

2.3 页面访问

ip:port
172.16.11.209:3000

注意:默认账号密码为:
账号:admin
密码:admin

grafana默认配置文件目录 /etc/grafana/grafana.ini

在这里插入图片描述

通过浏览器访问 http:// grafana 服务器 IP:3000 就到了登录界面,使用默认的 admin 用户,admin 密码就可以登陆了。

在这里插入图片描述

进来需要设置一个新密码

在这里插入图片描述

在这里插入图片描述

2.4 配置数据源

下面我们把 Prometheus 服务器收集的数据做为一个数据源添加到 grafana,让 grafana 可以得到 Prometheus 的数据。

在这里插入图片描述

选择prometheus

在这里插入图片描述
在这里插入图片描述

点击保存测试

在这里插入图片描述
在这里插入图片描述

2.5 导入模板

可以看到我们刚刚创建的

在这里插入图片描述

点进去,选择:Dashboards–>从中选择任意一个模板,这里我选择第二个,点击import。

在这里插入图片描述

安装完成;

在这里插入图片描述

然后点击名称,进入可以查看模板;

在这里插入图片描述
在这里插入图片描述

这里已经可以看到了,但是他只是个模板,不能展示出来,接下来,我们将自己做数据源将数据展示出来。

2.6 为数据源做自定义数据展示

点击右上角加号,再点击创建新的仪表板

在这里插入图片描述
在这里插入图片描述

选择刚刚添加的监控项

在这里插入图片描述

选择load1、load5、load15;一分钟、五分钟、十五分钟负载

在这里插入图片描述
在这里插入图片描述

这里写了三个条件

在这里插入图片描述
在这里插入图片描述

点击保存

在这里插入图片描述

自定义名称、点击保存;

最后在dashboard可以查看到 。

在这里插入图片描述
在这里插入图片描述

拉住想要看的这个模块右下角,可以放大;

在这里插入图片描述

还可以点击查看,再次点击一下就恢复到默认所有;

在这里插入图片描述

注:有多条数据的时候,可以在查询的键值后面加个大括号,括号里的条件表示只匹配当前的监控项。

点击dashboard可以查看到 ;

在这里插入图片描述

这是自定义的监控模块(监控的服务端的1、5、15分钟的平均负载),一个一个添加比较麻烦,我们可以去找一些模板;

2.7 导入grafana监控面板

这里我们使用现成的模板导入即可,GitHub上面很多人开发了dashboards模板,官方社区上也有很多开源的dashboards模板,我们只需要把模板的Copy ID 或者 Download JSON文件导入到grafana即可,参考官网免费的dashboards模板。

官方模板地址:https://grafana.com/grafana/dashboards/

进入官网,往下拉,可以看到选择这几个,Data Source 选择Prometheus,然后搜索主机监控,或者自己定义,搜索,linux什么的都可以,根据自己的需求选择;

在这里插入图片描述

找到心仪的模板之后点进去,可以看到右边有Copy IDDownload JSON,自行选择就行;这里我选择复制id,json需要下载;

在这里插入图片描述

复制好id之后,打开在 grafana 页面中,+ Create -> Import ,输入面板 ID 号或者上传 JSON 文件,点击 Load,即可导入监控面板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

完成,页面显示就是这样的了。

在这里插入图片描述
在这里插入图片描述

需要查看其他模板的话,可以点击最上面的中间的搜索;

在这里插入图片描述

2.8 为已有的监控面板添加自定义监控模块展示

首先,打开已添加的模板;点击add–>visualization

在这里插入图片描述

然后再次添加即可,添加方式和上面的一样;点击跳转到上面: 2.6 为数据源做自定义数据展示

在这里插入图片描述

这里可以选择形状图;

在这里插入图片描述

最后的展示

在这里插入图片描述

2.9 修改已有的模块数据

在这里插入图片描述
在这里插入图片描述

3、实例:Grafana 图形显示 MySQL 监控数据

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

3.1 修改 grafana.ini 配置文件

#进入grafana配置文件
vim /etc/grafana/grafana.ini  

#追加到最后
[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards

3.2 克隆 dashboards 到 /var/lib/grafana/

#前提需要安装git
git clone https://github.com/percona/grafana-dashboards.git

如果服务器上没有git服务,可以访问:https://github.com/percona/grafana-dashboards
直接下载,下载完之后上传服务器解压,放到/var/lib/grafana/目录即可,git下来的与下载的zip解压下来的是一样的。

在这里插入图片描述

将克隆的 grafana-dashboards/下的dashboards 放到 /var/lib/grafana/ 目录

#将dashboards复制到/var/lib/grafana下
cp -ar grafana-dashboards/dashboards/ /var/lib/grafana/
#重启grafana服务端
systemctl restart grafana-server.service
#查看端口号是否启动
netstat -anput | grep 3000

在这里插入图片描述

3.3 在grafana图形化界面导入相关的json文件

/var/lib/grafana/dashboards/MySQL/MySQL_Instances_Overview.json 文件下载到本地;

在这里插入图片描述

访问grafana页面,导入json文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、Grafana + onealert 实现服务告警

Prometheus 告警需要使用 alertmanager 这个组件,而且告警规则需要手动编写(对运维来说很不友好)。所以我这里选用 grafana+onealert 告警。注意:实现告警前需要把所有机器时间同步再检查一遍。

登陆 https://www.aiops.com/→注册帐户→登入后台管理

在这里插入图片描述
在这里插入图片描述

会有一个邮箱认证,认证一下就可以了;

在这里插入图片描述

登录上来之后,点击左侧的 智能告警平台

在这里插入图片描述
在这里插入图片描述

然后点击下面的加号,进入编辑页面;

在这里插入图片描述
在这里插入图片描述

获取key值

在这里插入图片描述

下面也有配置步骤,可根据自己的版本来查看;

在这里插入图片描述

4.1 在Grafana中配置Webhook URL

4.1.1 填写应用名称,点击保存生成AppKey(上面已经生成)

4.1.2 创建 contact points

在这里插入图片描述

URL填写名称,选择 contact points type为webhook,填写url:http://api.aiops.com/alert/api/event/grafana/v1/{appKey}/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

contact points 创建完成!!!

4.4 创建 Notification policies

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Notification policies 创建完成!!!

4.5 配置Alert rules

Alert rules 配置完成!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优思学院|精益管理入门书籍有哪些推荐?

精益管理是一门易学难精的学问&#xff0c;如果对其基本原则了解不正确&#xff0c;可能会误入歧途&#xff0c;不但不能发挥精益工具的威力&#xff0c;甚至会令企业走向错误的方向&#xff0c;反带来更多的浪费和捐失。以下将介绍几本经典的书籍&#xff0c;可以让你有效地、…

python简单使用【mac-ide:pycharm】

小白实用快捷键记录 一、Mac下安装并配置python3开发环境二、python学习三、pycharm常用快捷键记录 一、Mac下安装并配置python3开发环境 点我查看python及pycharm下载安装、环境配置 二、python学习 不是很推荐&#xff0c;想系统学习的同学可以做个参考&#xff1a; Pytho…

排序之玩转qsort函数——【C语言】

说起排序&#xff0c;我们会想起许多算法&#xff0c;在之前的博客中我也写到过&#xff0c;比如&#xff1a;冒泡排序法、快速排序法、选择排序法等等。其实在C语言中一直有一个可以将数组中的内容进行排序的函数且功能完善内容齐全的库函数——qsort函数。今天就让我们来探索…

OpenPCDet系列 | 8.2 nuScenes数据集的eval流程

0. eval转换的目标 模型的训练和测试过程输出结果是不一样的&#xff0c;对于训练过程是为了构建损失函数来进行训练&#xff0c;而对于测试过程是为了对object进行预测生成预测内容。下面以VoxelNeX检测器的类代码可见&#xff0c;training和testing将会输出两个内容。 clas…

C++数据结构笔记(7)——队列的顺序结构实现

1.队列&#xff0c;和现实生活中的规则类似&#xff0c;先进先出 2.队尾只允许元素进入&#xff0c;队头只允许元素退出 3.用数组来实现队列的顺序存储&#xff0c;无论哪一段都可以作为队头或者队尾 SeqQueue.h头文件 #ifndef SEQQUEUE_H #define SEQQUEUE_H #include<…

仿大众点评项目 —— Day02【优惠券秒杀、分布式锁】

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

Java字符串类

string类的理解(以JDK8为例说明) 1.1的声明 public final class String implements java.io.Serializable&#xff0c; Comparable<String>&#xff0c; CharSequence final:String是不可被继承的 Serializable:可序列化的接口。凡是实现此接口的类的对象就可以通过…

建筑施工脚手架安全技术统一标准

为统一建筑施工脚手架设计、施工、使用及管理&#xff0c;做到技术先进、安全适用、经济合理&#xff0c;制定本标准。 本标准适用于房屋建筑工程和市政工程施工用脚手架的设计、施工、使用及管理。 建筑施工脚手架的设计、施工、使用及管理&#xff0c;除应符合本标准外&…

第一百零二天学习记录:数据结构与算法基础:初识数据结构与算法

管理系统模型&#xff08;仓库管理系统&#xff09;—顺序表 操作对象之间的关系&#xff1a;线性关系 数据结构&#xff1a;线性数据结构、线性表 &#xff08;例如&#xff1a;学生成绩管理系统、人事管理系统、仓库管理系统、通讯录等。&#xff09; 操作对象&#xff1a;若…

OWASP 定义的大模型应用最常见的10个关键安全问题

7月15日之前入驻华为云&#xff0c;可参与Check抽奖活动&#xff0c;抽奖活动在文末 1. 《OWASP 大模型应用最常见的10个关键安全问题》项目简介&#xff08;OWASP TOP10 LLMs Project&#xff09; *OWASP Top 10 for Large Language Model Applications OWASP 大模型应用程序…

vue3使用腾讯地图(‘关键词搜索、逆地址解析‘)

1.登录腾讯地图位置服务进入控制台 申请腾讯地图开发者进入控制台申请自己的key 腾讯位置服务 - 立足生态&#xff0c;连接未来 2.进入vue项目的public文件下的index.html 引入腾讯资源包&#xff0c;并把申请的key填入 <script src"https://map.qq.com/api/js?v2…

文心一言 VS 讯飞星火 VS chatgpt (57)-- 算法导论6.4 1题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;57&#xff09;-- 算法导论6.4 1题 一、参照图 6-4 的方法&#xff0c;说明 HEAPSORT 在数组 A(5&#xff0c;13&#xff0c;2&#xff0c;25&#xff0c;7&#xff0c;17&#xff0c;20&#xff0c;8&#xff0c;4)上的操作过程…

怎么修复损坏的视频文件?视频文件修复办法分享!

随着科技的不断发展&#xff0c;我们的生活中已经离不开各种类型的视频文件。因为各式各样的原因&#xff0c;有时候我们的视频文件可能会损坏。 而损坏的视频文件通常是无法正常播放&#xff0c;这无疑会给我们的生活和工作造成极大的困扰。那么&#xff0c;怎么修复损坏的视…

【Linux学习】记录下Linux的常用基本指令~

1、Linux是一个操作系统&#xff0c;和windows是“并列”关系。Linux已经成为"世界第一大操作系统"。 2、Linux这种使用命令的方式比图形化界面的好处&#xff1f; &#xff08;1&#xff09;节省系统资源&#xff1a;运行图形化界面需要让系统付出一些额外开销&am…

stm32(时钟和中断事件知识点)

一、复位和时钟控制&#xff08;RCC&#xff09; 复位 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a; 1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管…

软件为什么需要进行应急演练脚本?

软件为什么需要进行应急演练脚本&#xff1f;在当今互联网时代&#xff0c;安全问题愈加突出&#xff0c;不断有新的网络攻击方式不断涌现。针对软件系统的安全漏洞和攻击活动不断增加&#xff0c;软件应急演练变得尤为重要。 首先&#xff0c;应急演练可以帮助软件团队建立应急…

C++11可变参数模板,lambda表达式,包装器

目录 可变参数模板 lambda表达式 问题的引入 lambda表达式语法 捕捉列表的使用 函数对象和lambda表达式 function包装器 可变参数模板 C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板&#xff0c;相比C98/&#xff0c;类模版和函数模版中只能…

基于redis实现延时队列(一)

背景 最近项目中需要对一条数据&#xff0c;在半小时候更改其状态&#xff0c;类似于提交商城订单半小时后未支付的订单需要更改为超时状态&#xff0c;当然这个解决方案有很多&#xff0c;最好的解决方案是用MQ的死信队列&#xff1b;但由于项目中没有引入MQ&#xff0c;故本…

PMP-质量管理的重要性

本篇文章主要是方便从事于项目管理的“初学者”们了解质量管理的重要性&#xff01;&#xff01;&#xff01; 一、什么是质量管理 项目质量管理包括把组织的质量政策应用于规划、管理、控制项目和产品质量要求&#xff0c;以满足相关方目标的各个过程。此外&#xff0c;项目质…

Latex公式炫酷技巧

最近看到一个炫酷的latex公式用法&#xff0c;特意在此记录一下 效果如下 latex代码如下 \begin{equation}\mathcal{L}_{mot}^{\textcolor{magenta}{\bullet}} \frac{1}{\sum_{i1}^{N}{s_i^l}}\sum_{i1}^{N}\Big\Vert{s}^{l}_i(\mathbf{\hat{f}}_i-\mathbf{f}^{fg}_i)\Big…