Rootop 服务器运维与web架构

2014-05-09
发表者 Venus
暂无评论

Error: Could not stat() command file ‘/usr/local/nagios/var/rw/nagios.cmd’!

外部命令文件无法stat()。
外部文件不存在,或Nagios未运行、Nagios不支持外部命令。
提交命令时出错

在服务中启用服务通知 Enable notifications for this service 提交的时候报错。
Error: Could not stat() command file ‘/usr/local/nagios/var/rw/nagios.cmd’!
The external command file may be missing, Nagios may not be running, and/or Nagios may not be checking external commands.
An error occurred while attempting to commit your command for processing.

根据错误提示到/usr/local/nagios/var/rw下发现没有nagios.cmd文件。不知道为啥···

解决办法:
[root@localhost ~]# cd /usr/local/nagios/var/rw
[root@localhost rw]# mkfifo nagios.cmd
[root@localhost rw]# chmod o+w nagios.cmd
[root@localhost rw]# chmod g+w nagios.cmd
[root@localhost rw]# ll nagios.cmd
prw-rw—- 1 nagios nagios 0 May 9 09:08 nagios.cmd
[root@localhost ~]# service nagios restart

FIFO是一种特殊的文件类型,它允许独立的进程通讯.
一个进程打开FIFO文件进行写操作,而另一个进程对之进行读操作, 然后数据便可以如同在shell或者其它地方常见的的匿名管道一样流线执行。

2014-05-08
发表者 Venus
暂无评论

linux监控工具nagios之安装篇

关于nagios的介绍不做过多的描述,下面开始安装过程。
nagios的官方网站:http://www.nagios.org
目前最新版为4.0.6,这里我不用最新版本,采用nagios-3.5.1。
下载地址:http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.5.1.tar.gz
nagios插件下载地址:http://nagios-plugins.org/download/nagios-plugins-2.0.tar.gz
nagios汉化插件下载地址:http://nchc.dl.sourceforge.net/project/nagios-cn/sourcecode/zh_CN%203.2.3/nagios-cn-3.2.3.tar.bz2
nagios需要web服务器和php支持,所以安装Apache(或nginx)+php,mysql到用不上顺便装上留作其它测试用。

安装:

[root@centos-6.5-x64 ~]#useradd -s /sbin/nologin nagios
[root@centos-6.5-x64 ~]#yum install -y gcc gcc-c++ gd gd-devel openssl openssl-devel zlib zlib-devel httpd php php-mysql php-gd php-mbstring mysql mysql-server sendmail
[root@centos-6.5-x64 ~]#tar zxvf nagios-3.5.1.tar.gz
[root@centos-6.5-x64 ~]#cd nagios
[root@centos-6.5-x64 nagios]#./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/lib --with-gd-inc=/usr/include/
[root@centos-6.5-x64 nagios]#make all
[root@centos-6.5-x64 nagios]#make install
[root@centos-6.5-x64 nagios]#make install-init #在/etc/rc.d/init.d目录下创建nagios启动脚本就可以通过service nagios start···管理
[root@centos-6.5-x64 nagios]#make install-commandmode #自动设置相关目录的权限
[root@centos-6.5-x64 nagios]#make install-config #安装nagios配置文件模板

安装nagios插件:

[root@centos-6.5-x64 ~]#tar zxvf nagios-plugins-2.0.tar.gz
[root@centos-6.5-x64 ~]#cd nagios-plugins-2.0
[root@centos-6.5-x64 nagios-plugins-2.0]#./configure --prefix=/usr/local/nagios/
[root@centos-6.5-x64 nagios-plugins-2.0]#make all
[root@centos-6.5-x64 nagios-plugins-2.0]#make install

插件被安装到/usr/local/nagios/libexec/下

安装中文插件:
对于像我这样渣渣英语的同学来说安装个汉化插件不错。

[root@centos-6.5-x64 ~]#tar jxvf nagios-cn-3.2.3.tar.bz2
[root@centos-6.5-x64 ~]#cd nagios-cn-3.2.3
[root@centos-6.5-x64 nagios-cn-3.2.3]#./configure
[root@centos-6.5-x64 nagios-cn-3.2.3]#make all
[root@centos-6.5-x64 nagios-cn-3.2.3]#make install

配置apache:
[root@centos-6.5-x64 ~]#vi /etc/httpd/conf/httpd.conf
User nagios #运行apache的用户、组改为nagios
Group nagios
DirectoryIndex index.php index.html index.html.var
直接跳到最后一行追加:

ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd #指定密码文件
Require valid-user
</Directory>

ServerName localhost

Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>

因为nagios没有自带用户认证功能,所以通过apache来实现访问授权。
[root@centos-6.5-x64 ~]#htpasswd -c /usr/local/nagios/etc/htpasswd root #添加授权用户root,名字可自己定义。
New password:
Re-type new password:
Adding password for user root
[root@centos-6.5-x64 ~]#service nagios start
[root@centos-6.5-x64 ~]#service httpd start
现在可以访问nagios了。
http://192.168.1.53/nagios/



安装完成。

PS:
安装完成后访问出现的几个错误。

报错1:
错误: 无法正确地读出配置文件中的对象数据!
[root@localhost ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg #检查配置文件
我执行后提示我Line 1043 (UNKNOWN VARIABLE) 1043行有错误。
#service_check_timeout_state=c  #根据检查配置文件命令提示此行错误,屏蔽。

错误2:
The requested URL /nagios/cgi-bin/statusmap.cgi was not found on this server.
到/usr/local/nagios/sbin确认确实没有此文件。
这个错误是最开始安装时没有安装gd和gd-devel包,导致没有statusmap.cgi程序。不过上面我们已经安装了gd和gd-devel所以不会出现,留作提示大家注意下。
[root@localhost sbin]# yum install gd gd-devel 重新编译nagios

./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/lib --with-gd-inc=/usr/include

编译nagios时通过此参数得到statusmap.cgi文件,否则登陆nagios后,点击拓扑图会提示404错误。

2014-05-08
发表者 Venus
暂无评论

netstat与awk命令统计网络连接数的方法

使用netstat与awk命令,统计网络连接数。

代码示例:

netstat -an | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}'

得到类似下面的结果:
TIME_WAIT 12
FIN_WAIT1 3
ESTABLISHED 16
LISTEN 4
这条命令可以把当前系统的网络连接状态分类汇总。
以下是对命令中各参数的解释,以帮助大家理解:
/^tcp/
滤出tcp开头的记录,屏蔽udp, socket等无关记录
state[]
相当于定义了一个名叫state的数组
NF
表示记录的字段数,如上所示的记录,NF等于6
$NF
表示某个字段的值,如上所示的记录,$NF也就是$6,表示第6个字段的值,也就是TIME_WAIT
state[$NF]
表示数组元素的值,如上所示的记录,就是state[TIME_WAIT]状态的连接数
++state[$NF]
表示把某个数加一,如上所示的记录,就是把state[TIME_WAIT]状态的连接数加一
END
表示在最后阶段要执行的命令
for(i in state)
遍历数组
print i,”\t”,state[i]
打印数组的键和值,中间用\t制表符分割

2014-05-08
发表者 Venus
暂无评论

Server 2008 R2 一个小时自动强制关机

安装了win2008R2,试了很多激活方法,终于激活后,不知道什么原因,过了一段时间后,每隔一段时间就自动关机,查了一下,发现是 wlms.exe在作祟,可是这个任务一旦强制关闭,电脑又会自动重启,重启后,这个任务又在运行了。

写一个批处理文件:

taskkill /f /im wlms.exe
ping -n  4 127.0.0.1
shutdown -a

用记事本写下以上的命令,另存为.bat 批处理文件。双击运行,即可。每次开机后,都要运行一次,因为每次重新开机,wlms.exe这个服务都会运行。

taskkill /f /im wlms.exe  :这个表示关闭wlms.exe这个任务,关闭这个任务会引起windows重启。

shutdown -a :表示取消windows重启或者关闭的命令

中间这个命令ping -n  4 127.0.0.1 是为了延时,等到windows重启的命令发布了,shutdown -a才能有效的取消重启的命令。

WLMS.exe (Windows Licensing Monitoring Service) 服务是Windows软件许可状态,杀掉进程后系统会在一分钟内关机。

2014-05-07
发表者 Venus
暂无评论

shell批量解压tar.gz压缩包

在搭建某些环境的时候需要安装N多的tar.gz的源码包,一个个解压实在是累得慌,本想用通配符,结果不支持,后来用for循环解决:

#!/bin/bash
D_DIR='/root/lnmp'

for x in `ls ${D_DIR}`
do
tar zxvf $D_DIR/$x -C $D_DIR
done

把所有的tar.gz包放到/root/lnmp目录下(可自行修改),然后把脚本放到任意位置(/root/lnmp路径除外,因为它会把脚本本身当成压缩包解压,就会报错。)执行即可。