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)最终的效果展示

 

 

posted @   i潘小潘  阅读(3101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示