图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)

news2024/10/3 10:39:05

一、环境介绍

本文环境,以及本文所采用数据库为GreatSQL 8.0.32-24

$ cat /etc/system-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
$ uname -a
Linux gip 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
$ ldd --version
ldd (GNU libc) 2.17

二、手动安装

0.简单介绍

  • Prometheus Server : 用于收集和存储时间序列数据。
  • Client Library : 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。当Prometheus server 来 pull 时,直接返回实时状态的 metrics。
  • Push Gateway : 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的metrics,对于机器层面的 metrices,需要使用 node exporter。
  • Exporters : 用于暴露已有的第三方服务的 metrics 给 Prometheus。
  • Alertmanager : 从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接收方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。

网上介绍很多这里就不再过多介绍了

1.安装Prometheus

官网下载最新二进制安装包➥ https://prometheus.io/download/

可以看到有很多的版本,这里选择LTS的版本,LTS在软件版本中通常表示Long Term Support,即长期支持版本,对于Prometheus来说,LTS版本表示这个版本会获得更长期的支持和维护,而非LTS版本则更新频繁,新特性来得快,但稳定性和支持周期较短,所以在追求稳定的生产环境中,建议优先考虑使用LTS长期支持版本。

file

这里选择二进制软件包prometheus-2.45.0.linux-amd64.tar.gz

$ mkdir /usr/local/prometheus
$ cd /usr/local/prometheus
$ wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz

下载完成后,用sha256sum校验一下安装包,没问题的话解压即可

$ sha256sum prometheus-2.45.0.linux-amd64.tar.gz
1c7f489a3cc919c1ed0df2ae673a280309dc4a3eaa6ee3411e7d1f4bdec4d4c5
$ tar xvf prometheus-2.45.0.linux-amd64.tar.gz 

建议使用systemctld来管理守护进程Prometheus服务

若文件路径或名字和本文不同记得修改

$ vi /lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
Type=simple
User=root
Group=root
Restart=on-abnormal
ExecStart=/usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus \
  --config.file=/usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus.yml \
  --storage.tsdb.path=/usr/local/prometheus/prometheus-2.45.0.linux-amd64/data \
  --storage.tsdb.retention.time=60d \
  --web.enable-lifecycle

[Install]
WantedBy=multi-user.target

使用$ ./prometheus -h 就可以看到帮助信息

通知systemd重新加载配置文件

$ systemctl daemon-reload

以下为相关systemd命令

$ systemctl enable prometheus.service # 设置为开机自启动 $ systemctl disable prometheus.service # 如果不想设置为开机自启动,可以关闭 $ systemctl start prometheus.service # 开启服务 $ systemctl status prometheus.service # 查看状态 $ systemctl restart prometheus.service # 重启服务 $ systemctl stop prometheus.service # 停止服务

启动Prometheus server,并查看是否启动成功active (running)

$ systemctl start prometheus.service

$ systemctl status prometheus.service
● prometheus.service - Prometheus server
   Loaded: loaded (/usr/lib/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: active (running) since 三 2023-09-06 16:14:34 CST; 2s ago
     Docs: https://prometheus.io/docs/introduction/overview/
 Main PID: 21472 (prometheus)
   CGroup: /system.slice/prometheus.service
           └─21472 /usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus --config.file=/usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus.yml --storage.tsdb.path=/usr/local/pr...
#下方省略

若启动失败可自行排查 $ journalctl -u prometheus.service -f

访问地址:

名称地址
prometheushttp://172.17.137.104:9090/
监控指标http://172.17.137.104:9090/metrics

界面如下:

file

安装完成Prometheus,接下来安装Alertmanager

2.安装Alertmanager

官网下载➥ https://prometheus.io/download/

file

这里我们选择alertmanager-0.26.0.linux-amd64.tar.gz

$ cd /usr/local/prometheus
$ wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz

下载完成后,用sha256sum校验一下安装包,没问题的话解压即可

$ sha256sum alertmanager-0.26.0.linux-amd64.tar.gz
abd73e2ee6bf67d3888699660abbecba7b076bf1f9459a3a8999d493b149ffa6
$ tar xvf alertmanager-0.26.0.linux-amd64.tar.gz

建议使用Systemd来管理守护进程Alertmanager服务

若文件路径或名字,和下方示例不同记得修改

$ vi /lib/systemd/system/alertmanager.service
[Unit]
Description=Alert Manager
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/usr/local/prometheus/alertmanager-0.26.0.linux-amd64/alertmanager \
  --config.file=/usr/local/prometheus/alertmanager-0.26.0.linux-amd64/alertmanager.yml \
  --storage.path=/usr/local/prometheus/alertmanager-0.26.0.linux-amd64/data

[Install]
WantedBy=multi-user.target

通知systemd重新加载配置文件

$ systemctl daemon-reload

启动alertmanager.service

$ systemctl start alertmanager.service

若启动失败可自行排查journalctl -u alertmanager.service -f

访问地址

应用名称地址
Alertmanagerhttp://172.17.137.104:9093/

Alertmanager界面如下

file

添加Prometheus配置

因为我们安装了Alertmanager,所以需要添加到Prometheus里面

$ vi /usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus.yml

# - alertmanager:9093修改为localhost:9093

因为我们是装在同一个机器上,所以是localhost,若安装不在同一个机器上请修改为正确IP地址

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - localhost:9093 <--修改这里,注意缩进

注意!yml文件是有缩进格式的,修改时不要打乱原有格式

rule_files:添加- "alert.yml",前面缩进只需保留两格!

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "alert.yml"  <--添加这里,注意缩进2格即可
  # - "first_rules.yml"
  # - "second_rules.yml"

增加触发器配置文件

编辑新文件alert.yml添加以下内容,注意格式缩进

$ vi /usr/local/prometheus/prometheus-2.45.0.linux-amd64/alert.yml

groups:
- name: Prometheus alert
  rules:
  # 任何实例超过30s无法联系的情况发出告警
  - alert: 服务告警
    expr: up == 0
    for: 30s
    labels:
      severity: critical
    annotations:
      instance: "{{ $labels.instance  }}"
      description: "{{ $labels.job  }} 服务已关闭"

检查一下配置文件,与下方一致即为成功

$ cd /usr/local/prometheus/prometheus-2.45.0.linux-amd64
$ ./promtool check config prometheus.yml
Checking prometheus.yml
  SUCCESS: 1 rule files found
 SUCCESS: prometheus.yml is valid prometheus config file syntax

Checking alert.yml
  SUCCESS: 1 rules found

接下来重启一下Prometheus或重新加载配置文件

$ systemctl restart prometheus
# 二选一即可
$ curl -X POST http://localhost:9090/-/reload

再次访问http://172.17.137.104:9093/,并检查Status,确认没有问题

file

3.安装Grafana

官网下载Grafana➥https://grafana.com/grafana/download

进入官网后选择Linux,下方会展示出安装方式,这里选择二进制的方式安装

$ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.1.1.linux-amd64.tar.gz
$ tar -zxvf grafana-enterprise-10.1.1.linux-amd64.tar.gz

创建 Systemd 服务

$ vi /lib/systemd/system/grafana-server.service
[Unit]
Description=Grafana server
Documentation=https://doce.grafana.org

[Service]
Type=simple
User=root
Group=root
Restart=on-abnormal
ExecStart=/usr/local/prometheus/grafana-10.1.1/bin/grafana-server \
  --config=/usr/local/prometheus/grafana-10.1.1/conf/defaults.ini \
  --homepath=/usr/local/prometheus/grafana-10.1.1

[Install]
WantedBy=multi-user.target

通知 Systemd 重新加载配置文件

$ systemctl daemon-reload

启动grafana-server.service

$ systemctl start grafana-server.service

若启动失败可自行排查journalctl -u grafana-server.service -f

访问地址

应用名称地址
Grafanahttp://172.17.137.104:3000/

file

没问题安装成功!

4.安装node_exporter

下载node_exporter➥ https://prometheus.io/download/

下拉网页找到node_exporter选择对应文件名下载即可

$ wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
#验证一下是否下载完整
$ sha256sum node_exporter-1.6.1.linux-amd64.tar.gz
$ tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz

创建 Systemd 服务

$ vi /lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
Group=root
Restart=on-abnormal
ExecStart=/usr/local/prometheus/node_exporter-1.6.1.linux-amd64/node_exporter

[Install]
WantedBy=multi-user.target

通知 Systemd 重新加载配置文件

$ systemctl daemon-reload

启动alertmanager.service

$ systemctl start node_exporter.service

若启动失败可自行排查journalctl -u node_exporter.service -f

node_exporter访问地址:

应用名称地址
node_exporterhttp://172.17.137.104:9100/metrics

添加Prometheus配置

安装完成后还需要添加Prometheus配置,为避免大家打错,这里采用追加写入

$ cat >> /usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus.yml <<"EOF"
# 在scrape_configs这行下面添加配置
  - job_name: "node-exporter"
    scrape_interval: 15s
    static_configs:
      - targets: ["localhost:9100"]
        labels:
          instance: prometheus服务器
EOF

重载Prometheus配置

$ curl -X POST http://localhost:9090/-/reload

Prometheus web上检查一下http://172.17.137.104:9090/,点击Status->Targets

file

可以看到有node_exporter,以及可以检查下我们配置的触发器Alerts->勾选Inactive

file

至此,通过二进制安装Prometheus就到此完成!

三、使用Grafana

1. 添加Prometheus数据源

我们可以进入Grafana对监控的内容做一个图形的展示,登入http://172.17.137.104:3000/

file

输入默认用户名admin,默认密码admin,之后会提示你修改密码,然后就成功登入Grafana

file

进入后添加Prometheus的数据源,在Connections里有Data sources,总之找到Data sources即可

file

点击Add data source选择Prometheus,进入配置

file

在红框处填写Prometheus地址,因为本文部署在本机,所以是localhost,填写完成后滑动页面到最下方,点击Save & test保存和测试

2.导入Grafana仪表盘

下载Grafana仪表盘➥https://grafana.com/grafana/dashboards/

file

红框框起来的就是我们需要下载的Node Exporter Full,如果首页没有展示的话,可以直接搜索

点击进去,选择Copy ID to clipboard复制ID

file

进入http://172.17.137.104:3000/到Grafana上,选择Dashboards,点击New

file

选择Import

file

在红框处粘贴刚刚复制的,其实也就是1860,接着点击LOAD加载

file

可以修改一下名字,在选择下Prometheus点击Import导入即可

file

这样就完成了Grafana对Prometheus数据的展示

四、监控GreatSQL

不建议采用GreatSQL的root用户监控,因为root的权限非常大,所以我们进入GreatSQL先创建一个用于监控的用户

greatsql> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'GreatSQL@666';
greatsql> GRANT PROCESS,REPLICATION CLIENT,SELECT ON *.* TO 'exporter'@'localhost';

接下来需要安装mysqld_exporter,本文依旧采用二进制方式安装

在[点击此处下载https://prometheus.io/download/中找到`mysqld_exporter`,下载即可

$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz
#验证一下是否下载完整
$ sha256sum mysqld_exporter-0.15.0.linux-amd64.tar.gz
$ tar -xvf mysqld_exporter-0.15.0.linux-amd64.tar.gz

创建一个连接数据库的文件.mysqld_exporter.cnf

$ vi /usr/local/prometheus/mysqld_exporter-0.15.0.linux-amd64/.mysqld_exporter.cnf
#填入以下内容即可
[client]
user=exporter
password=GreatSQL@666
host=localhost
port=3306

创建 Systemd 服务

$ vi /lib/systemd/system/mysqld_exporter.service
[Unit]
Description=Prometheus GreatSQL
After=network.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/usr/local/prometheus/mysqld_exporter-0.15.0.linux-amd64/mysqld_exporter \
  --config.my-cnf=/usr/local/prometheus/mysqld_exporter-0.15.0.linux-amd64/.mysqld_exporter.cnf \
  --collect.global_status \
  --collect.auto_increment.columns \
  --collect.info_schema.processlist \
  --collect.binlog_size \
  --collect.info_schema.tablestats \
  --collect.global_variables \
  --collect.info_schema.innodb_metrics \
  --collect.info_schema.query_response_time \
  --collect.info_schema.userstats \
  --collect.info_schema.tables \
  --collect.perf_schema.tablelocks \
  --collect.perf_schema.file_events \
  --collect.perf_schema.eventswaits \
  --collect.perf_schema.indexiowaits \
  --collect.perf_schema.tableiowaits \
  --collect.slave_status \
  --collect.perf_schema.replication_group_members \
  --collect.perf_schema.replication_group_member_stats \
  --web.listen-address=0.0.0.0:9104

[Install]
WantedBy=multi-user.target

通知 Systemd 重新加载配置文件

$ systemctl daemon-reload

启动alertmanager.service

$ systemctl start mysqld_exporter.service

若启动失败可自行排查journalctl -u mysqld_exporter.service -f

访问一下看看能否成功http://172.17.137.104:9104

1.添加Prometheus配置

安装完成后还需要添加Prometheus配置,为避免大家打错,这里采用追加写入

$ cat >> /usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus.yml <<"EOF"
# mysqld-exporter配置
  - job_name: "mysqld-exporter"
    static_configs:
      - targets: ["localhost:9104"]
        labels:
          instance: prometheus服务器
EOF

重载Prometheus配置

$ curl -X POST http://localhost:9090/-/reload

Prometheus web上检查一下http://172.17.137.104:9090/,点击Status->Targets

file

2.增加触发器配置文件

编辑prometheus.ymlrule_files:添加- "alert.yml",前面缩进只需保留两格!

$ vi /usr/local/prometheus/prometheus-2.45.0.linux-amd64/prometheus.yml

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "alert.yml"
  - "rules/*.yml"  <-添加这里,注意缩进2格即可
  # - "first_rules.yml"
  # - "second_rules.yml"

表示把rules文件夹下的所有yml文件都导入进来

$ mkdir /usr/local/prometheus/prometheus-2.45.0.linux-amd64/rules
$ vi /usr/local/prometheus/prometheus-2.45.0.linux-amd64/rules/mysqld.yml
groups:
- name: GreatSQL
  rules:
  # 任何实例超过30s无法联系的情况发出告警
  - alert: GreatSQLDown
    expr: mysql_up == 0
    for: 30s
    labels:
      severity: critical
    annotations:
      summary: "GreatSQL Down,实例:{{ $labels.instance }}"
      description: "连接不上GreatSQL了,当前状态为:{{ $value }}"

类似的告警信息都可以自行编写

检查一下配置文件,出现SUCCESS: prometheus.yml is valid prometheus config file syntax即为成功

$ cd /usr/local/prometheus/prometheus-2.45.0.linux-amd64
$ ./promtool check config prometheus.yml
Checking prometheus.yml
  SUCCESS: 2 rule files found
 SUCCESS: prometheus.yml is valid prometheus config file syntax
Checking alert.yml
  SUCCESS: 1 rules found
Checking rules/mysqld.yml
  SUCCESS: 1 rules found

接下来重启一下 Prometheus 或重新加载配置文件

$ systemctl restart prometheus
# 二选一即可
$ curl -X POST http://localhost:9090/-/reload

再次访问http://172.17.137.104:9093/,并检查Status,确认没有问题

3.导入Grafana仪表盘

展示 Prometheus 从 mysql_exporter 收集到的数据,添加仪表盘ID7362

file

修改名称后点击Import即可

file

可以看到页面中已经展示了许多内容,例如GreatSQL数据库运行的时间,QPS值,InnoDB Buffer Pool Size,Buffer Poll of Total RAM等

这里Buffer Poll of Total RAM值有些低,说明设置的InnoDB buffer pool大小不对,应该设置约占用总内存的50%到75%,这样可以合理利用内存,提高缓存命中率。

来简单看几个监控项目的意义和内容

  • MySQL Connections,监控GreatSQL的连接数,有最大连接数及最大使用连接数
  • MySQL Client Thread Activity,监控GreatSQL的活动线程数,有连接线程数(Threads Connected)和运行线程数(Threads Running)
  • MySQL Table Locks,监控GreatSQL的表锁,我们可以看到GreatSQL从存储引擎请求了多少表级锁。在InnoDB的情况下,很多时候锁实际上可能是行锁,因为它只在少数特定情况下使用表级锁。比较“立即锁定”和“等待锁定”最有用。如果等待的锁数正在上升,则表示存在锁争用。否则,锁立即上升和下降是正常活动。

来查看下QPS是如何监控的,鼠标移动到内容的右上角,会出现三个点,点击Edit,进入编辑

file

可以看到如下内容

file

这段监控规则中使用了rate()和irate()函数来计算GreatSQL queries状态计数器的速率。

  • mysql_global_status_queries{instance="$host"} 表示提取实例$host的queries全局状态计数器。
  • rate()函数计算该计数器在$interval时间段内的每秒速率。
  • irate()函数计算该计数器在最近5分钟的每个瞬时速率。
  • 或运算符表示取这两者中的较大值。

如果觉得你想监控的内容没有你想要的,可以点击右上角Add,点击Visualization添加监控内容

file

例如我想添加一个group_replication_flow_control_countMGR累计触发流控的次数,在Select metric中搜索想监控的状态,

file

label标签

Label filters用于过滤和选择时间序列数据。它可以针对特定的标签值来选择显示哪些时间序列。

例如instance="192.168.1.1:9090"表示只选择instance标签值为"192.168.1.1:9090"的时间序列。

可以在Grafana的面板中使用Label filters字段来指定过滤条件,其作用主要包括:

  • 选择特定实例的数据:如instance="A" 只看实例A的数据
  • 查看特定模式匹配的实例:如instance=~"10\\.8\\..*"选取符合模式的实例
  • 查看某个状态的序列:state="200" 只看状态码为200的
  • 组合多个标签进行过滤: instance=~"1\\d\\.8\\..*",state!="500"
  • 也可以直接输入PromQL进行各种复杂过滤

Operations

Operations选项允许对查询结果进行各种操作,常用的操作及含义如下:

  • Rate:计算计数器的增长速率,常用于计数器指标的速率转换,如QPS。
  • Delta:计算时间序列的增量变化值。
  • Derivative:计算时间序列的一阶导数,表示瞬时变化率。
  • Integral:对时间序列求积分,计算面积图。
  • Aggregation:对结果series做聚合,如平均,最大最小值等。
  • Transform:进行数学变换,如log等。
  • Aliasing:结果串进行重命名。
  • Group by:分组归类。

我们可以选中Metric后,在Operations下拉列表中选择所需要的计算操作。这些操作无需修改PromQL查询语句,在结果集上进行,可以方便地衍生出新的时间序列。例如可以将 COUNTER 计数器转换为 QPS 速率等。这为Grafana提供了灵活的统计和分析能力。

添加完成参数后点击Apply应用即可,回到界面上就可以看到刚刚添加的监控项了

file

记得要对整个仪表盘也保存,点击右上角图标如下所示,保存即可

file

也可以对表的情况进行监控,只需导入仪表盘ID9625

file

至此,通过Prometheus监控GreatSQL到此结束,下部文章将介绍如何使用告警功能

使用Prometheus并不太好监控GreatSQL的MGR,推荐还是使用PMM来监控

欢迎阅读《使用PMM图形化监控MySQL MGR动态》https://mp.weixin.qq.com/s/8v94kxczl5m0MFcp_Dm87w

相关文章:

  • 技术分享 | Prometheus+Grafana监控MySQL浅析➥https://mp.weixin.qq.com/s/Y8YHE7_oBPIfceV8HVywtw

  • Prometheus+Grafana+钉钉部署一个单机的MySQL监控告警系统➥https://mp.weixin.qq.com/s/vck-uD2mmZSQ-RvzU9b0ug


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

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

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

相关文章

Xcode 15下,包含个推的项目运行时崩溃的处理办法

升级到Xcode15后&#xff0c;部分包含个推的项目在iOS17以下的系统版本运行时&#xff0c;会出现崩溃&#xff0c;由于崩溃在个推Framework内部&#xff0c;无法定位到具体代码&#xff0c;经过和个推官方沟通&#xff0c;确认问题是项目支持的最低版本问题。 需要将项目的最低…

关于 打开虚拟机出现“...由VMware产品创建,但该产品与此版VMwareWorkstateion不兼容,因此无法使用” 的解决方法

文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/133678951 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

我的创业之路:我为什么选择 Angular 作为前端的开发框架?

我是一名后端开发人员&#xff0c;在上班时我的主要精力集中在搜索和推荐系统的开发和设计工作上&#xff0c;我比较熟悉的语言包括java、golang和python。对于前端技术中typescript、dom、webpack等流行的框架和工具也懂一些。目前&#xff0c;已成为一名自由职业者&#xff0…

通用监控视频web播放方案

业务场景 对接监控视频&#xff0c;实现海康大华等监控摄像头的实时画面在web端播放 方案一&#xff0c;使用 RTSP2webnode.jsffmpeg 说明&#xff1a;需要node环境&#xff0c;原理就是RTSP2web实时调用ffmpeg解码。使用单独html页面部署到服务器后&#xff0c;在项目中需要播…

【stm32芯片设置解惑】:stm32F103系列的开漏输出和推挽输出的区别

场景&#xff1a; 大家在开发stm32的时候&#xff0c;不管是标准库开发还是hal库开发&#xff0c;最基础的就是芯片引脚的某某设置&#xff0c;为什么这么设置&#xff1f;这样设置的好处是什么&#xff1f; 问题描述 — 开漏输出和推挽输出的用处和区别 什么是开漏输出&#x…

Android Studio修改模拟器AVD Manger目录

Android Studio修改虚拟机AVD Manger目录 1、在AS的设备管理器Device Manager中删除原来创建的所有虚拟机&#xff08;Android Virtual Device&#xff09;&#xff1b; 2、新建一个自定义的AVD目录&#xff0c;例如&#xff1a;D:\Android\AndroidAVD 3、在高级系统设置中增加…

ArcGIS中的镶嵌数据集与接缝线

此处介绍一种简单方法&#xff0c;根据生成的轮廓线来做镶嵌数据集的拼接。 一、注意修改相邻影像的上下重叠。注意修改ZOrder和每幅影像的范围。 二、修改新的镶嵌线并且导出影像文件。 三、还有其他方法和注意事项。

c++视觉--通道分离,合并处理,在分离的通道中的ROI感兴趣区域里添加logo图片

c视觉–通道分离&#xff0c;合并处理 通道分离: split()函数 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg");// 检查图像是否成功加载if (image.empty()) {std::cerr << "Error: Could not read the…

MyBatis-Plus演绎:数据权限控制,优雅至极!

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是尘缘&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f449;点击这里&#xff0c;就可以查看我的主页啦&#xff01;&#x1f447;&#x…

MFC扩展库BCGControlBar Pro v33.6 - 网格、报表控件功能升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v33.6已正式发布了&#xff0c;此版本包含了对图表组件的改进、带隐藏标签的单类功能区栏…

Tomcat 9.0.41在IDEA中乱码问题(IntelliJ IDEA 2022.1.3版本)

1. 乱码的产生是由于编码和解码的编码表不一致引起的。 2. 排查乱码原因 2.1 在idea中启动Tomcat时控制台乱码排查 Tomcat输出日志乱码: 首先查看IDEA控制台&#xff0c;检查发现默认编码是GBK。 再查看Tomcat日志&#xff08;conf文件下logging.properties&#xff09;的默…

GaussDB数据库SQL系列-动态语句

目录 一、前言 二、构建动态SQL语句的基本步骤和注意事项 1、基本步骤 2、主要事项 三、GaussDB中执行动态查询语句&#xff08;示例&#xff09; 1、方式一&#xff1a;EXECUTE IMMEDIATE 2、方式二&#xff1a;OPEN FOR 四、GaussDB中的动态非查询语句&#xff08;示…

MathType2024苹果版数学公式编辑器

MathType苹果2024版是一款备受好评的数学公式编辑器&#xff0c;很多网友在编辑文本时对各种数学符号非常挠头&#xff0c;因为都不太好找&#xff0c;而这款软件能够在各种文档中加入复杂的数学公式和符号&#xff0c;并且与常见的文字处理软件和演示程序配合使用&#xff0c;…

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 RabbitMQ 集群

华为云云耀云服务器L实例评测 &#xff5c; 实例使用教学之软件安装&#xff1a;华为云云耀云服务器环境下安装 RabbitMQ 集群 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云…

差分构造法推广:arc166_d

https://atcoder.jp/contests/arc166/tasks/arc166_d 首先肯定是这样子放&#xff1a; 考虑相邻之间的差&#xff0c;本质就是橙色区间减蓝色区间数量 区间数量越少显然越优&#xff0c;所以我们要么保留橙区间&#xff0c;要么保留紫区间&#xff0c;然后两两匹配 #include…

【linux进程(三)】进程有哪些状态?--Linux下常见的三种进程状态

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux进程 1. 前言2. 操作系统…

记录极致CMS非富文本标签调用不改变格式

问题 在前台如何输出这三行是换行的 前台调用{$jz[hhl]}就变成这样了“这是第一行这是第二行这是第三行” 除了富文本还有没有什么可以实现这样的呢&#xff1f; 方法 {foreach explode("\n",$jz[hhl]) as $v} {if($v)} {$v} {/if} {/foreach}

国内就能使用的chatgpt网页版,包含AIGC应用工具

Chatgpt的出现在多个领域带来了重要的影响。它能够显著提高我们的工作效率&#xff0c;无论是编写文案代码还是回答常见问题&#xff0c;都能在短时间内完成任务。通过Chatgpt&#xff0c;我们能够迅速获取所需答案。随着人工智能技术的不断发展&#xff0c;相信在未来AI能够带…

这个物业管理技巧,你一定不能错过!

在现代社会中&#xff0c;安全是至关重要的问题&#xff0c;特别是在多层建筑、住宅社区和商业物业等繁忙场所。火灾是一种常见的灾害&#xff0c;可能对人员生命和财产造成严重威胁。 为了及早检测火灾风险并采取迅速有效的应对措施&#xff0c;烟感监控系统应运而生&#xff…

Linux搭建我的世界MC服务器 【Minecraft外网联机教程】

目录 前言 1. 安装JAVA 2. MCSManager安装 3.局域网访问MCSM 4.创建我的世界服务器 5.局域网联机测试 6.安装cpolar内网穿透 7. 配置公网访问地址 8.远程联机测试 9. 配置固定远程联机端口地址 9.1 保留一个固定tcp地址 9.2 配置固定公网TCP地址 9.3 使用固定公网…