最近有需求需要配合软测部门的小伙伴,在测试系统时,对服务器使用资源进行监控。由于软测小伙伴用的是Loadrunner 11
,需要安装rpc.rstatd
来监控服务器资源,下面依次介绍安装过程以及遇到的问题。
先展示一下我服务器的环境吧
- 操作系统版本:
CentOS Linux 7
bash
$ neofetch
..
.PLTJ. -----------------------------
<><><><> OS: CentOS Linux 7 (Core) x86_64
KKSSV' 4KKK LJ KKKL.'VSSKK Host: VMware Virtual Platform None
KKV' 4KKKKK LJ KKKKAL 'VKK Kernel: 3.10.0-1160.71.1.el7.x86_64
V' ' 'VKKKK LJ KKKKV' ' 'V Uptime: 1 day, 3 hours, 2 mins
.4MA.' 'VKK LJ KKV' '.4Mb. Packages: 412 (rpm)
. KKKKKA.' 'V LJ V' '.4KKKKK . Shell: bash 4.2.46
.4D KKKKKKKA.'' LJ ''.4KKKKKKK FA. Terminal: /dev/pts/0
<QDD ++++++++++++ ++++++++++++ GFD> CPU: Intel Xeon X5650 (16) @ 2.660GHz
'VD KKKKKKKK'.. LJ ..'KKKKKKKK FV GPU: 00:0f.0 VMware SVGA II Adapter
' VKKKKK'. .4 LJ K. .'KKKKKV ' Memory: 5050MiB / 15883MiB
'VK'. .4KK LJ KKA. .'KV'
A. . .4KKKK LJ KKKKA. . .4
KKA. 'KKKKK LJ KKKKK' .4KK
KKSSA. VKKK LJ KKKV .4SSKK
<><><><>
'MKKM'
- GCC 信息
bash
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
目标:x86_64-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
线程模型:posix
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
安装过程参考了DANNY大佬写的文章 Loadrunner添加服务器监控 - DANNY - 博客园
- 从 sourceforge 下载
rpc.rstatd
bash
# 下载页面 https://sourceforge.net/projects/rstatd/files/rstatd/4.0.1/rpc.rstatd-4.0.1.tar.gz
wget -O rpc.rstatd-4.0.1.tar.gz https://master.dl.sourceforge.net/project/rstatd/rstatd/4.0.1/rpc.rstatd-4.0.1.tar.gz?viasf=1
- 解压
rstatd
bash
# 解压
tar -zxvf rpc.rstatd-4.0.1.tar.gz
- 检查编译
rstatd
时所需要的环境是否符合要求
bash
# 进入 rpc.rstatd 目录
cd rpc.rstatd-4.0.1
# 先执行 configure
# 注意,这一步会检查你当前系统的环境是否有缺失的依赖或者编译工具
# 如果有缺失,请按照提示安装。安装完成之后,在执行一遍
# 确保没问题之后,再进行下一步
./configure
- 编译并安装
注意!
安装
需要使用root
权限,将软件安装到/usr目录下,编译不需要 root
bash
# 编译
make
# 安装
sudo make install
- 配置
xinetd
(PS: 犯懒了,直接粘贴大佬的原话)
修改的是/etc/xinetd.d/下的:
rlogin
,rsh
,rexec
这三个配置文件。打这三个文件里的
disable = yes
都改成disable = no
( disabled 用在默认的 {} 中禁止服务)或是把# default: off都设置成 on 这个的意思就是在xinetd启动的时候默认都启动上面的三个服务!
我把具体配置贴上,如果你的服务器/etc/xinetd.d/没有配置文件的话,直接按照新建一个
bash
# /etc/xinetd.d/rsh
service rsh
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.rshd
log_on_success += USERID
log_on_failure += USERID
}
# /etc/xinetd.d/rexec
service rexec
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.rexecd
log_on_failure += USERID
}
# /etc/xinetd.d/rlogin
service rlogin
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.rlogind
log_on_success += USERID
log_on_failure += USERID
protocol = tcp
}
- 重启
xinetd
注意!坑来了 我重启报错了!!!,报错如下:
bash
xinetd[12900]: Port not specified and can't find service: rexec with getservbyname
xinetd[12900]: Port not specified and can't find service: rlogin with getservbyname
xinetd[12900]: Port not specified and can't find service: rsh with getservbyname
经过反复百度,终于再google找到了答案😂,下面是一位小日子过得不错的日本网友发的贴子: Linuxサーバーの導入 - ma-100140 @ ウィキ - atwiki(アットウィキ)
主要是需要修改 /etc/services
文件,增加rsh等服务的映射信息
bash
# vim /etc/services
# 在文件最后面增加
rexec 512/tcp
rlogin 513/tcp
rsh 514/tcp
在 /etc/hosts.allow
文件追加
shell
##########################################################################
# rexec
in.rexecd : ALL
##########################################################################
# rlogin
in.rlogind : ALL
##########################################################################
# rshd
in.rshd : ALL
- 重新启动
xinetd
和rstatd
bash
systemctl restart xinetd
systemctl restart rstatd
- 使用
rpcinfo -p
查看信息
bash
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100001 3 udp 781 rstatd
100001 2 udp 781 rstatd
100001 1 udp 781 rstatd
到此,问题解决!
扩展知识 /etc/services
文件是什么?
我就不多写了,直接给个引用链接吧: 理解 Linux 中的 /etc/services 文件 - 知乎