Chinaunix首页 | 论坛 | 博客
  • 博客访问: 487820
  • 博文数量: 82
  • 博客积分: 3003
  • 博客等级: 中校
  • 技术积分: 1285
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-11 15:27
文章分类

全部博文(82)

文章存档

2011年(1)

2010年(5)

2009年(63)

2008年(13)

我的朋友

分类: LINUX

2009-10-08 14:22:26

架设Netdump服务器

 

环境:两台装有Red Hat Enterprise Linux 4 update 7的机器

 

Netdump是用来在客户端发生kernel panics的时候捕获vmcore文件的。这个文件收集了kernel panic发生时内存中的情况。通过分析vmcore文件,可以了解系统发生kernel panic的原因。Netdump需要一个服务器和多个客户端。服务器负责捕获客户端的vmcore文件。

注意:RHEL3RHEL4上面支持netdumpRHEL5不支持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.1netdump-serverIP地址。

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.sysrq1,即将/proc/sys/kernel/sysrq1,仅对当前状态起作用。重新启动后又恢复为0。如果想开机时就置1,应该改/etc/sysctl.conf文件中的下面一行:

kernel.sysrq = 1

再执行下面的命令使之立即生效:

# sysctl -p

使用下面的命令将客户端置于非可挂起终端状态(死机):

# echo c > /proc/sysrq-trigger

等一段时间,查看服务器端的/var/crash目录下生成了一个新的目录,此目录的名字是

IP-Date-TimeIP是客户端的IPDateTime是发生死机的时间)

例如:

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服务一定要正常启动。

阅读(1314) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

nagaregawa2009-10-12 15:17:15

谢谢Kevein的补充~ ——Jaylin

rha0302009-10-12 14:18:17

sysrq功能被打开后,有几种sysrq事件能被触发。不同的内核版本可能会有些不同。但有一些是共用的: * m - 导出关于内存分配的信息 * t - 导出线程状态信息 * p - 到处当前CPU寄存器信息和标志位的信息 * c - 故意让系统崩溃(在使用netdump或diskdump的时候有用) * s - 即时同步所有挂载的文件系统 * u - 即时重新挂载所有的文件系统为只读 * b - 即时重新启动系统 * o - 即时关机(如果机器设置并支持此项功能) ——Kevein Liu