让monit支持中文

现在很多rails的应用都用monit来做监控,monit提供了一个简单的web server可以很好的远程看到监控资源的情况。

但是有一个问题就是这个web server实现的比较简单,没有考虑多语言的支持。不过,我们可以通过简单修改一下monit的源代码,让它支持中文。

修改的方法有两个:
1、http/cervlet.h里面HEAD_HTML这个宏,是monit页面的html头,可以考虑增加:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
然后,用unicode的方式来编辑monit的控制文件,这样,就能够在页面上用unicode的方式来访问了

这个方法有一个不方便的地方就是必须要用unicode的方式来编辑控制文件。

2、对cervlet.c进行修改,用iconv库把url进行编码转换。在cervlet.c增加如下函数

  1. #include <iconv.h>
  2. int  code_convert( char  *from_charset, char  *to_charset, char  *inbuf, int  inlen, char  *outbuf, int  outlen)
  3. {
  4.     iconv_t cd;
  5.      //int rc;
  6.      char  **pin = &inbuf;
  7.      char  **pout = &outbuf;
  8.     cd = iconv_open(to_charset,from_charset);
  9.      if  (cd==0)  return  -1;
  10.     
  11.     memset(outbuf, 0, outlen);
  12.      if  (iconv(cd, ( const   char  **)pin, (unsigned  int  *)&inlen, pout, &outlen) == -1) 
  13.     {   
  14.         perror( "iconv error:" );
  15.          return  -1;
  16.     }
  17.     iconv_close(cd);
  18.      return  0;
  19. }


再把handle_action函数的前面几行进行修改

  1. static   void  handle_action(HttpRequest req, HttpResponse res) {
  2.    char  *org_name= req->url;
  3.    const   char  *action= get_parameter(req,  "action" );
  4.   
  5.    char  new_name[512];
  6.   code_convert( "UTF-8""GBK" , org_name, strlen(org_name), new_name, 512);
  7.    char  *name = new_name;

重新编译之后就可以使用了,这个方式的缺点是修改的量有点大,但是以后使用起来就比较方便了。


注:以上代码基于monit-4.6

=============================================================== 简介+注册机使用方法 =============================================================== 简介: HostMonitor是一种可以持续的监测服务器可用性和性能的系统管理工具。当网络出现错误时,它可以警报网络管理员,甚至自动解决问题,从而避免问题严重化至不能解决,也保护了计算机的数据,减少了高成本网络瘫痪的可能性。 Hostmonitor是一款适用广泛的网络监控软件,从小型网络系统到企业业级和网路都可以适用 。 您可能会说:“像这种程序有许多。”是的。但是请您查看一下hostmonitor的功能并比较一下他的强大功能和灵活性,真是超低价,物美价廉: • 拥有60种测试方法,我们的软件几乎可以监测服务器的任何参数。 • 您可以利用其高适用性的特点灵活使用HostMonitor来实现您的特殊要求。 • HostMonitor可以生成各种格式(比如Text,HTML,DBF,ODBC等等)和内容细节的LOG日志文件。。 • 内置的报告管理器让您可以根据自己喜好用各种各样的方式创造和定制报告。 • 通过在Windows, FreeBSD, Linux, NetBSD, OpenBSD and Solaris等操作系统上安装代理,可以轻松监控远程网络系统。 • Web Service,Telnet Service以及Remote Control Console(遥控控制台)简化了远程管理。 • 此外还有。。。 60种测试方法 HostMonitor(网络监视器)可以检查任何TCP 服务,ping 主机,检查路由,监控Web,FTP,邮件,DNS服务器,检查可利用的磁盘空间,监测文件或文件夹的大小,检查文件和网站的完整性,测试SQL 服务器和监控网络流量等。见完整的测试清单。 但是,同样重要的还有如何管理监控任务。测试项目被分为不同的组或文件夹,每个文件夹有它自己的设置。如调色板,报告目录,不同的统计信息等等。 测 试会定期执行(如每5分钟)或按时执行(如每星期五在下午6和下午9点之间)。测试也可以直接由HostMonitor(网络监视器)或者由安装在远程网 络上的Remote Monitoring Agent(远距离监控代理)执行。有些测试需要其他支持,例如,当您的主要路由器工作时,您可以轻松的设定HostMonitor(网络监视器)检查 10台网络服务器,而当您的主要路由器停止工作时,您可以检查另一台服务器也就是您的备用服务器。 30种报警方式 HostMonitor 是网络管理软件,它提供不同的方式来响应失败的服务。通过音频和视频使在机器附近的人发出报警。通过电子邮件和传呼器通知广范围远程操作员。 HostMonitor可以执行已设定好策略来自动恢复应用服务,而不需要人工干预。例如“重启服务”,“重新启动计算机”或“拨号联网”。请见完整的行 动目录。 高灵活性行动模式允许您依据测试结果按照预先设定的程序开始行动。 -例如,只有当主要和备用邮件服务器不反应时,您可以采取一些措施。 -或者可以设定行动模式。在正常办公时间内呼叫IT经理和网络管理员,在周末等其他时间内,HostMonitor所做的工作只是登记日志,那么仅仅呼叫管理员。 -另一个例子:当一些重要的服务出故障时,HostMonitor可以重新启动服务器。如果这样不起作用,网络服务器可以发送电子邮件给值班工程师。如果在随后三次探测之后服务器仍然不能运作,将会呼叫网络管理员直至备用服务器启用。 安装网络监视器,你会发现实施上述所有行为模式是多么容易。 是的,各种各样的最大变量允许您为数百或数以万计的监视任务使用同一个行动模式(测试项目)。例如,如果您在100台服务器上监视10个不同的服务,您可以使用一个行动重新开始所有此系统中的失败服务。 强大的报告管理器和记录分析器 HostMonitor可以提供测试结果的记录文件和报告。网络监视器使用不同的细节水平和文件格式包括文本,HTML,DBF和ODBC,可以提供各种各样的记录文件,还可以依据您的需要来设定。 高灵活性的内置报告管理器可以用各种方法依据您的喜好创造和定制报告。例如,为IT经理设计的报告可能与为网络管理员设计的报告有完全不同的品质。并且注意不同组别的测试有其自己的报告目录,对应这个小组的每个报告产生时,都有一个报告产生时间随之产生。 而 且,Advanced HostMonitor产品包裹包括Log Analyzer(日志分析仪),日志分析仪可以为每个测试主机图解不同信息。日志分析仪可以收集统计信息,显示特定时间内所有服务器或者单个服务器的所 有反应时间图表。使用这些统计信息,管理员可以花费些时间分析具体服务器的请求时间。 HostMonito可以直接检查远程主机或使用安 装于另一个网络的RMA(远距离监控代理)。远距离监控代理是一个可以接收从网络监视器发出的请求的小程序。远距离监控代理可以增加网络的安全,减少网络 信息流通量,简化网络管理,并且准许监测无法直接从网络监视器监测的系统。例如使用远距离监控代理,网络监视器能够在Linux系统中检查出一定数量的运 行程序。 网络服务, 远程登陆服务,遥控操纵台 Web Service的工作就像HTTP服务器,为HostMonitor提供WEB接口。Telnet Service的工作像Telnet Server远程登录服务器,允许你使用任何远程登录客户来远距离的控制HostMonitor。这些应用允许检查任何测试的简要或详细状况,开始或停止 监视过程,使能或者不能警报,改变全程最大变量等等。并且能够使测试能或不能进行,重新设计统计,强迫测试执行甚至改变有些测试的参量。遥控操纵台能让运 行在远距离系统上的网络监视器如同本地网络监视器一样工作。几名操作员可以在不同系统上开始使用RCC,也可以与HostMonitor同时使用。 工具和辅助软件 除核心软件网络监视器之外,一个Advanced Host Monitor还包括以下辅助组件: IP-Tools provides 19 TCP/IP utilities IP-Tools是一个通用而强大的网络工具,它可以提供19项TCP/IP功用。IP-Tools是一个独立的产品包,但是一Enterprise License包括一个IP-Tools license。 =============================================================== 注册机使用方法: 打开HostMonitor注册机,然后在下拉列表中选择:host monitor 下面填写域名,如:www.baidu.com 然后单击Generate,即可获取注册码 注册方法: 打开hostMonitor,单击help--license.., 在打开的窗口中单击register Now,然后输入域名,再输入注册码即可
<think>我们正在解决用户的问题:在启用监控模式时遇到'Invalid argument (-22)'错误。根据系统指令,我们需要使用中文回答,并正确格式化数学表达式(虽然本问题可能不涉及数学表达式,但若有则需遵守规则)。同时,我们需要生成相关问题,并在回答末尾添加引用标识(但注意用户提供的引用可能不直接相关,我们需谨慎使用)。 根据用户描述,错误信息为:ERROR adding monitor mode interface command failed Invalid argument (-22) 这个错误通常与无线网卡驱动或硬件不支持监控模式有关。以下是一些解决步骤: 1. **确认无线网卡支持监控模式**:并非所有无线网卡都支持监控模式。用户可以使用命令`iw list`来查看网卡的能力。在输出中查找“Supported interface modes”部分,看是否包含“monitor”。如果没有,则网卡不支持监控模式。 2. **检查网卡是否被其他进程占用**:如果网卡正在被NetworkManager或其他网络管理工具使用,可能会导致无法设置监控模式。可以尝试关闭这些服务: ```bash sudo systemctl stop NetworkManager sudo systemctl stop wpa_supplicant ``` 3. **使用正确的工具设置监控模式**:通常使用`airmon-ng`或`iw`命令。例如: - 使用`airmon-ng`: ```bash sudo airmon-ng start wlan0 ``` - 使用`iw`: ```bash sudo iw dev wlan0 interface add mon0 type monitor ``` 4. **尝试不同的设置方法**:有时,特定的驱动程序可能需要不同的设置方式。例如,有些驱动需要先卸载再重新加载驱动模块,并设置特定参数。例如,对于rtl8812au驱动,可能需要: ```bash sudo modprobe -r rtl8812au sudo modprobe rtl8812au rtw_drv_log_level=0 rtw_vht_enable=2 rtw_power_mgnt=0 rtw_switch_usb_mode=1 ``` 5. **更新驱动程序**:如果驱动程序过旧,可能不支持监控模式。尝试更新到最新版本的驱动程序。 6. **检查内核日志**:使用`dmesg`命令查看内核日志,可能会提供更详细的错误信息。例如: ```bash dmesg | tail ``` 7. **尝试不同的网卡名称**:在创建监控接口时,可以尝试不同的名称(如mon0, mon1等),避免冲突。 8. **考虑使用虚拟接口**:有些驱动程序允许在已有接口上添加一个监控模式的虚拟接口,而不影响原始接口。 由于用户提供的引用[1]和[2]是关于Monit配置的,与当前问题无关,因此我们不使用这些引用。 但是,我们可以根据问题生成相关问题: §§相关问题§§ 1. 如何检查无线网卡是否支持监控模式? 2. 如何解决驱动不支持监控模式的问题? 3. 有哪些支持监控模式的常见无线网卡? 注意:在回答中,我们并没有使用数学表达式,所以没有使用$...$或$$...$$格式。如果回答中需要,我们会遵守规则。 现在,我们按照步骤给出详细回答。</think>### 解决监控模式接口添加失败问题(错误代码 -22) 当您在使用类似`iw`或`airmon-ng`的工具启用监控模式时遇到`Invalid argument (-22)`错误,通常由以下原因引起: #### 1. **网卡驱动不支持监控模式** - 使用命令检查网卡能力: ```bash iw list | grep -A 10 "Supported interface modes" ``` - 若输出**不包含`* monitor`**,则网卡硬件或驱动不支持监控模式 - **解决方案**: - 更换支持监控模式的网卡(如RTL8812AU、Atheros AR9271等) - 更新或安装专用驱动(如`rtl8812au-dkms`) #### 2. **接口已被占用** - 网络管理器(NetworkManager)或`wpa_supplicant`可能占用了接口: ```bash sudo airmon-ng check kill # 终止冲突进程 sudo systemctl stop NetworkManager # 临时关闭网络服务 ``` #### 3. **驱动模块参数错误** - 某些驱动需要特定参数才能启用监控模式: ```bash # 示例:卸载并重载驱动(以rtl88xxau为例) sudo modprobe -r 88XXau sudo modprobe 88XXau rtw_switch_usb_mode=1 rtw_drv_log_level=0 ``` #### 4. **内核兼容性问题** - 较新的Linux内核(5.16+)可能破坏旧驱动 - **解决方案**: - 回退到LTS内核(如5.15) - 从源码编译最新驱动: ```bash git clone https://github.com/aircrack-ng/rtl8812au.git cd rtl8812au make && sudo make install ``` #### 5. **硬件限制** - USB网卡供电不足可能导致异常 - **解决方案**: - 使用带外接电源的USB集线器 - 避免使用USB 3.0端口(部分网卡与USB3.0兼容性差) > **验证步骤**: > ```bash > sudo ip link set wlan0 down # 关闭接口 > sudo iw dev wlan0 set type monitor # 设置监控模式 > sudo ip link set wlan0 up # 启用接口 > iw dev # 检查模式是否变为"monitor" > ``` ### 常见支持监控模式的网卡型号 | 芯片组 | 推荐驱动 | |--------------|-------------------------| | RTL8812AU | `rtl8812au-dkms` | | Atheros AR9271| `ath9k_htc` (内置) | | RTL8188EU | `rtl8188eu-dkms` |
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值