cacti扩展开发

简介:
[背景]
          今天我们的网络工程师在使用cacti时,想看到一天中每半个小时的平均端口流量,本可以在cacti的图中,选择时间,可工程量太大了,手工操作也太繁琐了,就想有没有什么好的方法,于是我的简单思路就出来了.......这是初稿,我想随着需求,我还要进一步完善吧!
[过程]
 rrd.pl
 #!/usr/bin/perl
print "Please input year!\n";
my $year=<>;
chomp($year);
print "Please input month(Jan,Feb,Mar...)!\n";
my $month=<>;
chomp($month);
print "Please input day!\n";
my $day=<>;
chomp($day);
print "Please input week(Mon,Tue,Wed...)!\n";
my $week=<>;
chomp($week);
my $date_time="$week $month $day 00:00:00 CST $year";
my $timestamp=`date -j -f "%a %b %d %T %Z %Y" "$date_time" "+%s"`;
$timestamp=$timestamp+0;
for(my $i=0;$i<48;$i++){
 `/bin/sh gp1.sh $i $timestamp $timestamp`;
  $timestamp=$timestamp+1800;
}
gp1.sh
#!/bin/sh
ext=$1
start_time=$2
end_time=$(( $3 + 1800 ))
/usr/local/bin/rrdtool graph $ext.png \
--imgformat=PNG \
--start=$start_time \
--end=$end_time \
--title="11.16.242.12 - Traffic - Gi0/1" \
--rigid \
--base=1000 \
--height=120 \
--width=500 \
--alt-autoscale-max \
--lower-limit=0 \
COMMENT:"From 2008/12/16 10\:00\:00 To 2008/12/16 10\:30\:00\c" \
COMMENT:"  \n" \
--vertical-label="bits per second" \
--slope-mode \
DEF:a="/usr/local/share/cacti/rra/11_16_242_12_traffic_in_103.rrd":traffic_in:AVERAGE \
DEF:b="/usr/local/share/cacti/rra/11_16_242_12_traffic_in_103.rrd":traffic_out:AVERAGE \
CDEF:cdefa=a,8,* \
CDEF:cdefe=b,8,* \
AREA:cdefa#00CF00:"Inbound"  \
GPRINT:cdefa:LAST:" Current\:%8.2lf %s"  \
GPRINT:cdefa:AVERAGE:"Average\:%8.2lf %s"  \
GPRINT:cdefa:MAX:"Maximum\:%8.2lf %s\n"  \
LINE1:cdefe#002A97:"Outbound"  \
GPRINT:cdefe:LAST:"Current\:%8.2lf %s"  \
GPRINT:cdefe:AVERAGE:"Average\:%8.2lf %s"  \
GPRINT:cdefe:MAX:"Maximum\:%8.2lf %s"
 
[结果]这样,我1天内24小时,就可以输出48张图片了........哈哈......那么只要按0..47.png点击图片,就可以看到这每半个小时的平均流量了......(为什么说是扩展开发呢,我觉得是在cacti不能满足我们需求的时候,我们自主搞得东西,所以我就叫它扩展开发喽.....不准扔鸡蛋....扔Money!)


本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/120431,如需转载请自行联系原作者
相关文章
|
JavaScript 数据安全/隐私保护
uni-app移动端开发技巧总结(三)
uni-app移动端开发技巧总结
1299 1
uni-app移动端开发技巧总结(三)
|
数据采集 并行计算 Java
【文末送书】Python高并发编程:探索异步IO和多线程并发
【文末送书】Python高并发编程:探索异步IO和多线程并发
523 0
|
8月前
|
人工智能 自然语言处理 API
8.6K star!完全免费+本地运行+无需GPU,这款AI搜索聚合神器绝了!
FreeAskInternet是一款革命性的开源项目,它完美结合了多引擎搜索和智能语言模型,让你在不联网、不花钱、不暴露隐私的情况下,获得媲美ChatGPT的智能问答体验。这个项目最近在GitHub上狂揽8600+星,被开发者称为"本地版Perplexity"。
334 2
|
8月前
|
Java
java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
180 0
|
数据可视化 API PHP
学生信息管理系统-可视化-科目管理CRUD代码生成器
学生信息管理系统-可视化-科目管理CRUD代码生成器
180 5
|
存储 监控 安全
几种确保数据安全的方法:
几种确保数据安全的方法:
775 3
WK
map和filter的区别是什么
在编程中,`map` 和 `filter` 是处理数组或集合时常用的两个函数。`map` 用于将每个元素通过指定函数转换后生成新的数组,而 `filter` 则根据条件筛选出符合条件的元素组成新数组。两者的主要区别在于:`map` 的返回数组长度与原数组相同,但元素被转换;`filter` 的返回数组长度可能不同,只包含符合条件的元素。
WK
465 2
|
弹性计算 数据可视化 安全
高效部署企业门户网站【阿里云云效平台详细指南】
使用阿里云云效部署企业网站涉及备案域名、ECS、VPC、云效代码仓库和流水线。一键部署通过ROS快速配置,手动部署则需详细配置流水线,包括代码源、构建、部署到ECS。整个流程约10分钟,但需注意网络问题可能导致的异常。一键部署适合快速启动,手动部署适合定制化。文档详细,但可增加常见问题解答和自动化脚本支持。
高效部署企业门户网站【阿里云云效平台详细指南】
|
Java 应用服务中间件 Spring
解析Spring Boot自动装配的原理与机制
解析Spring Boot自动装配的原理与机制
520 4
|
Python
pandas中groupby和shift结合实现相邻行的计算
pandas中groupby和shift结合实现相邻行的计算
386 0