版本历史:
<V0.2.
20101204
>根据 Cacti Doucument 调整,适用于Cacti 0.8.7g
<V0.1
.20100717
>创建。
V0.2版本是基于V0.1演化,所以版本延续。
实际上是已经不算是安装,而是翻译Cacti的文档了。
所以具体的安装过程,还是请大家参考 V0.1版本 。
cacti是一套开源的网络监控工具,基于rrdtool的良好绘图功能,可以完美的监控主机的状态和负载情况,添加相应的模板后,可以用来监控apache服务器和mysql服务器的运行状态。这里主要描述使用源代码配置的过程,使用yum的方式同样,因为cacti是基于网络服务器配置,所以没有二进制编译安装的过程,源代码和yum的方式是一样的。
安装需求
Cacti需要系统中已经安装下列组件:- RRDTool 1.0.49 or 1.2.x 或更高版本
- MySQL 4.1.x or 5.x or 或更高版本
- PHP 4.3.6 或更高版本, 推荐5.x 版本以使用更多高级特性
- 一个网络服务器 比如 Apache 或者 IIS
Unix软件RPM需求
请确认系统已安装下列的软件,并确认httpd和mysqld已设置为随系统启动。
- httpd
- php
- php-mysql
- php-snmp
- php-ldap (使用 LDAP 授权校验 时)
- php-xml
- mysql
- mysql-server
-
net-snmp (根据分支的不同,可能还需要 net-snmp-utils )
PHP设置
PHP的安装包有很多种形式。主要的配置文件是so文件会调用的 ini配置文件 ,比如 /etc/php.ini . 下面的提示预期是一个配置指导,但是根据分支的不同,
设置可能会有区别。
安全模式
Cacti 使用外部命令,例如用 rrdtool 来绘图。因此,需要设置
;
Safe Mode
;
http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode
safe_mode
=
Off
; http://www.php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode
safe_mode = Off
时间和日期
从 PHP 5.3 版本开始,建议对时区 date timezone 进行定义。以避免因为时间/日期函数而带来的警告。使用如下代码:
;
Defines the default timezone used by the date functions
;
http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone
=
"
Europe/Berlin
"
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = " Europe/Berlin "
允许 导入 模板
如果你想使用 Cacti 的模板导入功能,请取消注释下面一行,以允许 文件上传 :
file_uploads
=
On
允许exec()调用
Cacti 会使用 exec() 这种形式的调用,因此,请确认已按照如下设置:
safe_mode
=
Off
PHP扩展设置
Cacti 使用如下 PHP 扩展组件
- mysql
- session
- sockets
- xml
- pcre
同时,我们也建议使用
- snmp
扩展。你可以选择使用 net-snmp 来代替 php-snmp 扩展(有时是 net-snmp-utils )。
Cacti 插件会使用额外的扩展,比如
- gd (reportit 使用)
- dom (cli 脚本使用,只在 PHP 5 中才被支持)
当使用一个较新版本的 PHP 时,你可能会发现的提示
;
;;;
;
Note: packaged extension modules are now loaded via the .ini files
;
found in the directory /etc/php.d; these are loaded by default.
;
;;;
对于较老版本版本的PHP,你需要编辑 php.ini 并且增加
extension_dir
=
/etc/php.d
编辑 <extension_dir>/mysql.ini 以激活 mysql 扩展。
;
Enable mysql extension module
extension
=
mysql.so
编辑 <extension_dir>/snmp.ini 以激活 snmp 扩展。
;
Enable snmp extension module
extension
=
snmp.so
如果使用 PHP 4.3.5 以下的版本,那么在 php.ini 中添加以下配置;如果使用 PHP 4.3.6 之上的版本,那么请在配置文件中移除此行(如果存在的话)。
session.save_path
=
/tmp
配置网络服务器(Apache)
如果你还在使用 Apaceh 1.3.x 版,那么安装使用 PHP 5.x 或许并不合适。
请查找文件类似 "/etc/httpd/conf/httpd.conf" 的文件,并且确认文件中包含
# Load config files from the config directory
"
/etc/httpd/conf.d
"
.
Include conf.d/*.conf
现在,请编辑其中的包含的PHP配置文件 "/etc/httpd/conf.d/php.conf",如果是使用 PHP 5,那么,确认文件中包含:
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
LoadModule php5_module modules/libphp5.so
#
# Cause the PHP interpreter to handle files with a .php extension.
AddHandler php5-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
DirectoryIndex index.php
如果你不是安装 Cacti 到 Apache 默认的网络目录文件夹位置,那么在 /etc/httpd/conf.d 中新增配置文件 cacti.conf,并且按如下内容编辑。设置 /your/cacti/dir 为你自己的cacti目录名称。更新 Allow from 127.0.0.1 为任何你需要的的配置(比如,你所在公司的某个子网段)。请留意注释中的配置 提示 ,尤其是在你启用了 SELinux 的时候!
# Cacti - the complete rrdtool-based graphing solution
#
# Allows only localhost by default
#
# Allowing cacti to anyone other than localhost should be considered
# dangerous unless properly secured by SSL
# Make sure
,
that httpd can read your cacti directories.
# At minimum
,
you need
# chmod ugo+r -R /your/cacti/dir
# Make sure to replace with your directories
# When using SELinux
,
set the following:
# chcon -R -h -t httpd_sys_content_t /your/cacti/dir
# when using SELinux and you private homedir
,
enable
# setsebool -P httpd_enable_homedirs
1
# setsebool -P httpd_read_user_content
1
Alias /cacti /your/cacti/dir
<Directory /your/cacti/dir>
AllowOverride None
Order Deny
,
Allow
Deny from all
Allow from
127.0.0.1
Allow from ::
1
Options Indexes Includes FollowSymLinks
</Directory>
# These directories do not require access over HTTP
#
<Directory /your/cacti/dir/cli>
Order Deny
,
Allow
Deny from All
Allow from None
</Directory>
MySQL设置
为 MySQL 的 root 用户设置一个密码。
shell> mysqladmin --user
=
root password somepassword
shell> mysqladmin --user
=
root --password reload
SNMP 设置
这里将会解释 Net-SNMP 代理的安装和设置。截止写作时,Net-SNMP 的最新版本为5.4(12/06/2006发布) 。
依据操作系统的不同,你可以使用安装包或者压缩包来安装 Net-SNMP 。
大部分发行的Linux操作系统都带有Net-SNMP的安装包:
-
RedHat / Fedora : 安装 net-snmp, net-snmp-libs and net-snmp-utils
-
Debian / Ubuntu: 安装 libsnmp-base, libsnmp5, snmp and snmpd packages
-
SuSE : 安装 the net-snmp package
-
Gentoo : emerge the net-snmp ebuild
-
Mandriva : 安装 the libnet-snmp5, net-snmp and net-snmp-utils packages.
从源代码安装 Net-SNMP
如果找不到对应的二进制发行包,那么可以尝试从 源代码 进行编译。
如下显示了如何获得一个正在运行的 Net-SNMP 的配置选项:
$
snmpwalk
-
v
1
-
c public localhost .
1.3
.
6.1
.
4.1
.
2021.100
.
6.0
UCD
-
SNMP
-
MIB
::
versionConfigureOptions.
0
=
STRING:
"
'-disable-shared'
'--with-mib-modules=host/hr_system'
"
UCD - SNMP - MIB :: versionConfigureOptions. 0 = STRING: " '-disable-shared'
'--with-mib-modules=host/hr_system' "
设置 Net-SNMP 代理
视如何安装 Net-SNMP,主要的配置文件(snmpd.conf)可能被放置在 /etc/snmp(从二进制包安装)或者 /usr/local/share/snmp(从tarball压缩包安装)。
请注意当你修改了 snmpd.conf 配置文件后,你需要重新启动 snmpd 守护进程(或者发送HUP信号)。
最简单的配置如下:
rocommunity public
这将会从任何主机上发送的 SNMP version 1/2 只读请求,使用的社区名称为 public。
使用这个最小化的配置,你就能够绘制CPU使用率,网络接口,内存/交换区使用,登录的用户和进程数量等图形了。
你可以限制接受从哪些主机发送过来的请求:
rocommunity public
127.0.0.1
rocommunity test
87.65.43.21
在如下的示例中 Net-SNMP 将会在10.20.30.40主机的10000端口上建立侦听。
agentaddress
10.20.30.40
:
10000
agentaddress tcp:
161
对于哪些对安全性要求较高的用户,可以配置使用SNMP协议第3版,支持MD5和SHA哈希算法。
createUser frederic MD5 mypassphrase DES
group groupv3 usm frederic
view all included .iso
80
access groupv3
""
any auth exact all all all
# snmpget -v
3
-l AuthNoPriv -u frederic -A mypassphrase
10.50.80.45
sysName
.0
SNMPv2-MIB::sysName
.0
=
STRING: cyclopes
到这里访问控制方面的设置就完成了,在 snmp.conf 中增加如下两行,以标识设备的名称和联系人。
syslocation Bat. C2
syscontact someone@somewhere.org
有一些OID会返回类似 "-153.1 dBm" 的单元,一个较为安全的做法是关闭它,可以在 snmpd.conf 中增加如下内容实现:
dontPrintUnits true
includeAllDisks
如果你希望某个文件系统不在这里被列出,那么,在 snmpd.conf 中增加如下内容:
ignoredisk /dev/rdsk/c0t2d0
disk /
disk /usr
disk /var
disk /oracle
需要注意的是,Net-SNMP 代理仅能够报告那些在它启动之前就已经挂载的文件系统。如果你之后手工挂载了文件系统,那么你需要重新载入 Net-SNMP 代理(发送HUP信号)。在 snmpd.conf 中添加如下内容,你也可以绘制进程信息:
proc httpd
结果可以通过 ucdavis.prTabel.prEntry 树获得:
prCount, 以当前查询名称运行的进程的数量
prNames,统计的进程的名称
例如,Apache进程的数量可以通过OID下的 .1.3.6.1.4.1.2021.2.1.5 MIB模块来获取。其他一些有用的模块还有:
mibII/mta_sendmail, 绘制 MTA(Sendmail, Postfix, 等等)的统计信息
diskio, 允许绘制I/O统计信息
ucd-snmp/ImSensors, 硬件监控信息(仅Linux和Solaris支持)
添加 Mib 模块的方法如下:
$
.
/
configure
--
with
-
mib
-
modules
=
"
module1 module2
"
$
.
/
configure
--
with
-
your
-
options
$
make
#
mkdir /usr/local/dist
#
make install prefix=/usr/local/dist/usr/local exec_prefix=/usr/local/dist/usr/local
#
cd /usr/local/dist
#
tar cvf /tmp/net-snmp-5.3.1-dist.tar usr
#
gzip /tmp/net-snmp-5.3.1-dist.tar
#
rm -rf /usr/local/dist
现在你可以拷贝 /tmp/net-snmp-5.3.1.-dist.tar.gz 到其他的服务器,并且在根目录下解压缩(所有的文件都会被释放到 /usr/local )。
测试配置
一旦 Net-SNMP 安装完成,并且已经启动,那么就可以首先测试一下
$
snmpwalk
-
v
1
-
c public localhost .
1.3
.
6.1
.
2.1
.
1.1
.
0
SNMPv2
-
MIB
::
sysDescr.
0
=
STRING: Linux cronos
2.4
.
28
#
2 SMP ven jan 14 14:12:01 CET 2005 i686
你甚至还可以查询下在服务器上运行的是哪个版本的 Net-SNMP :
$
snmpwalk
-
v
1
-
c public localhost .
1.3
.
6.1
.
4.1
.
2021.100
.
2.0
UCD
-
SNMP
-
MIB
::
versionTag.
0
=
STRING:
5.2
.
1.2
如果输出是下面这样的:
$
snmpwalk
-
v
1
-
c foo localhost .
1.3
.
6.1
.
2.1
.
1.1
.
0
Timeout: No Response from localhost
如果使用的是 SNMP V3 版本的协议,那么指定一个未知的用户名,很可能会得到一个错误:
$
snmpget
-
v
3
-
l AuthNoPriv
-
u john
-
A mypassphrase
10.50
.
80.45
sysName.
0
snmpget: Unknown user name
如果是密码不正确,那么会返回如下的错误信息:
$
snmpget
-
v
3
-
l AuthNoPriv
-
u frederic
-
A badpassphrase
10.50
.
80.45
sysName.
0
snmpget: Authentication failure (incorrect password, community or key)
下面的查询显示了哪些文件系统已经被挂载:
$
snmpwalk
-
v
1
-
c public localhost .
1.3
.
6.1
.
4.1
.
2021.9
.
1.2
UCD
-
SNMP
-
MIB
::
dskPath.
1
=
STRING:
/
UCD
-
SNMP
-
MIB
::
dskPath.
2
=
STRING:
/
BB
UCD
-
SNMP
-
MIB
::
dskPath.
3
=
STRING:
/
dev
/
shm
最后,让我们看一下如何显示网络接口:
$
snmpwalk
-
v
1
-
c public localhost .
1.3
.
6.1
.
2.1
.
2.2
.
1.2
IF
-
MIB
::
ifDescr.
1
=
STRING: lo
IF
-
MIB
::
ifDescr.
2
=
STRING: eth0
IF
-
MIB
::
ifDescr.
3
=
STRING: eth1
扩展 SNMP 代理
Net-SNMP 的一个强大功能就是你可以对它进行扩展:
让我们运行一下 /tmp/foo.sh 脚本:
$
/
tmp
/
foo.sh
-
arg1
123
现在把如下这行添加到 snmpd.conf 文件中:
exec foo
/
bin
/
sh
/
tmp
/
foo.sh
-
arg1
脚本的输出:
ucdavis.extTable.extEntry.extOutput
退出的状态:
ucdavis.extTable.extEntry.extResult
命令: ucdavis.extTable.extEntry.extCommand
你可以使 用 如下的 SNMP 查询对结果进行检测:
$
snmpwalk
-
v
1
-
c public localhost .
1.3
.
6.1
.
4.1
.
2021.8
.
1
UCD
-
SNMP
-
MIB
::
extIndex.
1
=
INTEGER:
1
UCD
-
SNMP
-
MIB
::
extNames.
1
=
STRING: foo
UCD
-
SNMP
-
MIB
::
extCommand.
1
=
STRING:
/
bin
/
sh
/
tmp
/
foo.sh
-
arg1
UCD
-
SNMP
-
MIB
::
extResult.
1
=
INTEGER:
0
UCD
-
SNMP
-
MIB
::
extOutput.
1
=
STRING:
123
UCD
-
SNMP
-
MIB
::
extErrFix.
1
=
INTEGER:
0
UCD
-
SNMP
-
MIB
::
extErrFixCmd.
1
=
STRING:
在 Cacti 中,可以按如下方法使用 " SNMP - Generic OID Template " :
之后你会惊喜的发现 /tmp/foo.sh 脚本的执行结果在Cacti中被图形化输出了。
现在,让我们执行第二个脚本,这个脚本会返回多于一个结果:
$
/
tmp
/
bar.sh
456
789
另一个在 snmpd.conf 中调用脚本的办法是指定一个 OID ,如下文所示:
exec .
1.3
.
6.1
.
4.1
.
2021.555
/
bin
/
sh
/
tmp
/
bar.sh
$
snmpwalk
-
v
1
-
c public localhost .
1.3
.
6.1
.
4.1
.
2021.555
UCD
-
SNMP
-
MIB
::
ucdavis.
555.1
.
1
=
INTEGER:
1
UCD
-
SNMP
-
MIB
::
ucdavis.
555.2
.
1
=
STRING:
"
/bin/sh
"
UCD
-
SNMP
-
MIB
::
ucdavis.
555.3
.
1
=
STRING:
"
/tmp/bar.sh
"
UCD
-
SNMP
-
MIB
::
ucdavis.
555.100
.
1
=
INTEGER:
0
UCD
-
SNMP
-
MIB
::
ucdavis.
555.101
.
1
=
STRING:
"
456
"
UCD
-
SNMP
-
MIB
::
ucdavis.
555.101
.
2
=
STRING:
"
789
"
UCD
-
SNMP
-
MIB
::
ucdavis.
555.102
.
1
=
INTEGER:
0
UCD
-
SNMP
-
MIB
::
ucdavis.
555.103
.
1
=
""
之后你就可以使用 Cacti 的 " SNMP - Generic OID Template " (每个 OID 一个数据源)。
假如你想同意一个日志文件中的条目数,那么添加如下内容到 snmpd.conf 中:
logmatch cactistats
/
home
/
cactiuser
/
cacti
/
log
/
cacti.log
120
SYSTEM STATS
使用下面的查询,可以列出所有能够访问的变量:
$
snmpwalk
-
v
1
-
c public localhost logMatch
UCD
-
SNMP
-
MIB
::
logMatchMaxEntries.
0
=
INTEGER:
50
UCD
-
SNMP
-
MIB
::
logMatchIndex.
1
=
INTEGER:
1
UCD
-
SNMP
-
MIB
::
logMatchName.
1
=
STRING: cactistats
UCD
-
SNMP
-
MIB
::
logMatchFilename.
1
=
STRING:
/
home
/
cactiuser
/
cacti
/
log
/
cacti.log
UCD
-
SNMP
-
MIB
::
logMatchRegEx.
1
=
STRING: SYSTEM STATS
UCD
-
SNMP
-
MIB
::
logMatchGlobalCounter.
1
=
Counter32:
301634
UCD
-
SNMP
-
MIB
::
logMatchGlobalCount.
1
=
INTEGER:
301634
UCD
-
SNMP
-
MIB
::
logMatchCurrentCounter.
1
=
Counter32:
6692
UCD
-
SNMP
-
MIB
::
logMatchCurrentCount.
1
=
INTEGER:
6692
UCD
-
SNMP
-
MIB
::
logMatchCounter.
1
=
Counter32:
1
UCD
-
SNMP
-
MIB
::
logMatchCount.
1
=
INTEGER:
0
UCD
-
SNMP
-
MIB
::
logMatchCycle.
1
=
INTEGER:
120
UCD
-
SNMP
-
MIB
::
logMatchErrorFlag.
1
=
INTEGER:
0
UCD
-
SNMP
-
MIB
::
logMatchRegExCompilation.
1
=
STRING: Success
现在,让我们使用另外一个有趣的指令, "proxy"。 以 Squid 代理为例:启用时,SNMP 代理会侦听 UPD 3401端口。如果你想在Cacti中绘制系统图形和Squid图形,但是又不想Cacti中声明这两个设备,那么,在 snmpd.conf 中添加如下内容:
proxy
-
v
1
-
c public localhost:
3401
.
1.3
.
6.1
.
4.1
.
3495.1
对这个主机进行查询:
$
snmpwalk
-
v
1
-
c public
10.151
.
33.3
sysdescr
SNMPv2
-
MIB
::
sysDescr.
0
=
STRING: Linux srv1.foo.com
2.6
.
8.1
-
12mdk
#
1 Fri Oct 1 12:53:41 CEST 2004 i686
下面是如何输出 Squid 部分(指定的 OID 会返回 Squid 版本):
$
snmpwalk
-
v
1
-
c public
10.151
.
33.3
.
1.3
.
6.1
.
4.1
.
3495.1
.
2.3
.
0
SNMPv2
-
SMI
::
enterprises.
3495.1
.
2.3
.
0
=
STRING:
"
2.5.STABLE6
"
安装和配置Cacti
1.解压缩压缩包,把 Cacti 解压到你网络服务器的 DOCUMENT_ROOT 文件夹下:
shell
>
tar xzvf cacti
-
version.tar.gz
2.创建 MySQL 数据库:
shell
>
mysqladmin
--
user
=
root create cacti
3.导入默认的 Cacti 数据库:
shell
>
mysql cacti < cacti.sql
4.(可选)为 Cacti 数据库设置用户名和密码:
shell
>
mysql
--
user
=
root mysql
mysql
>
GRANT ALL ON cacti.
*
TO cactiuser
@
localhost IDENTIFIED BY 'somepassword';
mysql
>
flush privileges;
5.编辑 "include/config.php" 设置数据库类型,数据库名称,主机名,用户和密码:
$database_type
=
"
mysql
"
;
$database_default
=
"
cacti
"
;
$database_hostname
=
"
localhost
"
;
$database_username
=
"
cactiuser
"
;
$database_password
=
"
cacti
"
;
/*
load up old style plugins here
*/
$plugins
=
array();
//
$plugins
[]
=
'thold';
/*
Edit this to point to the
default
URL of your Cacti install
ex:
if
your cacti install as at http:
//
serverip
/
cacti
/
this
would be set to
/
cacti
/
*/
$url_path
=
"
/cacti/
"
;
/*
Default
session name
-
Session name must contain alpha characters
*/
#
$cacti_session_name = "Cacti";
基于同样的原因,"URL_PATH" 变量也从 global.php 中被移动到 config.php。对于哪些从较老的 PIA 升级升级而来的人来说,需要了解的是,过去我们会尝试"探测"这个路径,但是,这种处理是不可靠的。因此,你需要在 config.php 中显式的指定这一路径。
6.为 Cacti 的目录文件夹设置合适的权限,以支持图形文件/日志文件的生成。你需要在 Caacti 目录文件夹中执行如下命令:
shell
>
chown
-
R
cactiuser
rra
/
log
/
( 使用有效的用户名来替换上文中的 cactiuser, 这个用户在下面配置数据采集的时候还要使用。 )
7.在 "/etc/crontab" 文件中增加类似如如下的内容:
*/
5
*
*
*
*
cactiuser
php
/
var
/
www
/
html
/
cacti
/
poller.php
>
/
dev
/
null
2
>&
1
(如果使用二进制包安装的话,请确认crontab的这些内容是否已经在安装时被设置了。)
译者注:在RedHat及其衍生版本上,如此配置crontab是不可行的,crontab文件是不支持用户名的配置的。推荐以确定用户执行 "crontab -u cacti -e" 然后添加:
*/
5
*
*
*
*
php
/
var
/
www
/
html
/
cacti
/
poller.php
>
/
dev
/
null
2
>&
1
8.请确认cron守护进程已经运行:
shell
>
service crond start
shell
>
chkconfig crond level 345 on
9.使用浏览器访问 http://your-sever/cacti,初始的用户名和密码都是 "admin"。首次登录时,系统会强制要求你立即修改密码。
在下一步的配置中,请确认仔细填写了所有的路径,并且确保他们是正确的。
安装配置 Spine(可选)
spine是一个基于C语言的,非常快速的轮询引擎。它是默认的cmd.php的可选替代。
如果决定使用它的话,
需要自己来显式的安装和配置。cacti本身并不包含该引擎。
安装Spine的最简单的方法就是使用rpm或者使用ports。
可以在Cacti的主站或者你的分发版本的软件仓库中找到spine的二进制分发包。
如果使用源码,那么下载之后请在代码目录执行如下命令:
shell
>
aclocal
shell
>
libtoolize
--
force (glibtoolize
--
force on Max OS)
shell
>
autoheader
shell
>
autoconf
shell
>
automake
shell
>
.
/
configure
shell
>
make
shell
>
make install
现在假设你已经安装好了 spine。那么需要对它进行配置。配置文件的位置应该是和 Spine 自身的目录在一起的, 或者在 /etc/Spine.conf 。
DB_Host
127.0
.
0.1
or hostname (not localhost)
DB_Database cacti
DB_User cactiuser
DB_Pass cacti
DB_Port
3306
应用升级补丁
访问 Cacti 的网站 以或许升级补丁和相应的安装指导。
下面的示例显示了 Cacti 0.8.6j 的补丁的安装指导。可不要把这些补丁应用在最近版本的 Cacti 上!
wget http:
//
www.cacti.net
/
downloads
/
patches
/
0.8
.6j
/
ping_php_version4_snmpgetnext.patch
wget http:
//
www.cacti.net
/
downloads
/
patches
/
0.8
.6j
/
tree_console_missing_hosts.patch
wget http:
//
www.cacti.net
/
downloads
/
patches
/
0.8
.6j
/
thumbnail_graphs_not_working.patch
wget http:
//
www.cacti.net
/
downloads
/
patches
/
0.8
.6j
/
graph_debug_lockup_fix.patch
wget http:
//
www.cacti.net
/
downloads
/
patches
/
0.8
.6j
/
snmpwalk_fix.patch
patch
-
p1
-
N < ping_php_version4_snmpgetnext.patch
patch
-
p1
-
N < tree_console_missing_hosts.patch
patch
-
p1
-
N < thumbnail_graphs_not_working.patch
patch
-
p1
-
N < graph_debug_lockup_fix.patch
patch
-
p1
-
N < snmpwalk_fix.patch

