《云原生监控》-prometheus监测技术方案

部署环境

A主机:

系统:  CentOS 7

应用: 

Docker( Prometheus + Grafana + Alertmanager + CAdvisor )

主机( Node Exporter + Consul + Confd )

B主机:

系统:  CentOS 7

应用:  

Docker( CAdvisor )

主机( Node Exporter )

总体图

下载:

Confd链接(0.16.0)  Consul链接(1.16.1)  Prometheus链接(2.4.6) 

组件总压缩包:

链接:https://pan.baidu.com/s/1UdjXhSwZkujWtj8FMccl_g?pwd=8w41 
提取码:8w41 

应用介绍

介绍Prometheus

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

Prometheus现有的支持的 Exporter

Node Exporter:Node Exporter用于监控操作系统的硬件和操作系统层面的指标。它会暴露CPU利用率、内存使用率、磁盘空间、网络流量等指标给Prometheus。 下载链接

Blackbox Exporter:  Blackbox Exporter用于对外部系统和服务进行主动性能、可用性和正确性的检测。它可以执行HTTP、TCP、ICMP等网络探针,通过配置的模块来监控目标的响应时间、状态码、SSL证书有效性等指标。 下载链接

Consul Exporter:  Consul Exporter用于将Consul中的服务和健康检查信息导出到Prometheus中。它可以将Consul的服务、节点、健康状态等指标暴露给Prometheus进行监控和报警。 下载链接

Graphite Exporter:  Graphite Exporter用于将Graphite中的指标数据导出到Prometheus中。它提供了一种将现有的Graphite监控系统和Prometheus进行整合的方式。 下载链接

Memcached Exporter:  Memcached Exporter用于监控Memcached缓存服务器的性能指标。它会将Memcached的连接数、命中率、缓存大小等指标暴露给Prometheus。下载链接

MySQL Exporter:  MySQL Exporter用于监控MySQL数据库的性能和状态。它会暴露MySQL的连接数、查询性能、事务状态等指标给Prometheus进行监控和告警。 下载链接

PromLens:  PromLens是Prometheus的智能查询编辑器,它提供了一个可视化和交互式的方式来编写和优化Prometheus的查询语句。 下载链接

Pushgateway:  Pushgateway用于持久化和集中管理临时性的指标数据。它允许非持久性的作业将指标推送到Pushgateway中,并由Prometheus进行采集,并支持批量和瞬时性的指标数据。 下载链接

StatsD Exporter:  StatsD Exporter用于将StatsD格式的指标数据导出到Prometheus中。它允许现有的StatsD监控系统和Prometheus进行整合。 下载链接

介绍Consul

Consul是一个开源的服务网格和分布式一致性解决方案,由HashiCorp公司开发。它为可扩展的分布式系统提供了服务发现、健康检查、键值存储、多数据中心部署等核心功能。Consul的设计目标是简化分布式系统的构建和管理,同时提供了高可用性、可靠性和安全性。

架构图

介绍Confd

Confd是一个轻量级的配置管理工具,用于将配置文件和数据以可管理的方式保存和分发给多个应用程序或服务。它由Kong公司开发,专为构建和管理现代基础设施环境而设计。

架构图

介绍Grafana

Grafana是一个开源的数据可视化和监控平台,用于实时展示和分析各种数据源的指标、日志和事件。它提供了丰富的图表和仪表盘,使用户可以以直观和可视化的方式监控系统、应用程序、基础设施等

组件介绍

介绍CAdvisor

CAdvisor(Container Advisor)是一个开源的容器资源使用和性能分析工具,它专注于监控Docker容器以及其他容器化平台上的容器。cAdvisor可以提供关于容器 CPU、内存、磁盘和网络等资源使用情况的实时统计信息,并提供容器的历史性能数据。

介绍Alertmanager

Alertmanager是一个开源的告警处理器和路由器,用于集中管理和处理来自不同监控系统的告警通知。它是Prometheus生态系统的一部分,设计用于处理Prometheus服务器生成的告警,并提供灵活的路由和通知机制。

架构图

安装部署

: 安装应用前先检查端口是否被占有,端口查询命令netstat -anpt

安装Docker

1.卸载旧的版本

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate    docker-logrotate docker-engine

2、更新yum软件包索引(安装前的工作,非必须)

yum makecache fast

# yum makecache: error: argument timer: invalid choice: 'fast' (choose from 'timer')

# 安装报错了,yum makecache fast是centOS7的命令, 不使用8,可以直接使用

yum makecache  或者  dnf makecache

# 如有需要,可以安装gcc

yum -y install gcc

# 以及gcc-c++

yum -y install gcc-c++

需要的安装包

yum install -y yum-utils

设置镜像仓库

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 建议使用阿里云的镜像,十分快

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker docker-ce:社区版的,docker-ee:企业版的

sudo yum install docker-ce docker-ce-cli containerd.io

启动Docker

systemctl start docker 

设置Docker为开机自启

systemctl enable docker 

安装Prometheus

1.创建配置文件

mkdir  /home/prometheus
cd   /home/prometheus/
vim  prometheus.yml

文件内容如下:

global:scrape_interval:     15s #抓取数据的时间间隔evaluation_interval: 15s #触发告警检测的时间
scrape_configs:- job_name: prometheus  #任务名称static_configs:  #静态配置节点- targets: ['主机IP:9090']labels:instance: prometheus  #实例名称# Consul配置管理- job_name: consul-exporterconsul_sd_configs:- server: '主机IP:8500'
# 告警服务配置
alerting:alertmanagers:- static_configs:- targets: ['主机IP:9093']
# 告警规则加载文件
rule_files:- "*rule.yml"

注意: Prometheus.yml配置文件格式必须遵循yml格式

docker启动

docker run -d \--name=prometheus \--restart=always \-p 9090:9090 \-v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \-v /home/prometheus/data:/prometheus \prom/Prometheus

挂载这个如果把错,直接删掉这行 -v /home/prometheus/data:/prometheus \

安装Consul

  1. 找到适合你系统的包下载他 链接 ZIP
  2. 下载后解开压缩包.拷贝Consul到你的PATH路径中 /usr/local/bin
  3. 完成安装后,检查consul安装是否成功.通过执行 consul你应该看到类似下面的输出

 

: 如果你得到一个consul not be found的错误,你的PATH可能没有正确设置.请返回检查你的consul的安装路径是否包含在PATH.

运行Agent

完成Consul的安装后,必须运行agent. agent可以运行为server或client模式.每个数据中心至少必须拥有一台server . 建议在一个集群中有3或者5个server.部署单一的server,在出现失败时会不可避免的造成数据丢失.

其他的agent运行为client模式.一个client是一个非常轻量级的进程.用于注册服务,运行健康检查和转发对server的查询.agent必须在集群中的每个主机上运行.

启动 Consul Server

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=0.0.0.0 \
-client=0.0.0.0 \
-node=consul-server02 &> /var/log/consul.log &

运行cosnul agent以server模式,

-server : 定义agent运行在server模式

-bootstrap-expect :在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap共用

-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0,(这里替换为主机IP

-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名

-ui-dir: 提供存放web ui资源的路径,该目录必须是可读的

-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。

-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载

-client:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0

查看集群成员 consul members

启动成功

:如果访问ip:8500访问不了,请检查防火墙是否开启端口

# 注册服务
curl -X PUT -d '{"id": "consul","name": "consul-node-exporter","address": "192.168.0.77","port": 8080,"tags": ["jvm-exporter"],"checks": [{"http": "http://192.168.0.77:8080/metrics","interval":"5s"}]}'  http://192.168.0.77:8500/v1/agent/service/register

name:consul的service注册名称

id:consul的实例名称

address:监控地址ip

port:监控的端口号

tags:标签名

checks:检查的节点的路径

# 删除

curl -v -X PUT http://192.168.0.77:8500/v1/agent/service/deregister/服务名( consul中的ID )

# 添加K/V

http://ip:8500/v1/kv/prometheus/rules/mysql-status

{"alert": "MysqlTooManyConnections(>80%)","expr": "avg by (instance) (rate(mysql_global_status_threads_connected[1m])) / avg by (instance) (mysql_global_variables_max_connections) * 100 > 80","for": "1m","labels": {"severity": "warning"},"annotations": {"summary": "'MySQL too many connections (> 80%)'","description": "'Mysql实例: 【{{ $labels.instance }}】, More than 80% of MySQL connections are in use, Current Value: {{ $value }}%'"}
}

: 告警规则中有双引号的请换成单引号,否则Prometheus会识别不到

安装Confd

  1. 下载confd二进制文件 链接 文件
  2. 重命名二进制文件,并移动到PATH的目录下

mv confd-0.16.0-linux-amd64 /prometheus目录/confd

chmod +x /prometheus目录/confd

  1. 验证是否安装成功 confd --help
  2. 创建confdir

confdir底下包含两个目录:

conf.d: confd的配置文件,主要包含配置的生成逻辑,例如模板源,后端存储对应的keys,命令执行等。

templates: 配置模板Template,即基于不同组件的配置,修改为符合 Golang text templates的模板文件。

命令: mkdir -p /etc/confd/{conf.d,templates}

: 创建Conf.dTemplates目录时请注意名称是否正确,如不正确confd会读取不到文件.

创建confd配置文件

vim  /etc/confd/conf.d/config.toml[template]
# 模板文件的来源路径( src要与templates中的文件名称对应 )
src = "alerts.conf.tmpl"
# 生成的配置文件的路径和名称
dest = "/home/prometheus/node-alerts-rule.yml"
# 指定需要访问和操作的配置数据的键路径
keys = ["/prometheus"
]
# 在模板生成配置文件之前执行的命令
check_cmd = "touch /tmp/check"
# 在配置文件发生变化并重新生成后,执行的命令
reload_cmd = "docker restart prometheus"

创建模板文件 名字自定义

vim  /etc/confd/templates/alerts.conf.tmpl
# 告警规则分组列表的开始
groups:     
# 分组名称为node-alerts               
- name: node-alerts        
# 规则列表的开始,并进入循环rules:                   # 遍历以"/prometheus/rules/"开头的所有键{{range gets "/prometheus/rules/*"}}  # 将当前键对应的值解析为JSON格式,并赋值给$data变量{{$data := json .Value}}  # 使用$data变量的alert字段的值生成alert规则- alert: {{$data.alert}}  # 使用$data变量的expr字段的值赋给expr表达式expr: {{$data.expr}}    # 使用$data变量的for字段的值赋给规则的持续时间for: {{$data.for}}      # 定义标签部分labels:                 # 使用$data变量的labels.severity字段的值作为severity标签的值severity: {{$data.labels.severity}}  # 定义注释部分annotations:            # 使用$data变量的annotations.summary字段的值作为summary注释的值summary: {{$data.annotations.summary}}        # 使用$data变量的annotations.description字段的值作为description注释的值description: {{$data.annotations.description}}  # 结束循环{{end}}    

:  range gets "/prometheus/rules/*" ConsulK/V的目录地址

,其中的值必须与Consul中的Value相对于.

在Prometheus目录下启动confd

nohup ./confd -interval 3 -log-level debug -backend consul -node 192.168.0.77:8500 &

如果报错执行:nohup confd -interval 3 -log-level debug -backend consul -node 192.168.0.77:8500 &

Interval: 去后端拉取配置数据频率

log-level: 日志级别

Backend: 指定后端

Node: 节点地址

安装Grafana

创建本地目录

mkdir /home/grafana
mkdir /home/grafana/config
mkdir /home/grafana/data

需要授权相关文件夹权限

chmod -R 777  /home/grafana
chmod -R 777  /home/grafana/config
chmod -R 777  /home/grafana/data

:如不给文件夹授权Grafana会找不到文件夹

Docker启动Grafana

docker run -d -p 3000:3000 --name=grafana grafana/grafana:9.2.0

复制Docker容器文件到本地,复制完后删除容器中的grafana

docker cp grafana:/etc/grafana/grafana.ini /home/grafana/config
docker cp grafana:/var/lib/grafana/plugins /home/grafana/
docker cp grafana:/var/lib/grafana/grafana.db /home/grafana/data
docker rm -f grafana

再启动grafana

docker run -d \-p 3000:3000 \--name=grafana \
--restart=always \-v /etc/localtime:/etc/localtime:ro \-v /home/grafana/data:/var/lib/grafana \-v /home/grafana/plugins/:/var/lib/grafana/plugins \-v /home/grafana/config/grafana.ini:/etc/grafana/grafana.ini \-e "GF_SECURITY_ADMIN_PASSWORD=admin" \-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" \grafana/grafana:9.2.0

(如果报错把 -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" 删掉)

 

启动成功访问ip:3000进入Grafana登录页面, 账号admin,密码admin

1.chmod -R 777  /home/tehc/grafana/   #[这是挂载的父目录,不给权限后面修改密码也不会生效]

2. sqlite3 /home/tech/grafana/data/grafana.db

3.进入数据库

4. update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'admin';

5. .exit;

6.重启Grafana容器

登录成功后会让你修改密码, 修不修改都可. (如不修改登录一次会再次跳转到此页面.)

设置Prometheus数据源

模板链接, 下面是模板页面,想要监控什么去搜索栏查询就行

安装Node Exporter

  • 解压tar压缩包 tar
  • 将解压后的文件移到 /usr/local/bin
  • mv node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
  • 创建自定义Node Exporter服务
  • vim  /etc/systemd/system/node_exporter.service
  • 文件内容如下
  • [Unit]
  • Description=Node Exporter
  • After=network.target
  • [Service]
  • User=root
  • Type=simple
  • ExecStart=/usr/local/bin/node_exporter
  • [Install]
  • WantedBy=multi-user.target
  • 重新加载系统守护进程并启动Node Exporter服务。
  • systemctl daemon-reload
  • systemctl start node_exporter
  • 检查Node Exporter状态,确保其处于正常运行状态。
  • systemctl status node_exporter
  • 开启服务器开机自启动Node Exporter服务。
  • systemctl enable node_exporter
  • 将node_exporter注册到consul中去

http://ip:8500/v1/agent/service/register

{"id": "node-exporter","name": "node-exporter","address": "主机IP","port": 9100,"tags": ["node-exporter"],"checks": [{"http": "http://主机IP:9100/metrics","interval": "5s"}]
}

安装CAdvisor

Docker启动

docker run \
-v /:/rootfs:ro \
-v /var/run:/var/run:rw \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
-p 8080:8080 \
-d --name=cadvisor \--restart=always \google/cadvisor:latest

访问ip:8080端口进入页面,如访问不到请查看是否开放端口, ​​​​​​指标含义

将CAdvisor注册到Consul服务中去

http://192.168.0.77:8500/v1/agent/service/register

{"id": "cadvisor-node-exporter-1","name": "cadvisor-node-exporter","address": "ip","port": 9100,"tags": ["cadvisor"],"checks": [{"http": "http://ip:8500/metrics","interval": "5s"}]
}

安装Alertmanager

  • 创建目录
  • mkdir -p /home/alertmanager
  • mkdir -p /home/alertmanager/conf
  • mkdir -p /home/alertmanager/conf/tmpl
  • 创建文件
  • vim /home/alertmanager/alertmanager.yml
  • vim /home/alertmanager/conf/tmpl/e-mail.tmpl
  • Docker 启动
  • docker run -d --restart=always \
  • --name=alertmanager \
  • -p 9093:9093 \
  • -v /home/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
  • -v /home/alertmanager/conf/tmpl:/etc/alertmanager/template \
  • prom/alertmanager
  • 访问ip:9093页面查看是否启动成功

告警规则

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】数据结构:哈希桶

哈希桶(Hash Bucket)是哈希表(Hash Table)实现中的一种数据结构,用于解决哈希冲突问题。哈希表是一种非常高效的数据结构,它通过一个特定的函数(哈希函数)将输入数据(通常…

jenkins插件之plot

plot是一个生成图表的插件,这里我用于可视化phploc统计的数据 插件安装 进入 Dashboard --> 系统管理 --> 插件管理 --> Available plugins 搜索plot安装生成phploc分析数据 Dashboard --> 您的项目 --> Configuration点击 Build Steps点击 增加构…

一文读懂存内计算与近存计算的分类与应用

存内计算与近存计算-基础理论及分类 技术基础知识和分类 "近存计算"与"存内计算"易混淆,本章明晰其分类,并比较各内存驱动方法的独特优势。可计算存储器设备可作分立加速器或替代现有存储模块。我们深入剖析每种方法的利弊&#xf…

ctfshow web 月饼杯II

web签到 <?php //Author:H3h3QAQ include "flag.php"; highlight_file(__FILE__); error_reporting(0); if (isset($_GET["YBB"])) {if (hash("md5", $_GET["YBB"]) $_GET["YBB"]) {echo "小伙子不错嘛&#xff…

App自动化测试_Python+Appium使用手册

一、Appium的介绍 Appium是一款开源的自动化测试工具&#xff0c;支持模拟器和真机上的原生应用、混合应用、Web应用&#xff1b;基于Selenium二次开发&#xff0c;Appium支持Selenium WebDriver支持的所有语言&#xff08;java、 Object-C 、 JavaScript 、p hp、 Python等&am…

thinkphp6 自定义的查询构造器类

前景需求&#xff1a;在查询的 时候我们经常会有一些通用的&#xff0c;查询条件&#xff0c;但是又不想每次都填写一遍条件&#xff0c;这个时候就需要重写查询类&#xff08;Query&#xff09; 我目前使用的thinkphp版本是6.1 首先自定义CustomQuery类继承于Query <?p…

让表单引擎插上AI的翅膀-记驰骋表单引擎加入AI升级

让表单引擎插上AI的翅膀 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们工作和生活的每一个角落。在数字化办公领域&#xff0c;表单引擎作为数据处理和流程自动化的重要工具&#xff0c;也迎来了与AI技术深度融合的新机遇。让表单引擎…

Python零基础-下【详细】

接上篇继续&#xff1a; Python零基础-中【详细】-CSDN博客 目录 十七、网络编程 1、初识socket &#xff08;1&#xff09;socket理解 &#xff08;2&#xff09;图解socket &#xff08;3&#xff09;戏说socket &#xff08;4&#xff09;网络服务 &#xff08;5&a…

api网关kong对高频的慢接口进行熔断

一、背景 在生产环境&#xff0c;后端服务的接口响应非常慢&#xff0c;是因为数据库未创建索引导致。 如果QPS低的时候&#xff0c;因为后端服务有6个高配置的节点&#xff0c;虽然接口慢&#xff0c;还未影响到服务的正常运行。 但是&#xff0c;当QPS很高的时候&#xff0c…

整合Spring Boot 框架集成Knife4j

本次示例使用Spring Boot作为脚手架来快速集成Knife4j,Spring Boot版本2.3.5.RELEASE ,Knife4j版本2.0.7 POM.XML完整文件代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0…

基于开源项目ESP32 SVPWM驱动无刷电机开环速度测试

基于开源项目ESP32 SVPWM驱动无刷电机开环速度测试 ✨本篇硬件电路和代码来源于此开源项目&#xff1a;https://github.com/MengYang-x/STM3F401-FOC/tree/main&#x1f4cd;硬件电路和项目介绍&#xff0c;立创开源广场&#xff1a;https://oshwhub.com/shadow27/tai-yang-nen…

百度中心之星

目录 新材料 星际航行 新材料 直接模拟&#xff1a;因为要考虑上次出现的位置&#xff0c;所以使用map映射最好&#xff0c;如果没有出现过就建立新映射&#xff0c;如果出现过但是已经反应过就跳过&#xff0c;如果出现过但是不足以反应&#xff0c;就建立新映射&#xff0c;…

python实现——分类类型数据挖掘任务(图形识别分类任务)

分类类型数据挖掘任务 基于卷积神经网络&#xff08;CNN&#xff09;的岩石图像分类。有一岩石图片数据集&#xff0c;共300张岩石图片&#xff0c;图片尺寸224x224。岩石种类有砾岩&#xff08;Conglomerate&#xff09;、安山岩&#xff08;Andesite&#xff09;、花岗岩&am…

体验Photoshop:无需下载,直接在浏览器编辑图片

搜索Photoshop时&#xff0c;映入眼帘的是PS软件下载&#xff0c;自学PS软件需要多长时间&#xff0c;学PS软件有必要报班吗...PS软件的设计功能很多&#xff0c;除了常见的图像处理功能外&#xff0c;还涉及图形、文本、视频、出版等。不管你是平面设计师&#xff0c;UI/UX设计…

visual studio code 全局搜索

VScode写代码的时候&#xff0c;会经常性的需要进行查找代码&#xff0c;那么怎么在Visual Studio Code中进行查找呢&#xff0c;下面就来大家vscode全局搜索的方法。 想要在vscode全局搜索进行全局搜索&#xff0c;使用快捷键CTRLSHIFTF即可进行搜索&#xff0c;也可以在左边…

免费分享一套微信小程序图书借阅(图书管理)系统(SpringBoot后端)

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序图书借阅(图书管理)系统(&#xff0c;分享下哈。 项目介绍 该项目是一套图书馆信息管理系统&#xff0c;包括用户小程序以及后台管理系统&#xff0c;基于SpringBootMyBatis实现。前台商城系统包…

Linux主机安全可视化运维(免费方案)

本文介绍如何使用免费的主机安全软件,在自有机房或企业网络实现对Linux系统进行可视化“主机安全”管理。 一、适用对象 本文适用于个人或企业内的Linux服务器运维场景,实现免费、高效、可视化的主机安全管理。提前发现主机存在的安全风险,全方位实时监控主机运行时入侵事…

Windows 11 Beta 22635.3646 预览版发布:中国大陆地区新增“微软电脑管家”应用

微软今天面向 Beta 频道的 Windows Insider 项目成员&#xff0c;发布了适用于 Windows 11 的 KB5037858 更新&#xff0c;用户安装后版本号升至 Build 22635.3646&#xff0c;该版本主要为中国大陆设备新增“微软电脑管家”应用。 IT之家 5 月 24 日消息&#xff0c;微软今天…

LabVIEW中PID控制器系统的噪声与扰动抑制策略

在LabVIEW中处理PID控制器系统中的噪声和外部扰动&#xff0c;需要从信号处理、控制算法优化、硬件滤波和系统设计四个角度入手。采用滤波技术、调节PID参数、增加前馈控制和实施硬件滤波器等方法&#xff0c;可以有效减少噪声和扰动对系统性能的影响&#xff0c;提高控制系统的…

PBR系列-物理材质(上)

作者&#xff1a;游梦 对PBR系列文章感兴趣还可以看前文&#xff1a; PBR系列 - 物理光源 PBR系列-光之简史 前面两篇文章分别介绍了物理光源与光学研究简史&#xff0c;在对光有了简单认识之后&#xff0c;再认识物理材质会发现其实本质上还是对光的研究&#xff0c;再深入…