Prometheus(四)—— Alertmanager完整部署指南:邮件+钉钉告警全流程落地 - 实践

news/2025/11/24 10:42:53/文章来源:https://www.cnblogs.com/yangykaifa/p/19262782

文章目录

  • 前言
  • 一、环境准备
    • 1.1 服务器角色与IP规划
    • 1.2 操作系统与依赖工具
    • 1.3 所需安装包及下载地址
    • 1.4 网络与权限准备
  • 二、Alertmanager核心概述
    • 2.1 Prometheus与Alertmanager的协作关系
    • 2.2 Alertmanager核心功能解析
  • 三、Alertmanager邮件告警完整部署(192.168.10.17)
    • 3.1 安装包上传与解压
    • 3.2 配置Alertmanager邮件告警(alertmanager.yml)
    • 3.3 配置Alertmanager系统服务(systemd)
    • 3.4 定义Prometheus告警规则(Prometheus服务器:192.168.10.18)
    • 3.5 关联Prometheus与Alertmanager(Prometheus服务器:192.168.10.18)
    • 3.6 邮件告警功能测试
  • 四、Alertmanager钉钉告警扩展部署(192.168.10.17)
    • 4.1 钉钉告警插件(prometheus-webhook-dingtalk)部署
    • 4.2 钉钉群机器人创建与配置
    • 4.3 钉钉告警插件配置(config.yml)
    • 4.4 启动钉钉告警插件
    • 4.5 调整Alertmanager配置指向钉钉插件(192.168.10.17)
    • 4.6 钉钉告警功能测试
  • 补充:同时启动邮箱告警和钉钉告警与告警分级推送
  • 五、总结与注意事项
    • 5.1 部署总结
    • 5.2 关键注意事项

前言

在Prometheus监控体系中,告警功能是实现“监控-告警-响应”闭环的核心环节。很多小伙伴初次使用Prometheus时会发现,即便定义了告警规则也收不到通知——这是因为Prometheus Server仅负责生成告警,而具体的告警分发(如发邮件、推钉钉)需要由独立组件Alertmanager完成。

本文将从核心概念入手,带大家一步步部署Alertmanager,并实现邮件、钉钉两种主流渠道的告警通知,确保监控告警真正落地可用。

一、环境准备

在开始部署前,需确认服务器环境、网络权限及所需安装包,避免后续部署受阻。

1.1 服务器角色与IP规划

本次部署涉及两台核心服务器(可根据实际需求合并,建议生产环境分开部署以提高稳定性):

服务器角色IP地址核心功能需开放端口
Alertmanager服务器192.168.10.17接收Prometheus告警、分发邮件/钉钉通知9093(默认)
Prometheus服务器192.168.10.18(示例)采集指标、定义告警规则、发送告警到Alertmanager9090(默认)
钉钉插件服务器192.168.10.17(与Alertmanager同机)对接钉钉机器人,转发Alertmanager告警8060(默认)

1.2 操作系统与依赖工具

1.3 所需安装包及下载地址

组件名称版本下载地址
Alertmanager0.24.0https://github.com/prometheus/alertmanager/releases/tag/v0.24.0
prometheus-webhook-dingtalk2.1.0https://github.com/timonwong/prometheus-webhook-dingtalk/releases/tag/v2.1.0
Prometheus(已部署前提)2.x及以上(示例2.35.0)https://github.com/prometheus/prometheus/releases

1.4 网络与权限准备

1、关闭防火墙与SELinux(以CentOS 7为例):

systemctl stop firewalld
systemctl disable firewalld
setenforce 0  # 临时关闭SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  # 永久关闭

2、邮箱权限:若使用QQ邮箱发件,需提前开启“POP3/SMTP服务”并生成授权码(路径:QQ邮箱→设置→账户→开启服务→生成授权码)。
3、钉钉权限:需拥有钉钉群的“管理权限”,用于创建自定义机器人。

二、Alertmanager核心概述

2.1 Prometheus与Alertmanager的协作关系

Prometheus的监控告警能力分为两个独立模块,分工明确:

简单来说,Prometheus负责“发现问题”,Alertmanager负责“通知到人”。

2.2 Alertmanager核心功能解析

Alertmanager之所以能高效处理告警,核心依赖以下5个功能,尤其在大规模集群场景中至关重要:
1、分组(Grouping):
将相似告警合并为单个通知。例如服务器集群宕机时,若不分组会收到上百条“实例下线”告警,分组后仅需1条通知,避免用户被“告警风暴”淹没。
2、抑制(Inhibition):
避免级联告警干扰故障定位。例如“数据库服务宕机”会导致依赖它的“API服务告警”,抑制功能可自动屏蔽后者,让用户专注于根源故障。
3、静默(Silent):
指定时间窗口内暂停告警通知。常用于系统例行维护(如凌晨升级),避免维护期间的正常告警干扰运维人员。
4、路由(Route):
按规则分发告警到不同渠道。例如“核心业务告警”推钉钉群,“非核心告警”仅发邮件,实现告警分级通知。
5、去重(Deduplication):
过滤重复的告警事件。同一告警(如“CPU使用率过高”)若多次触发,Alertmanager会按配置的“重复间隔”发送通知,避免重复打扰。

三、Alertmanager邮件告警完整部署(192.168.10.17)

邮件告警是最基础、最通用的告警方式,适合中小规模团队或非实时性告警场景。以下步骤均在192.168.10.17(Alertmanager服务器)上执行:

3.1 安装包上传与解压

首先将Alertmanager安装包(alertmanager-0.24.0.linux-amd64.tar.gz)上传至192.168.10.17/opt目录(可通过rz工具或FTP工具上传),随后执行解压与目录迁移:

# 进入安装包存放目录
cd /opt/
# 解压Alertmanager安装包
tar xf alertmanager-0.24.0.linux-amd64.tar.gz
# 将解压后的目录迁移至标准路径(/usr/local/),便于后续管理
mv alertmanager-0.24.0.linux-amd64 /usr/local/alertmanager

3.2 配置Alertmanager邮件告警(alertmanager.yml)

Alertmanager的核心配置文件为/usr/local/alertmanager/alertmanager.yml,需在此定义邮件服务器信息、告警路由规则和收件人。执行以下命令编辑配置文件:

vim /usr/local/alertmanager/alertmanager.yml

将以下内容粘贴至文件中(关键配置已加详细注释):

# global:全局配置段,定义所有告警渠道共用的基础信息(如邮件服务器)
global:
resolve_timeout: 5m  # 告警超时时间:5分钟未更新则标记为“已解决”
smtp_smarthost: 'smtp.qq.com:465'  # QQ邮箱SMTP服务器地址+端口(465为非SSL端口)
smtp_from: '132107253@qq.com'  # 发件人邮箱(需与SMTP服务器匹配)
smtp_auth_username: '132107253@qq.com'  # 发件人邮箱账号
# 注意:此处为QQ邮箱“授权码”,非登录密码!获取路径:QQ邮箱→设置→账户→生成授权码
smtp_auth_password: 'yoevnefvknmqbjia'
smtp_require_tls: false  # 禁用TLS
# route:告警路由规则,定义Alertmanager如何处理告警
route:
group_by: ['alertname']  # 按“告警名称”分组(如所有“InstanceDown”告警合并)
group_wait: 20s  # 首次告警等待20秒:收集同组内的新告警,合并后发送
group_interval: 5m  # 同组告警再次发送间隔:5分钟(避免频繁通知)
repeat_interval: 20m  # 重复告警间隔:20分钟(同一告警触发后,每20分钟重发一次)
receiver: 'my-email'  # 默认告警接收器(指向下方的“my-email”)
# receivers:告警接收器定义,指定告警发送到哪里
receivers:
- name: 'my-email'  # 接收器名称(需与route中的receiver一致)
email_configs:  # 邮件接收器配置
- to: '目标邮箱@139.com'  # 收件人邮箱(可填写多个,用逗号分隔)
send_resolved: true  # 发送“已解决”通知(告警恢复后,主动告知收件人)

3.3 配置Alertmanager系统服务(systemd)

为了便于管理Alertmanager的启动、停止和自启,需配置systemd服务文件:

# 创建Alertmanager服务文件
cat > /usr/lib/systemd/system/alertmanager.service <<'EOF'
[Unit]
Description=alertmanager  # 服务描述
Documentation=https://prometheus.io/  # 官方文档地址
After=network.target  # 依赖:网络服务启动后再启动Alertmanager
[Service]
Type=simple  # 服务类型:简单类型(直接执行启动命令)
# 启动命令:指定配置文件路径,开启debug日志(便于排查问题)
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml \
--log.level=debug
ExecReload=/bin/kill -HUP $MAINPID  # 重载命令:发送HUP信号,热重载配置
Restart=on-failure  # 重启策略:故障时自动重启
[Install]
WantedBy=multi-user.target  # 开机自启:多用户模式下生效
EOF
======================================================================================
cat > /usr/lib/systemd/system/alertmanager.service <<'EOF'
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml \
--log.level=debug
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

配置完成后,启动Alertmanager并设置开机自启:

# 重新加载systemd服务(使新配置生效)
systemctl daemon-reload
# 启动Alertmanager
systemctl start alertmanager
# 设置开机自启
systemctl enable alertmanager
# 验证服务状态(确保状态为active)
systemctl status alertmanager
# 验证端口(Alertmanager默认端口为9093,需确认192.168.10.17的9093端口已监听)
netstat -natp | grep :9093

在这里插入图片描述

访问AlertManager Web UI:
打开浏览器,输入http://192.168.10..17:9093/#/alerts(节点的IP+9093端口),可查看当前告警状态。
在这里插入图片描述

3.4 定义Prometheus告警规则(Prometheus服务器:192.168.10.18)

Prometheus需要明确“什么情况下触发告警”,即告警规则。需在Prometheus服务器(示例192.168.10.18)上创建规则目录,再编写规则文件:

# 登录Prometheus服务器(192.168.10.18),创建告警规则目录
mkdir /usr/local/prometheus/alert_rules
# 编辑实例下线告警规则(InstanceDown)和CPU高使用率告警规则(cpu_alert)
vim /usr/local/prometheus/alert_rules/instance_down.yaml

规则文件内容如下(包含两种常见告警场景):

groups:
# 告警组1:所有实例下线监控
# 若某个 Instance 的 up 指标的值转为 0 持续超过 1 分钟后,将触发告警
- name: AllInstances  # 告警组名称(自定义,需唯一)
rules:
- alert: InstanceDown  # 告警名称(组内唯一)
expr: up == 0  # 告警触发条件(PromQL表达式):up指标为0表示实例下线
for: 1m  # 持续时间:实例下线持续1分钟后才触发告警(避免瞬时抖动)
# annotations:告警附加信息(会显示在告警通知中)
annotations:
title: 'Instance down'  # 告警标题
description: 'Instance has been down for more than 1 minute.'  # 告警描述
# labels:告警标签(用于分类、过滤,如“严重级别”)
labels:
severity: 'critical'  # 严重级别:critical(紧急)
# 告警组2:节点CPU使用率大于 80% 触发告警
- name: node_alert  # 告警组名称(自定义)
rules:
- alert: cpu_alert  # 告警名称
# 告警条件:100 - 空闲CPU占比 > 80%(即CPU使用率>80%)
expr: 100 - avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) * 100 > 80
for: 5m  # 持续时间:CPU使用率>80%持续5分钟后触发告警
labels:
level: warning  # 严重级别:warning(警告)
annotations:
# 动态显示实例名和CPU使用率({{ $labels.instance }} 为PromQL变量)
description: "instance: {{ $labels.instance }} ,cpu usage is too high ! value: {{ $value }}"
summary: "cpu usage is too high"  # 告警摘要

告警条件表达式注意点

  • 表达式值为true,但其持续时间未能满足for定义的时长时,相关的告警状态为pending
  • 满足该时长之后,相关的告警将被触发,并转为firing状态
  • 表达式的值为false时,告警将处于inactive状态

3.5 关联Prometheus与Alertmanager(Prometheus服务器:192.168.10.18)

Prometheus需要知道“告警事件发送到哪个Alertmanager”(即192.168.10.17:9093),因此需修改Prometheus配置文件:

# 在Prometheus服务器(192.168.10.18)上编辑配置文件
vim /usr/local/prometheus/prometheus.yml

修改alerting(指定Alertmanager地址)和rule_files(指定告警规则路径):

# alerting:配置Alertmanager实例地址(192.168.10.17:9093)
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.10.17:9093  # 关键修改:指向Alertmanager服务器(192.168.10.17)的9093端口
# rule_files:配置Prometheus加载的告警规则文件路径
rule_files:
- "/usr/local/prometheus/alert_rules/*.yaml"  # 加载规则目录下所有yaml文件

在这里插入图片描述

配置完成后,重载Prometheus使配置生效:

systemctl reload prometheus

3.6 邮件告警功能测试

为验证邮件告警是否生效,可在被监控实例(如安装了node_exporter的服务器)上手动停止node_exporter(模拟实例下线),触发“InstanceDown”告警:

# 在被监控实例上停止node_exporter(若未安装node_exporter,可停止其他被Prometheus监控的服务)
systemctl stop node_exporter

在这里插入图片描述
在这里插入图片描述

等待1分钟(与告警规则中for: 1m一致)后,查看收件人邮箱。若配置正确,会收到类似以下内容的告警邮件:

  • 标题:[FIRING:1] InstanceDown (critical)
  • 内容:包含实例名称、告警时间、告警描述等信息。

在这里插入图片描述

告警测试完成后,重启node_exporter恢复监控:

systemctl start node_exporter

等待5分钟(与resolve_timeout: 5m一致)后,会收到“告警已解决”的邮件通知。
在这里插入图片描述

在这里插入图片描述

四、Alertmanager钉钉告警扩展部署(192.168.10.17)

邮件告警实时性较弱,钉钉告警更适合需要“即时响应”的场景(如核心业务故障)。实现钉钉告警需依赖prometheus-webhook-dingtalk插件(Alertmanager不直接支持钉钉,需通过Webhook对接),以下步骤均在192.168.10.17(Alertmanager服务器)上执行:

4.1 钉钉告警插件(prometheus-webhook-dingtalk)部署

首先将prometheus-webhook-dingtalk安装包(prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz)上传至192.168.10.17/opt目录,随后执行解压与目录迁移:

# 进入安装包存放目录
cd /opt/
# 解压插件安装包
tar xf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
# 迁移目录至标准路径
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/dingtalk

4.2 钉钉群机器人创建与配置

需在钉钉群中创建“自定义机器人”,获取Webhook地址和加签密钥(用于插件对接):
1、打开钉钉,进入目标告警群,点击「群设置」→「智能群助手」→「添加机器人」→「自定义机器人」。
在这里插入图片描述
在这里插入图片描述

2、填写机器人名称(如“Prometheus告警”),勾选“消息推送”,点击「下一步」。
3、安全设置:勾选「加签」,复制页面显示的“加签密钥”(后续配置config.yml需用到),点击「复制」Webhook地址(格式:https://oapi.dingtalk.com/robot/send?access_token=xxx)。
在这里插入图片描述
在这里插入图片描述

4、点击「完成」,机器人创建成功。

4.3 钉钉告警插件配置(config.yml)

进入插件目录,复制默认配置文件并修改:

# 进入钉钉插件目录(192.168.10.17)
cd /usr/local/dingtalk
# 复制默认配置文件(避免直接修改原文件)
cp -p config.example.yml config.yml
# 编辑配置文件
vim config.yml

修改以下关键配置(其他配置保持默认):

timeout: 5s  # 插件请求超时时间
# 告警模板路径(使用插件自带的legacy模板)
templates:
- contrib/templates/legacy/template.tmpl
# 默认告警消息模板(使用legacy模板格式)
default_message:
title: '{{ template "legacy.title" . }}'
text: '{{ template "legacy.content" . }}'
# 告警目标(对应钉钉机器人)
targets:
webhook1:  # 自定义目标名称(后续Alertmanager配置需用到)
url: <粘贴步骤4.2获取的Webhook地址>  # 替换为你的钉钉机器人Webhooksecret: <粘贴步骤4.2获取的加签密钥>  # 替换为你的钉钉机器人加签密钥

4.4 启动钉钉告警插件

插件支持直接启动,也可配置为systemd服务(本文先演示直接启动,适合测试):

# 进入插件目录(192.168.10.17)
cd /usr/local/dingtalk
# 后台启动插件(默认端口为8060,需确认192.168.10.17的8060端口已监听)
nohup ./prometheus-webhook-dingtalk --config.file=config.yml &
# 验证端口(确保8060端口已监听)
netstat -natp | grep :8060

在这里插入图片描述

若需配置开机自启,可参考步骤3.3创建dingtalk.service文件,示例如下:

cat > /usr/lib/systemd/system/dingtalk.service <<'EOF'
[Unit]
Description=prometheus-webhook-dingtalk
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/dingtalk
ExecStart=/usr/local/dingtalk/prometheus-webhook-dingtalk --config.file=config.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

创建后执行启动与自启配置:

systemctl daemon-reload
systemctl start dingtalk
systemctl enable dingtalk

4.5 调整Alertmanager配置指向钉钉插件(192.168.10.17)

需修改alertmanager.yml,将默认告警接收器从“邮件”改为“钉钉插件”(若需同时保留邮件告警,可通过路由规则配置,本文先演示仅钉钉告警):

vim /usr/local/alertmanager/alertmanager.yml

修改后的配置文件内容如下(仅保留核心配置,全局配置与步骤3.2一致):

global:
resolve_timeout: 5m
# 此处可保留邮件配置(若需同时发送邮件),也可删除(仅保留钉钉)
# 路由规则:默认指向钉钉接收器
route:
group_by: [alertname]
group_wait: 10s  # 缩短等待时间,加快钉钉告警推送
group_interval: 15s
repeat_interval: 20m
receiver: 'dingding.webhook1'  # 指向钉钉接收器
# 钉钉接收器配置(通过Webhook对接插件,插件与Alertmanager同机,故用127.0.0.1)
receivers:
- name: 'dingding.webhook1'  # 接收器名称
webhook_configs:
# 插件地址:http://127.0.0.1:8060/dingtalk/<target名称>/send(同机用127.0.0.1更稳定)- url: 'http://127.0.0.1:8060/dingtalk/webhook1/send'send_resolved: true  # 发送“已解决”通知

配置完成后,重载Alertmanager使配置生效:

systemctl reload alertmanager

4.6 钉钉告警功能测试

同样通过停止node_exporter触发告警,验证钉钉通知:

# 在被监控实例上停止node_exporter
systemctl stop node_exporter

等待10秒(与group_wait: 10s一致)后,查看钉钉群。若配置正确,会收到类似以下内容的告警消息:

  • 标题:[FIRING:1] InstanceDown (critical)
  • 内容:包含实例名称、告警时间、CPU使用率(若触发CPU告警)等信息,格式清晰。
    在这里插入图片描述

测试完成后,重启node_exporter,等待5分钟会收到“告警已解决”的钉钉通知。

在这里插入图片描述

补充:同时启动邮箱告警和钉钉告警与告警分级推送

1、如果希望Alertmanager 同时把告警推送到「钉钉」和「邮箱」,可以直接在 receivers 里配置多个接收器,然后通过 route 的 receivers 列表一起触发。

vim /usr/local/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m  # 告警超时时间:5分钟未更新则标记为“已解决”
smtp_smarthost: 'smtp.qq.com:465'  # QQ邮箱SMTP服务器地址+端口(465为非SSL端口)
smtp_from: '132107253@qq.com'  # 发件人邮箱(需与SMTP服务器匹配)
smtp_auth_username: '132107253@qq.com'  # 发件人邮箱账号
# 注意:此处为QQ邮箱“授权码”,非登录密码!获取路径:QQ邮箱→设置→账户→生成授权码
smtp_auth_password: '你的授权码'
smtp_require_tls: false  # 禁用TLS
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 5m
repeat_interval: 20m
receiver: 'combo'
receivers:
- name: 'combo'  # 接收器名称
email_configs:
- to: '目标邮箱@139.com'
send_resolved: true
webhook_configs:
# 插件地址:http://127.0.0.1:8060/dingtalk/<target名称>/send(同机用127.0.0.1更稳定)- url: 'http://127.0.0.1:8060/dingtalk/webhook1/send'send_resolved: true  # 发送“已解决”通知

2、要实现核心业务告警推送到钉钉群、非核心告警仅发邮件的分级通知,可以通过 Alertmanager 的路由规则(route + routes) 实现。

vim /usr/local/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m  # 告警超时时间
smtp_smarthost: 'smtp.qq.com:465'
smtp_from: '1321072533@qq.com'
smtp_auth_username: '1321072533@qq.com'
smtp_auth_password: '你的授权码'  # QQ邮箱授权码
smtp_require_tls: false
# 路由规则定义
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 5m
repeat_interval: 20m
receiver: 'mail'  # 默认接收器:发邮件(非核心告警)
routes:
# 1、核心业务告警(critical):推送钉钉群
- match:
severity: critical
receiver: 'dingtalk_core'
# 2、非核心告警(warning/info):仅发邮件
- match_re:
severity: 'warning|info'
receiver: 'mail'
# 邮件接收器(非核心)
receivers:
- name: 'mail'
email_configs:
- to: '目标邮箱@139.com'
send_resolved: true
# 钉钉接收器(核心业务)
- name: 'dingtalk_core'
webhook_configs:
- url: 'http://127.0.0.1:8060/dingtalk/webhook1/send'
send_resolved: true
systemctl restart alertmanager

触发测试告警:

  • 关闭一个被监控的 node_exporter → 验证钉钉推送;
  • 人为制造 CPU 高负载 → 验证邮件告警。

在这里插入图片描述
在这里插入图片描述

五、总结与注意事项

5.1 部署总结

本文完整覆盖了Alertmanager的核心部署流程:
1、环境准备:明确服务器角色、IP规划、依赖工具及权限,为部署打好基础。
2、邮件告警:从Alertmanager安装、配置到Prometheus关联,形成“生成告警-分发邮件”闭环。
3、钉钉告警:通过prometheus-webhook-dingtalk插件对接钉钉机器人,实现即时告警通知。

5.2 关键注意事项

  • 配置文件语法:YAML语法对缩进敏感,若告警不生效,可通过systemctl status alertmanagernohup.out(钉钉插件日志)查看错误信息,排查缩进或参数错误。
  • 敏感信息保护:QQ邮箱授权码、钉钉加签密钥等敏感信息,建议通过EnvironmentFile(systemd服务)或加密工具存储,避免明文写在配置文件中。
  • 告警规则优化:生产环境中需根据业务调整for(持续时间)和repeat_interval(重复间隔),例如核心业务for设为30秒、非核心设为5分钟,避免“误告警”和“告警风暴”。
  • 日志排查:Alertmanager日志路径默认在/var/log/messages(CentOS),钉钉插件日志在/usr/local/dingtalk/nohup.out,遇到问题时优先查看日志定位原因。

如果在部署过程中遇到“端口占用”“钉钉消息发送失败”“邮件无法送达”等问题,欢迎在评论区留言讨论!

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

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

相关文章

湘潭透明PC板热导率多少?隔热比玻璃强多少?

湘潭透明PC板热导率多少?隔热比玻璃强多少?近年来,随着建筑采光、农业温室及工业防护等领域对轻质高强材料需求的持续增长,透明PC板市场呈现出稳中有变的发展态势。以湘潭地区为例,作为长株潭城市群的重要工业节点…

2025年央国企求职机构综合评测与选择指南:五大权威机构深度解析

摘要 随着2025年央国企招聘市场的持续升温,求职服务机构行业迎来快速发展期。本文基于第三方调研数据,对当前市面上的央国企求职机构进行客观评测,为求职者提供参考。据统计,2025年央国企招聘规模预计突破50万人,…

E. Adjacent XOR

https://codeforces.com/problemset/problem/2131/E 题意:给定长度为n的两个数组a和b,每次操作可以让a[i] = a[i] ^ a[i + 1],并且每个i只能操作一次。问a能否变为b。 思路:从后往前遍历,依次考虑当前的每个i,如…

2025年知名的短视频运营专业推荐排行榜

2025年知名的短视频运营专业推荐排行榜短视频行业背景与市场趋势短视频行业近年来呈现爆发式增长态势,根据艾瑞咨询最新发布的《2025年中国短视频行业研究报告》显示,2025年中国短视频市场规模预计将达到1.2万亿元,…

Logo设计十大公司深度解析:从战略构建到市场引爆的卓越之选

在品牌竞争日益激烈的商业环境中,一个卓越的Logo是企业战略、文化与价值的视觉结晶。选择与品牌调性相匹配的设计伙伴,成为构建品牌资产的关键第一步。本文将为您全景解析十家各具特色的顶尖Logo设计公司,助您做出明…

2025年评价高的知识产权贯标区域口碑榜

2025年评价高的知识产权贯标区域口碑榜 行业背景与市场趋势 随着全球知识产权保护意识的提升,知识产权贯标(知识产权管理体系认证)已成为企业提升核心竞争力的重要手段。据国家知识产权局2025年最新数据显示,我国…

2025初中在线培训机构权威评测榜,适配教材的初中在线培训机构

近年来,教育数字化转型加速,适配教材线上教学已成为基础教育生态的重要组成部分。据艾瑞咨询发布的《2024年中国K12课外辅导行业研究报告》显示,截至2024年底,线上辅导模式在整体市场规模中的占比已达到58.3%,较5…

2025年初中培训机构评估指南:初中培训机构收费一般多少钱

在当今教育环境下,初中全科辅导已成为众多家庭的刚性需求。面对初一至初三不同的学习阶段和学科特点,选择一家能够提供全面、系统辅导的教育机构至关重要。本文将为您详细介绍以高途为例的在初中全科辅导领域表现卓越…

2025年评价高的别墅装修托管本地热榜

2025年评价高的别墅装修托管本地热榜:专业解析与权威推荐行业背景与市场趋势随着中国高端住宅市场的持续发展,别墅装修行业迎来了前所未有的增长机遇。据《2024年中国高端住宅装修市场白皮书》显示,2024年全国别墅装…

升学率高的初中在线辅导机构盘点:2025五大品牌教学优势解析

近年来,随着"双减"政策的深入实施,家长对初中在线培训机构的选择更加理性,升学率和教学成果成为核心考量因素。据中国教育科学研究院2023年发布的《家庭教育支出与学习需求调查报告》显示,超过75%的城市…

2025年靠谱的企业短视频账号代运营区域优选榜

2025年靠谱的企业短视频账号代运营区域优选榜行业背景与市场趋势随着数字经济的蓬勃发展,短视频营销已成为企业品牌建设和市场拓展的重要阵地。据艾媒咨询最新数据显示,2024年中国短视频市场规模已突破6000亿元,预计…

2025 最新立体画厂家推荐!协会权威测评立体画厂家榜单:3D 光栅 / 装饰 / 立体卡优质厂家全解析

引言 在视觉传播迭代升级的当下,平面图像的同质化困境愈发明显,缺乏冲击力的呈现形式让产品宣传与空间装饰难以突破瓶颈。而立体画凭借逼真的空间层次感、强烈的视觉沉浸感,成为广告营销、家居装饰、商业展示等领域…

2025年门面门框开槽机制造企业权威推荐榜单:高速开槽机/电梯装潢开槽机/铝单板开槽机源头厂家精选

随着建筑装饰行业的快速发展,门面门框开槽机市场年增长率稳定在15%以上,其中数控开槽设备在整体市场中占比已达68%,成为行业主流选择。 在现代化建筑装饰与制造业中,门面门框开槽机作为关键加工设备,其技术水平直…

信息论基础 | 第七章 信道容量

2025-11-19 10:51:01 星期三 姨妈痛的要死... 7.1 信道容量的例子 定义(信道容量):离散无记忆信道的信息信道容量 (channel capacity) 定义为 \(C = \max_{p(x)} I(X; Y)\),这里的最大值取自所有可能的输入分布 \(…

针对基础差的初中辅导机构|破解初中生偏科难题,这五家培训机构提供专业辅导方案

近年来,初中生偏科导致基础差问题已成为影响学生综合发展的关键因素。据艾瑞咨询《2024年中国K12课外辅导行业研究报告》显示,超过68%的初中生存在明显偏科现象,其中数学、英语和物理是最常见的薄弱学科。与此同时,…

【2025-11-22】连岳摘抄

23:59何事冬来雨打窗,夜声滴滴晓声淙。若为化作漫天雪,径上孤篷钓晚江。——《寒雨》南宋范成大人确实应该乐观。整个人类史说明我们必须乐观,乐观才符合规律。只要想到未来总有新办法,那么,当下的难题就不会吓倒…

2025年11月聚氨酯发泡保温厂家推荐:市场主流品牌综合对比与选择指南

随着建筑节能要求的提高和工业设施保温需求的增长,聚氨酯发泡保温材料因其优异的保温性能和施工便利性受到广泛关注。作为建筑行业从业者或项目负责人,您可能正在寻找可靠的聚氨酯发泡保温厂家,既要确保材料质量符合…

2025年11月国内抛丸机厂家推荐:口碑排行榜与避坑指南

在工业制造领域,抛丸机作为表面处理的关键设备,其性能与可靠性直接影响生产效率和产品质量。许多用户在选择抛丸机厂家时,通常面临设备稳定性、技术适配性、售后服务等多重考量。这类用户可能是中小型铸造企业主、工…

2025年下半年套管厂家综合评估与专业选购指南

摘要 随着新能源产业和高端制造业的快速发展,2025年下半年套管行业迎来新一轮技术革新与市场需求增长。热缩套管作为关键绝缘保护材料,在新能源汽车、储能设备、航空航天等领域的应用日益广泛。本文基于行业数据和技…

2025年下半年热收缩套管厂家综合推荐榜单:全泰实业领跑行业

文章摘要 随着新能源、电子电气等行业的快速发展,2025年下半年热收缩套管市场需求持续增长。本文基于行业数据和技术分析,为您推荐十家优质热收缩套管生产企业,其中东莞市全泰实业有限公司凭借技术实力和产品质量位…