在使用VMware ESXi 5.x的时候,如果你配置Windows Active Directory做时间服务器、让ESXi使用该时间服务器同步时(如图1-1所示),你会发现,ESXi很难与该服务器进行同步。
图1-1 VMware ESXi使用有172.18.96.1的NTP同步
那么,怎么解决这个问题呢?你可以通过修改ESXi的配置文件来解决。
为了修改ESXi配置文件,需要在ESXi主机上启用SSH功能。你可以使用vSphere Client登录VMware ESXi,在"配置→安全配置文件→属性"(图1-2中),启用ssh服务并为ssh服务开启服务器。
图1-2 安全配置文件
然后使用SSH客户端,登录到ESXi主机,修改以下配置文件。
(1)使用vi编辑器,修改/etc/ntp.conf,在最后一行添加一行
tos maxdist 30
添加之后,按esc,输入:wq存盘退出,如图1-3所示。
图1-3 修改tos maxdist配置
(2)修改/etc/likewise/lsassd.conf文件,去掉#sync-system-time的注释,并设置
sync-system-time = yes
如图1-4所示。
图1-4 取消注释
(3)执行./etc/init.d/lsassd restart,重启lsassd服务,如图1-5所示。
图1-5 重启lsassd服务
(4)执行/etc/init.d/ntpd restart,如图1-6所示。
图1-6 重启ntpd服务
(5)最后再在ESXi中,指定ESXi与Active Directory服务器进行同步即可,如图1-7所示。
图1-7 指定NTP
【说明】相关视频请参见 http://edu.51cto.com/course/course_id-2399.html
本文出自 "王春海的博客" 博客,请务必保留此出处http://wangchunhai.blog.51cto.com/225186/1602412
前几天在工作中遇到了一个问题,nagios自写插件,单独测试命令和插件没有问题,但是通过check_nrpe插件调用自写插件的时候会出现问题。
下面是我写的一个插件,主要功能是:输入一个端口号,就可以知道监听该端口号的程序使用物理内存情况。
#!/bin/bash if [ $# -ne 1 ];then echo "Usage:$0 num1" exit 5; fi PORT="$1" LINE=$(sudo netstat -lnutp|awk -F '[: ]+' '{print $5}'|grep -w ${PORT}|wc -l) if [ $LINE -eq 1 ];then PID=$(sudo netstat -lnutp|awk -F '[: ]+' '$5=='$PORT'{print $(NF-1)}'|awk -F '/' '{print $1}') PS_NAME=$(sudo netstat -lnutp|awk -F '[: ]+' '$5=='$PORT'{print $(NF-1)}'|awk -F '/' '{print $2}' ) MEM=$(ps -p ${PID} -o rss|grep -v RSS) MEMD=$(expr ${MEM} "*" 1024) echo "OK port-${PORT} ${PS_NAME} use mem ${MEMD}b |MEM=${MEMD}b;5000;10000;0" exit 0 else echo "port-${PORT} is not exist" exit 2 fi 编写该插件的时候有两个细节需要注意
1、nagios账号执行netstat命令时没有权限查看其它账号启动的程序。所以需要用sudo ,所以在/etc/sudoers添加如下内容:
nagios ALL=(ALL) NOPASSWD: /bin/netstat
使用nagios账号免密码执行/bin/netstat命令。
2、查看某个程序使用物理内存情况:
我的80端口nginx程序PID是:643
方法一:
ps -p PID -o rss [root@nagios-server libexec]# ps -p 643 -o rss RSS 2700
方法二:
cat /proc/PID/status [root@nagios-server libexec]# cat /proc/643/status | grep RSS VmRSS: 2700 kB
测试:
我们用80端口测试:
首先我们查看80端口是否开启和监控的程序:
[root@nagios-server libexec]# netstat -lntp|awk -F '[ :]+' '$5=="80"{print}' tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 643/nginx 1、测试插件:
[root@nagios-server libexec]# sh check_ps_mem.sh 80 OK port-80 nginx use mem 2764800b |MEM=2764800b;5000;10000;0
由以上结果可知,80端口的nginx程序使用的物理内存情况插件执行成功。
2、编辑/usr/local/nagios/etc/nrpe.cfg文件:
command[check_ps_mem]=/usr/local/nagios/libexec/check_ps_mem.sh 80
3、用check_nrpe插件测试:
[root@nagios-server libexec]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_ps_mem port-80 is not exist
用root账号,通过check_nrpe没有抓到数据;
4、用nagios账号执行check_nrpe测试:
[root@nagios-server libexec]# sudo -u nagios /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_ps_mem port-80 is not exist
结果:用nagios账号也是是没有抓到数据。如果nagios账号无法抓取到数据,就算添加到监控也是无法抓到数据。
问题原因:
脚本里/bin/netstat 命令是用sudo执行的。sudo无法在后端执行,执行sudo时要开启tty终端的。用check_nrpe调用脚本时,是在后端执行的sudo 。 好了,问题原因找到了。
解决方法:
在/etc/sudoers文件里添加如下内容:
Defaults:nagios !requiretty
再次测试:
添加 Defaults:nagios !requiretty 后测试:
[root@nagios-server libexec]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_ps_mem OK port-80 nginx use mem 2764800b MEM=2764800b;5000;10000;0 [root@nagios-server libexec]# sudo -u nagios /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_ps_mem OK port-80 nginx use mem 2764800b MEM=2764800b;5000;10000;0
本文出自 "为梦想而努力!" 博客,请务必保留此出处http://815632410.blog.51cto.com/1544685/1602297
没有评论:
发表评论