Prometheus+grafana部署、使用,数据源导入展示
一、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 << EOF [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)最终的效果展示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律