分类: LINUX
2009-10-08 14:31:06
架设Netdump服务器
Author: Jaylin Zhou
Date: 10/07/2009
环境:两台装有Red Hat Enterprise Linux 4 update 7的机器
Netdump是用来在客户端发生kernel panics的时候捕获vmcore文件的。这个文件收集了kernel panic发生时内存中的情况。通过分析vmcore文件,可以了解系统发生kernel panic的原因。Netdump需要一个服务器和多个客户端。服务器负责捕获客户端的vmcore文件。
注意:RHEL3和RHEL4上面支持netdump,RHEL5不支持netdump,而是使用了kdump。
服务器端配置
1. 将其中一台机器作为服务器。首先确定是否安装了netdump-server包:
# rpm -q netdump-server
netdump-server-0.7.16-14
2. 这时候会生成一个系统用户netdump,可以通过下面的命令找到这个用户:
# cat /etc/passwd | grep netdump
netdump:x:34:34:Network Crash Dump user:/var/crash:/bin/bash
3. 给netdump用户设置密码(就像给一个普通用户设置密码一样),这个密码的用户在后面会有讲解:
# passwd netdump
Changing password for user netdump.
New UNIX password: redhat
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password: redhat
passwd: all authentication tokens updated successfully.
(因为设置的密码过于简单,所以会有“BAD PASSWORD”的提示)
4. 让netdump-server服务开机时自动启动
# chkconfig netdump-server on
5. 将netdump-server服务启动
# service netdump-server start
至此,服务端的配置就完毕了。
客户端配置
1. 将另一台机器作为客户端。确定是否安装了netdump包:
# rpm -q netdump
netdump-0.7.16-14
2. 修改配置文件/etc/sysconfig/netdump,添加下面一行:
NETDUMPADDR=192.168.0.1
其中192.168.0.1是netdump-server的IP地址。
3. 让netdump服务开机时自动启动
# chkconfig netdump on
4. 通过netdump和服务器建立授权关系:
# service netdump propagate
The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
RSA key fingerprint is d1:70:21:3e:d3:aa:a9:7e:2c:82:54:c7:c1:ae:19:1c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.1' (RSA) to the list of known hosts.
netdump@192.168.0.1's password: redhat
5. 启动netdump服务
# service netdump start
至此,客户端的配置也完成了。
检验netdump是否成功
启用kernel.sysrq功能:
# sysctl -w kernel.sysrq=1
上述命令只是将当前状态的kernel.sysrq置1,即将/proc/sys/kernel/sysrq置1,仅对当前状态起作用。重新启动后又恢复为0。如果想开机时就置1,应该改/etc/sysctl.conf文件中的下面一行:
kernel.sysrq = 1
再执行下面的命令使之立即生效:
# sysctl -p
使用下面的命令将客户端置于非可挂起终端状态(死机):
# echo c > /proc/sysrq-trigger
等一段时间,查看服务器端的/var/crash目录下生成了一个新的目录,此目录的名字是
IP-Date-Time(IP是客户端的IP,Date和Time是发生死机的时间)
例如:
192.168.0.4-2009-10-07-18:53
此目录下有两个文件:
-rw------- 1 netdump netdump 17K Oct 7 19:18 log
-rw------- 1 netdump netdump 129M Oct 7 18:55 vmcore
在vmcore文件没有创建完毕时,其名字为vmcore-incomplete,建立完成后改为vmcore。
其中vmcore文件的大小和客户端的内存大小接近,此例子中的客户端内存为128M。
注意:当vmcore文件生成后,服务器端会将客户端重启。
Netdump是基于sshd服务的,所以客户端和服务器端建立连接时需要key来验证,这个key就是我们之前在服务器端对netdump用户设置的密码。如果将服务器端的sshd服务关闭,客户端将不能通过netdump连接服务器:
# service netdump propagate
ssh: connect to host 192.168.0.1 port 22: Connection refused
所以使用netdump的前提是服务器端的sshd服务一定要正常启动。