SysAdmin 分类中的最新日记

mod_perl的安装过程

| 暂无评论 | 暂无引用通告
可参考这篇文章,很不错:
http://pyh7.spaces.live.com/blog/cns!47D8D44208AC51E5!128.entry

mod_perl下载地址:
http://perl.apache.org/dist/mod_perl-2.0-current.tar.gz

Apache2::Request
http://search.cpan.org/~joesuf/libapreq2-2.12/glue/perl/lib/Apache2/Request.pm
http://search.cpan.org/CPAN/authors/id/J/JO/JOESUF/libapreq2-2.12.tar.gz



在/home/modperl下安装mod_perl和libapreq2

cd /home/modeperl
tar zxvf mod_perl-2.0-current.tar.gz
cd mod_perl-2.0.4/
perl Makefile.PL MP_APXS=/usr/local/apache2/bin/apxs
make
make test
make install

编译libapreq2 for apache2
cd /home/modeperl
tar zxvf libapreq2-2.12.tar.gz
cd libapreq2-2.12
./configure --with-expat=/usr/local/apr-util/ --with-apache2-apxs=/usr/local/apache2/bin/apxs
make
make test
make install

配置httpd.conf
LoadModule perl_module          modules/mod_perl.so
LoadModule apreq_module         modules/mod_apreq2.so


再安装Apache2::Request模块
perl Make.PL  --with-expat=/usr/local/apr-util/ --with-apache2-apxs=/usr/local/apache2/bin/apxs
make
make test
make install

系统的平均负载loadavg

| 暂无评论 | 暂无引用通告
man proc得到以下解释:
       /proc/loadavg
              The  load  average  numbers  give the number of jobs in the run queue (state R) or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes.  They are the
              same as the load average numbers given by uptime(1) and other programs.
使用ps找出这两种状态的进程数
ps aux |grep ' [D|R] '|wc -l
上面所获得的值和uptime得到的值基本相同。
如果状态为R的进程数很多,说明CPU瓶颈,如果状态为D的进程很多,说明IO出现瓶颈。

    一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。

相关链接:
http://www.hiadmin.com/uptime%E5%91%BD%E4%BB%A4%E8%A7%A3%E9%87%8A/
启动"组策略":开始-运行-gpedit.msc-确定

左侧"用户配置"-管理模板-windows组件-windows资源管理器

右侧双击第三项:  从"工具"菜单删除"文件夹选项"菜单

选中"已禁用"-确定

dmidecode

| 暂无评论 | 暂无引用通告
    dmidecode  is a tool for dumping a computer's DMI (some say SMBIOS) table contents in a human-readable format. This table contains a description of the system's hardware components, as well as other  useful  pieces  of  information such as serial numbers and BIOS revision. Thanks to this table, you can retrieve this information without having to probe for the actual hardware.  While this is a good point in terms of report speed and safeness, this  also  makes the presented information possibly unreliable.

使用dmidecode命令查看硬件信息
Linux下如何获取主板序列号信息

windows下的md5sum

| 暂无评论 | 暂无引用通告
命令行工具:
http://downloads.activestate.com/contrib/md5sum/Windows/md5sum.exe
将其存放至
C:\WINDOWS\system32
cmd->所要验证的目录:
D:\test>md5sum test.gz

GUI软件: winMd5Sum
http://www.nullriver.com/downloads/Install-winMd5Sum.exe
如果文件太大的话,不是很好用。



Linux企业集群

| 暂无评论 | 暂无引用通告
http://book.51cto.com/art/200806/76015.htm

读完这本书后,对Linux集群有新的认识。
    使用Net::FTP从FTP服务器上下载文件,发现部分文件下载后大小有出入,可能是使用ASCII传输方式造成的。

查一下FTP的两种传输模式的区别:

ASCII模式和BINARY模式的区别是回车换行的处理,binary模式不对数据进行任何处理,asci模式将回车换行转换为本机的回车字符,比如
Unix下是\n,Windows下是\r\n,Mac下是\r

ascii模式下会转换文件
不能说是不同系统对回车换行解释不同
而是不同的系统有不同的行结束符
unix系统下行结束符是一个字节,即十六进制的0A
而ms的系统是两个字节,即十六进制的0D0A
所以当你用ascii方式从unix的ftp  server下载文件时(不管是二进制或者文本文件),每检测到一个

字节是0A,就会自动插入一个0D,所以如果你的文件是二进制文件比如可执行文件、压缩包什么的,就肯

定不能用了。如果你的文件就是unix下的文本文件,你用ascii模式是正确的,要是误用了binary模式,

你在windows上看这个文件是没有换行的,里面是一个个的黑方块。
一般来说,我们最好都用binary方式,这样可以保证不出错。如果有文本格式转换的问题,即unix格式

的文本和dos格式的文本之间的转换,

所以,可以采用这样的习惯:
所有的FTP传输都采用binary方式,但是在windows下面编辑的文件需要事先转换成Unix模式,这个可以使用
UltraEdit的conversion功能,也可以在UltraEdit下面另存为Unix Terminators-LF的格式。

原文见:
http://blog.chinaunix.net/u1/56521/showart_1183437.html
百度百科:FTP
http://baike.baidu.com/view/369.htm

inotify监控文件的更改

| 暂无评论 | 暂无引用通告
      脚本读取目录列表(脚本所在目录下的db.conf),将目录添加到inotify监控中,被监控目录下新创建的目录也会被添加到监控中去.被监控目录下创建的文件或文件内容被更改后,脚本以日志的方式文件名发送给本机的syslog。脚本发送日志时使用的facility为local2,priority为info,进程名为inotifyd。
      脚本的内容如下:
#!/usr/bin/perl

use strict;
use Event;
use Linux::Inotify2;
use POSIX;
use IO::File;
use Sys::Syslog qw(:DEFAULT setlogsock);

my $script_dir="/opt/";
our $CONF_FILE=$script_dir."db.conf";


#For Daemon
###################################################
sub daemonize {
        chdir "/";
        open STDIN, "</dev/null";
        open STDOUT, ">/dev/null";
        open STDERR, ">&STDOUT";
        defined(my $pid=fork) or die "Can't fork: $!\n";
        exit if($pid);
        POSIX::setsid() or die "Can't start a new session: $!";
        umask 0;
}

sub add_watch {
        my ($inotify,$log_file)=@_;
        open FH,$log_file;
        while(<FH>){
                my $file=$_;
                chomp $file;
                $inotify->watch ($file, IN_ALL_EVENTS, \&mywatch)
        }
        close FH;
}

####################################################
                         
&daemonize;

my $ident="inotify";
my $logopt="ndelay";
my $facility="local2";
my $priority="info";
openlog $ident, $logopt, $facility;       # don't forget this


our $INOTIFY_OBJECT=new Linux::Inotify2;
Event->io (fd => $INOTIFY_OBJECT->fileno, poll => 'r', repeat => 1, cb => sub { $INOTIFY_OBJECT->poll });

Event->signal (signal => 'HUP',cb => \&re_conf);

add_watch($INOTIFY_OBJECT,$CONF_FILE);

Event::loop;

sub re_conf{
        add_watch($INOTIFY_OBJECT,$CONF_FILE);
        Event::loop;
}


sub mywatch {
        my $e = shift;
        my $PATH= $e->fullname;
        my $MASK= $e->mask;
  
  
        if($e->IN_ISDIR){
         if($e->IN_CREATE){
            $INOTIFY_OBJECT->watch($PATH,IN_ALL_EVENTS, \&mywatch);
                    return;
        }
        }else{
            if($e->IN_MODIFY || $e->IN_CREATE){
                    syslog($priority,$PATH);
                    return
            }
    }
}

例如,我们需要监控/data下的目录:

将脚本保存在/opt下命名为inotifyd.pl
安装脚本使用的模块:
cpan Event
cpan Linux::Inotify2
cpan Sys::Syslog
设定脚本所在目录
vi /opt/inotifyd.pl
my $script_dir="/opt/";
检测脚本是否可运行:

[supersun@supersun.biz opt]$ perl -c inotifyd.pl
inotifyd.pl syntax OK


配置syslog.conf,添加以下的行:
local2.*                                                /var/log/inotify.log
或将日志发送给日志主机loghost
local2.*                                                @loghost

更改message行:
auth,authpriv,cron,daemon,kern,lpr,news,syslog,user.info;mail.none;authpriv.none;cron.none              /var/log/messages
不然的话inotify的日志也会发送至/var/log/messages中去

创建需要监控的目录的列表:
find /data -type d >/opt/db.conf

启动脚本
perl inotifyd.pl

脚本接收HUP信号,重新读加监控目录列表,将上次未加载的录添加到监控中。

如果目录列表很长的话,使用top查看进程状态,态状为R时,inotifyd.pl正在加载目录列表,状态S时,脚本已开始监控。

查看/var/log/inotify.log(根椐自己/etc/syslog.conf中的配置)中的日志输出。

Mar 20 15:36:28 supersun.biz inotify: /data/hello.txt

syslog使用的udp协议发送日志,如何使syslog监听udp的514端口可以参考将防火墙的日志发送给日志主机
syslog-ng可以使用tcp协议发送日志,也可以通过加密的方式发送日志

 

使用syslog-ng配置日志主机

| 暂无评论 | 暂无引用通告
syslog-ng的主页:
http://www.balabit.com/network-security/syslog-ng/

需要的软件包:
eventlog-0.2.7-1.el5.x86_64.rpm
syslog-ng-2.1.3-2.el5.x86_64.rpm

你可以到http://rpm.pbone.net/下载与系统对应的rpm包

安装:
rpm -ivh eventlog-0.2.7-1.el5.x86_64.rpm
rpm -ivh syslog-ng-2.1.3-2.el5.x86_64.rpm

server:192.168.11.2
client:192.168.11.1
client上的应用程序将日志发送给本机的syslog,client上的syslog-ng将日志记入本地文件/var/log/inotify.log同时发送一份给server,server将日志保存为var/log/inotify.1.log

syslog-ng的配置文件为:
/etc/syslog-ng/syslog-ng.conf
server端的配置
创建一个源,监听tcp的514端口,最大连接数10
#for network listening
source s_tcp { tcp(ip(192.168.11.2) port(514) max-connections(10)); };

创建一个目的端
destination d_inotify_1 { file("/var/log/inotify/inotify.1.log");};
创建一个过滤器
filter f_inotify_1 { facility(local2) and (host("host1") or host("host1.supersun.biz") or host("192.168.11.1")); };
记入日志
log { source(s_tcp); filter(f_inotify_1);destination(d_inotify_1); };

为了在日志中显示远程主机的IP地址,而不是主机名,可以
options段
keep_hostname (no);
注意不要被下面的配置给覆盖了。


client端的配置:
创建两个目的端,一个日志主机,一个本地文件。
destination d_remote { tcp("192.168.11.2" port(514)); };
destination d_inotify { file("/var/log/inotify.log"); };
创建一个过滤器,过滤local2的日志
filter f_inotify    { facility(local2); };
将local2的日志写到本地和日志主机
log { source(s_sys); filter(f_inotify); destination(d_inotify); };
log { source(s_sys); filter(f_inotify); destination(d_remote); };
此处的传日志给日志主机是基于tcp,因此,需要更改/etc/services
syslog          514/tcp
将tcp的514端口改为syslog

启动syslog-ng
service syslog-ng restart
将syslog-ng添加到开机启动中
chkconfig syslog-ng on
chkconfig syslog off

在client端运行以下命令测试一下:
logger -p local2.debug "this is a test"

其他配置示例:
http://www.campin.net/syslog-ng.conf

此处的示例是在信任网络,如果觉得这样不安全,可能使用stunnel进行加密传输,可参考这篇文章:
使用Stunnel保护syslog-ng服务器
http://server.it168.com/server/2007-11-15/200711140845734.shtml

syslog-ng介绍




相关文章

将防火墙的日志发送给日志主机


cacti中部分图片出现断层,在日志中发现以下错误

WARNING: Poller Output Table not Empty.  Potential Data Source Issues for Data Sources....好多数据.

    通常情况下,poll.php每五分钟执行一次,在启动poll.php时,5分钟之前启动的进程还没有结束,就会这出这种现象,可能是部分主机反应慢或已不再使用,导致poll.php执行时间过长,要记得在cacti中删除不再使用的主机 和监控.

最新资源

  • IMG_1437.JPG
  • line.png
  • bar.png
  • perl_calander.jpg

关于此归档

这里是分类SysAdmin中的最新日记。

上一个分类Perl

下一个分类tunning

首页归档页可以看到最新的日记和所有日记。