prometheus+grafana的安装与部署及优点
一、Prometheus 的优点
1、非常少的外部依赖,安装使用超简单;
2、已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等;
3、服务自动化发现;
4、直接集成到代码;
5、设计思想是按照分布式、微服务架构来实现的;
6、多维数据模型:由度量名称和键值对标识的时间序列数据;
7、支持多种exporter采集数据;
8、PromQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询;
9、不依赖分布式存储,单个服务器节点可直接工作(不需要安装数据库,直接使用即可,内置集成了数据库不需要重新的部署);
10、基于HTTP的pull方式采集时间序列数据;
11、推送时间序列数据通过PushGateway组件支持,目标主机上报数据到PushGateway,普罗米修斯从PushGateway拉取数据,这个是可以跨网段的;
12、通过服务发现或静态配置发现目标;
13、多种图形模式及仪表盘支持(grafana);
14、高效的存储,每个采集数据占用3.5bytes左右,300万的时间序列,30s的时间间隔,保留60天,消耗磁盘大约200G;
15、做高可用,对数据进行异地备份。联邦集群,部署多套普罗米修斯,每套普罗米修斯可以在不同的机房,然后将这些普罗米修斯汇总到一个普罗米修斯,那么就可以将各个地方的数据,整体收集上来了。
二、Prometheus 的组件与架构
Prometheus生态系统由多个组件组成,其中许多组件是可选的:
1、主要的Prometheus server,用于存储时间序列数据。
2、用于检测应用程序代码的客户端库。
3、用于支持short-lived工作的推送网关(push gateway)。
4、针对HAProxy,StatsD,Graphite等服务的exporters。
5、一个alertmanager处理警报管理器。
6、各种支持工具。
大多数Prometheus组件都是用Go编写的,因此很容易构建和部署为静态二进制文件。
三、prometheus的组件及其作用
1)Prometheus Server:收集指标和存储时间序列数据,并提供查询接口(采集,存储,查询);
2)ClientLibrary:客户端库;
3)Push Gateway:短期存储指标数据。主要用于临时性的任务,各个目标主机可以上报数据到pushgateway,,然后prometheus server统一从pushgateway拉取数据;
4)Exporters:采集已有的第三方服务监控指标并暴露metrics(类似于zabbix agent,但是exporter有很多种,针对不同的监控指标);
5)Alertmanager:从prometheus server端收到alters之后,会进行去重,分组,并且路由到接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉;
6) Web UI:简单的Web控制台;
普罗米修斯服务端是内置了TSDB的数据库,是存储在本地的文件系统当中。存储了采集被监控端数据指标。获取指标有两种方式:1)一种直接是从pushgateway这里获取被监控指标,这是一个独立的组件,主要完成短周期任务暴露的指标,比如定时任务。(短周期任务不是每分钟都有的指标,可能在运行任务的时候才会产生指标。所以可以将临时的指标汇总到pushgateway,然后有pushgateway统一的暴露给服务端去采集);
7)另外一种就是主要使用持久性的应用,比如nginx,mysql还要微服务jar包,这些都属于持久性运行任务的;
使用这种任务的监控就是采用exporter方式了。会配置exporter这样一个组件,主要是用来采集指标暴露给服务端。
Prometheus 根据配置的作业,直接从数据源pull拉取或者通过中间推送网关(push gateway),获取度量值Metrics。它在本地存储所有获取的样本,并在此数据上运行规则,以从现有数据聚合和记录新的时间序列,或者生成警报。Grafana或其他API使用者可用于可视化收集的数据。
服务端采集好之后就会存储在tsdb数据库当中,可以通过其ui去查看,因为其通过了http服务就可以访问其ui了。在ui上可以通过promql完成数据的查询。(export--->prometheus(TSDB)---->promsql);
告警是由altermanager提供的,在普罗米修斯这里定义告警规则,普罗米修斯这里会周期的评估当前采集的指标是否触发了告警规则,如果触发了会将事件推送给altermanger。altermanger会根据自己相关的逻辑处理后发给接收人,提供email
普罗米修斯实现了服务的发现,也就是可以自动的找到被监控端,这个需要在普罗米修斯的配置文件里面去配置。有了服务发现就不要一个一个的去配置了,让被监控端自动纳入监控。
普罗米修斯从目标主机拉取数据的时候有两种方式,一种是静态的,也就是我们部署exporter,静态的采集指标,也可以配置服务发现,自动的发现指标数据。通过服务发现和exporter采集到的数据的方式都是采用了默认的pull方式拉取指标的,也可以使用pushgateway上报到prometheus当中。
四、监控指标数据模型
数据模型:
1)Prometheus将所有数据存储为时间序列(存储的时候都会记录时间,并且存储到时序的数据库里面,也就是内置的TSDB);
2)具有相同度量名称以及标签属于同一个指标(指标名称是一样,但是标签是不一样的);
3)每个时间序列都由度量标准名称和一组键值对(称为标签)唯一标识;
通过标签查询指定指标。
指标格式 :指标名称加上多个标签
<metric name>{<label name>=<label value>,...}
在配置被监控端这里,要配置监控谁,在配置被监控端,必须要暴露指标出来,这种指标以https的方式给暴露出来,暴露出来之后在配置文件当中配置被监控端,最后就会被普罗米修斯给采集到,如果以上正确配置,在普罗米修斯的图形界面targets可以看到被监控端,也可以通过指标名称查看采集的数据了。这个就相当于数据库,可以提供promql来查询数据,并且通过图表绘制出来;
五、实验
1、Prometheus监控安装部署1、环境及软件工具准备
1)基础环境准备,两台主机,规划信息如下:
2)关闭selinux;
vi编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled
#注意修改完毕之后需要重启linux服务
SELINUX=disabled
3)关闭防火墙。
# 1 关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
# 2 关闭iptables服务
systemctl stop iptables
systemctl disable iptables
4)prometheus官网下载:
通过以下链接下载最新版本:
https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
5)node_exporter下载地址:
可以从prometheus官网下载
通过以下链接下载最新版本:
https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
6)grafana官网下载 :
可以从prometheus官网下载
这里下载最新版本:
https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.2-1.x86_64.rpm
2、prometheus安装:
1)将下载的prometheus安装包上传到监控及其/opt目录下
[root@master opt]# ls -lh
总用量 87M
-rw-r--r--. 1 root root 87M 7月 19 17:21 prometheus-2.45.0.linux-amd64.tar.gz
[root@master opt]#
2)解压安装prometheus
[root@master opt]# tar -xzvf prometheus-2.45.0.linux-amd64.tar.gz
[root@master opt]# mv prometheus-2.45.0.linux-amd64 prometheus
[root@master opt]# ls -lh
总用量 87M
drwxr-xr-x. 4 1001 123 132 6月 23 23:45 prometheus
-rw-r--r--. 1 root root 87M 7月 19 17:21 prometheus-2.45.0.linux-amd64.tar.gz
[root@master opt]#
3)进入到 /opt/prometheus 目录启动prometheus
复制[root@master opt]# cd prometheus
[root@master prometheus]# ./prometheus
ts=2023-07-19T09:32:03.885Z caller=main.go:534 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2023-07-19T09:32:03.886Z caller=main.go:578 level=info msg="Starting Prometheus Server" mode=server version="(version=2.45.0, branch=HEAD, revision=8ef767e396bf8445f009f945b0162fd71827f445)"
ts=2023-07-19T09:32:03.887Z caller=main.go:583 level=info build_context="(go=go1.20.5, platform=linux/amd64, user=root@920118f645b7, date=20230623-1549, tags=netgo,builtinassets,stringlabels)"
ts=2023-07-19T09:32:03.887Z caller=main.go:584 level=info host_details="(Linux 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 2332 UTC 2018 x86_64 master (none))"
ts=2023-07-19T09:32:03.887Z caller=main.go:585 level=info fd_limits="(soft=4096, hard=4096)"
ts=2023-07-19T09:32:03.887Z caller=main.go:586 level=info vm_limits="(soft=unlimited, hard=unlimited)"
ts=2023-07-19T09:32:03.893Z caller=web.go:562 level=info component=web msg="Start listening for connections" address=0.0.0.0:9090
ts=2023-07-19T09:32:03.896Z caller=main.go:1019 level=info msg="Starting TSDB ..."
ts=2023-07-19T09:32:03.901Z caller=tls_config.go:274 level=info component=web msg="Listening on" address=[::]:9090
ts=2023-07-19T09:32:03.901Z caller=tls_config.go:277 level=info component=web msg="TLS is disabled." http2=false address=[::]:9090
ts=2023-07-19T09:32:03.913Z caller=head.go:595 level=info component=tsdb msg="Replaying on-disk memory mappable chunks if any"
ts=2023-07-19T09:32:03.913Z caller=head.go:676 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=15.4µs
ts=2023-07-19T09:32:03.913Z caller=head.go:684 level=info component=tsdb msg="Replaying WAL, this may take a while"
ts=2023-07-19T09:32:03.914Z caller=head.go:755 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=0
ts=2023-07-19T09:32:03.914Z caller=head.go:792 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=41.9µs wal_replay_duration=1.1234ms wbl_replay_duration=11.2µs total_replay_duration=1.3374ms
ts=2023-07-19T09:32:03.916Z caller=main.go:1040 level=info fs_type=XFS_SUPER_MAGIC
ts=2023-07-19T09:32:03.916Z caller=main.go:1043 level=info msg="TSDB started"
ts=2023-07-19T09:32:03.916Z caller=main.go:1224 level=info msg="Loading configuration file" filename=prometheus.yml
ts=2023-07-19T09:32:03.928Z caller=main.go:1261 level=info msg="Completed loading of configuration file" filename=prometheus.yml totalDuration=11.5929ms db_storage=15.8µs remote_storage=19.2µs web_handler=10.7µs query_engine=14µs scrape=1.0045ms scrape_sd=52.4µs notify=42.7µs notify_sd=29.6µs rules=11.8µs tracing=32.6µs
ts=2023-07-19T09:32:03.928Z caller=main.go:1004 level=info msg="Server is ready to receive web requests."
ts=2023-07-19T09:32:03.928Z caller=manager.go:995 level=info component="rule manager" msg="Starting rule manager..."
4)待启动完成后,用以下地址直接无密码登录
http://192.168.20.231:9090/
如下图所示:
5)为prometheus服务创建service并设置开机自动启动
vim /usr/lib/systemd/system/prometheus.service
编辑如下内容,大家根据自己实际的安装目录进行编辑
[root@master ~]# cat /usr/lib/systemd/system/prometheus.service
[Unit]
Description=prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@master ~]#
使service生效并且设置开机自启动
systemctl daemon-reload
systemctl enable prometheus
6)reboot重启系统,查看服务状态是正常的
[root@master ~]# systemctl status prometheus
● prometheus.service - prometheusLoaded: loaded (/usr/lib/systemd/system/prometheus.service; enabled; vendor preset: disabled)Active: active (running) since 三 2023-07-19 0933 CST; 43s agoDocs: https://prometheus.io/Main PID: 5976 (prometheus)CGroup: /system.slice/prometheus.service└─5976 /opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.433Z caller=head.go:676 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=55.101μs
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.433Z caller=head.go:684 level=info component=tsdb msg="Replaying WAL, this may take a while"
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.437Z caller=head.go:755 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=0
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.437Z caller=head.go:792 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=1.016…ion=3.831257ms
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.439Z caller=main.go:1040 level=info fs_type=XFS_SUPER_MAGIC
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.439Z caller=main.go:1043 level=info msg="TSDB started"
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.439Z caller=main.go:1224 level=info msg="Loading configuration file" filename=/opt/prometheus/prometheus.yml
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.444Z caller=main.go:1261 level=info msg="Completed loading of configuration file" filename=/opt/prometheus/prometheus.yml…μs
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.444Z caller=main.go:1004 level=info msg="Server is ready to receive web requests."
7月 19 0934 master prometheus[5976]: ts=2023-07-19T0134.444Z caller=manager.go:995 level=info component="rule manager" msg="Starting rule manager..."
Hint: Some lines were ellipsized, use -l to show in full.
[root@master ~]#
3、grafana安装
1)将下载的granfa安装包上传的监控机器/opt目录下,并对其解压安装
[root@master opt]# ll
总用量 174664
-rw-r--r--. 1 root root 87661825 7月 19 10:03 grafana-enterprise-10.0.2-1.x86_64.rpm
drwxr-xr-x. 5 1001 123 144 7月 19 2023 prometheus
-rw-r--r--. 1 root root 91189594 7月 19 2023 prometheus-2.45.0.linux-amd64.tar.gz
[root@master opt]# yum install grafana-enterprise-10.0.2-1.x86_64.rpm
2)待安装完毕后,启动grafana服务,查看到服务状态如下正常。
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl start grafana-server
[root@master ~]# systemctl status grafana-server
● grafana-server.service - Grafana instanceLoaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: disabled)Active: active (running) since 三 2023-07-19 1015 CST; 25s agoDocs: http://docs.grafana.orgMain PID: 6945 (grafana)CGroup: /system.slice/grafana-server.service└─6945 /usr/share/grafana/bin/grafana server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=rpm cfg:default.paths.logs=/var/log/gr...7月 19 1015 master grafana[6945]: logger=ngalert.state.manager t=2023-07-19T1015.24341291+08:00 level=info msg="Warming state cache for startup"
7月 19 1015 master grafana[6945]: logger=caching.service t=2023-07-19T1015.24445863+08:00 level=warn msg="Caching service is disabled"
7月 19 1015 master grafana[6945]: logger=report t=2023-07-19T1015.244980141+08:00 level=warn msg="Scheduling and sending of reports disabled, SMTP is not configured ... to enable."
7月 19 1015 master grafana[6945]: logger=http.server t=2023-07-19T1015.250259745+08:00 level=info msg="HTTP Server Listen" address=[::]:3000 protocol=http subUrl= socket=
7月 19 1015 master grafana[6945]: logger=sqlstore.transactions t=2023-07-19T1015.267350682+08:00 level=info msg="Database locked, sleeping then retrying" error="data...e is locked"
7月 19 1015 master grafana[6945]: logger=ngalert.state.manager t=2023-07-19T1015.268604707+08:00 level=info msg="State cache has been initialized" states=0 duration=25.191797ms
7月 19 1015 master grafana[6945]: logger=ticker t=2023-07-19T1015.268828111+08:00 level=info msg=starting first_tick=2023-07-19T1020+08:00
7月 19 1015 master grafana[6945]: logger=ngalert.multiorg.alertmanager t=2023-07-19T1015.268860012+08:00 level=info msg="starting MultiOrg Alertmanager"
7月 19 1016 master grafana[6945]: logger=grafana.update.checker t=2023-07-19T1016.035234839+08:00 level=info msg="Update check succeeded" duration=795.319198ms
7月 19 1016 master grafana[6945]: logger=plugins.update.checker t=2023-07-19T1016.117663666+08:00 level=info msg="Update check succeeded" duration=874.346258ms
Hint: Some lines were ellipsized, use -l to show in full.
[root@master ~]#
3)将grafana-server服务设置为开机自启动
systemctl enable grafana-server
4)通过以下地址访问garfana,并且配置相应的数据源
http://192.168.20.231:3000/login
登录界面如下所示,默认用户名及密码分别是admin,admin
5)登录进入grafana系统后,对数据源进行配置,点击,add your first data source,进入添加数据源页面:
6)进入后,点击Prometheus,进入配置页面;
7)编辑HTTP下的URL,这里是主机IP是192.168.20.231,所以填:http://192.68.20.231:9090
8)拉到最底部进行保存,如下所示即为保存成功。
4、监控主机中安装node_exporter
1)在监控主机上安装最新的node_exporter版本
首先在监控主机192.168.20.231上进行安装该组件。
下载最新的node_exporter版本
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
下载完成后如下图所示:
2)对软件压缩包进行解压,并且将安装包放到自己系统安装目录下,我自己放在/usr/local/目录中
[root@master ruanjianfile]# tar -xzf node_exporter-1.6.1.linux-amd64.tar.gz [root@master ruanjianfile]# mv node_exporter-1.6.1.linux-amd64 /usr/local/
3)将安装包中的可执行文件node_exporter拷贝到/usr/local/bin目录中
mv /usr/local/node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
4)为node_exporter服务创建service服务
vim /usr/lib/systemd/system/node_exporter.service
大家根据自己实际安装目录,写入cat命令相关内容到上述文件中。
[root@master ruanjianfile]# cat /usr/lib/systemd/system/node_exporter.service [Unit] Description=node_exporter Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target
5)为node_exporter设置自动启动并启动服务
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter
6)查看node_exporter服务状态,如下服务状态为正常状态
[root@master ~]# systemctl status node_exporter
● node_exporter.service - node_exporterLoaded: loaded (/usr/lib/systemd/system/node_exporter.service; enabled; vendor preset: disabled)Active: active (running) since 三 2023-07-19 1407 CST; 3min 0s agoDocs: https://prometheus.io/Main PID: 7146 (node_exporter)CGroup: /system.slice/node_exporter.service└─7146 /usr/local/bin/node_exporter7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.181Z caller=node_exporter.go:117 level=info collector=thermal_zone
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.181Z caller=node_exporter.go:117 level=info collector=time
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.181Z caller=node_exporter.go:117 level=info collector=timex
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.181Z caller=node_exporter.go:117 level=info collector=udp_queues
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.181Z caller=node_exporter.go:117 level=info collector=uname
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.181Z caller=node_exporter.go:117 level=info collector=vmstat
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.181Z caller=node_exporter.go:117 level=info collector=xfs
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.181Z caller=node_exporter.go:117 level=info collector=zfs
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.182Z caller=tls_config.go:274 level=info msg="Listening on" address=[::]:9100
7月 19 14:25:07 master node_exporter[7146]: ts=2023-07-19T06:25:07.182Z caller=tls_config.go:277 level=info msg="TLS is disabled." http2=f...::]:9100
Hint: Some lines were ellipsized, use -l to show in full.
[root@master ~]#
5、监控主机中进行监控相关参数配置
1)vi编辑修改prometheus中相关配置文件;
主要在对应该控件软件安装目录下/opt/prometheus/prometheus.yml这个文件中;
在原文件的scrape_configs模块下增加如下配置内容:
- job_name: 'master_prometheus'static_configs:- targets: ['192.168.20.231:9100']
修改后/opt/prometheus/prometheus.yml如下所示:
复制[root@master prometheus]# cat prometheus.yml
# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]- job_name: 'master_prometheus'static_configs:- targets: ['192.168.20.231:9100']
2)检查配置是否正确:
养成好习惯,每次修改配置文件完成,用promtool检测配置文件是否正确。如下检查配置文件正确方可执行下一步。
[root@master prometheus]# /opt/prometheus/promtool check config /opt/prometheus/prometheus.yml
Checking /opt/prometheus/prometheus.ymlSUCCESS: /opt/prometheus/prometheus.yml is valid prometheus config file syntax[root@master prometheus]#
3)重启prometheus服务进行相关测试
systemctl restart prometheus
打开如下测试地址
http://192.168.20.231:9090/targets
如下图所示,可以看到targets已经增加了对监控主机master_prometheus的监控。
6、被监控主机中安装node_exporter及进行参数配置
首先在被监控主机192.168.20.232上进行安装该组件。
1)安装步骤参考监控主机中node_exporter安装这个章节,安装方法步骤一样。
2)在监控主机192.168.20.231上修改对应配置文件,
修改/opt/prometheus/prometheus.yml这个文件后面,添加如下内容:
- job_name: "node1-prometheus"static_configs:- targets: ['192.168.20.232:9100']
3)检测配置文件正常后,重启服务
[root@master prometheus]# /opt/prometheus/promtool check config /opt/prometheus/prometheus.yml
Checking /opt/prometheus/prometheus.ymlSUCCESS: /opt/prometheus/prometheus.yml is valid prometheus config file syntax[root@master prometheus]# systemctl restart prometheus
4)待服务起来后,打开下面地址进行测试
http://192.168.20.231:9090/targets
正常如下图所示,targets已经增加了对被监控主机node1的监控。
7、grafana中添加配置监控模板
1)如图点击“+”号后,选择import dashboard
2)如下图,搜索系统默认模板8919,然后点击Load
3)点Load后,稍等会,grafana会直接从官方网站导入编号为8919的面板如下图所示:
4)选择数据源Prometheus-1,点击“Import”,显示master和node1监控界面显示如下图所示:
六、总结
至此、整套Prometheus监控系统已经部署完毕,并且已经可以正常监控。但是其展示的只是它本身最基本的功能,其它组件及模块相关的功能配置,要靠大家自行去研究学习,那样方可发挥出它强大的监控系统功能。
相关文章:

prometheus+grafana的安装与部署及优点
一、Prometheus 的优点 1、非常少的外部依赖,安装使用超简单; 2、已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等; 3、服务自动化发现; 4、直接集成到代码; 5、设计思想是按照分布式、微服…...

JWK和JWT 学习
JWK和JWT 介绍 JWK (JSON Web Key) 和 JWT (JSON Web Token) 是现代Web应用程序中用于安全通信的两个重要概念。它们都是基于JSON的,并且是OAuth 2.0和OpenID Connect等协议的核心组成部分。 官方文档 JWT官方网站 JWK和JWK Set的RFC文档 JWT的RFC文档 JWK (JS…...

Go 使用mqtt
1、创建一个文件夹,并且使用go modules go mod init <module_name> 其中<module_name>是你的模块名称,如下 go mod init example.com/myproject 2、安装mqtt扩展 go get github.com/eclipse/paho.mqtt.golang 3、开始写主程序 package ma…...

C++ primer plus习题及解析第十二章(类和动态内存分配)
题目:12.1 题: 对于下面的类声明: class Cow { private:char name[20];char* hobby;double weight; public:Cow();Cow(const char* nm, const char* ho, double wt);//有参构造Cow(const Cow& c);//拷贝构造函数~Cow();//析构函数Cow&…...

gdb调试功能描述
gdb调试功能描述 gdb 调试:只对可执行文件进行调用,无法直接用gdb调试.c文件 1.查找命令帮助: (gdb) help data (gdb) help call -l (list) 查看载入文件(默认为10行)…...

使用Simulink Test进行单元测试
本文摘要:主要介绍如何利用Simulink Test工具箱,对模型进行单元测试。内容包括,如何创建Test Harness模型,如何自动生成excel格式的测试用例模板来创建测试用例,如何手动填写excel格式的测试用例模板来手动创建测试用例…...

深度学习中超参数设置
1、batchsize 在训练深度学习模型时,batch size(批大小)和 epochs(迭代次数)之间的关系取决于您的数据集大小、模型复杂度、计算资源等因素。下面是一些一般性的指导原则: 较大的 Batch Size:通…...

Docker nsenter 命令使用
查看容器对应宿主机上面的pid,容器技术的实质是进程,并没有完整的操作系统,就相当于在主机上面fork了一个子进程,通过docker daemon去fork一个子进程,这个子进程是可以在主机上面看到其pid的。 $ docker inspect -f {…...

十二种网络威胁防护方案
一、SQL注入 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任…...

C++ sort()排序详解
头文件 在C中使用sort()函数需要使用#include<algorithm> sort()基本使用方法 sort()函数可以对给定区间所有元素进行排序。它有三个参数sort(begin, end, cmp) 其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的…...

移动机器人系统与技术:自动驾驶、移动机器人、旋翼无人机
这本书全面介绍了机器人车辆的技术。它介绍了道路上自动驾驶汽车所需的概念。此外,读者可以在六足机器人的构造、编程和控制方面获得宝贵的知识。 这本书还介绍了几种不同类型旋翼无人机的控制器和空气动力学。它包括各种旋翼推进飞行器在不同空气动力学环境下的模…...

zTasker v1.88.1一键定时自动化任务
软件介绍 zTasker是一款完全免费支持定时、热键或条件触发的方式执行多种自动化任务的小工具,支持win7-11。其支持超过100种任务类型,50种定时/条件执行方法,而且任务列表可以随意编辑、排列、移动、更改类型,支持任务执行日志&a…...

时序医疗数据集---adfecgdb
数据集简介 该数据库包含了在波兰西里西亚医科大学妇产科,通过使用KOMPOREL系统收集的5位临产孕妇(孕38至41周)的多通道胎儿心电图(FECG)记录。这些记录通过腹部四个电极和安置在胎儿头部的直接心电图电极同步收集&am…...

ruoyi-vue-pro 使用记录(4)
ruoyi-vue-pro 使用记录(4) CRM数据库线索客户商机合同回款产品其他 CRM 文档 主要分为 6 个核心模块:线索、客户、商机、合同、回款、产品。 线索管理以 crm_clue 作为核心表客户管理以 crm_customer 作为核心表商机管理以 crm_business 作…...

【17-Ⅱ】Head First Java 学习笔记
HeadFirst Java 本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…...

订单超时自动取消的实践方案
1、定时任务方案 方案流程: 每隔 30 秒查询数据库,取出最近的 N 条未支付的订单。 遍历查询出来的订单列表,判断当前时间减去订单的创建时间是否超过了支付超时时间,如果超时则对该订单执行取消操作。 定时任务方案工程实现相…...

【gin框架入门】
1.介绍 Gin 是一个用 Golang编写的 高性能的web 框架, 由于http路由的优化,速度提高了近 40 倍。 Gin的特点就是封装优雅、API友好。 Gin的一些特性: 快速 基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。 支持中间件 传入…...

dev c++调试录入数字后回车直接关闭
1、我的dev c版本是5.11 2、输入7后,回车就没有了,原因是1013,1.cpp未包含在项目中 3、新建项目,并将test_debug.cpp包含在项目内,就可以下断点调试了...

java期末复习
java jdk jre jvm .java-------->.class----jvm---->机器语言 编写源文件 编译源文件生成字节码 加载运行字节码 java语句执行顺序 顺序 选择 循环 异常处理 基本语法 方法格式 权限修饰符 返回值声明 方法名称(参数列表){方法中封装的逻辑功能;return 返回值;}–权…...

让新手变中手的ChatGPT 使用方法
让新手变中手的ChatGPT 使用方法 已经要一年了,没想到这篇还是一样有用。看到许多依然是一句话就要问出结果的教学,就知道AI 进步很快,但人的学习速度还需要更多时间。 以下为去年原版内容加上新的两招更新,希望帮助你使用ChatGPT 更好用,当未来文字可直接生成影像时,你…...

桥接模式类图与代码
欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表 7.7 所示。 根据绘图软件的扩展性要求,该绘图软件将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接…...

Oracle count的优化-避免全表扫描
Oracle count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单,但很有玄机!对这句话运行的理解,反映了你对数据库的理解深度! 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table t1 purge…...

leetcode17. 电话号码的字母组合
题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits "…...

如何设计与管理一个前端项目
目录 前端项目设计 前端项目搭建 洞察项目瓶颈 方案调研与选型对比 前端项目管理 合理的分工排期 风险把控 及时反馈与复盘 结束语 如果说基础知识的掌握是起跑线,那么使大家之间拉开差距的更多是前端项目开发经验和技能。对于一个项目来说,从框…...

【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-05-11 0…...

用云手机打造海外社媒矩阵
在全球经济一体化的大背景下,中国出海企业及B2B外贸公司正将海外社交媒体营销作为重要的市场拓展策略。为更好地触及不同受众群体,构建跨平台的社媒矩阵已成为企业营销的关键步骤。本文将探讨如何利用云手机技术,高效管理并运营多个海外社交媒…...

第 8 章 机器人平台设计之底盘实现(自学二刷笔记)
重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.1 底盘实现_概述 1.ros_arduino_bridge 简介 该功能包包含Arduino库和用来控制Arduino的ROS驱动包&…...

✔ ★Java项目——设计一个消息队列(五)【虚拟主机设计】
虚拟主机设计 创建 VirtualHost实现构造⽅法和 getter创建交换机删除交换机创建队列删除队列创建绑定删除绑定发布消息 ★路由规则1) 实现 route ⽅法2) 实现 checkRoutingKeyValid3) 实现 checkBindingKeyValid4) 实现 routeTopic5) 匹配规则测试⽤例6) 测试 Router 订阅消息1…...

ntfs文件系统的优势 NTFS文件系统的特性有哪些 ntfs和fat32有什么区别 苹果电脑怎么管理硬盘
对于数码科技宅在新购得磁盘之后,出于某种原因会在新的磁盘安装操作系统。在安装操作系统时,首先要对磁盘进行分区和格式化,而在此过程中,操作者们需要选择文件系统。文件系统也决定了之后操作的流程程度,一般文件系统…...

Python Web框架Django项目开发实战:创建在线学习应用
注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:Python项目开发Django实战-创建在线学习应用-编程案例解析实例详解课程教程.pdf 在当今数字化教…...