syslog写远端日志超时问题

在基于libuv的底层库中,使用syslog进行远程日志记录时遇到问题。上线后,部分用户出现登录失败,表现为日志时间戳间隔2秒的规律。经过排查,发现当syslog接收端异常时,发送端的数据会堵塞并超时,解释了日志间隔现象。由于证据缺失,问题未能解决,导致系统回滚,影响了进一步发展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    背景描述:我们基于libuv开发了一个跨平台的底层库;其中,日志部分,用的是syslog,实际应用过程中是配置的romote; 需要将现有产品移植到基于uv的库。经过一段时间的调测,可以正常业务了。于是就上线了。

    问题描述:上线运行了1天多,突然发现有些人登陆失败、登陆不了;但是有些人却登陆正常。过了一段时间,直接发现在线玩家都无法正常登陆。重启之后,正常运行。但是过了一段实际,发现又无法正常登陆。所以,整个系统换下来,回滚到老的系统。取下日志看,就发现了一个异常:在出问题的那段时间,网关日志的时间戳是间隔2秒,特别规律。

    结果描述:我排查好久,没发现其他特别的异常。这个唯一的异常(2秒打印一行日志),也无从定位。查看过我们日志系统的代码,没发现问题。最终没有解决。(本来有机会上位的,但是因为这个问题,没上成。加工资也不好提啊,毕竟事情没做好)

    后续描述:时间过去近1年了,事情也忘的差不多了。就在昨天,突然发现,syslog的romote(称为B端)接受异常的话,syslog发送数据会堵塞(称为A端)。A端数据,在2秒之后超时。这就很好的解释了那个2秒日志问题。

&nb

### 中兴 5952G 交换机 Syslog 配置与使用说明 #### 基本概念 Syslog 是一种标准的日志记录协议,用于在网络设备上收集和存储日志消息。通过配置 Syslog 功能,可以将中兴 5952G 交换机上的事件日志发送到远程日志服务器以便于集中管理和分析。 #### 日志级别设置 在中兴 5952G 交换机上,可以通过命令行界面 (CLI) 设置不同的日志严重性等级来控制哪些类型的日志会被记录或发送给远程服务器。以下是常见的日志级别及其含义: | 级别 | 数字表示 | 描述 | |------|-----------|----------------------------------------| | Emergency | 0 | 设备不可用 | | Alert | 1 | 必须立即采取行动 | | Critical | 2 | 关键条件 | | Error | 3 | 错误条件 | | Warning | 4 | 警告条件 | | Notice | 5 | 正常但重要的情况 | | Informational | 6 | 一般信息性消息 | | Debugging | 7 | 调试级别的消息 | 默认情况下,所有级别的日志都会被记录并显示在本地终端上。如果希望减少不必要的干扰,则需调整此参数以仅接收特定重要性的通知[^3]。 #### 远程日志服务器配置 为了使交换机能向外部系统报告其状态变化和其他活动详情,需要指定一个远端位置作为目标地址以及相应的传输方式。下面展示如何完成这些操作的具体步骤: 1. **定义源接口** 如果网络中有多个路径到达同一个目的地或者出于安全考虑想要固定某个出口点的话,应该先设定好用来发起连接的那个逻辑单元——即循环回送地址(loopback address),这样即使物理链路发生改变也不会影响数据包路由方向。 ```shell logging source-interface LoopBack0 ``` 2. **添加主机条目** 接下来要告知设备哪个IP代表了实际接受方的位置,并可选地附加一些额外选项比如超时重传次数等细节内容。 ```shell logging host 192.168.1.100 ``` 3. **启用设施码过滤功能(可选)** 不同厂商生产的硬件可能采用各自独特的编码体系来进行分类区分各类别的行为动作;因此有必要确认当前所使用的具体数值范围是否匹配预期需求。 ```shell logging facility local7 ``` 4. **应用优先级筛选机制** 根据业务场景的实际要求决定保留哪几类最为关注的信息类别上传云端保存起来供后续审计核查之用。 ```shell logging trap warning ``` 以上四步构成了完整的syslog服务初始化流程,在执行完毕之后记得保存改动以防意外断电等情况造成丢失修改成果的风险。 #### 实际案例演示 假设现在有一台位于企业内部局域网环境中的ZTE ZXR10系列型号为5952G的二层千兆以太网接入型产品正在运行当中,管理员希望通过监控中心平台实时掌握该装置的工作状况从而及时发现潜在隐患加以解决。那么按照上述指导原则就可以编出如下脚本代码片段实现自动化部署目的: ```shell #进入全局配置模式 system-view #创建loopback虚拟接口并分配静态IPv4地址 interface LoopBack0 ip address 10.0.0.1 255.255.255.255 #返回上级目录继续下一步骤处理事务 quit #开启SNMP代理进程监听来自外界访问请求的消息队列通道 snmp-agent sys-info version v2c snmp-agent community read public snmp-agent target-host trap address udp-domain 192.168.1.100 params securityname notify-test v2c #启动RMON历史性能统计采集任务计划安排表单项目清单列表项之一 rmon event 1 log trap-severity critical description "Critical Event Occurred" #最后一步就是正式激活整个框架结构体系开始正常运作啦! logging enable ``` 请注意这里的示例仅为教学用途提供参考价值而已,真实环境中还需要结合实际情况做出适当调整优化才能达到最佳效果哦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值