# monit2 **Repository Path**: chaoleo/monit2 ## Basic Information - **Project Name**: monit2 - **Description**: 一个基于mac地址识别,并对mac地址及相关的数据进行监控、管理的一个系统。 主要用于机房的网络监控和硬件设备的管理。 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-12-12 - **Last Updated**: 2024-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # monit2 (2007/04 -- 2020/08) # 一 介绍 一个基于mac地址识别,并对mac地址及相关的数据进行监控、管理的一个系统。 主要用于机房的网络监控和硬件设备的管理。 # 二 应用场景 假设 你是一名运维人员;负责一个企业的内部网络的正常运行或一个机房的管理。 下面我列举了一些部分常见的运维事项或管理中要遇到的问题,你是否有比较好的解决方案? - 网络中有多少机器,各自的mac是多少, 各自使用的IP地址是多少,个人私自换IP,如何快速得知? - 想随时了解办公网、机房的外出流量是多少?哪些mac或哪些ip的进出速率是多少?或top10排名是? - 最近1天或3天,或一周或半月或一个月,新接入网络有哪些机器,它们的mac和最新使用ip是多少? - 新增加的机器接入网络了,它们的物理位置在哪里?在哪个办公位?机房的哪个机柜? 假设机器搬动换了位置,你如何快速得知? - 网络突然变慢或网络异常,你如何快速得知哪个mac进或出流量异常? 假设你在N多电话的催促之下,终于找到一个或多个mac, ip它们的网络行为很可疑问;老板或你的上级问你,是哪些机器或同事造成的,此时你如何通过mac或IP快速定位是哪一位帅哥和美女啊? - 所有的机器mac如何和真实的使用者(同事姓名)关联起来? 你要一一对他办公桌核对mac进行手工登记?时间一长,又有变动,如何实时更新?这是什么效率? - 你作为网络维护的负责人,你想达到未在你那登记过的机器mac,即使他私自接线,配置IP,也无法上网?如何实现这个目标? - 机器的ip,和物理位置,可能会随部门变动,整合,人员工作划分,发生变化。你如何得知,某个部门现在有哪些办公电脑,其mac和ip是多少?机房的随便哪个机柜有些机器放里面? - 我直接说机房有个ip 192.168.9.3 突然不通了, 你去机房了,如何在30秒内,准确地找到这台机器在哪里(哪个机柜,机柜的上部,中部还是下部)? - 机房有台服务器ip可达,但http打不开了,你如何能快速第一时间得知此异常事件? - 机器ip可达,http静态页面访问正常,但http下的某个cgi打不开了, 你如何能快速第一时间得知此异常事件? - 当你得知一个mac或ip流量异常,你如何直接封掉他的上网流量? 让他主动找你? - 办公网络和机房的所有接入层交换机,目前的接口使用情况你知道吗? 用了多少个口,还剩多少个? - 办公网络和机房若有arp攻击(arp扫描和arp欺骗),影响了很多人上网。你如何快速找到是哪台机器人为或意外中毒造成的? **而monit2可以解决上面所有的问题。** # 三 开发背景 本人负责整个研发中心的一个测试机房管理、运维工作。测试部的项目测试环境、研发各项目组的开发环境均放在此机房中。 在日常运维中,经常会遇到某个IP不通、某个IP不知存放在哪个机架、所有机器的MAC地址不明、所有机器的进出流量多大均无法得知。 为了解决上述需求,通过在所有机器流量出口处串行一台ucf/linux(本人基于Linux Kernel + uClibc定制),并运行着monit2程序,将所有的报文获取下来,获取mac地址和ip等信息,创建hashtab,加入mac地址进去进行跟踪;更新发现时间、活动时间、计算即时和累计流量等各种信息。通过实现接口,供前端获取相应的信息进行前端展示。 # 四 软件架构 开发工具/语言: Vim + C + Ruby + Bash + gcc 整个系统使用 Nginx 和 C/S架构 。 S端运行着基于底层处理网络数据报文的程序,并开放了TCP监听的接口;C端运行着查询管理工具,调用时会向S发送TCP查询请求,将响应的结果进行JSON组装返回给前端。 特性: - 由于是底层实现,所以性能好,自身不会成为性能瓶颈; - 自动识别接入层交换机下的所有产生流量的mac和ip; - 自动统计所有mac流量信息; - 支持‘通知’编写和显示; - 支持相关‘事件’的显示和日志记录; - 支持mac先登记、再使用的原则,方便网络管理员管理; - 支持mac登记统计和审计; - 支持按mac进出流量累计和速率进行排序; - 支持mac物理位置自动识别,方便去现场快速找到物理设备; - 支持按机柜、接入层交换机进行过滤显示其下存在mac清单; - 支持接入层交换机所有接口使用与否面板展示,方便网络管理员了解接口使用情况; - 支持重点监控某此mac的可达性;(包括ARP、ICMP可达;TCP/UDP端口可达;HTTP对象可达); # 五 感谢人 同事许健(qq 810599089),擅长Java、前后端开发。在此系统中的开发过程,他主要负责前端的开发工作。本人负责除前端外的后端及底层工作。 # 六 系统演示 主要分下面几块: 目录 ---------------- - 新发现 - 新登记 - 通告 - 事件 - 重点监控 - 管理交换机 - ARP检测 - 其它 录制的gif有点多,请见谅! ---------------- ## 6.1 新发现 ### 6.1.1 全部和查询 查看gif动画: [新发现-全部和查询.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E5%8F%91%E7%8E%B0/%E6%96%B0%E5%8F%91%E7%8E%B0-%E5%85%A8%E9%83%A8%E5%92%8C%E6%9F%A5%E8%AF%A2.gif) ![表](./example/新发现/新发现-全部和查询.gif) ### 6.1.2 按机柜过滤显示 查看gif动画: [新发现-按机柜过滤显示.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E5%8F%91%E7%8E%B0/%E6%96%B0%E5%8F%91%E7%8E%B0-%E6%8C%89%E6%9C%BA%E6%9F%9C%E8%BF%87%E6%BB%A4%E6%98%BE%E7%A4%BA.gif) ![表](./example/新发现/新发现-按机柜过滤显示.gif) ### 6.1.3 按黑白名单过滤显示 查看gif动画: [新发现-按黑白名单过滤显示.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E5%8F%91%E7%8E%B0/%E6%96%B0%E5%8F%91%E7%8E%B0-%E6%8C%89%E9%BB%91%E7%99%BD%E5%90%8D%E5%8D%95%E8%BF%87%E6%BB%A4%E6%98%BE%E7%A4%BA.gif) ![表](./example/新发现/新发现-按黑白名单过滤显示.gif) ### 6.1.4 按管理交换机过滤显示 查看gif动画: [新发现-按管理交换机过滤显示.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E5%8F%91%E7%8E%B0/%E6%96%B0%E5%8F%91%E7%8E%B0-%E6%8C%89%E7%AE%A1%E7%90%86%E4%BA%A4%E6%8D%A2%E6%9C%BA%E8%BF%87%E6%BB%A4%E6%98%BE%E7%A4%BA.gif) ![表](./example/新发现/新发现-按管理交换机过滤显示.gif) ### 6.1.5 物理位置识别和其它信息 查看gif动画: [新发现-物理位置识别和其它信息.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E5%8F%91%E7%8E%B0/%E6%96%B0%E5%8F%91%E7%8E%B0-%E7%89%A9%E7%90%86%E4%BD%8D%E7%BD%AE%E8%AF%86%E5%88%AB%E5%92%8C%E5%85%B6%E5%AE%83%E4%BF%A1%E6%81%AF.gif) ![表](./example/新发现/新发现-物理位置识别和其它信息.gif) ### 6.1.6 主机流量图历史查看 查看gif动画: [网络发现-设备流量历史图1.gif] https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E5%8F%91%E7%8E%B0/%E7%BD%91%E7%BB%9C%E5%8F%91%E7%8E%B0-(%E8%AE%BE%E5%A4%87%E6%B5%81%E9%87%8F%E5%8E%86%E5%8F%B2%E5%9B%BE1.gif) ![表](./example/新发现/网络发现-设备流量历史图1.gif) ## 6.2 新登记 ### 6.2.1 登记统计 查看gif动画: [新登记-登记统计.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E7%99%BB%E8%AE%B0-%E7%99%BB%E8%AE%B0%E7%BB%9F%E8%AE%A1.gif) ![表](./example/新登记-登记统计.gif) ### 6.2.2 管制黑和管制白 查看gif动画: [新登记-管制黑和管制白.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E5%8F%91%E7%8E%B0/%E6%96%B0%E7%99%BB%E8%AE%B0-%E7%AE%A1%E5%88%B6%E9%BB%91%E5%92%8C%E7%AE%A1%E5%88%B6%E7%99%BD.gif) ![表](./example/新发现/新登记-管制黑和管制白.gif) ### 6.2.3 提交登记和注销登记 查看gif动画: [新登记-提交登记和注销登记.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E6%96%B0%E5%8F%91%E7%8E%B0/%E6%96%B0%E7%99%BB%E8%AE%B0-%E6%8F%90%E4%BA%A4%E7%99%BB%E8%AE%B0%E5%92%8C%E6%B3%A8%E9%94%80%E7%99%BB%E8%AE%B0.gif) ![表](./example/新发现/新登记-提交登记和注销登记.gif) ## 6.3 通告 ### 6.3.1 查看编辑和新新增 查看gif动画: [通告-查看编辑和新新增.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E9%80%9A%E5%91%8A-%E6%9F%A5%E7%9C%8B%E7%BC%96%E8%BE%91%E5%92%8C%E6%96%B0%E6%96%B0%E5%A2%9E.gif) ![表](./example/通告-查看编辑和新新增.gif) ## 6.4 事件 ### 6.4.1 arp扫描和欺骗 查看gif动画: [事件-arp扫描和欺骗.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E4%BA%8B%E4%BB%B6/%E4%BA%8B%E4%BB%B6-arp%E6%89%AB%E6%8F%8F%E5%92%8C%E6%AC%BA%E9%AA%97.gif) ![表](./example/事件/事件-arp扫描和欺骗.gif) ### 6.4.2 fnd-3构造外出流量触发mac_outbps 查看gif动画: [事件-fnd-3构造外出流量触发mac_outbps.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E4%BA%8B%E4%BB%B6/%E4%BA%8B%E4%BB%B6-fnd-3%E6%9E%84%E9%80%A0%E5%A4%96%E5%87%BA%E6%B5%81%E9%87%8F%E8%A7%A6%E5%8F%91mac_outbps.gif) ![表](./example/事件/事件-fnd-3构造外出流量触发mac_outbps.gif) ## 6.5 重点监控 ### 6.5.1 ## 6.6 管理交换机 ### 6.6.1 接口使用分布 查看gif动画: [管理交换机-接口使用分布.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E7%AE%A1%E7%90%86%E4%BA%A4%E6%8D%A2%E6%9C%BA-%E6%8E%A5%E5%8F%A3%E4%BD%BF%E7%94%A8%E5%88%86%E5%B8%83.gif) ![表](./example/管理交换机-接口使用分布.gif) ## 6.7 ARP检测 ### 6.7.1 ip列表和自身arp汇总 查看gif动画: [arp-ip列表和自身arp汇总.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/arp/arp-ip%E5%88%97%E8%A1%A8%E5%92%8C%E8%87%AA%E8%BA%ABarp%E6%B1%87%E6%80%BB.gif) ![表](./example/arp/arp-ip列表和自身arp汇总.gif) ### 6.7.2 全局arp汇总及事件 查看gif动画: [arp-全局arp汇总及事件.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/arp/arp-%E5%85%A8%E5%B1%80arp%E6%B1%87%E6%80%BB%E5%8F%8A%E4%BA%8B%E4%BB%B6.gif) ![表](./example/arp/arp-全局arp汇总及事件.gif) ## 6.8 其它 ### 6.8.1 faq 查看gif动画: [其它-faq.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E5%85%B6%E5%AE%83-faq.gif) ![表](./example/其它-faq.gif) ### 6.8.2 top统计 查看gif动画: [其它-top统计.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E5%85%B6%E5%AE%83-top%E7%BB%9F%E8%AE%A1.gif) ![表](./example/其它-top统计.gif) ### 6.8.3 接口流量汇总和监控 查看gif动画: [其它-接口流量汇总和监控.gif](https://gitee.com/xiaojin2630/monit2/blob/master/example/%E5%85%B6%E5%AE%83-%E6%8E%A5%E5%8F%A3%E6%B5%81%E9%87%8F%E6%B1%87%E6%80%BB%E5%92%8C%E7%9B%91%E6%8E%A7.gif) ![表](./example/其它-接口流量汇总和监控.gif)