snmp工具_运维超级好用工具大PK,你在用哪个?

运维行业有句话:“无监控、不运维”,是的,一点也不夸张,监控俗称“第三只眼”。没了监控,什么基础运维,业务运维都是“瞎子”。

所以说监控是运维这个职业的根本。尤其是在现在DevOps这么火的时候,用监控数据给自己撑腰,这显得更加必要。

有人说运维是背锅侠,那么,有了监控,有了充足的数据,一切以数据说话,运维还需要背锅吗,所以作为一个运维工程师,如何构建一套监控系统是你的第一件工作。

1、常见的运维监控工具

现在运维监控工具非常多,哪个好,哪个不好,哪个适合你,哪个不适合你,其实只有你了解了他们的特性后,才知道,所以从这里开始讲起。

  • Cacti

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。

简单的说Cacti就是一个PHP程序。它通过使用SNMP协议获取远端网络设备和相关信息,(其实就是使用Net-SNMP 软件包的snmpget 和snmpwalk 命令获取)并通过RRDTOOL工具绘图,通过PHP程序展现出来。我们使用它可以展现出监控对象一段时间内的状态或者性能趋势图。

Cacti是很老的一款监控工具了,其实说它是一款流量监控工具更合适,对流量监控比较精准,但缺点很多,出图不好看,不支持分布式,也没有告警功能,所以使用的人会越来越少。

  • Nagios

Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

Nagios主要的特征是监控告警,最强大的就是告警功能,可支持多种告警方式,但缺点是没有强大的数据收集机制,并且数据出图也很简陋,当监控的主机越来越多时,添加主机也非常麻烦,配置文件都是基于文本配置的,不支持web方式管理和配置,这样很容易出错,不宜维护。

  • Zabbix

Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供强大的通知机制以让系统运维人员快速定位/解决存在的各种问题。

Zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。

Zabbix解决了cacti没有告警的不足,也解决了nagios不能通过web配置的缺点,同时还支持分布式部署,这使得它迅速流行起来,zabbix也成为目前中小企业监控最流行的运维监控平台。

当然,Zabbix也有不足之处,它消耗的资源比较多,如果监控的主机非常多时,可能会出现监控超时、告警超时等现象,不过也有很多解决办法,比如提高硬件性能、改变zabbix监控模式等。

  • Ganglia

Ganglia是一款为HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的gmond守护进程来采集CPU 、内存、硬盘利用率、I/O负载、网络流量情况等方面的数据,然后汇总到gmetad守护进程下,使用rrdtool存储数据,最后将历史数据以曲线方式通过PHP页面呈现。

Ganglia监控系统有三部分组成ÿ

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
net-snmp是一个开源的SNMP工具集,它提供了一系列的命令行工具和库函数,用于管理和监控网络设备。以下是net-snmp工具的一些介绍: 1. snmpwalk:用于遍历一个SNMP对象树,并输出所有的变量和值。 ```shell snmpwalk -v 2c -c public localhost ``` 2. snmpget:用于获取一个SNMP对象的值。 ```shell snmpget -v 2c -c public localhost sysDescr.0 ``` 3. snmpset:用于设置一个SNMP对象的值。 ```shell snmpset -v 2c -c private localhost sysContact.0 s "admin@example.com" ``` 4. snmptrap:用于发送SNMP Trap消息。 ```shell snmptrap -v 2c -c public localhost '' 1.3.6.1.4.1.1234.1.0.1 1.3.6.1.4.1.1234.1.0.2 s "test trap" ``` 除了这些命令行工具之外,net-snmp还提供了一些库函数,可以用于在C程序中进行SNMP开发。例如,可以使用以下代码发送SNMP Trap消息: ```c #include <net-snmp/net-snmp-config.h> #include <net-snmp/net-snmp-includes.h> int main(int argc, char **argv) { netsnmp_session session, *ss; netsnmp_pdu *pdu; oid trap_oid[] = {1, 3, 6, 1, 4, 1, 1234, 1, 0, 1}; oid enterprise_oid[] = {1, 3, 6, 1, 4, 1, 1234}; oid specific_oid[] = {1, 3, 6, 1, 4, 1, 1234, 1, 0, 2}; char *trap_msg = "test trap"; size_t trap_msg_len = strlen(trap_msg); init_snmp("snmptrap"); snmp_sess_init(&session); session.peername = strdup("localhost"); session.version = SNMP_VERSION_2c; session.community = "public"; session.community_len = strlen(session.community); SOCK_STARTUP; ss = snmp_open(&session); if (!ss) { snmp_perror("snmptrap"); exit(1); } pdu = snmp_pdu_create(SNMP_MSG_TRAP2); snmp_add_var(pdu, enterprise_oid, OID_LENGTH(enterprise_oid), 'o', "1234", strlen("1234")); snmp_add_var(pdu, specific_oid, OID_LENGTH(specific_oid), 'i', "2"); snmp_add_var(pdu, trap_oid, OID_LENGTH(trap_oid), 's', trap_msg, trap_msg_len); if (snmp_send(ss, pdu) == 0) { snmp_perror("snmptrap"); exit(1); } snmp_close(ss); SOCK_CLEANUP; exit(0); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值