热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Prometheus+grafana部署、使用,数据源导入展示

 一、Prometheus是什么?监控:数据采集,数据存储,数据分析,数据展示,数据告警。Prometheus本质上是一个度量数据的收集和分析工具,包含3个核心组件:●时间序列数据

 


一、Prometheus是什么?

监控:数据采集,数据存储,数据分析,数据展示,数据告警。

Prometheus本质上是一个度量数据的收集和分析工具,包含3个核心组件:

● 时间序列数据库,用于保存所有度量数据。

● 数据收集器,负责从外部来源拉取指标并将其推入数据库。

● Web服务器,为配置和查询存储的数据提供简单的Web界面。

 

Prometheus的优势:

配置灵活;

监控多样性;

对云原生的支持是所有监控方案里最好的;

部署方便,不依赖外部组件,能适用企业各种场景;

采集精度高,可以精确到 1~5 秒;

支持很多实用的计算函数;

可以快速集成社区已经成熟 exporter;

能跟 Grafana 很好的结合,绘制各种高大上的图;

可根据自身业务快速自定义 metrics;

 

Prometheus的架构:

 

  说明:

PromSQL,是用于从Prometheus中检索指标的查询语言。

AlertManager(告警管理),允许我们根据Prometheus采样的指标定义告警(比如内存/ CPU使用率过高或请求时延达到峰值)。

Pushgateway(推送网关),允许应用和服务将指标推送到Prometheus,而非标准的由Prometheus主动拉取。

Service discocery(服务发现),Prometheus在一开始就被设计为只需极少配置即可完成初始安装,以及适于在诸如Kubernetes之类的动态环境中运行。因此它可以对正在运行的服务进行自动发现,并尝试对其应监视的内容作出最佳的猜测。

  


二、prometheus安装

 

官方文档:https://prometheus.io/docs/   , https://grafana.com/docs/grafana/

 

下载地址:https://prometheus.io/download/   , https://grafana.com/grafana/download

 

实验环境准备:




















Prometheus服务器


10.26.36.xx1


被监控端服务器(node_exporter)


10.26.36.xx2


Grafana 服务器


10.26.36.xx3

(Prometheus+Grafana 可部署在同一台机器上)


同步时间(时间同步一定要确认一下)

yum install -y  ntpdate && ntpdate time.windows.com

关闭防火墙,SELinux

# systemctl stop firewalld && systemctl disable firewalld

# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config && setenforce 0


 

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

上传prometheus包,并解压








tar -zxvf prometheus-2.35.0.linux-amd64.tar.gz

mv prometheus-2.35.0.linux-amd64 /usr/local/prometheus

cd /usr/local/prometheus/

#查看帮助

./prometheus -h

#启动

./prometheus &

#也可指定配置文件启动

/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &


 








#查看相关进程及端口

ps -ef |grep prometheus

ss -anltp |grep 9090

netstat -nltp |grep prometheus


 

浏览器访问验证Prometheus,默认端口9090,直接输入服务器IP:9090即可。

 

查看监控目标,Status-->Targets,默认只监控本机。

 

点击打开http://localhost:9090/metrics可看到所有监控详细信息。(注意,localhost要改为实际IP)。

  

比如我想监控一个信息,例如监控:process_cpu_seconds_total,可通过Table 或Graph来直观的查看相关信息,在监控页底部也有显示被监控的目标。
process_cpu_seconds_total{instance="localhost:9090", job="prometheus"}

 

  


三、监控远程主机

监控远程主机需要下载并安装node_exporter组件服务,安装也特别简单,将node_exporter组件安装包上传至要被监控的服务器上,解压后里面就一个启动程序node_exporter,可以直接启动,node_exporter默认端口9100。








tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/

cd /usr/local/

mv node_exporter-1.3.1.linux-amd64/  node_exporter

#启动

nohup /usr/local/node_exporter/node_exporter &

#查看进程及端口

ps -ef |grep node_exporter

netstat -nltp |grep 9100


 

通过浏览器访问 http://被监控端IP:9100/metrics 就可以查看到 node_exporter在被监控端采集的监控数据信息。

 

回到Prometheus服务器的配置文件里添加被监控机器的配置段。在主配置文件最后加上下面三行。








vim /usr/local/prometheus/prometheus.yml

 

- job_name: 'node1'       # 取一个job名称来代表被监控的机器

static_configs:

- targets: ['10.26.36.xx2:9100']       # 这里改成被监控机器的IP,后面端口接9100


 

改完配置文件并保存后,重启prometheus服务。








ps -ef |grep prometheus

kill -9 <进程ID>

nohup /usr/local/prometheus/prometheus &

#启动方式还可以追加指定默认配置文件

/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &


 

回到prometheus Web管理界面 --》点Status --》点Targets --》可以看到多了一台监 控目标。

 

  

三、监控MySQL数据库

监控mysql数据库需要下载并安装mysqld_exporter组件服务,安装也特别简单,将mysqld_exporter组件安装包上传至要被监控的mysql服务器上,解压后里面就一个启动程序mysqld_exporter,这里先不要启动,mysqld_exporter默认端口9104。

监控mysql的前提是你必须已经有现成的或者已经安装好了mysql服务。

Mysql安装可参考:https://www.cnblogs.com/panw/p/16297877.html








#解压mysqld_exporter

tar -zxvf mysqld_exporter-0.14.0.linux-amd64.tar.gz -C /usr/local/

cd /usr/local/

mv mysqld_exporter-0.14.0.linux-amd64/ mysqld_exporter


注意:这里还不能直接启动mysqld_exporter,因为是要监控mysql数据库,所以需要先登录mysql,创建一个能够让mysqld_exporter组件可访问的账户密码来采集数据。Prometheus再去拉取mysqld_exporter的数据进行监控。








#登录mysql,也可设置免密登录

mysql -u root -p

#创建一个可查询、复制权限的mysqld_exporter用户,去使用mysql本机的localhost连接访问采集数据

grant select,replication client,process on *.* to "mysqld_monitor"@"localhost" identified by "123456";

flush privileges;


创建好可访问mysql权限的用户后(这里用户为mysqld_monitor),还需要再创建一个让mysqld_exporter组件去读取mysql服务采集数据的配置文件,这里创建一个隐藏的 .my.cnf文件,文件中指定客户端的用户和密码。








cat > /usr/local/mysqld_exporter/.my.cnf <

[client]

user=mysqld_monitor

password=123456

EOF


 

到这里我们就可以去启动mysqld_exporter组件服务了,要注意启动时指定上我们刚才创建的.my.cnf配置文件。








#启动

nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf="/usr/local/mysqld_exporter/.my.cnf" &

#查看进程及端口

ps -ef |grep mysqld_exporter

ss -anltp |grep mysqld_exporter

netstat -nltp |grep 9104


 

回到Prometheus服务器的配置文件里添加被监控机器的配置段。在主配置文件最后加上下面三行。








vim /usr/local/prometheus/prometheus.yml

 

- job_name: 'mysql'       # 取一个job名称来代表被监控的目标

static_configs:

- targets: ['10.26.36.xx2:9104']       # 这里改成被监控mysql的IP,后面端口接9104


 

改完配置文件并保存后,重启prometheus服务。








ps -ef |grep prometheus

kill -9 <进程ID>

#启动方式追加指定默认配置文件

/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &


 

回到prometheus Web管理界面 --》点Status --》点Targets --》可以看到多了一台mysql57的监控目标。

 

 

  这个时候我们就可以来监控mysql的相关信息了,比如我想监控一个mysql_global_status_aborted_clients,可通过Table 或Graph来直观的查看相关信息,在监控页底部也有显示被监控的目标。

mysql_global_status_aborted_clients{instance="10.26.36.xx2:9104", job="mysql57"}

 

模拟测试把mysql服务停掉,再看prometheus监控状态。

这里测试发现,单独停掉mysql服务,prometheus监控并不会发出告警,而只有停掉mysqld_exporter组件服务,监控才会发起告警,并没有达到我监控mysql的实际效果,有待考究....

  

经过多番测试发现,单独停掉mysql服务并不会发出告警,而是无法再去采集mysql相关数据。

 

当再次启动mysql服务后,数据采集恢复正常。

 

 四、prometheus配置参数详解

 待补充...

 

 五、Grafana是什么?

Grafana 是一款开源可视化和分析软件,它允许你查询、可视化、提醒和探索您的指标,无论这些指标存储在哪里。Grafana 支持数十种数据库,我们可以创建一个仪表盘来可视化全部。

Grafana 还提供报警,直观地定义阀值,并通过 Slack、 PagerDuty 和其他平台获得通知。Grafana 还提供了多种选项来查看我们的数据,从热力图到直方图,从图形到地理地图。 Grafana 有大量的可视化选项可以帮助我们更好地理解数据。

 


六、Grafana 安装

https://grafana.com/grafana/download下载相应版本,官网提供的是二进制版,解压就能用,不需要编译。

上传grafana包,并解压








tar -zxvf grafana-enterprise-8.3.1.linux-amd64.tar.gz -C /usr/local/

mv  /usr/local/grafana-8.3.1/   /usr/local/grafana

cd /usr/local/grafana/

#查看帮助

./bin/grafana-cli -h

#启动

nohup /usr/local/grafana/bin/grafana-server &

#查看进程及端口

ps -ef |grep grafana-server

ss -anltp |grep 3000

netstat -nltp |grep 3000

 


通过运行上述命令即可完成安装,Grafana 运行在端口 3000。默认的用户名和密码均为“admin” 

浏览器访问验证grafana,默认端口3000,直接输入服务器IP:3000即可。首次登录要求强制修改密码。

 

   


七、Grafana使用,模板Import

当我们进入仪表板,我们需要添加一个数据源,在我们的例子中是 Prometheus。我们只需要提供 Prometheus URL 并点击保存和测试按钮。如果我们看到一个成功的提示框,说明数据源正在工作,那么我们就可以开始了。

 

1)首先在左边菜单找到‘’setting设置‘’按钮 →‘’Data sources’点击进去。

 

 

 2)然后在展示界面点击‘’Add data source‘’按钮,进入添加数据源的页面。

 

  

3)在数据源添加的界面选择你的数据源类型,这里用的是prometheus数据源,点击“Select”添加。

 

  

4)设置数据源中的一些参数及数据源服务地址,主要是设置url,其他可以默认。

 

  

5)设置好后点击“save & test”保存即可。提示data source is working,就代表添加成功了。

 

  

6)然后点击左侧的加号“+”符号,然后在里面点击“Import”导入按钮。

   

7)输入模版的ID,可以去官网找你喜欢的模版,然后复制code在这里添加即可。

我们先去官网选取我们需要的模板

注:Dashbod可以根据自定义面板结构,但是官方有很多大佬提供的非常优质监控模板,真香!所以我们这里直接采用Import模板。也可以Download JSON导入模板。

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

 

选取我们需要的模板,这里使用的是 1860 和 893,这些是我们导入仪表板的唯一ID。

 

  

8)模板导入后,会进行数据源的选择,这里选择prometheus,然后点击Import按钮就成功导入了。

 

  

9)最终的效果展示

 

 



推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • zabbix中文乱码的问题
    在使用zabbix时,有时候会出现中文乱码的问题,如下:因为zabbix自身对中文简体的支持不完善,需要我们手动的去上传新的字体进行替换:1、在windows获取字体库文件在Windows上的 ... [详细]
author-avatar
一个字-刘斌
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有