Monitor 采集方式

文章介绍了通过读取Linux系统的/proc目录获取内存和网络流量等信息,利用命令行工具进行系统状态检查,以及采用黑盒探测方法(如ICMP、TCP、HTTP)来监测服务可用性。同时,提到了通过特定协议拉取如Elasticsearch的健康状态和MySQL、Redis的连接及内存数据。

采集方法 : 读取 /proc 目录、执行系统调用、执行命令行工具、远程黑盒探测、远程拉取特定协议的数据

读取 /proc

/proc : 在内存中的伪文件系统,保存 Linux 的运行数据,如 : 内存数据、网卡流量、机器负载

内存相关指标 :

  • Gauge 类型
cat /proc/meminfo


MemTotal:        7954676 kB
MemFree:          211136 kB
MemAvailable:    2486688 kB
Buffers:          115068 kB
Cached:          2309836 kB
...

网卡流量相关指标 :

  • Counter 类型 : 启动后的累计值
  • irate 二次计算
head -n3 /proc/net/dev

--         入方向																											出方向
Inter-|   Receive                                                  |  Transmit
 face | bytes    packets errs drop fifo frame compressed multicast  | bytes    packets errs drop fifo colls carrier compressed
  eth0: 697407964307 2580235035    0    0    0     0          0         0 1969289573661 3137865547    0    0    0     0       0          0

命令行

获取 9090 端口的监听状态 :

ss -tln | grep 9090

查看分区使用率 :

df -k

缺点 :

  • 通用性 : 各命令行,由于版本不一样,输出格式也不愿意
  • 性能问题 : 命令行要 fork 进程,性能较低

黑盒探测

黑盒监控 : 把监控对象当黑盒子,不了解内部运行机理,只做简单探测

  • 探测手段 : ICMP、TCP、HTTP
  • 产品 : Blackbox Exporter 、Categraf、Datadog-Agent

Ping :

  • ICMP 协议
ping -c 3 www.baidu.com

#....
#  3个数据包														丢包率
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.382/1.393/1.405/0.009 ms

TCP 探测 :

telnet www.baidu.com 22

HTTP 探测 : 测试连通性,和 response body 是否有 success

拉取协议

拉取 Elasticsearch 的 /_cluster/health 接口

curl -ucpucode:cpu123 http://cpucode:9200/_cluster/health -s | jq .


{
  "cluster_name": "elasticsearch-cluster",
  "status": "yellow",
  "timed_out": false,
  "number_of_nodes": 3,
  "number_of_data_nodes": 3,
  "active_primary_shards": 430,
  "active_shards": 430,
  "relocating_shards": 0,
  "initializing_shards": 0,
  "unassigned_shards": 430,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 50
}

目标命令

查看 MySQL 连接情况 :

  • Threads_connected : 当前有多少连接
  • Max_used_connections : 曾经最多有多少连接
  • Connections : 总计接收过多少连接
show global status like '%onn%';


+-----------------------------------------------+---------------------+
| Variable_name                                 | Value               |
+-----------------------------------------------+---------------------+
| Aborted_connects                              | 3212                |
| Connection_errors_accept                      | 0                   |
| Connection_errors_internal                    | 0                   |
| Connection_errors_max_connections             | 0                   |
| Connection_errors_peer_address                | 0                   |
| Connection_errors_select                      | 0                   |
| Connection_errors_tcpwrap                     | 0                   |
| Connections                                   | 3281                |
| Locked_connects                               | 0                   |
| Max_used_connections                          | 13                  |
| Max_used_connections_time                     | 2022-10-30 16:41:35 |
| Performance_schema_session_connect_attrs_lost | 0                   |
| Ssl_client_connects                           | 0                   |
| Ssl_connect_renegotiates                      | 0                   |
| Ssl_finished_connects                         | 0                   |
| Threads_connected                             | 1                   |
+-----------------------------------------------+---------------------+
16 rows in set (0.01 sec)

查看 MySQL 连接变量 :

  • max_connections : 最大连接数,默认 : 151
show global variables like '%onn%';


+-----------------------------------------------+-----------------+
| Variable_name                                 | Value           |
+-----------------------------------------------+-----------------+
| character_set_connection                      | utf8            |
| collation_connection                          | utf8_general_ci |
| connect_timeout                               | 10              |
| disconnect_on_expired_password                | ON              |
| init_connect                                  |                 |
| max_connect_errors                            | 100             |
| max_connections                               | 5000            |
| max_user_connections                          | 0               |
| performance_schema_session_connect_attrs_size | 512             |
+-----------------------------------------------+-----------------+
9 rows in set (0.01 sec)

查看 Redis 内存指标 :

info memory


# Memory
used_memory:1345568
used_memory_human:1.28M
used_memory_rss:3653632
used_memory_rss_human:3.48M
used_memory_peak:1504640
used_memory_peak_human:1.43M
used_memory_peak_perc:89.43%
used_memory_overhead:1103288
used_memory_startup:1095648
used_memory_dataset:242280
used_memory_dataset_perc:96.94%
...
<think>嗯,用户想知道如何通过监控系统(monitor)来采集和处理激励信号。首先,我需要明确激励信号是什么。激励信号通常是用来激发被测系统响应的输入信号,比如在控制系统或传感器测试中。接下来,用户提到使用监控系统,这可能涉及到数据采集、传输和处理。 根据提供的引用内容,监控系统涉及实时数据流的处理与展示[^1],还有通过ESP8266-WIFI模块连接云端[^3]。所以,采集激励信号可能需要传感器、数据采集模块,然后传输到云端进行处理。此外,动态响应分析也是关键部分,需要评估系统的响应能力[^2]。 首先,激励信号的采集需要传感器将物理信号转换为电信号,然后通过数据采集模块(如ESP8266)传输到监控系统。处理部分可能包括滤波、放大和模数转换。接着,数据上传到云端,用户可以通过手机或电脑访问。仿真分析可能需要验证系统的性能,比如动态响应和抗干扰能力[^2]。 用户可能需要具体步骤:从传感器选择开始,数据采集的硬件连接,信号调理,数据传输,云端处理,以及最后的分析和优化。同时,要确保实时性和数据的准确性。可能还需要考虑如何设置监控界面来显示这些激励信号,方便用户观察和分析。最后,是否需要历史数据查询来优化激励信号的采集策略?</think>### 如何通过监控系统(monitor采集和处理激励信号 #### 1. **激励信号采集的硬件连接** - **传感器选择**:根据激励信号类型(如振动、温度、电压等),选择对应的传感器。例如,压电传感器用于机械振动,热电偶用于温度。 - **信号调理**:通过放大器、滤波器等模块对原始信号进行调理,消除噪声并适配采集设备的输入范围[^1]。 - **数据采集模块**:使用模数转换器(ADC)将模拟信号转换为数字信号,并通过通信模块(如ESP8266-WiFi)上传至云端服务器。 #### 2. **监控系统的数据流配置** - **实时数据传输**:配置数据采集设备与云端服务器(如华为云IoT)的通信协议(如MQTT),确保激励信号以低延迟传输。 - **数据存储**:云端服务器存储原始激励信号数据,支持后续查询与分析。 #### 3. **激励信号的处理与分析** - **实时处理**:在监控界面中嵌入算法(如傅里叶变换、小波分析),对激励信号进行频域或时域分析。 - **动态响应验证**:通过仿真工具(如MATLAB/Simulink)评估系统在激励信号下的动态响应和抗干扰能力。 - **可视化展示**:在监控界面中实时绘制激励信号的波形、频谱图或统计指标(如峰值、均值)。 #### 4. **应用示例** ```python # 示例:使用Python模拟激励信号采集与滤波 import numpy as np from scipy.signal import butter, filtfilt def collect_signal(sensor_data): # 模拟采集到的原始信号(含噪声) t = np.linspace(0, 1, 1000) signal = 0.5 * np.sin(2 * np.pi * 5 * t) + 0.1 * np.random.randn(1000) return signal def process_signal(signal): # 设计带通滤波器(5-15Hz) b, a = butter(4, [5, 15], btype='band', fs=1000) filtered = filtfilt(b, a, signal) return filtered raw_signal = collect_signal() processed_signal = process_signal(raw_signal) ``` #### 5. **优化与验证** - **抗干扰设计**:在信号调理阶段增加屏蔽、接地或差分输入,降低环境噪声。 - **云端协同**:通过手机APP或电脑端远程调整采集参数(如采样率),并实时查看处理结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值