2012年12月18日 星期二

heartbeat3.05安装

CentOS6.3
http://www.thatsgeeky.com/2011/07/installing-heartbeat-on-amazon%E2%80%99s-ec2/
http://www.linuxso.com/linuxrumen/6445.html
http://hi.baidu.com/_you_yan/item/aa08890d295709cf74cd3c24     the new
http://blog.csdn.net/lhfeng/article/details/5992116
http://www.wenzizone.cn/?tag=heartbeat
一、LVS安装
系统默认是支持LVS功能的(有如下信息表示支持)。
# modprobe -l |grep ipvs
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko
二、在Director Server上安装IPVS管理软件
首先从 http://www.linuxvirtualserver.org/software/ipvs.html 下载对应的IPVS源码
我这里下载 ipvsadm-1.24.tar.gz
安装方法一:(推荐用这个方便快捷):
# yum install -y ipvsadm
# ipvsadm --help  有相关信息输出,表时IPVS已经安装成功。
安装方法二:
# tar zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
# make
# make install
三、安装heartbeat
-----------------------------------------------
首先下载libnet工具,并安装
http://sourceforge.net/projects/libnet-dev/
# tar zxvf libnet-1.1.6.tar.gz
# cd libnet-1.1.6
# ./configure
# make
# make install
-----------------------------------------------
heartbeat下载并安装(三个文件:Heartbeat、Cluster Glue、Resource Agents)
http://linux-ha.org/wiki/Downloads
# yum -y install glib2-devel libtool-ltdl-devel net-snmp-devel bzip2-devel \
ncurses-devel openssl-devel libtool libxml2-devel gettext bison flex zlib-devel \
mailx which libxslt-devel docbook-dtds docbook-style-xsl PyXML shadow-utils opensp autoconf automake libuuid-devel \
libexslt libexslt-devel libgcrypt-devel pkgconfig libgpg-error-devel sgml-common opensp openjade xml-common \
docbook-dtds docboot-style -y 
1、安装Cluster Glue
# groupadd haclient
# useradd hacluster -g haclient -s /sbin/nologin
# tar jxvf Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2
# cd Reusable-Cluster-Components-glue--glue-1.0.9
# ./autogen.sh
# ./configure --prefix=/usr/local/ha_soft
# make
# make install
2、安装Resource Agents
# cd ../
# tar zxvf ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz
# cd ClusterLabs-resource-agents-b735277
# ./autogen.sh
# ./configure --prefix=/usr/local/ha_soft CFLAGS=-I/usr/local/ha_soft/include \
LDFLAGS=-L/usr/local/ha_soft/lib
# vi /usr/local/ha_soft/include/heartbeat/glue_config.h(找到如下几个设置项删除对应的行)
HA_SYSCONFDIR
HA_HBCONF_DIR
HA_HBCONF_DIR
# make
# vi /etc/ld.so.conf.d/heartbeat.conf (输入如下行)
/usr/local/ha_soft/lib
# ldconfig
# make install
3、安装heartbeat
# cd ..
# tar jxvf Heartbeat-3-0-7e3a82377fa8.tar.bz2
# cd Heartbeat-3-0-7e3a82377fa8
# ./bootstrap
# ./configure --prefix=/usr/local/ha_soft CFLAGS=-I/usr/local/ha_soft/include \
LDFLAGS=-L/usr/local/ha_soft/lib
# cp /srv/Heartbeat-3-0-7e3a82377fa8/lib/plugins/HBcomm/hbaping.c /srv/Heartbeat-3-0-STABLE-3.0.4/lib/plugins/HBcomm/hbaping.c.bak
# vi /srv/Heartbeat-3-0-STABLE-3.0.4/lib/plugins/HBcomm/hbaping.c(安装源码目录,删除326行)
# make
# make install
四、配置(节点1和节点2相同,区别就是检查ip是对方) ? 从源码编译目录中复制配置文件到安装目录
复制附件<配置文件>里的配置文件到 /usr/local/ha_soft/etc/ha.d/
编辑ha.cf 主配置文件
[root@aos ha.d]# cd /usr/local/ha_soft/etc/ha.d
[root@aos ha.d]# vim ha.cf
#debugfile /var/log/ha-debug
#logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 6
warntime 4
initdead 30
udpport 694
ucast eth1 192.168.1.200
auto_failback off
node aos
node weibo
compression bz2
compression_threshold 2
ping_group group1 xxxxx82 xxxx.80
respawn root /usr/local/ha_soft/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
debug 0
? 编辑authkeys 验证信息文件
[root@aos ha.d]# cd /usr/local/ha_soft/etc/ha.d
[root@aos ha.d]# vim authkeys
auth 1
1 crc
[root@aos ha.d]# chmod 600 authkeys
? 编辑haresources 资源控制配置文件
[root@aos ha.d]# cd /usr/local/ha_soft/etc/ha.d
[root@aos ha.d]# vim haresources
aos IPaddr::xxxxx.70/25/eht0/xxxxx.127
? 链接文件
[root@aos heartbeat]# vim /etc/ld.so.conf(加入到文件末尾)
/usr/local/ha_soft/lib/
[root@aos heartbeat]# ldconfig
#cp /usr/local/ha_soft/etc/ha.d/resource.d/hto-mapfuncs /usr/local/ha_soft/etc/ha.d/resource.d/hto-mapfuncs.bak
[root@aos heartbeat]# vim +35 /usr/local/ha_soft/etc/ha.d/resource.d/hto-mapfuncs(注释35行)
(六) 注册并且启动服务
[root@aos ha.d]# chkconfig --add heartbeat
[root@aos ha.d]# chkconfig levles 2345 heartbeat on
[root@aos ha.d]# /etc/init.d/heartbeat start
-------------------------------------------------------------------
In file included from libipvs.c:23:
1.找到ip_vs.h文件.copy to /usr/include/net下
2.ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux
3.修改当前目录和libipvs目录中的Makefile的:
INCLUDE = -I/usr/src/linux/include -I.. -I.
为:
INCLUDE = -I/usr/src/kernels/2.6.9-22.EL-i686/include -I..-I.
---------------------------------------------------------------------
configure: error: You need glib2-devel installed in order to build cluster-glue
# yum install -y glib2-devel
----------------------------------------------------------------------
checking for special libxml2 includes... configure: error: libxml2 config not found
# yum install -y libxml2 libxml2-devel
-----------------------------------------------------------------------
configure: error: BZ2 libraries not found
yum -y install bzip2-devel glib2-devel
------------------------------------------------------------------------
gmake[2]: *** [hb_report.8] Error 4
这个报错因为要访问http://docbook.sourceforge.net/release/xsl/current/ 目录下的文件造成的,第一次发现源码安装软件需要联网,并且还要翻墙(^_^),本人水平有限,没办法直接翻墙。网页翻墙后下载common html lib manpages四个目录下的文件和VERSION.xsl,然后简易搭建一个httpd服务器,在主目录下新建相同的目录结构,并将所有文件拷贝到相应目录;然后在/etc/hosts文件中将docbook.sourceforge.net指向httpd的IP。(你知道这在干什么吧,做个假的 docbook.sourceforge.net服务器)
# vi /etc/mime.types  加入  xml  xsl  保存。
这里要多编译几次,有时候会提示找不到网页的。下载网页 wget -r A http://docbook.sourceforge.net/release/xsl/current/
约1个小时左右就下完了。
-------------------------------------------------------------------------
../heartbeat/IPv6addr: error while loading shared libraries: libplumb.so.2: cannot open shared object file: No such file or directory
gmake[2]: *** [metadata-IPv6addr.xml] Error 127
解决办法:这个是由于缺乏libplumb.so.2引起的,到网上libplumb.so.2下载包含这个文件的rpm即可,在本次方案中用的是libheartbeat2-2.99.2-6.1.i386.rpm
--------------------------------------------------------------------------
aclocal-1.5
automake-1.5 --add-missing --include-deps --copy
configure.in: 472: `AC_DECL_YYTEXT' is covered by `AM_PROG_LEX'
contrib/Makefile.am:23: SUBDIRS was already defined in condition TRUE, which implies condition BUILD_DRBD_OUTDATE_PEER_TRUE
  SUBDIRS (User, where = 23) +=
  {
    TRUE => ipfail mlock
  }
replace/Makefile.am:29: required file `replace/[lt__dirent].c' not found
replace/Makefile.am:29: required file `replace/[lt__strl].c' not found
replace/Makefile.am:29: required file `replace/[argz].c' not found
./bootstrap exiting due to error (sorry!).
解决办法:
yum update -y 慎用
yum groupinstall -y "Development Tools"
yum install -y wget net-snmp-devel openhpi-devel net-snmp OpenIPMI glib2-devel libxml2-devel bzip2-devel libuuid-devel docbook-utils docbook-dtds libtool-ltdl libtool-ltdl-devel libxslt perl-TimeDate python-devel OpenIPMI-devel openssl-devel docbook-style-xsl help2man e2fsprogs-devel mailx
---------------------------------------------------------------------------------------
metadata-IPv6addr.xml:1: parser error : Document is empty
^
metadata-IPv6addr.xml:1: parser error : Start tag expected, '<' not found
^
unable to parse metadata-IPv6addr.xml
gmake[2]: *** [ocf_heartbeat_IPv6addr.xml] Error 6
gmake[2]: Leaving directory `/home/soft/ClusterLabs-resource-agents-b735277/doc'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/home/soft/ClusterLabs-resource-agents-b735277'
make: *** [all] Error 2
解决办法:xml 没有下载成功,重头开始安装编译。
------------------------------------------------------------------------------------
../heartbeat/IPv6addr: error while loading shared libraries: libnet.so.1: cannot open shared object file: No such file or directory
gmake[2]: *** [metadata-IPv6addr.xml] Error 127
# yum install libnet*  不知道是不是这样解决的,反正重新编译可以了。

2012年12月14日 星期五

heartbeat集群心跳配置

集群心跳可在文件etc/ha.d/ha.cf中进行配置,如下所示:

node server-1 server-2

bcast eth0

ucast eth1 192.168.127.132

心跳有如下四种类型:串口、广播、多播、ucast,以下分别进行介绍:
#serial 串口名称
#serial /dev/ttyS0 # Linux
#serial /dev/cuaa0 # FreeBSD
#serial /dev/cuad0 # FreeBSD 6.x
#serial /dev/cua/a # Solaris

#广播heartbeats的接口
#bcast eth0 # Linux
#bcast eth1 eth2 # Linux
#bcast le0 # Solaris
#bcast le1 le2 # Solaris

# 设置一个多播心跳介质
# mcast [dev] [mcast group] [port] [ttl] [loop]
#[dev]发送/接收heartbeats的设备
#[mcast group]加入到的多播组(D类多播地址224.0.0.0 - 239.255.255.255)
#[port]端口用于发送/接收udp(设置这个值跟上面的udpport为相同值)
#[ttl]外流的heartbeats的ttl值。这个影响多播包能传播多远。(0-255)必须要大于0 。
#[loop]为多播heartbeat开关loopback。如果enabled,一个外流的包将被回环到原处并由发送它的接口接收。(0或者1)设置这个值为0。
#mcast eth0 225.0.0.1 694 1 0

#配置一个unicast / udp heartbeat 介质
#ucast [dev] [peer-ip-addr]
#[dev]用于发送/接收heartbeat的设备
#[peer-ip-addr]包被发送到的对等的IP地址
#ucast eth0 192.168.1.2

在heartbeat中,可以使用命令cl_status来查询集群心跳的相关信息。

显示节点server-1所使用的心跳:

[root@server-1 bin]# ./cl_status listhblinks server-1

eth1

eth0

显示节点server-1的eth0心跳状态:

[root@server-1 bin]# ./cl_status hblinkstatus server-1 eth0

up

csmail双机配置

邮件启动
/etc/init.d/mysql.server.front.csmail start
/etc/init.d/mysql.server.csmail start
/etc/init.d/csmail.rc start
邮件件关闭
/etc/init.d/csmail.rc stop
/etc/init.d/mysql.server.csmail stop
/etc/init.d/mysql.server.front.csmail stop

1.准备双机环境
    操作系统:    CentOS release 5.8 (Final)
    三台机器:    csmail_ha1    --ha1    --192.168.0.21    ->第一台csmail
            csmail_ha2    --ha2    --192.168.0.22    ->第二台csmail
            csmail_nfs    --nfs    --192.168.0.30    ->两台机器的共用存储,使用nfs
                    --vip    --192.168.0.20    ->虚拟IP
2.相关软件
    csmail邮件8.12版本
    heartbeat-2.1.4.tar.bz2
3.系统配置
    .
    .nfs配置
        在csmail_nfs主机建/csdata目录,并共享出去
        /csdata 192.168.0.0/24(rw,sync,no_root_squash)
   
    .以下操作要在ha1和ha2都做一次
    .安装依赖组件:
        yum groupinstall -y "Legacy Software Development" "Legacy Software Support" \
                    "Development Libraries" "Development Tools"
   
    .更新ha1和ha2对应的主机名

    .创建用户和用户组,要保证两台机器的uid和gid相同,组id为600,uid为601
        groupadd -g 600 haclient
        useradd -u 601 -g haclient hacluster
    .设置/etc/hosts文件
        csmail_ha1    192.168.0.21
        csmail_ha2    192.168.0.22
        同时指出自己是哪台机器
        127.0.0.1    csmail_ha? localhost.localdomain localhost
        ::1        csmail_ha? localhost6.localdomain6 localhost6
    .设置/etc/sysconfig/networks
        NETWORKING=yes
        NETWORKING_IPV6=yes
        #HOSTNAME=localhost.localdomain
        HOSTNAME=csmail_ha?
    .设置/etc/reslov.conf
        第一行:search localdomain  先查找本地hosts文件
       
       
4.安装过程
    a.安装邮件
        .在ha1安装邮件,执行setup.sh安装
        .ha1查看/etc/passwd,找到以下三个对应的行,并复制到ha2的passwd文件中
            csmail:x:500:501::/opt/foundir/csmail:/bin/bash
            postfix:x:501:503::/home/postfix:/bin/bash
            mysql:x:502:504::/home/mysql:/bin/bash
        .ha1查看/etc/group,找到以下个对应的行,并复制到ha2的group文件中
            postdrop:x:500:
            foundir:x:501:
            csmail:x:502:csmail
            postfix:x:503:
            mysql:x:504:
        .在ha2安装邮件,执行setup.sh安装
        .关闭开机自动启动,后面程序的启动会由heartbeat来控制
            chkconfig mysql.server.front.csmail off
            chkconfig mysql.server.csmail off
            chkconfig csmail.rc off
    b.安装heartbeat
        .上传软件包Heartbeat-2-1-STABLE-2.1.4.tar.bz2并解压
        .cd到解压出来的目录
        ./bootstrap --prefix=/opt/heartbeat && make && make install
        .cp /opt/heartbeat/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys} /opt/heartbeat/etc/ha.d/
        .mv /etc/init.d/*csmail* /opt/heartbeat/etc/ha.d/resource.d/
    c.三个文件配置
        .ha.cf文件
            use_logd yes
            debugfile /var/log/rhythmha-debug
            logfile /var/log/rhythmha-log
            logfacility    local0
            udpport 694
            keepalive 2
            deadtime 30
            warntime 10
            initdead 120
            hopfudge 1
            ucast eth0 192.168.0.21
            auto_failback off 
            node    csmail_ha1 csmail_ha2
        .haresources文件
            csmail_ha1 192.168.0.20 rhythmha_mount httpd mysql.server.csmail mysql.server.front.csmail csmail.rc rhythmha_report
        .authkeys文件
            auth 1
            1 crc
            2 sha1 HI!
            3 md5 Hello!
5,启动测试

2012年12月12日 星期三

apache优化

Apache Tuning
Apache 2.0 許多功能和改進,編譯時要開啟 worker mpm 模組,否則為了和 Apache 1.3 相容會自動選擇 prefork 模式。

steven $ ./configure --prefix=/usr/local/httpd --enable-isapi --enable-file-cache --enable-echo --disable-charset-lite --enable-charset-lite --enable-cache --enable-disk-cache --enable-mem-cache  --enable-example --enable-case-filter --enable-case-filter-in --enable-dumpio --enable-auth-ldap --enable-ext-filter --enable-deflate --enable-log-forensic --enable-logio --enable-mime-magic --enable-headers --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-ssl --enable-optional-hook-export --enable-optional-hook-import --enable-optional-fn-import --enable-http --enable-cgi --enable-cgid --enable-speling --enable-rewrite --enable-so --with-suexec-uidmin --with-suexec-gidmin --with-suexec-logfile --with-suexec-safepath --enable-static-htpasswd --enable-static-htdigest --enable-static-rotatelogs --enable-static-logresolve --with-mpm=worker

在一個高等級的硬體設備下,以下的設定在同一時間可以處理 5000 個連線。

root # vi /usr/local/httpd/conf/extra/httpd-mpm.conf
-------------------------------------------------------
<IfModule mpm_worker_module>
    # Apache 啟動時先開啟 3 個 Threads
    StartServers              3
    MaxClients             5000
    # 最大的連線數
    ServerLimit              50
    MinSpareThreads          50
    MaxSpareThreads         200
    ThreadLimit             200
    ThreadsPerChild         100
    MaxRequestsPerChild     200
</IfModule>
-------------------------------------------------------

當然,為了效能,我建議關閉 DNS 的查尋和提高 MaxKeepAliveRequests 的選項並且把 Timeout 值調低。

root # vi /usr/local/httpd/conf/extra/httpd-default.conf
-------------------------------------------------------
# 連線超過 60 秒失敗就重試
Timeout 60
# 開啟 KeepAlive
KeepAlive On
# 設定同一時間可容許的 KeppAlive 量
MaxKeepAliveRequests 5000
# KeepAlive 多久要自動 Timeout 掉
KeepAliveTimeout 3
# 關掉那費時的 DNS 查尋
HostnameLookups Off
-------------------------------------------------------
note: 為什麼 Timeout 值要縮短,在一個大流量的網路服務(良好的硬體設備,高頻寬的網路速度)在同一時間是需要能夠服務更多的使用者,如果 Timeout 太高,那麼在連線佔滿時下一個連線請求就要等到有連線結束掉才能夠被服務;相反的若設定太低那麼就要常常重新連線。不過重新連線一般的使用者並不會有太大的感覺(TCP/IP 的三向交握很快),所以不要讓伺服器一直在等待沒有請求的連線。

在一台設備良好的伺服器上,上面如果只有一項服務的話,那麼就應該把大部份的資源都留給它,比方說 Web 服務。
在 Linux 上,根據啟動時加以調整 nice 值也可以讓 Apache 的處理速度快一點。
nice 的調整範圍是在 -20 ~ +19 之間,如果不設定的設所有服務都是在 0。nice 的關念,就是它的值越低,就離 CPU 越近,那麼就跟容易取得 CPU 的資源,相反的在正數越高(+1 ~ +19)越不容易得到回應。

啟動 apache 時就把 nice 值調到 -10
root # nice -10 /usr/local/httpd/bin/apachectl start &

如果系統已經在啟動的話,可以使用 renice 來重新設定其 nice 值。
找出 apache 的 PID,並重新設定
root # netstat -ntulp | grep httpd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      19249/httpd
root # renice -10 19249
當你調整完畢之後,可以使用 top 指令查看 NI 欄位的變化。

把不要必要的服務全部都關掉以便適出更多的可用資源讓 Apache 使用,當系統安裝時,大部份的系統建置者通常會把所有的套件都裝上去,以免未來要使用的功能不齊全,當然這是我們無法阻止的,但是我們卻可以控制系統的服務。
如果你使用 Redhat/Fedora 系統 Linux OS 的話,可以使用 chkconfig 來看看系統啟動時到底有那些服務被開啟。
root $ chkconfig --list
~ 以上略 ~
rawdevices      0:off   1:off   2:off   3:off   4:on    5:on    6:off
acpid           0:off   1:off   2:off   3:on    4:on    5:on    6:off
ipchains        0:off   1:off   2:on    3:off   4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:off   4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:on    3:off   4:off   5:off   6:off
lpd             0:off   1:off   2:on    3:off   4:on    5:off   6:off
xfs             0:off   1:off   2:on    3:off   4:on    5:on    6:off
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
portmap         0:off   1:off   2:off   3:off   4:on    5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:off   4:on    5:on    6:off
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfslock         0:off   1:off   2:off   3:off   4:on    5:off   6:off
identd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
~ 以下略 ~
root #
使用 chkconfig 可以看到各服務在系統那個 system level 時會被關閉或開啟。
如果你的機器只有單純的服務網頁服務,那麼就不應該要有 NFS、telnet、ldap、samba、lpd、cups、mysql 或會佔用大量記憶體及 CPU 資源的程式。尤其是像資料庫服務。
以下示範如何把 MySQL 在開機時不啟動。

root # chkconfig mysqld off

如果 MySQL 正在執行,要把它關閉的話。

root # service mysqld stop

root # /etc/init.d/mysqld stop

重新編譯 Apache!
如果你對於系統廠商所附的套件不滿意,或是想要轉到新版本的 Apache 時,那麼就要編譯一下 Apache,在編譯時可能需要注意一些事項:
不要把所有的模組都編上去
確認你的 GCC 版本

不要把所有的模組都編上去
如果一開始就決定要使用 JSP 開發程式,那麼就不需要把 PHP 模組都套進來;若不需要使用到 LDAP 認證,那也不需要把 LDAP 的模組也一起編進來,總之,在編譯你的 Apache 之前,那麼就應該要先確認環境狀況而不是一頭腦的全都加進去。
確認你的 GCC 版本
說真的,小弟對於程式並不是很熟,所以無法明確的指出 GCC 版本對於編譯出來的程式有什麼樣的結果。不過可以證實的是,有些新版本的 GCC 在編譯時,可以讓程式更小執行更快。

Heartbeat常见问题-centos6.2

[日期:2012-11-06]
来源:Linux社区  作者:crazylinux
[字体: ]

研究一下Heartbeat,其官方下载网站:http://www.linux-ha.org/wiki/Downloads

目前版本:
ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz
Heartbeat-3-0-7e3a82377fa8.tar.bz2
Pacemaker-1-2-cc0e4d295e29.tar.bz2
Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2

在安装过程中遇到各种错误,方便网上童靴会遇到和我一样的问题,我把解决办法整理如下,也同时希望大家补充:

我用的系统是:
[root@host2 ~]# cat /etc/RedHat-release
CentOS release 6.2 (Final)
[root@host2 ~]# uname -a
Linux host2.linuxbrother.com 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux

1、libtoolize: `COPYING.LIB' not found in `/usr/share/libtool/libltdl'
解决办法:
yum -y install libtool-ltdl-devel
2、checking for special libxml2 includes... configure: error: libxml2 config not found
解决办法:
yum -y install libxml2
3、configure: error: BZ2 libraries not found
解决办法:
yum -y install bzip2-devel glib2-devel
前三种感觉是常识性问题,各位如果经常安装源码包的话这种错误解决起来应该很easy的。
4、安装Reusable-Cluster-Components-glue--glue-1.0.9
./.libs/libplumb.so: undefined reference to `uuid_parse’
./.libs/libplumb.so: undefined reference to `uuid_generate’
./.libs/libplumb.so: undefined reference to `uuid_copy’
./.libs/libplumb.so: undefined reference to `uuid_is_null’
./.libs/libplumb.so: undefined reference to `uuid_unparse’
./.libs/libplumb.so: undefined reference to `uuid_clear’
./.libs/libplumb.so: undefined reference to `uuid_compare’
collect2: ld returned 1 exit status
gmake[2]: *** [ipctest] Error 1
gmake[2]: Leaving directory `/root/Reusable-Cluster-Components-glue-1.0.6/lib/clplumbing’
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/root/Reusable-Cluster-Components-glue-1.0.6/lib’
make: *** [all-recursive] Error 1
解决办法:
  ./configure --prefix=$PREFIX  --with-daemon-user=${CLUSTER_USER} --with-daemon-group=${CLUSTER_GROUP} --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
各位在./configure的时候指定一下LIBS,如果是32位系统的话改成LIBS='/lib/libuuid.so.1'。下面ClusterLabs-resource Heartbeat在./configure的时候都指定一下,要不然继续报错。
5、安装Heartbeat-3-0-7
uuid_parse.c:250: error: expected ‘;’, ‘,’ or ‘)’ before ‘uu’
uuid_parse.c:469: error: expected ‘)’ before ‘out’
uuid_parse.c:484: error: expected ‘)’ before ‘out’
uuid_parse.c:512: error: expected ‘)’ before ‘out’
gmake[1]: *** [uuid_parse.lo] Error 1
gmake[1]: Leaving directory `/usr/src/Heartbeat-3-0-7e3a82377fa8/replace'
make: *** [all-recursive] Error 1
解决办法:
# ./configure --prefix=$PREFIX --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
gmake[1]: --xinclude: Command not found
gmake[1]: *** [heartbeat.8] Error 127
gmake[1]: Leaving directory `/usr/src/Heartbeat-3-0-7e3a82377fa8/doc'
make: *** [all-recursive] Error 1
解决办法:
# yum -y install libxslt-devel

2012年11月2日 星期五

Vdspam反垃圾邮件问题收集(转)

以下没有标记 ID 的是翻译Dspam官方的FAQ,因为本人的英文水平有限,不对之处还请指出
1、
Q: 什么是DSPAM?为什么我要使用它?
A: DSPAM是一个智能的自适应学习什么是垃圾邮件垃的过滤器,而不是根据每个用户的个人电子邮件的行为。它的目的是为全系统的过滤和第三方一体化如果您正在寻找一个可扩展、快速、准确的垃圾邮件过滤器,并且能够自适应学习,您应该使用DSPAM。虽然这是一个垃圾邮件过滤器的设计,DSPAM表现出极大的能力。
2、
Q: 什么样的MTA可以和DSPAM工作?
A: DSPAM可以与任何的MTA (Mail Transfer Agent)Sendmail, Postfix, Exim, Courier, Communigate Pro, and QMail 工作
3、
Q: 需要多长时间开始过滤垃圾邮件?
A: 从一个完全空白库开始,DSPAM的头几天到一个星期左右,普遍攀升至约95-98 %的准确度,取决于您收到多少邮件。
4、
Q: DSPAM和SpamAssassin不同之处 ?
A: 双方的共同目标是消灭垃圾邮件。

SpamAssassin 确实使用匹配规则来标识可能是垃圾邮件的邮件,但它采用了一种概率统计的、基于分数的方法来对消息分类,而没有采用二进制方法。它没有寻求创建那些将消息标识为“一定是垃圾邮件”或“一定不是垃圾邮件”的规则,而是使用利用概率来推断给定的消息是垃圾邮件的可能性的规则。

DSPAM的基础是相信机器学习(基本人工智能)可以本身解决垃圾邮件问题,而不需要人为维持的规则,不准确的黑名单或任何hodge-podge 的解决方案。DSPAM的一个中央垃圾邮件检测功能集成了先进的的统计分析。这导致了各级的准确性高达10倍,除了极少数误报。DSPAM细分每封电子邮件的部分,分析了历史数据的每个组件,并确定了特征来判断一封电子邮件通过。虽然DSPAM支持许多pre-filters, post-filters和其他层面的分析,其核心功能完全在于在自适应学习和语言分析。仅此一点就已经产生了各级精度最高达到99.991 % 。
5、
Q: 收到的垃圾邮件该怎么办?
A: DSPAM的目的是'学习'您会收到的垃圾邮件的基础上(和或不是),所以当您收到垃圾邮件,您可以在extmail的web界面提交,DSPAM将自动进行分析和学习。另外,用户可以通过DSPAM的WEB界面提交,这是一个极好的途径 ,为确保DSPAM不会过时,需继续学习新技巧的垃圾邮件。
6、
Q: 什么是DSPAM隔离区?
A: 每个用户都有一个隔离区,拥有DSPAM认为是垃圾邮件的信息,而不是简单地删除这些邮件,隔离区使用户能够识别false positive和不定期重新学习是误判的电子邮件 。 这是一个非常重要的步骤在学习过程中 ,据了解 , 没有垃圾邮件过滤器100 %的准确,因此,重要的是能够了解自己的错误。 DSPAM的隔离使它比其他一些解决办法更容易管理的垃圾邮件。
7、
Q: DSPAM支持白名单吗?
A: DSPAM支持白名单功能 ,DSPAM的白名单是一个自动功能的贝叶斯过滤机制。 是训练DSPAM建立一个内部的白名单。可自动识别谁最绝对不会发送垃圾邮件。
8、
Q: DSPAM支持病毒过滤吗?
A: DSPAM本身不过滤病毒,需要调用Clamav来进行病毒过滤。
以下是收集社区一些兄弟的解决方法
1、
Q:mini_httpd 在这当中起何作用,是替代 apache 吗?
A: ID:liushaobo   是的,这样比较方便,省去大家配置时在权限方面的不少麻烦;当然你要是一定要用apache也可以;
2、
Q:DSPAM有没有类似spamlocker的那样的开关?也就是说假如我使用有什么问题的话,通过修改哪几个配置就可以停用DSPAM
A: ID:liushaobo   把在main.cf 和master.cf 里做的配置 注释就可以了,再把相关的 DSPAM 服务停止,你做之前可以先把要改的文件备份一下,
3、
Q:Trust 的这几个账户是什么意思 是连接数据库的账户还是什么?
A: ID:hondasky   如果没有上面的账户,其它用户将没有权限操作 邮件存储目录的话就会报这个错误
Apr 24 11:02:19 mail dspam[8365]: Option --user requires special privileges when user does not match current user, e.g.. root or Trusted User
4、
Q: 怎么判断DSPAM 就在工作了呢?
A: ID:liushaobo  如果dspam工作正常,邮件的信头会出现以下标识,
X-DSPAM-Result: Spam
X-DSPAM-Processed: Fri Apr 3 10:40:02 2009
X-DSPAM-Confidence: 0.8222
X-DSPAM-Probability: 1.0000
X-DSPAM-Signature: 49d57702286051336712104
X-DSPAM-Factors: 15,
5、
Q:dspam-web里有如下错误提示:
An Error Has Occured
The following error occured while trying to process your request:
No historical data is available.
A: ID:liushaobo   用户的对dspam 的 data目录的访问权限不够或邮件收发没有经过dspam
6、
Q:举报功能 好像不起作用哦 我把一份邮件举报为垃圾邮件下次他会收到正常收件箱里去哦 是怎么会事?
A: ID:liushaobo   Dspam默认要学习五次,才会把邮件识别为垃圾邮件
7、
Q:Preference "spamAction=tag" //曾经在其他文档中看到过此参数注释掉,否则不能更改message handling,不太理解其含义,个人认为应该是设置Preference "spamSubject=**SPAM**"信件标题无法正常加载**SPAM**;
A: ID:liushaobo   "spamAction= " 有三种动作,一个隔离、二是加标记tag、三是投递 deliver
8、
Q: 若训练垃圾邮件的时候,出现以下错误:
Signature retrieval for '49f1790399401343511188' failed
Unable to find a valid signature. Aborting.
process_message returned error -5. dropping message.
A: ID:wendyzh    MySQLUIDInSignature on //此项一定要打开

9、
Q: DSPAM举报功能 好像不起作用哦  我把一份邮件举报为垃圾邮件下次他会收到正常收件箱里去哦 是怎么会事? MAILDROP 我已经配置好了
A: ID:liushaobo   DSPAM默认要学习五次,才会识别,这是为了防止误判,可以通过修改 Feature tb=x   参数来改变次数,x 表示数字;

10、
Q:我要自己再训练如何操作呢?
A: ID:hzqbbc   在webmail点“这是垃圾邮件”、“这不是垃圾邮件”。(前提是spam_report.pl里指定的dspamc路径正确)或在dspam-web 都可以直接训练dspam的。
11、
Q: dspam-webui 中出现很多类型为resend的,这算什么呢?
A: ID:xueron   resend的出现是因为同一封邮件有多个收件人,但是dspam会分别为两个人扫描,因为可能启动用户级过滤的话,两个收件人的判断结果可能不一样。这个时候,就会出现resend的标记,因为邮件的msgid是一样的。
12、
Q:  内网邮件别名无法发送,全部收到退信说user unkown,bcc 时不会监控发出的邮件
A: ID:liushaobo   修改 main.cf 文件的 #receive_override_options = no_address_mappings
修改master.cf 文件中的 -o receive_override_options=no_address_mappings,no_unknown_recipient_checks,no_header_body_checks
13、
Q:  每封邮件,不管正常或者是垃圾邮件用都有!DSPAM:1,49179586289971925617086!  的标识,现在想去掉。在mysql做了把用户的signature 置空也不行,在dspam.conf设置把相关项关掉也没有成功。
A: ID:zhanghuiwo   Preference "signatureLocation=message"  改为headers
14、
Q: dspam-web 不能生成图形
A: ID:liushaobo  请安装dspam-web 需要用到的Perl图形模块: perl-GD、perl-GDGraph、perl-GDTextUtil、perl-GD-Graph3d
15、
Q: Dspam出现以下日志 :
Jun 23 16:19:28 localhost dspam[4642]: Unable to determine the destination user
A: ID:hzqbbc  dspam没有设定 --user  参数
16、
Q: 请问Dspam的数据库是否一定要安装?hashdb是数据库吗?
A: ID:xueron   hashdb是内建默认的数据库,用户量小的话,用它很好,速度快。用户量多的话,建议使用mysql
17、
Q: 能不能让dspam只学习一次,就能作用于服务器上面的全部用户呢?
A: ID:xueron   当作全局过滤使用,--user 这个地方可以指定为一个固定的虚拟帐号,并且学习的时候都用这个虚拟帐号学习。
18、
Q: 如何导出我用dspam训练好的数据库?
A: ID:liushaobo   导出mysqldspam库就可以了,如果还要history的话,把 dspam  的data目录也备份
19、
Q: Dspam工作正常的情况下,Internet 邮件头没有发现类似X-DSPAM-*的标记
A: ID:liushaobo   如果按照《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》的设置,因为Dspam对本地网络不过滤,最好从Internet发一封信测试;
20、
Q: 《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》这篇文章的10024、10025、10028这三个端口的作用是什么?
A: ID:hzqbbc     ctfilter(10028) dspam ==> 10024 amavisd ==> 10025 (smtpd)
21、
Q: 《Dspam-Amavisd-SpamAssassin-Clamav for EMOS》这篇文章,复制 dspam.pm 模块,提示找不到/usr/lib/perl5/vendor_perl/5.8.5/Mail/SpamAssassin/Plugin路径。
A: ID:liushaobo   EMOS里SA的Plugin路径和你自己的SA的Plugin路径不一样;要自己找一下路径了;或者用EMOS里面的rpm包;
22、
Q: 一个用户发同一封信到a<at>domain和b<at>domain,dspam 给出2种不同的判断结果,<at>domain把信当成是(X-DSPAM-Result: spam)垃圾邮件,b<at>domain把信当成(X-DSPAM-Result: Innocent)正常邮件。
A: ID:xueron   在dspam.conf中新增IgnoreHeader To参数,忽略邮件的一些标题。
23、
Q: Dspam 源代码编译后,无法生成 libmysql_drv.so 文件
A: ID:liushaobo   dspam的drv分两种,一是静态库,二是动态库,官方的dspam的drv是动态加载的,编译时指定两个mysql_drv 。用逗号隔开。动态库可以在dspam.conf中指定  mysql_drv,pgsql_drv,sqlite_drv,sqlite3_drv,hash_drv,
24、
Q: Dspam的history里面还能保留更多的记录吗?
A: ID:zhaodongxi   修改configure.pl文件的$CONFIG{'HISTORY_SIZE'} = number

2012年10月25日 星期四

修改mysql密码

1.使用mysqladmin修改mysql密码
C:\>mysqladmin -udbuser -p password newpass
Enter password: oldpass
当然用此命令的前提是你把mysql加入了环境变量,如果没有加入环境变量的话那只能在命令行下cd到mysqladmin所在的目录下与此那个次命令了!
-----------------------------------------
2.重置root密码
方法一:
在my.ini的[mysqld]字段加入:
skip-grant-tables
重启mysql服务,这时的mysql不需要密码即可登录数据库
然后进入mysql
mysql>use mysql;
mysql>update user set password=password('新密码') WHERE User='root';
mysql>flush privileges;
运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。
修改mysql密码方法二:
不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码
停止mysql服务
打开命令行窗口,在bin目录下使用mysqld-nt.exe启动,即在命令行窗口执行: mysqld-nt --skip-grant-tables
然后另外打开一个命令行窗口,登录mysql,此时无需输入mysql密码即可进入。
按以上方法修改好密码后,关闭命令行运行mysql的那个窗口,此时即关闭了mysql,如果发现mysql仍在运行的话可以结束掉对应进程来关闭。
启动mysql服务

在CSS中 ID与Class的区别

id与class
class的主要功能,用来对对象的样式设置,id除了可以定义样式之外,还可以成为网站交互行为一个特使标识。
id名字在每个页面中只能允许出现一次。
何时使用id:
1.样式只使用一次
2.用于对页面的区域进行标识
何时使用class
1.同一页面中出现多次
2.通用及经常使用的元素
3.class高级使用技巧-同事使用多个类
<p class="content red newsblock">hello</p>

div与span
div对象的默认显示模式display:block; span对象默认显示模式display:inline;
div对象的任务是呈现一个块状内容; span对行内元素进行结构编码以方便样式设计

rpc.statd端口及进程的处理

最近linux系统安全加固,一些漏洞修复经验和大家分享一下!
RPC Statd 服务  RPC类    危险级别:::高 
发现主机##########################################################
漏洞编号
漏洞分类RPC类
危险级别  高 
影响平台AIX IRIX DG/UX HPUX: 9.x, HPUX: 10.x NEC EWS-UX/V,NEC UP-UX/V,NEC UX/4800, NeXT STEP NCR  linux
详细描述:
  远程rpc.lockd 文件可能提供假的信息给rpc.statd 文件,使文件可以被移动或新建。RPC statd 与RPC lockd 一起工作维护状态信息,来提供跨NKS文件锁定的崩溃及恢
复功能。因为statd不验证从远程lockd 收到的信息,所以攻击者可以发送RPC去建立或取消系统上任何文件。
修补建议 建议您采取以下措施进行修补以降低威胁: 请用户联系供应商或他们的网站,索取补丁或参考供应商的指示。选定以下的操作系统:
1.Hewlett-Packard: 安装补丁前,请阅读Security Advisory HPSBUX9607-032 "Security Vulnerability in rpc.pcnfsd & rpc.statd." 输入patch Ids 作为搜索
字串及点击Search Technical Knowledge Base 链接,就可以看到这篇文章。The HP Patch Database 不需要付费口令。网址:http://us-
support.external.hp.com/wpsl/bin/doc.pl/.
登录后,到Individual Patches (Patch Database) 的库,搜索符合你漏洞版本的HP-UX 扑丁。
2.IBM 的补丁网址:http://aix.boulder.ibm.com/aix.us/aixfixes.
输入APAR 号,就可以得到有关资料及补丁。
3.Sony: NEWS-OS Patch Ids: 0124, 6063, 6176, 及6207.
4.NEWS-OS 补丁的网址:ftp://ftp1.sony.co.jp/pub/patch/news-os/un-official.
5.DEC (Digital Equipment Corporation): Ultrix ECO ID#: SSRT03901;OSF/1 ECO ID#: SSRT038301 网址 :
http://www.service.digital.com/html/patch_service.html
6.SunOS 补丁的网址:http://sunsolve.sun.com/sunsolve/pubpatches/patches.html.
7.Silicon Graphics:之前的版本升级到IRIX 5.3;之后的版本使用SGI Security Advisory描述的修复方法。安装补丁前,请阅读SGI Security Advisory 19971201-01-
P: "Buffer Overrun Vulnerability in statd(1M) Program" 网址:ftp://sgigate.sgi.com/security/19971201-01-P1391.SGI
补丁的网址:http://www.sgi.com/Support/security/security.html.
以前的版本一定要升级或采用“安全建议”给出的暂时修复方法,专为IRIX 5.3 平台的补丁在网址:ftp://sgigate.sgi.com/patches/5.3/patch1391.tar
8.linux平台: 联系系统厂商获取最新版本。 www.2cto.com
#########################################################################
我的修复之旅!
如果你的系统没有使用NFS服务就关掉rpc.statd服务,下面说一下,RPC的作用和如何关闭!
CentOS使用核心级的支持和守护进程的组合来提供NFS文件共享.NFS依靠远程过程调用(RPC)在客户端和服务器端路由请求。而在Linux下RPC服务由portmap服务控制。为了能够正常
使用NFS,还需要一些相关的服务来协同工作:
nfs:启动相应RPC服务进程来服务对于NFS文件系统的请求。
nfslock:一个可选的服务,用于启动相应的RPC进程,允许NFS客户端在服务器上对文件加锁。
portmap:Linux的RPC服务,它响应RPC服务的请求和与请求的RPC服务建立连接。
下面的RPC后台进程是为NFS提供服务的
rpc.mountd:这个进程接受来自NFS客户端的加载请求和验证请求的文件系统正在被输出。这个进程由NFS服务自动启动,不需要用户的配置。
rpc.nfsd:这个进程是NFS服务器.它和Linux核心一起工作来满足NFS客户端的动态需求,例如提供为每个NFS客户端的每次请求服务器线程。这个进程对应于nfs服务。
rpc.lockd:一个可选的进程,它允许NFS客户端在服务器上对文件加锁。这个进程对应于nfslock服务。
rpc.statd:这个进程实现了网络状态监控(NSM)RPC协议,通知NFS客户端什么时候一个NFS服务器非正常重启动。这个进程被nfslock服务自动启动。不需要用户的配置。
rpc.rquotad:这个进程对于远程用户提供用户配额信息。这个进程被nfs服务自动启动,不需要用户的配置。
所以说,要想关掉CentOS的rpc.statd服务,我们只需要执行下面的命令就能搞定
rpcgssd, rpcidmapd, rpcsvcgssd
用于NFS v4。除非你需要或使用NFS v4,否则关闭它。
具体操作如下:
1停服务
service nfslock stop
service portmap stop
/etc/init.d/rpcgssd stop
/etc/init.d/rpcidmapd stop
/etc/init.d/rpcsvcgssd stop
2禁止开机启动
chkconfig nfslock off
chkconfig portmap off
chkconfig  rpcgssd off
chkconfig  rpcidmapd off
chkconfig  rpcsvcgssd off
3查看状态
/etc/init.d/nfslock status
/etc/init.d/portmap status
/etc/init.d/rpcgssd status
/etc/init.d/rpcidmapd status
/etc/init.d/rpcsvcgssd status

2012年10月19日 星期五

不同网段之间的nfs以及rsync

一共3台linux,如:HostA,HostB,HostC,其中,a与C不能互访,且三台主机都有各自的网段但都是10开头的网段

A:10.2.3.10

B:10.29.33.2

C:10.4.3.90

B可以访问A和C,所以试想将a和c主机通过b主机来进行同步,将要同步的目录使用nfs同时挂载到B主机上,而后再用rsync来进行同步

挂载时遇到问题时nfs不能挂载

/doc (rw,sync,no_root_squash,no_all_squash,insecure)
使用这样配置,任何主机都可挂载只适用临时的挂载,工作完成后即时的去掉共享

rsync的使用看前几篇

2012年10月18日 星期四

rsync 工具介绍及配置

rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:

  可以镜像保存整个目录树和文件系统。

  可以很容易做到保持原来文件的权限、时间、软硬链接等等。

  无须特殊权限即可安装。

  优化的流程,文件传输效率高。

  可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

  支持匿名传输,以方便进行网站镜象。

  软件下载

  rsync的主页地址为:http://rsync.samba.org/

rsync配置文件配置格式

name = value

rsync配置参数:

[Global parameters]

motd file:  指定一个关于网站的信息和法律公告信息的文件

pid file:  rsync daemon的进程IP文件

port:  rsync daemon 的缺省端口号:873,当rsync运行在xinetd模式下则端口被忽略

address: rsync daemon监听的IP,当rsync运行在xinetd模式下则IP被忽略

socket:rsync daemon的socket文件

[module parameters]

comment:模块的描述性说明

path:指定同步的文件目录

use chroot:如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目  录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。

numeric ids

munge symlinks

charset

max connections:指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。

log file:指定rsync的日志文件

syslog facility:是否使用系统日志工具。可以有如下选项:

auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0, local1, local2, local3, local4, local5, local6 and local7. The default is daemon.

max verbosity

lock file:指定支持max connections参数的锁文件

read only:该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。

write only:该选项设定是否允许客户下载文件。如果为true那么任何下载请求都会失败,如果为false并且服务器目录读写权限允许那么下载是允许的。默认值为true。

list:该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。

uid:指定传送数据的帐号,仅仅用于指定模块。默认是:-2 ,即Nobody 帐号.

gid:指定传送数据的帐号组,仅仅用于指定模块。默认是:-2 ,即Nobody 组.

fake super

filter

exclude:用来指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,一个模块只能指定一个exclude选项。但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exclude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。

include:用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用--include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。

exclude from:指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义。

include from:指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。

incoming chmod:

outgoing chmod

auth users:设置连接指定模块的授权用户名。

secrets file:密码认证文件,格式为:username:password

strict modes:该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。

hosts allow:该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式:
单个IP地址,例如:192.167.1.1整个网段,例如:192.168.1.0/24,也可以是192.168.1.0/255.255.255.0多个IP或网段需要用空格隔开,“*”则表示所有,默认是允许所有主机连接。

hosts deny:指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。

ignore errors:指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。

ignore nonreadable:指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。

transfer logging:使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。

log format:通过该选项用户在使用transfer logging可以自己定制日志文件的字段。

#The single-character escapes that are understood are as follows:

#%a the remote IP address

#%b the number of bytes actually transferred

#%B the permission bits of the file (e.g. rwxrwxrwt)

#%c the total size of the block checksums received for the basis file (only when sending)

#%f the filename (long form on sender; no trailing "/")

#%G the gid of the file (decimal) or "DEFAULT"

#%h the remote host name

#%i an itemized list of what is being updated

#%l the length of the file in bytes

#%L the string " -> SYMLINK", " => HARDLINK", or "" (where SYMLINK or HARDLINK is a filename)

#%m the module name

#%M the last-modified time of the file

#%n the filename (short form; trailing "/" on dir)

#%o the operation, which is "send", "recv", or "del." (the latter includes the trailing period)

#%p the process ID of this rsync session

#%P the module path

#%t the current date time

#%u the authenticated username or an empty string

#%U the uid of the file (decimal)

#For a list of what the characters mean that are output by "%i", see the --itemize-changes option in the rsync manpage.

timeout:该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。

refuse options:通过该选项可以定义一些不允许客户对该模块使用的命令参数列表。这里必须使用命令全名,而不能是简称。但发生拒绝某个命令的情况时服务器将报告错误信息然后退出。如果要防止使用压缩,应该是:"dont compress = *"。

dont compress:指定那些不进行压缩处理再传输的文件,默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

以上为rsync 官方的关于rsync配置文件中的所有配置选项。中文是我自己翻译解释的,有些选项还没翻译解释,主要是因为还没有完全理解透彻官方的英文解释。

rsync的使用方法:

Local:  rsync [OPTION...] SRC... [DEST]

Access via remote shell:

  Pull(拉): rsync [OPTION...] [USER@]HOST:SRC... [DEST]

  Push(推): rsync [OPTION...] SRC... [USER@]HOST:DEST

Access via rsync daemon:

  Pull(拉): rsync [OPTION...] [USER@]HOST::SRC... [DEST]

        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

  Push(推): rsync [OPTION...] SRC... [USER@]HOST::DEST

        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

“拉”复制是指从远程主机复制文件到本地主机

“推”复制是指从本地主机复制文件到远程主机

相关命令参数:

rsync参数的具体解释如下:

官方的英文解释:http://rsync.samba.org/ftp/rsync/rsync.html

-v, --verbose 详细模式输出

-q, --quiet 精简输出模式

-c, --checksum 打开校验开关,强制对文件传输进行校验

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r, --recursive 对子目录以递归模式处理

-R, --relative 使用相对路径信息

-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。

--backup-dir 将备份文件(如~filename)存放在在目录下。

-suffix=SUFFIX 定义备份文件前缀

-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

-l, --links 保留软链结

-L, --copy-links 想对待常规文件一样处理软链结

--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结

--safe-links 忽略指向SRC路径目录树以外的链结

-H, --hard-links 保留硬链结     -p, --perms 保持文件权限

-o, --owner 保持文件属主信息     -g, --group 保持文件属组信息

-D, --devices 保持设备文件信息    -t, --times 保持文件时间信息

-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间

-n, --dry-run现实哪些文件将被传输

-W, --whole-file 拷贝文件,不进行增量检测

-x, --one-file-system 不要跨越文件系统边界

-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节

-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步

--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息

-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件

--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件

--delete 删除那些DST中SRC没有的文件

--delete-excluded 同样删除接收端那些被该选项指定排除的文件

--delete-after 传输结束以后再删除

--ignore-errors 即使出现IO错误也进行删除

--max-delete=NUM 最多删除NUM个文件

--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输

--force 强制删除目录,即使不为空

--numeric-ids 不将数字的用户和组ID匹配为用户名和组名

--timeout=TIME IP超时时间,单位为秒

-I, --ignore-times 不跳过那些有同样的时间和长度的文件

--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间

--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0

-T --temp-dir=DIR 在DIR中创建临时文件

--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份

-P 等同于 --partial

--progress 显示备份过程

-z, --compress 对备份的文件在传输时进行压缩处理

--exclude=PATTERN 指定排除不需要传输的文件模式

--include=PATTERN 指定不排除而需要传输的文件模式

--exclude-from=FILE 排除FILE中指定模式的文件

--include-from=FILE 不排除FILE指定模式匹配的文件

--version 打印版本信息

--address 绑定到特定的地址

--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件

--port=PORT 指定其他的rsync服务端口

--blocking-io 对远程shell使用阻塞IO

-stats 给出某些文件的传输状态

--progress 在传输时现实传输过程

--log-format=formAT 指定日志文件格式

--password-file=FILE 从FILE中得到密码

--bwlimit=KBPS 限制I/O带宽,KBytes per second      -h, --help 显示帮助信息

rsync实例配置

系统环境:RHEL5.5

软件版本:rsync-3.0.8.tar.gz

安装说明:需在两台server上都安装

rsync 安装配置参数:

1.先建立个同步数据的帐号

groupadd rsync

useradd -g rsync -s /sbin/nologin -d /dev/null rsync

passwd rsync

2.配置

./configure --prefix=/usr/local/rsync --with-rsyncd-conf=/usr/local/rsync/etc --with-nobody-group=rsync

make && make install

3.建立rsync的配置文件rsyncd.conf

因为configure的时候指定了config的文件路径在/usr/local/rsync/etc 下面,因此需要在此目录下建立配置文件

cd /usr/local/rsync

mkdir etc

cd etc

touch rsyncd.conf

配置文件的配置项根据实际需要配置,我的配置文件如下:

  1. motd file = /usr/local/rsync/etc/rsyncd.motd /*当你登录到服务器上显示的一些信息*/
  2. pid file = /usr/local/rsync/pid/rsyncd.pid
  3. port = 873
  4. address = 192.168.200.133
  5. socket options = /usr/local/rsync/socket/rsyncd.socket
  6. [soft]  /*定义要同步的模块,自己随便定义*/
  7. comment = this is a software reposity /*模块的说明信息*/
  8. path = /soft /*模块的路径*/
  9. use chroot = false
  10. #numeric ids
  11. #munge symlinks
  12. #charset
  13. max connections = 0 /*最大连接数,0表示无限制*/
  14. log file = /usr/local/rsync/log/rsyncd.log /*数据同步日志*/
  15. syslog facility = syslog /*系统日志工具,也可以不定义*/
  16. #max verbosity
  17. lock file = /usr/local/rsync/lock/rsyncd.lock /*锁文件,与最大连接数配合,若超过最大连接数,则锁定相应的模块*/
  18. read only = true
  19. write only = false
  20. list = false
  21. uid = rsync /*同步用的帐号,此账户对模块要有相应的权限*/
  22. gid = rsync /*同步用的帐号组*/
  23. #fake super
  24. #filter
  25. #exclude
  26. #include
  27. #exclude from
  28. #include from
  29. #incoming chmod
  30. #outgoing chmod
  31. auth users = rsync /*授权的帐号,对要同步的模块有相应的权限*/
  32. secrets file = /usr/local/rsync/secrets/rsyncd.secrets /*同步帐号的密码文件*/
  33. strict modes = true /*使用限制模式*/
  34. #hosts allow
  35. #hosts deny
  36. ignore errors = true
  37. ignore nonreadable = false
  38. transfer logging = true /*对传输数据进行日志记录*/
  39. log format = %a-%b-%f-%m-%o-%P-%t-%u /*日志格式*/
  40. timeout = 600 /*传输数据超时时间*/
  41. #refuse options
  42. dont compress = true
  43. #pre-xfer exec
  44. #post-xfer exec

rsync服务器启动

--daemon 是让rsync 以服务器模式运行

/usr/local/rsync/bin --daemon --config=/usr/local/rsync/etc/rsyncd.conf

rsync服务器和防火墙

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT

根据以上的配置文件:/usr/local/rsync目录下应该有如下相关目录:

这是top图上服务器上rsync 配置

至于top图上的客户端rsync,因为我做的单项同步,也就从服务器上复制到客户端上,因此客户端只需要安装rsync,不需要配置。

在客户端上执行如下:

我将服务器端的soft模块复制到本地客户端的/soft目录下

输入同步帐号rsync的密码,就开始同步:

sent 130661 bytes  received 250703289 bytes  2099028.87 bytes/sec

total size is 445934450  speedup is 1.78

有两个文件因为没有权限所以提示“permission denied”,

总之,就是大家在设置的时候注意要同步的目录的权限设置!

主要参数范例:

--delete
假如server端有:a , b , c ,三个文件,
client端有:a , b , c , d ,四个文件,使用如下命令:

./rsync -avz --progress --delete rsync@192.168.200.133::soft /soft

将删除client 中的d 文件,其他保持不变。

恢复数据,从client 恢复数据到server端

1.需要在服务器关闭 read only
read only = false ,即开启上传功能

./rsync -avz --progress /soft rsync@192.168.200.133::soft

把client 端/soft 目录中的数据上传到server 192.168.200.133 中的 soft 模块

根据我的配置,服务器上的日志会记录同步的每一个数据,目录,很详细的日志,不过越详细的日志就越大!

大家自己试试看!!

2012年10月17日 星期三

如何做两个远程数据镜像备份?

1…

数据源放在ServerSource下的/data
备份库放在ServerTarget下的/data
ServerSource和ServerTarget都连接到ServerJump,为了安全管理需要,ServerSource和ServerTarget无法直接连通,但ServerSource和ServerTarget都可以和ServerJump连通
也就是:
ServerSource        <======> ServerJump
ServerTarget         <======>    ServerJump
ServerSource        <==XX==>     ServerTarget
所以想通过ServerJump来同步ServerSource和ServerTarget。
1.用scp命令(scp ServerSource:/data ServerTarget:data)可以复制,但由于数据量比较大,且大部分为不用更新的数据,这种方式太费时间和带宽。
2.在ServerJump上rsync好像又不能同步两台远程服务器。
3.ServerJump因为只作跳板,所以硬盘很小,无法先将ServerSource先rsync到本机(ServerJump)再rsync到ServerTarget。
不知有没有命令可以在ServerJump上执行并同步ServerSource:/data到ServerTarget:/data?
即像rsync命令: rsync  ServerSource:/data ServerTarget:data,这个命令rsync不支持两个都是remote的,不知道有没有其它命令或者类似的方式来完成?

2…

rsync 命令不能同时使用远端源 和 远端目标,但您可以将一端设置为NFS,则可当成本地端。

3.

或者通过SSH reverse, 将ServerJump的一个端口转发到ServerSource的rsyncd端口,这样您就可以从ServerTarget上直接访问ServerJump的转发端口,直接使用rsync命令。

4…

不好意思可能我没表述十分清楚,因为安全需要,ServerJump不做任何端口转发映射等,也就是说ServerSource自己是不能有任何主动方式连接到ServerTarget上,ServerTarget同理也是自己不能有任何主动方式连接到ServerSource上,两台之间的唯一允许的方式是都只连接到ServerJump为止,所以顶楼这个要求,而且ServerJump也是有十分严格的防火墙规则,基本上所有的端口全部关闭,只有少量明确已知的商品开放,且像nfs这样需要source和target都export给jump且长期mount是绝对不允许的

5….

端口转发建立在中间的ServerJump上,不需要跟ServerTarget有任何关系。
当您的ServerSource使用ServerJump的转发端口的时候,就像使用ServerJump上的本地服务一样。
在安全上考虑,这样的使用模式,跟您用SCP连接两台服务器是完全一样的。

6…

直接地说,比如当从TARGET连接到JUMP,然后通过端口转发连接到SOURCE。
这同 TARGET 直接连接 SOURCE 是完全不同的,从JUMP到SOURCE的转发过程,
是以 JUMP 的身份发起的连接,而不是 SOURCE发起的,而且通道是建立在SSH上的,
而即使SCP同样也是SSH复制文件。

7…

sorry, ServerJump上端口转发及不同段之间的通过网卡直接路由都不被允许,没办法才有顶楼的苛刻要求

8….

       比如说我的机器是A,中间服务器为B,目标服务器是C<br>
从A可以ssh到B,从B可以ssh到C,但是A不能直接ssh到C<br>
现在展示利用ssh通道技术从A直接传输文件到C<br>
1. ssh -L1234:C:22 userid@B<br>
input B's password<br>
(1234是本机A的空闲端口,该指令需要A机器上的root用户权限,实际上是在本机1234端口建立了一个通道)<br>
2. 打开一个新的console,键入:<br>
scp -P1234 filename userid@localhost:<br>
input C's password

ssh转发(实现代理,跳板,加密隧道 ...)

记得第一次做跳板还是高中时代,是台韩国的win2k,装的是Snake的socks代理.
当时还相当紧张,传了一堆工具上去删日志,已经是上世纪末的事了,呵呵.

言归正传,
选择ssh的4个理由:

1、使用方便,功能强大,加密强度高,运行稳定.

2、ssh几乎是*nix系统的标配,不需额外安装.现在的想找台没跑sshd的*nix主机也是件难事.

3、防火墙基本不会对ssh的连接下黑手

4、跨平台,linux BSD UNIX m$ 等不同平台上的ssh都能相互连接.

ssh实现转发,只要用到以下两条命令:

ssh -CfNg -L 6300:127.0.0.1:1080 anyside@192.168.1.119
ssh -CfNg -R 1080:127.0.0.1:6300 anyside@192.168.1.119

不论是做跳板,还是加密隧道,还是加密其他的网络连接也都是这两条命令。
视具体情况而定,有时只要用到其中一条,有时两条都要用到。

条命解释:
-CfNg (照抄即可)
C表示压缩数据传输
f表示后台用户验证,这个选项很有用,没有shell的不可登陆账号也能使用.
N表示不执行脚本或命令
g表示允许远程主机连接转发端口

-L 本地转发

ssh -CfNg -L 6300:127.0.0.1:1080 anyside@192.168.1.119
表示:
1、本机(运行这条命令的主机)和远程主机192.168.1.119建立加密隧道,anyside是远程主机192.168.1.119上的账号。
2、在本机上打开6300端口.用 netstat -an|grep 6300 可看到 127.0.0.1:6300 或 127.0.0.1.6300
3、把本机的6300端口映通过加密隧道射到192.168.1.119的1080端口.

简单说,本机的6300端口就是远程主机192.168.1.119的1080端口。

-R 远程转发

ssh -CfNg -R 1080:127.0.0.1:6300 anyside@192.168.1.119
1、本机(运行这条命令的主机)和远程主机192.168.1.119建立加密隧道,anyside是远程主机192.168.1.119上的账号。
2、在远程主机192.168.1.119上打开1080端口.
3、把本机的6300端口映通过加密隧道射到192.168.1.119的1080端口.

本机的6300端口可直接看作远程主机192.168.1.119的1080端口。

举个实用的例子:
有A、B、C 3台服务器,A,C有公网IP,B是某IDC的服务器无公网IP。
A希望同过B连接C的80端口,A<=>B<=>C

在B上执行如下命令即可:
host-B$ ssh -CfNg -L 6300:127.0.0.1:80 userc@C
host-B$ ssh -CfNg -R 80:127.0.0.1:6300 usera@A

服务器A和服务器C之间,利用跳板服务器B建立了加密隧道。

在A上连接127.0.0.1:80,就等同C上的80端口

需要注意的是:
服务器B上的6300端口的数据没有加密,可被监听,
例:
#tcpdump -s 0 -i lo port 6300

_uacct = "UA-337305-1"; urchinTracker();

2012年10月15日 星期一

最新jdk用wget下载方式

wget --no-cookie --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" http://download.oracle.com/otn-pub/java/jdk/6u35-b10/jdk-6u35-linux-i586.bin

2012年10月10日 星期三

linux 服务简要说明

NetworkManager 为了自动连接网络的服务    x    对于服务器而言没用  
acpid 电源的on/off等的监视/管理   ■ x 理由同上
anacron 一种计划任务管理 ■ ○
apmd 电源管理 ■ ○
atd 在指定时间执行命令 ■ x 如果用crond,就可以不用它
auditd 检查demo ■ △ 如果用Seliux,需要开启它
autofs 文件系统自动加载卸载功能 ■ △ 只在需要的时候使用,可以停止
avahi-daemon 本地网络服务查找 ■ x 对服务器而言,不要
avahi-dnsconfd Avahi DNS demo x 理由同上
bluetooth 蓝牙无线通信 ■ x 对服务器而言,不要
clvmd Cluster LVM ■ ○ 对于非集群的服务器,关掉
cman ■ ○ 对于非集群的服务器,关掉
conman the console Manager x 不用那玩意,关掉
cpuspeed 调节cpu速度 ■ x 视情况而言吧,建议关掉
crond 与计划任务相当的功能 ■ ○ 强烈建议开启
cups 印刷demo ■ x 不用,关掉它
dnsmasq dns cache ■ x 不用,关掉它
dund 蓝牙设备相关 ■ x 不用,关掉它
firstboot 系统安装后初期设定工具 ■ x 不用,关掉它
gfs global file system ■ ○ 只有选择集群,集群存储是才有
gfs2 ■ ○ 同上
gpm console环境下的鼠标支持 ■ ○ 建议开启
haldaemon 硬件信息收集服务 ■ ○ 建议开启
hidd 蓝牙设备相关 ■ x 不用,关掉它
httpd apache demo ■ x 我不用,所以关掉它
ibmasm ibm硬件管理 ■ x 不用,关掉它
ip6tables ipv6防火墙 ■ △ 视情况,我不用它
ipmi Intelligent Platform Management Interface ■ △ 视情况
iptables ipv4防火墙 ■ △ 视情况,我不用它
ipvsadm 集群负荷分散相关 ■ ○ 我要用它
irda 红外线通信 ■ x 不用,关掉它
irqbalance cpu负载均衡 ■ ○ 多核cpu以上需要
kdump 内核崩溃时转储内存运行参数用的 ■ x 不用,关掉它
kudzu 硬件变动检测 ■ x 不用,关掉它
lm_sensors cpu温度检测工具(?) ■ △ 视情况,我不用它
luci cluster服务相关 ■ ○ 非集群情况下没有吧
lvm2-monitor lvm相关 ■ ○ 非集群情况下没有吧
mcstrans 在开启Selinux下用于检查context的 ■ x 视情况,我不用它
mdmonitor 软Raid管理工具 ■ ○ 视情况,我要用
mdmpd 软Raid管理监视工具 ■ ○ 视情况,我要用
messagebus D-Bus相关 ■ ○ 不用D-Bus情况下,关掉
microcode_ctl ■ x
modclusterd cluster相关 ■ ○ 视情况,我要用
multipathd ■ ○ 视情况,我要用
netconsole ■ x
netfs NFS相关 ■ x
netplugd 网线热插拔监视 ■ x
network ■ ○ 这个服务对服务器来说是必须的吧
nfs NFS Network File System ■ x
nfslock NFS相关 ■ x
nscd name cache,似乎跟DNS相关 ■ x
ntpd Network Time Protocol demo ■ x
oddjobd 与D-Bus相关 ■ x
openais 与Cluster相关,Heartbeat类似 ■ ○ 我要用
pand BlueZ Bluetooth PAN ■ x 蓝牙相关,不要
pcscd PC/SC smart card daemon ■ x
piranha-gui 与cluster相关 ■ ○ 我要用
portmap 使用NFS、NIS时的port map ■ x 如果用NFS时候,需要开启
psacct 负荷检测,输出什么的 ■ x
pulse ?
qdiskd 与cluster相关 ■ ○ 我要用
rdisc 自动检测路由器 ■ x 只有一个路由器是不用
readahead_early ■ ○ 建议
readahead_later ■ ○ 建议
restorecond Selinux关联项目 ■ x 我的Selinux关掉了,所以它也over
rgmanager 与cluster相关 ■ ○ 我要用
ricci 与cluster相关 ■ ○ 我要用
rpcgssd NFS相关 ■ x
rpcidmapd RPC name to UID/GID mapper ■ x NFS相关
rpcsvcgssd NFS相关 ■ x
saslauthd sasl认证服务相关 ■ x
scsi_reserve
sendmail mail demo ■ x
setroubleshoot Selinux相关 ■ x 我的Selinux关掉了,所以它也over
smartd 硬盘自动检测的守护进程 ■ ○
smb Samba ■ x
snmpd ■ ○ 集群之间时间同步大概需要
snmptrapd ■ ○ 集群之间时间同步大概需要
sshd ssh demo ■ ○ 必须的
syslog ■ ○
tog-pegasus ■ ○ 似乎与集群相关
vncserver vncserver x
wdaemon
winbind samba服务器相关 x
wpa_supplicant 无线认证相关 x
xfs x windows相关 ■ x
ypbind Network Information Service 客户端 ■ x
yum-updatesd yum自动升级 ■ x 对服务器来说开着它比较危险

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

天天用着linux,虽说经常配置php环境,可对于linux本身动的很少,这里就把常见的服务记下来,不用的就可以关闭了,节省资源还加速开关机时间。

不要关闭以下服务(除非你有充足的理由):
acpid, haldaemon, messagebus, klogd, network, syslogd
请确定修改的是运行级别 3 和 5。

NetworkManager, NetworkManagerDispatcher
NetworkManager是一个后台服务程序,它构建于HAL之上,提供更专注于网络管理的功能。包括网络接口管理和网络状态查询,支持普通网络、拨号网络和无线网络,很多笔记本用户都需要启用该功能,它让你能够在无线网络和有线网络之间切换。大多数台式机用户应该关闭该服务。另外还提供VPN、 DHCP和DNS等附加功能。

主要用于笔记本的有线网络和无线网络之间的切换,有些 DHCP 用户会用到 . 建议 Disable
<http://www.redhat.com/magazine/003jan05/features/networkmanager/>
<http://blog.csdn.net/absurd/archive/2007/05/11/1605200.aspx>

acpid
ACPI(全称 Advanced Configuration and Power Interface)服务是电源管理接口。建议所有的笔记本用户开启它。一些服务器可能不需要 acpi。支持的通用操作有:“电源开关“,”电池监视“,”笔记本 Lid 开关“,“笔记本显示屏亮度“,“休眠”, “挂机”,等等。
高级电源管理,在 Fedora 7 中默认安装的,如果需要可以安装

anacron, atd, crond
这几个调度程序有很小的差别。 建议开启 cron,如果你的电脑将长时间运行,那就更应该开启它。对于服务器,应该更深入了解以确定应该开启哪个调度程序。大多数情况下,笔记本/台式机应该关闭 atd 和 anacron。注意:一些任务的执行需要 anacron,比如:清理 /tmp 或 /var。
Linux 里面的计划任务,cron 建议打开,其它两项关闭

alsasound
Alsa声卡驱动守护程序。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证明很优秀,于是作者就开始为一般的声卡写 驱动程序。 Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接 口,甚至比OSS优秀。

apmd
一些笔记本和旧的硬件使用 apmd。如果你的电脑支持 acpi,就应该关闭 apmd。如果支持 acpi,那么 apmd 的工作将会由 acpi 来完成。

arptables_jf
为arptables网络的用户控制过滤的守护进程。

arpwatch
记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库 。

atalk
AppleTalk网络守护进程。注意不要在后台运行该程序,该程序的数据结构必须在运行其他进程前先花一定时间初始化。

auditd
审核子系统可以被系统管理员用来监测系统调用和那些符合 CAPP 或其它审核要求的文件系统访问。它的主要内容包括:
· 默认情况下,审核在内核中被禁用。但是,当安装了 auditd 软件后,运行这个软件将会启动审核守护进程(auditd)。
· 当 auditd 运行的时候,审核信息会被发送到一个用户配置日志文件中(默认的文件是 /var/log/audit/audit.log)。如果 auditd 没有运行,审核信息会被发送到 syslog。这是通过默认的设置来把信息放入 /var/log/messages。如果审核子系统没有被启用,没有审核信息会被产生。
· 这些审核信息包括了 SELinux AVC 信息。以前,AVC 信息会被发送到 syslog,但现在会被审核守护进程发送到审核日志文件中。
· 要完全在内核中禁用审核,在启动的时候使用 audit=0 参数。您还需要使用 chkconfig auditd off 2345 来关闭 auditd。您可以在运行时使用 auditctl -e 0 来在内核中关闭审核。
审核守护进程(auditd)从内核的 audit netlink 接口获取审核事件数据。auditd 的配置会不尽相同,如输出文件配置和日志文件磁盘使用参数可以在 /etc/auditd.conf 文件中配置。请注意,如果您设置您的系统来进行 CAPP 风格的审核,您必须设置一个专用的磁盘分区来只供 audit 守护进程使用。这个分区应该挂载在 /var/log/audit。
系统管理员还可以使用 auditctl 工具程序来修改 auditd 守护进程运行时的审核参数、syscall 规则和文件系统的查看。它包括了一个 CAPP 配置样本,您可以把它拷贝到 /etc/audit.rules 来使它起作用。
审核日志数据可以通过 ausearch 工具程序来查看和搜索。
这个记录 kernel 的审计情况,相当于另外的一个 loggin 服务,用命令 auditctl 查看文件的变化情况,普通用户用不上可以关闭

autofs
该服务自动挂载可移动存储器(比如 USB 硬盘)。如果你使用移动介质(比如移动硬盘,U 盘),建议启用这个服务。
自动加裁文件系统,如果你用的移动设备建议打开,不然就关掉咯

avahi-daemon, avahi-dnsconfd
Avahi 是 zeroconf 协议的实现。它可以在没有 DNS 服务的局域网里发现基于 zeroconf 协议的设备和服务。它跟 mDNS 一样。除非你有兼容的设备或使用 zeroconf 协议的服务,否则应该关闭它。
相当于 mDNS 的一个软件,我也不知道干什么用的,建议关闭

bootparamd
引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息。

btseed, bttrack
和 BitTorrent 相关的服务,建议关闭

bluetooth, hcid, hidd, sdpd, dund, pand
蓝牙(Bluetooth)是给无线便携设备使用的(非 wifi, 802.11)。很多笔记本提供蓝牙支持。有蓝牙鼠标,蓝牙耳机和支持蓝牙的手机。很多人都没有蓝牙设备或蓝牙相关的服务,所以应该关闭它。其他蓝牙相关的服务有:hcid 管理所有可见的蓝牙设备,hidd 对输入设备(键盘,鼠标)提供支持, dund 支持通过蓝牙拨号连接网络,pand 允许你通过蓝牙连接以太网。
用于蓝牙设备的 deamon ,没有的可以关闭

capi
仅仅对使用 ISDN 设备的用户有用。大多数用户应该关闭它。
与ISDN相关的服务,一般用户都可以关闭

chargen
使用tcp协议的chargen server,chargen(Character Generator Protocol)是一种网络服务,主要功能是提供类似远程打字的功能。

chargen-udp
使用UDP协议的chargen server。

chargen-dgram

chargen-stream

conman

cpuspeed
该服务可以在运行时动态调节 CPU 的频率来节约能源(省电)。许多笔记本的 CPU 支持该特性,现在,越来越多的台式机也支持这个特性了。如果你的 CPU 是:Petium-M,Centrino,AMD PowerNow, Transmetta,Intel SpeedStep,Athlon-64,Athlon-X2,Intel Core 2 中的一款,就应该开启它。如果你想让你的 CPU 以固定频率运行的话就关闭它。

cupsd, cups-config-daemon, cups-lpd
以打印机相关的服务,有打印机可以打开

cvs
cvs 是一个版本控制系统。

daytime
使用TCP 协议的Daytime守护进程,该协议为客户机实现从远程服务器获取日期 和时间的功能。预设端口:13。

daytime-udp
使用UDP 协议的Daytime守护进程。

daytime-dgram

daytime-stream

dc_client, dc_server
磁盘缓存(Distcache)用于分布式的会话缓存。主要用在 SSL/TLS 服务器。它可以被 Apache 使用。大多数的台式机应该关闭它。

dhcdbd
这是一个让 DBUS 系统控制 DHCP 的接口。可以保留默认的关闭状态。DHCP相关服务,使用DHCP的人打开,用固定IP的关闭就行了

diskdump, netdump
磁盘转储(Diskdump)用来帮助调试内核崩溃。内核崩溃后它将保存一个 “dump“ 文件以供分析之用。网络转储(Netdump)的功能跟 Diskdump 差不多,只不过它可以通过网络来存储。除非你在诊断内核相关的问题,它们应该被关闭。

discard-dgram

discard-stream

dnsmasq
DNSmasq是一个轻巧的,容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的 DNS服务。

echo
服务器回显客户数据服务守护进程。

echo-udp
使用UDP协议的服务器回显客户数据服务守护进程。

echo-dgram

echo-stream

eklogin
接受rlogin会话鉴证和用kerberos5加密的一种服务的守护进程。

ekrb5-telnet

firstboot
该服务是 Fedora 安装过程特有的。它执行在安装之后的第一次启动时仅仅需要执行一次的特定任务。它可以被关闭。用于第一启动相关的设置,关闭

functions

gated
网关路由守护进程。它支持各种路由协议,包括RIP版本1和2、DCN HELLO协议、 OSPF版本2以及EGP版本2到4。

gpm
终端鼠标指针支持(无图形界面)。如果你不使用文本终端(CTRL-ALT-F1, F2..),那就关闭它。不过,我在运行级别 3 开启它,在运行级别 5 关闭它。对鼠标的支持,如果你用 console 要以打开,常用 x-server 就关闭

gssftp
使用kerberos 5认证的ftp守护进程。

haldaemon

HAL (Hardware Abstraction Layer) 这个必须打开
halt

hplip, hpiod, hpssd
HPLIP 服务在 Linux 系统上实现 HP 打印机支持,包括 Inkjet,DeskJet,OfficeJet,Photosmart,Business InkJet 和一部分 LaserJet 打印机。这是 HP 赞助的惠普 Linux 打印项目(HP Linux Printing Project)的产物。如果你有相兼容的打印机,那就启用它。HP打印机支持程序,不使就HP打印机的就关闭吧

hsqldb
一个java的关系型数据库守护进程,得名于Hypersonic SQL,但这个项目已经没有再继续了。

httpd
Web服务器Apache守护进程,可用来提供HTML文件以 及CGI动态内容服务。

innd
Usenet新闻服务器守护进程。

iiim
中文输入法服务器守护进程。

inetd
因特网操作守护程序。监控网络对各种它管理的服务的需求,并在必要的时候启动相应的服务程序。在Redhat 和Mandrake linux中被xinetd代替。Debian, Slackware, SuSE仍然使用。

ip6tables
如果你不知道你是否在使用 IPv6,大部分情况下说明你没有使用。该服务是用于 IPv6 的软件防火墙。大多数用户都应该关闭它。

ipmi

iptables
它是 Linux 标准的防火墙(软件防火墙)。如果你直接连接到互联网(如,cable,DSL,T1),建议开启它。如果你使用硬件防火墙(比如:D- Link,Netgear,Linksys 等等),可以关闭它。强烈建议开启它。Linux 下的防火墙,好东东啊

irda, irattach
IrDA 支持服务,大部分用户都不会用上,IrDA 提供红外线设备(笔记本,PDA’s,手机,计算器等等)间的通讯支持。大多数用户应该关闭它。

irqbalance
在多处理器系统中,启用该服务可以提高系统性能。大多数人不使用多处理器系统,所以关闭它。但是我不知道它作用于多核 CPU’s 或 超线程 CPU’s 系统的效果。在单 CPU 系统中关闭它应该不会出现问题。对多核多CPU的用户的服务,用VMware的没必要打开了

isdn
这是一种互联网的接入方式。除非你使用 ISDN 猫来上网,否则你应该关闭它。

lirc
红外遥控支持,没什么用处

lisa
和网上邻居的功能很像,如果用Samba 或 NFS 可以打开

lm_sensors
主板测试PC健康用的服务,如CPU,硬盘温度之些的,不用可以关掉

keytable
该进程的功能是转载在/etc/sysconfig/keyboards里定义的键盘映射表,该表可以通过kbdconfig工具进行选择。您应该使该程序处于激活状态。

kdump

klogin
远程登陆守护进程。

krb5-telnet
使用kerberos 5认证的telnet守护进程。

kshell

kshell守护进程。

killall

krb524

kudzu
该服务进行硬件探测,并进行配置。如果更换硬件或需要探测硬件更动,开启它。但是绝大部分的台式机和服务器都可以关闭它,仅仅在需要时启动。如果你不是经常的更换硬件就关闭它

ldap
ldap(Lightweight Directory Access Protocol)目录访问协议服务器守护进程。

libvirtd

lm_sensors
该服务可以探测主板感应器件的值或者特定硬件的状态(一般用于笔记本电脑)。你可以通过它来查看电脑的实时状态,了解电脑的健康状况。它在 GKrellM 用户中比较流行。如果没有特殊理由,建议关闭它。

lvm2-monitor

mcstrans
SELinux转换服务,如果你使用 SELinux 就开启它,但你也可以关闭。用于查看 context 的,用 SELinux 的可打开

mdmonitor
该服务用来监测 Software RAID 或 LVM 的信息。它不是一个关键性的服务,可以关闭它。用于监视软 RAID 和 LVM 信息,你也可以关掉

mdmpd
该服务用来监测 Multi-Path 设备(该类型的存储设备能被一种以上的控制器或方法访问)。它应该被关闭。

messagebus
这是 Linux 的 IPC(Interprocess Communication,进程间通讯)服务。确切地说,它与 DBUS 交互,是重要的系统服务。强烈建议开启它。
IPC (Interprocess Communication) 进程间通信服务,一个重要的服务,必须打开

multipathd, microcode_ctl
可编码以及发送新的微代码到内核以更新Intel IA32系列处理器守护进程。

mysqld
一个快速高效可靠的轻型SQL数据库引擎守护进程。

named
DNS(BIND)服务器守护进程。

netconsole

初始化网络控制台登陆,关闭

nasd
声音支持,用于X Windows,不用的就半掉

netfs
该服务用于在系统启动时自动挂载网络中的共享文件空间,比如:NFS,Samba 等等。如果你连接到局域网中的其它服务器并进行文件共享,就开启它。大多数台式机和笔记本用户应该关闭它。

netplugd, ifplugd
Netplugd 用于监测网络接口并在接口状态改变时执行指定命令。建议保留它的默认关闭状态。监测网络接口用的,普通用户关掉

network
激活/关闭启动时的各个网络接口守护进程。

nfs, nfslock
这是用于 Unix/Linux/BSD 系列操作系统的标准文件共享方式。除非你需要以这种方式共享数据,否则关闭它。

nscd
服务名缓存进程,它为NIS和LDAP等服务提供更快的验证,如果你运行这些服务,那你应该开启它。用于缓存密码的,没什么用

nmbd
Samba的一个服务,用于NETBeui名称解析用的

ntpd
该服务通过互联网自动更新系统时间。如果你能永久保持互联网连接,建议开启它,但不是必须的。

pcscd
该服务提供智能卡(和嵌入在信用卡,识别卡里的小芯片一样大小)和智能卡读卡器支持。如果你没有读卡器设备,就关闭它。

pcmcia
主要用于支持笔记本电脑接口守护进程。

portmap
该服务是 NFS(文件共享)和 NIS(验证)的补充。除非你使用 NFS 或 NIS 服务,否则关闭它。

postgresql
PostgreSQL 关系数据库引擎。

pppoe
ADSL连接守护进程。

proftpd
proftpd 是Unix下的一个配置灵活的ftp服务器的守护程序。

psacct
该守护进程包括几个工具用来监控进程活动的工具,包括ac,lastcomm, accton和sa。

random
保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的。

rawdevices
在使用集群文件系统时用于加载raw设备的守护进程。

rdisc

readahead_early, readahead_later
该服务通过预先加载特定的应用程序到内存中以提供性能。如果你想程序启动更快,就开启它。

restorecond
用于给 SELinux 监测和重新加载正确的文件上下文(file contexts)。它不是必须的,但如果你使用 SELinux 的话强烈建议开启它。

rhnsd
Red Hat 网络服务守护进程。通知官方的安全信息以及为系统打补丁。

routed
该守护程序支持RIP协议的自动IP路由表维护。RIP主要 使用在小型网络上,大一点的网络就需要复杂一点的协议。

rpcgssd, rpcidmapd, rpcsvcgssd
用于 NFS v4。除非你需要或使用 NFS v4,否则关闭它。

rsync
remote sync远程数据备份守护进程。

rsh
远程主机上启动一个shell,并执行用户命令。

rwhod
允许远程用户获得运行rwho守护程序的机器上所有已登录用户的列表。

rstatd
一个为LAN上的其它机器收集和提供系统信息的守候进程。

ruserd
远程用户定位服务,这是一个基于RPC的服务,它提供关于当前记录到LAN上一个机器日志中的用户信息。

rwalld
激活rpc.rwall服务进程,这是一项基于RPC的服务,允许用户给每个注册到LAN机器上的其他终端写消息。

rwhod:激活rwhod服务进程,它支持LAN的rwho和ruptime服务。

saslauthd
使用SASL的认证守护进程。

sendmail
除非你管理一个邮件服务器或你想 在局域网内传递或支持一个共享的 IMAP 或 POP3 服务。大多数人不需要一个邮件传输代理。如果你通过网页(hotmail/yahoo/gmail)或使用邮件收发程序(比如:Thunderbird, Kmail,Evolution 等等)收发邮件。你应该关闭它。

setroubleshoot
查看selinux日志的程序,这个程序提供信息给 setroubleshoot Browser,如果你用 SELinux 可以打开它

squid
代理服务器squid守护进程。

smartd
SMART Disk Monitoring 服务用于监测并预测磁盘失败或磁盘问题(前提:磁盘必须支持 SMART)。大多数的桌面用户不需要该服务,但建议开启它,特别是服务器。SMART,用于监测硬盘的,VMware用户关掉

smb
SAMBA 服务是在 Linux 和 Windows 之间共享文件必须的服务。如果有 Windows 用户需要访问 Linux 上的文件,就启用它。

snmpd
本地简单网络管理守护进程。

sshd
SSH 允许其他用户登录到你的系统并执行程序,该用户可以和你同一网络,也可以是远程用户。开启它存在潜在的安全隐患。如果你不需要从其它机器或不需要从远程登录,就应该关闭它。

syslog

tcpmux-server

tftp

time
该守护进程从远程主机获取时间和日期,采用TCP协议。

time-udp
该守护进程从远程主机获取时间和日期,采用UDP协议。
time-dgram
time-stream

tux
在Linux内核中运行apache服务器的守护进程。

vsftpd
vsftpd服务器的守护进程

vmware-tools
vmware-tools,虚拟机中装了vmware-tools包之后才会有的。

vncserver
VNC (Virtual Network Computing,虚拟网络计算),它提供了一种在本地系统上显示远程计算机整个”桌面”的轻量型协议。

winbind
Winbind 是一款 Samba 组件,在 CentOS 系统下,他被包含在了 samba-common 包中。 Winbind 在Linux上实现了微软的RPC调用、可插式验证模块和名字服务切换,通过 samba 接口与 Windows 域控获得联系,可以使NT域用户能在Linux主机上以Linux用户身份进行操作。通过设定 Linux 服务器的 nss 配置,我们可以让系统通过 Winbind 程序来解析用户信息。

wpa_supplicant
无线网卡上网服务

xend, xendomains
XEN虚拟服务相关

xfs
X Window字型服务器守护进程,为本地和远程X服务器提供字型集。

xinetd
(该服务默认可能不被安装)它是一个特殊的服务。它可以根据特定端口收到的请求启动多个服务。比如:典型的 telnet 程序连接到 23 号端口。如果有 telent 请求在 23 号端口被 xinetd 探测到,那 xinetd 将启动 telnetd 服务来响应该请求。为了使用方便,可以开启它。运行 chkconfig -list, 通过检查 xinetd 相关的输出可以知道有哪些服务被 xinetd 管理。

ypbind
为NIS(网络信息系统)客户机激活ypbind服务进程 。

yppasswdd
NIS口令服务器守护进程。

ypserv
NIS主服务器守护进程。

yum, yum-updatesd
RPM操作系统自动升级和软件包管理守护进程。
ConsoleKit
这个主要是 Gnome 使用的用于 Fedora - Fast User Switching ,主要用于自动加载 device 和 Power Management. 建议 Disable

2012年10月9日 星期二

php连接数据库mysql

 

 

$dblink=mysql_connet($mysql_server_host,$mysql_server_user,$mysql_server_password)

2012年10月8日 星期一

记录mysql的安装方式

MySQL有两种安装方式:源码包安装和二进制包安装。这两种方式各有特色:二位制包安装不需编译,针对不同的平台有经过优化编译的不同的二进制文件以及包格式,安装简单方便;源码包则必须先配置编译再安装,可以根据你所用的主机环境进行优化,选择最佳的配置值,安装定制更灵活。下面分别介绍这两种安装方式。
 3.1 源码包方式安装
    3.1.1 在linux系统中添加运行Mysql的用户和组
              /usr/sbin/groupadd mysql
              /usr/sbin/useradd -d /var/lib/mysql -s /sbin/nologin -g mysql mysql          
    3.1.2 下载最新稳定发行版(GA)的MySQL软件
              访问MySQL网站http://dev.mysql.com/downloads/下载最新稳定发行版的MySQL源码包。本文使用的是5.0.51版本,在linux系统下用下面的命令下载:
              wget http://mysql.mirror.kangaroot.ne ... mysql-5.0.51.tar.gz
    3.1.3 解压缩下载的源码包
              首先建立一个工作目录( 笔者建议的目录为/usr/local/src/mysql ) :
              mkdir -p /usr/local/src/mysql
              将下载的源码包移至工作目录:
              mv  mysql-5.0.51.tar.gz  /usr/local/src/mysql
              进入工作目录并用tar命令解压源码包:
              cd  /usr/local/src/mysql
              tar zxvf  mysql-5.0.51.tar.gz
              命令执行结束后,当前工作目录下将生成一个新的子目录mysql-5.0.51,此目录下即为mysql的源码文件。
    3.1.4 配置Makefile文件
              进入MySQL源码目录:
              cd mysql-5.0.51
              执行下面的命令可查看可配置选项:
    ./configure --help
              本文使用的配置命令格式如下:
              CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-thread-safe-client --enable-assembler --with-big-tables --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static  --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=complex
              配置选项说明:
              CC:C编译器的名称(用于运行configure),本文示例为gcc
              CFLAGS:C编译器的标志(用于运行configure),本文示例为-O3,指定优化级别为3
              CXX:C++编译器的名称(用于运行configure),本文示例为gcc
              CXXFLAGS:C++编译器的标志(用于运行configure)
    --prefix:指定安装目录,本文示例为/usr/local/mysql
              --localstatedir:指定默认数据库文件保存目录,默认为安装目录下的var目录
   --enable-thread-safe-client:编译线程安全版的MySQL客户端库
    --enable-assembler:使用一些字符函数的汇编版本
              --with-client-ldflags:客户端链接参数,本文示例为指定静态编译mysql客户端
    --with-mysqld-ldflags:服务器端链接参数,本文示例为指定静态编译mysql服务器
              --with-big-tables:在32位平台上支持大于4G行的表
    --with-charset:指定默认字符集。mysql默认使用latin1(cp1252)字符集,可以使用此选项更改。字符集可以是big5、 cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、 hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或 win1251ukr。
              --with-collation:指定默认校对规则。mysql默认使用latin1_swedish_ci校对规则,可以使用此选项更改。
    --with-extra-charsets:服务器需要支持的字符集,有三种可能的值:空格间隔的一系列字符集名;complex ,包括不能动态装载的所有字符集;all,将所有字符集包括进二进制。本文示例为complex。
    注意:要想更改字符集和校对规则,要同时使用--with-charset和--with-collation选项。 校对规则必须是字符集的合法校对规则。(在mysql中使用SHOW COLLATION语句来确定每个字符集使用哪个校对规则)。
    3.1.5 编译源代码
    执行下面的命令编译源代码:
    make
    3.1.6 安装
    执行下面的命令安装mysql到目标路径:
    make install
    3.1.7 复制默认全局启动参数配置文件到/etc目录
              源码方式安装需要手动复制配置文件,配置模板位于源码树的support-files目录,有my-small.cnf、my- medium.cnf、my-large.cnf、my-huge.cnf四个,选择跟你的环境相接近的一个复制到/etc目录,并做适当修改。关于 mysql配置文件的详细信息请参阅笔者的其它文章或是mysql官方文档。
              本文示例选择my-medium.cnf,执行下面的命令将其复制到/etc目录:
              cp ./support-files/my-medium.cnf  /etc/my.cnf
    3.1.8 初始化授权表
              执行下面的命令初始化授权表:
    ./scripts/mysql_install_db --user=mysql
    3.1.9 更改mysql数据目录属主和权限
              默认数据库文件保存目录为安装目录下的var目录,执行configure命令时可通过--localstatedir参数指定不同的目录,本文示例为默认位置。
              chown -R mysql.mysql /usr/local/mysql/var
              chmod -R 700 /usr/local/mysql/var
    3.1.10 设置开机自启动服务控制脚本
              执行下面的命令复制启动脚本到资源目录:
              cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
              执行下面的命令增加mysqld服务控制脚本执行权限:
              chmod +x /etc/rc.d/init.d/mysqld
              执行下面的命令将mysqld服务加入到系统服务:
              chkconfig --add mysqld
              执行下面的命令检查mysqld服务是否已经生效:
              chkconfig --list mysqld
              命令输出类似下面的结果:
              mysqld          0ff 1ff 2n 3n 4n 5n 6ff
              表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止。
    启动mysqld服务:
    service mysqld start
              停止mysqld服务:
              service mysqld stop
              执行下面的命令关闭开机自启动:
    chkconfig mysqld off
              执行下面的命令可以改变开机自启动的运行级别为3、5: 
    chkconfig --level 35 mysqld on
    3.1.11 将mysql的bin目录加入PATH环境变量
              编辑/etc/profile文件:
              vi /etc/profile
              在文件最后添加如下两行:
              PATH=$PATH:/usr/local/mysql/bin
              export PATH
              执行下面的命令使所做的更改生效:
              . /etc/profile
    3.2 二进制包方式安装      
 3.2.1 从安装媒体安装
              Mysql二进制包已经包含在CentOS 5的安装媒体中,可以直接从安装媒体中安装下面三个rpm包:
              mysql-5.0.22-2.1.0.1.i386.rpm
              mysql-devel-5.0.22-2.1.0.1.i386.rpm
              mysql-server-5.0.22-2.1.0.1.i386.rpm
              不同的版本文件名有所不同,请注意区分。
       执行下面的命令安装:
              rpm -iUvh  mysql-5.0.22-2.1.0.1.i386.rpm
              rpm -iUvh  mysql-devel-5.0.22-2.1.0.1.i386.rpm
              rpm -iUvh  mysql-server-5.0.22-2.1.0.1.i386.rpm
    3.2.2 通过yum安装
              如果你安装的机器此时可以连接到互联网,笔者建议使用yum命令来简化安装过程:
       yum install mysql-server mysql-devel mysql
       yum将自动从centos的镜像站点查找你指明的软件的最新二进制包,并检查软件包依赖关系,安装软件的同时自动安装其依赖的软件包。
    3.2.3 从mysql网站下载最新稳定版本的二进制包安装
              通过CentOS安装媒体或yum安装的二进制包版本会落后于mysql开发者网站发布的版本,可以从mysql网站下载安装最新稳定版本的mysql。
              访问MySQL网站http://dev.mysql.com/downloads/下载最新稳定发行版的相应硬件平台的MySQL。本文使用的是Red Hat Enterprise Linux 5 RPM (x86) 5.0.45版本。需要下载Server、Client、Headers and Libraries、Share Libraries/Shared compatibility libraries几个rpm包,其它为可选包,按需要选择。
              在linux系统下用下面的命令下载:
              wget http://mysql.mirrors.pair.com/Do ... 45-0.rhel5.i386.rpm
              wget http://mysql.mirrors.pair.com/Do ... 45-0.rhel5.i386.rpm
              wget http://mysql.mirrors.pair.com/Do ... 45-0.rhel5.i386.rpm
              wget http://mysql.mirrors.pair.com/Do ... 45-0.rhel5.i386.rpm
              wget http://mysql.mirrors.pair.com/Do ... 45-0.rhel5.i386.rpm
              执行下面的命令安装:
              rpm -iUvh MySQL-server-community-5.0.45-0.rhel5.i386.rpm
              rpm -iUvh MySQL-client-community-5.0.45-0.rhel5.i386.rpm
              rpm -iUvh MySQL-devel-community-5.0.45-0.rhel5.i386.rpm
              rpm -iUvh MySQL-shared-community-5.0.45-0.rhel5.i386.rpm
              rpm -iUvh MySQL-shared-compat-5.0.45-0.rhel5.i386.rpm
4. MySQL的配置
    4.1 目录结构
 4.1.1 源码包方式安装目录结构
           源码包方式安装时通常是在3.1.4节中configure命令的--prefix选项指定的目录中建立如下的目录结构,特殊指定的目录除外:
           ./bin                               #mysql用户可执行文件目录
           ./include/mysql           #mysql C头文件目录
           ./info                              #mysql 信息文件目录
           ./lib/mysql                    #mysql库文件目录
           ./libexec                        #mysql后台daemon程序目录
           ./man                             #mysql联机帮助文档目录
           ./mysql-test                  #mysql测试程序目录
           ./share/mysql              #mysql公用文件目录,包括字符集、配置文件模板、启动脚本、初始化SQL文件等
           ./sql-bench                   #mysql压力测试程序目录
           /etc/my.cnf                    #mysql配置文件
           /etc/rc.d/init.d/mysqld #mysqld服务启动脚本
    4.1.2 RPM二进制包方式安装目录结构
           二进制包方式安装时使用系统软件默认目录结构 :
           /usr/bin                     #mysql用户可执行文件目录
           /usr/libexec              #mysql后台daemon程序目录
           /usr/lib/mysql          #mysql库文件目录
           /usr/lib64/mysql     #如果为64系统,mysql 64位库文件目录
           /usr/share/doc        #mysql文档目录
           /usr/share/info        #mysql信息文件目录
           /usr/share/man      #mysql联机帮助文档目录
           /usr/share/mysql    #mysql字符集目录
           /usr/include/mysql #mysql C头文件目录
           /var/log                     #mysqld服务日志文件目录
           /var/run/mysqld      #mysqld服务运行状态目录
           /var/lib/mysql          #mysql数据文件目录
           /etc/my.cnf               #mysql配置文件
           /etc/rc.d/init.d/mysqld  #mysqld服务启动脚本
    4.2 配置文件
          Linux系统下,mysql的配置参数文件为my.cnf,一般按下面的顺序查找此文件:/etc目录、mysql安装目录、mysql数据目录。配置模板位于源码树的support-files目录,有my-small.cnf、my-medium.cnf、my-large.cnf、my- huge.cnf四个,关于mysql配置文件的详细信息请参阅笔者的其它文章或是mysql官方文档。
    4.3 启动mysqld服务
           执行下面的命令启动mysql:
           service mysqld start
    4.3 设置mysql帐号
           mysql安装后默认生成两个帐号:一个是root,未设置密码,可以从本机登录到mysql;另一个是匿名帐号,无帐号名、无密码,可以从本机登录,未提供用户名的连接都将假定为此帐号。这样的设置存在着安全隐患,按下面的步骤进行更改。
           以root帐号连接到mysql服务器:
           mysql -u root
           如果提示找不到mysql文件,请尝试使用绝对路径,如本文示例为:
           /usr/local/mysql/bin/mysql -u root
           命令成功执行后将进入到mysql命令提示符下:
           mysql>
           (以下命令均在mysql命令提示符下执行)
           改变当前数据库为mysql:
           use mysql
           设置从本地主机登录的root帐号密码:
           set password for root@localhost=password('your password');
           或:
           update user set password=password('your password') where user='root' and host='localhost';
           删除匿名帐号:
           delete from user where user='' ;
           删除密码为空的帐号:
           delete from user where password='';
           删除允许非localhost主机登录的帐号:
           delete from user where host<>'localhost' ;
           执行下面的命令使更改生效:
           flush privileges ;
           执行下面的命令退出mysql命令行:
           quit
           或:
           \q
5. 结束语
    至此,Mysql基本安装完毕。希望本文能对初学者有所帮助。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiamizy/archive/2008/01/30/2072525.aspx
Linux (non RPM packages) downloads
#newuser      ## 按提示添加名为”mysql”的用户和组,你也可以使用sysinstall来添加
#vi /etc/group  ## 在wheel组里添加上mysql用户(一般是在root后面加上”,mysql”),原因在后面说到
#tar zxvf  mysql-5.1.31-linux-686-glibc23.tar.gz
#mv mysql-5.1.31-linux-686-glibc23 /usr/local/mysql       ## 我安装在/usr/local/mysql下
#cd /usr/local/mysql
#chown -R mysql .
#chgrp -R mysql .
#su simon    ## 这一步重要呀,mysql里的INSTALL-BINARY都没提到,试了N次才知,要不你就要以root的身份运行,即执行 scripts/mysql_install_db时不指定–user=mysql, 要不下面的那一步死活不能通过,也没有错误提示,我在这里卡了很久
$scripts/mysql_install_db –user=mysql      ## 这里可能会出现一些警告,主要是因为DNS,你可以加上 –force参数或在/etc/hosts里加一项你的主机名
$exit     ##  因为我之前是用su,反正你改回root就行,因为要启动服务
#chown -R root .
#chown -R mysql .
#cp support-files/my-xxx.cnf /etc/my.cnf    ##  这里根据你自己的要求使用mysql的配置文件
#support-files/mysql.server start ## 如果你是在wheel组里添加了 mysql用户,那这里就应该不会出问题了,因为mysql要在/tmp下添加一个sock,但用户“mysql”对这目录是没有有写权限的,所以要让 “mysql”成为whell的成员
#bin/mysqladmin -uroot password ‘这里填写你的root密码’
好了,基本完成
验证mysql运行:
#netstat -al      ##  看看3306,如果启动了就表示成功了
#bin/mysql -uroot -p     ##  试试登录,应该没问题了

2012年10月7日 星期日

大日志分割方法

明:

本文采用一个50M大小的日志文件进行测试。
日志文件名:log.txt.gz。
文件行数:208363

方法1:(split分割)
语法:split [-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

# gunzip log.txt.gz //一定要先解压,否则分割的文件是不能cat/zcat显示;

# wc -l log.txt //计算一个文件的总行数;

208363 log.txt
# split -l 120000 log.txt newlog //通过指定行数,将日志分割成两个文件;
# du -sh *50M log.txt
29M newlogaa
22M newlogab
# file * //分割后的文件与原文件属性一样
log.txt: ASCII text, with very long lines, with CRLF line terminators
newlogaa: ASCII text, with very long lines, with CRLF line terminators
newlogab: ASCII text, with very long lines, with CRLF line terminators
# gzip newlogaa newlogab //将分割后的文件进行压缩,以便传输

另一种方法,通过

方法2:(dd分割)
# gunzip log.txt.gz //一定要先解压,否则分割的文件是不能cat/zcat显示;

#dd bs=20480 count=1500 if=log.txt of=newlogaa //按大小分第一个文件

#dd bs=20480 count=1500 if=log.txt of=newlogab skip=1500 //将大小之后的生成另一个文件#file *

log.txt: ASCII text, with very long lines, with CRLF line terminators
newlogaa: ASCII text, with very long lines, with CRLF line terminators
newlogab: ASCII text, with very long lines, with CRLF line terminators

分割没问题,但会出现同一行分到不同文件的情况,除非你以及日志分析系统可以“容忍”。

方法3:(head+tail 分割)
#gzip log.txt.gz //如不解压缩,下面请用zcat。
#wc -l log.txt //统计一个行数
208363 log.txt
# head -n `echo $((208363/2+1))` log.txt > newloga.txt //前x行重定向输出到一个文件中;

#tail –n `echo $((208363-208362/2-1))` log.txt >newlogb.txt //后x行重定向输出到一个文件中;

#gzip newloga.txt newlogb.txt //将两个文件进行压缩

方法4:(awk分割)
#gzip log.txt.gz#awk ‘{if (NR<120000) print $0}’ log.txt >newloga.txt#awk ‘{if (NR>=120000) print $0}’ log.txt >newlogb.txt

以上两个命令,都要遍历整个文件,所以考虑到效率,应使用合并成:

#awk ‘{if (NR<120000) print $0 >”newloga.txt”;if (NR>=120000) print $0>”newlogb.txt”}’ log.txt

总结:
以上四种方法,除了dd之外的三种方式都可以很好的整行分割日志文件。进行分割时,应考虑在读一次文件的同时完成,如不然,按下面的方式分割:
Cat log.txt| head –12000 >newloga.txt
Cat log.txt | tail –23000 >newlogb.txt
如用此方法分割文件的后一部分,那么执行第二行命令文件时,前x行是白白读一遍的,执行的效率将很差,如文件过大,还可能出现内存不够的情况。

2012年8月8日 星期三

zabbix中文配置指南

一、Zabbix简介

1.1 Zabbix简介

  Zabbix是一个企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。官方网站:http://www.zabbix.com官方文档:http://www.zabbix.com/documentation/2.0 /manual/quickstart。Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。

Zabbix运行条件:

Server:Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低。

Agent:目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows。

SNMP:支持各类常见的网络设备

1.2 Zabbix功能

  具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制)支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。

1.3 优劣势

优点:开源,无软件成本投入;Server对设备性能要求低(实际测试环境:虚拟机CentOS5,2GCPU 1G内存,监控5台设备,CPU使用率基本保持在10%以下,内存剩余400M以上);支持设备多;支持分布式集中管理;开放式接口,扩展性强。

缺点:中文资料较少。

二、Zabbix配置文件

2.1 说明

Server:指安装zabbix服务的服务器(以下简称服务器端),是最重要的部份,主要安装在linux系统上(支持多种操作系统),采用mysql存储监控数据并使用apache+php的方式呈现。

Agent:指安装在被监控设备上的zabbix代理(以下简称代理),被监控设备上的数据由代理收集后统一上传到服务器端由服务器端收集、整理并呈现。

SNMP:也是agent的一种,指支持SNMP协议的设备(也可以是服务器),通过设定SNMP的参数将相关监控数据传送至服务器端(大部份的交换机、防火墙等网络设备都支持SNMP协议)。

IPMI:Agent的另一种方式,主要应用于设备的物理性能监控,例如设备的温度、风扇的转速等。

2.2 Zabbix架构

  Zabbix支持多种网络方式下的监控,可通过分布式的方式部署和安装监控代理,整个架构如(图一、图四)所示。

图一:架构图

图四:架构图

2.3 Zabbix服务配置文件

  Zabbix安装后服务端默认的配置文件存在安装文件夹中的/etc中,假设编译的参数是“—prefix=/usr/local/zabbix”,那么服务端的配置文件则在“vi /usr/loca/zabbix/etc/”。如图二所示。

图二:配置文件

  主要的配置文件两个:“zabbix_server.conf”负责服务器端的设定;“zabbix_agent.conf”用来设置客户端代理参数;“zabbix_proxy.conf”用来设定分布式的部署。

2.4 zabbix_server.conf说明

  Zabbix_server.conf中的参数比较多,设定值的跨度也很大,这里仅列出常用的一些参数。如图三所示。 Zabbix_server.conf参数除了保证服务正常运行外还涉及该服务器的性能,如果参数设定不合理可能会导致zabbix添加主机不正常、代理端数据无法正常收集或是zabbix服务器性能严重下降,经常报告CPU占用过高或是IO占用过高等问题。

图三:zabbix_server.conf

DBName=zabbix                            zabbix所属数据库名称
DBUser=zabbix                            zabbix所属数据库用户
DBPassword=www.xxxxxx.com                zabbix数据库密码
StartPollers=30                        轮询的初始值(0-1000)
StartIPMIPollers=4                       IPMI轮询的初始值(0-1000)
StartPollersUnreachable=30               轮询不可达的主机数(包括IPMI 0-1000)
StartTrappers=8                        捕获的初始值(0-1000)
StartPingers=4                          ping的初始值(0-1000)
StartDiscoverers=0                      自动发现的初始值(0-250)
CacheSize=384M                          缓存大小
CacheUpdateFrequency=300                缓存更新的频率
StartDBSyncers=8                        数据库同步时间
TrendCacheSize=128M                     总趋势缓存大小
AlertScriptsPath=/usr/bin               脚本的存放位置
LogSlowQueries=1000                     日志慢查询设定

2.5 zabbix_agent.conf说明

  Zabbix_agent.conf用来配置代理的参数,该文件中需要更改的地方比较少,仅更改几个常用的参数就行了(linux的agent和windows的都差不多,大同小异,以下的说明以windows为例)。如图五所示。

LogFile=c:\zabbix\zabbix_agentd.log                         日志文件的存放位置
Server=192.168.0.189                                        zabbix服务器的IP
Hostname=192.168.0.13  被监控机的IP

需要注意的是代理端的设定参数“Hostname=192.168.0.13”要和配置时填入的主机名称一致,不然日志中将会报“host {主机名}not found”的错误。如(图六、七)所示。

图五:zabbix_agent.conf

图六:主机名不一致的错误提示

图七:填入正确的主机名

2.6 Agent安装

  Zabbix需要在被监控的host上安装agent,在zabbix官网上下载相应平台的agent包到各被监控端,按如下方式在被监控上运行 agent。(注:官网上下载的agent包里没有运行agentd所必须的配置文件,可以从zabbix server上拷贝一份zabbix_agentd.conf,这个conf文件是所有平台都通用的)

2.6.1 Linux Agent安装

  Linux、UNIX上的agent是编译好了的,不用编译安装。(图八)

  1. useradd zabbix 
  2. cd /usr/local/zabbix
  3. tar zxvf zabbix_agents_1.8.linux2_6.i386.tar.gz


图八:agent安装

  取一份server上的zabbix_agnetd.conf到本地,然后按说明修改,一般我们只需修改2.5中的三个参数。修改完成后,运行agentd。

  1. /usr/local/zabbix/sbin/zabbix-agentd –c /usr/local/zabbix/zabbix_agentd.conf &
  2. ps –ef|grep zabbix_agentd

  如果进程没起来,可查看agentd.log日志来排查问题。(注:启动时建议用全路径,否则可能会出错),加入开机运行。

  1. echo ‘/usr/local/zabbix/sbin/zabbix-agentd –c /usr/local/zabbix/zabbix_agentd.conf &‘ >>/etc/rc.local

2.6.2 Windows agent安装

  Windows下解压客户端包到c:\zabbix,下载修改好的zabbix_agentd.conf文件也放到c:\zabbix,打开cmd命令行,执行:

  1. zabbix_agentd -c "c:\zabbix\zabbix_agentd.conf" -i
  2. zabbix_agentd -c "c:\zabbix\zabbix_agentd.conf" -s

  安装后会在系统服务里添加一个zabbix_agentd服务(图九),会自动开机运行。如果需要将卸载客户端,请执行(图十):

  1. zabbix_agentd -c "c:\zabbix\zabbix_agentd.conf" -x
  2. zabbix_agentd -c "c:\zabbix\zabbix_agentd.conf" –d


图九:zabbix agent服务


图十:zabbix agent服务卸载、安装命令

三、Zabbix配置


3.1 更改Zabbix map图标


  Zabbix的maps用来图形化显示监控设备的拓扑图,并且以不同的标记显示故障事件,通过该图表很直观的显示设备的整体情况。系统默认的图标比较简陋,如图十一所示。通过更改系统自带的图标让监控显示更加直观、方便(图十二)。

  首先下载Icon图标,通过http://www.zabbix.com/forum/attachment.php?attachmentid=1855&d=1239079235下载图标库并压至相关目录。


图十一:默认的maps图


图十二:新maps图

  1. unzip zabbix_icons_set_generic.zip
  2. unzip make_img_insert_sql.sh.gz
  3. sh make_img_insert_sql.sh ./48 1000
  4. mv my_images_mysql.sql my_images_mysql_48.sql
  5. sh make_img_insert_sql.sh ./128 2000
  6. mv my_images_mysql.sql my_images_mysql_128.sql
  7. cat my_images_mysql_48.sql |mysql -u zabbix -p zabbix
  8. cat my_images_mysql_128.sql |mysql -u zabbix -p zabbix

  指令执行后可能出现128_g_router_off.png、128_g_router_on.png、128_g_router_unknown.png这三个文件的错误提示,对于这三个文件可以直接通过web方式更改提交。

3.2 添加短信报警(脚本方式)


  短信提醒功能(图二十)可以让运维团队在第一时间了解故障,让系统管理人员快速定位、解决故障。以下是详细步骤:

3.2.1 新建短信发送脚本

  对于可以通http方式发送短信的方式都可以参考该脚本,这个例子中日常的短信发送都是通过windows平台发送,这里把它转换成了linux下可用的脚本(图十三)。这里通过“curl”指令来实现http的操作,随后通后“iconv”指令实现编码转换(utf8转gbk编码),否则可能出现收到短信是乱码的情况。

  需注意的是该脚本的存放位置要和2.4中的脚本存放位置一致。

  1. #!/bin/sh
  2. IFS=""
  3. sms="http://x1.xxxxxxxx.cn/gbk/interface/send_sms.aspx?username=xxxxxx&password=yyyyyy&receiver=$1&content=$2,$3"
  4. echo $sms|tr ' ' '.'|iconv -f utf8 -t gbk >/tmp/sendsms.in
  5. cont=`cat /tmp/sendsms.in`
  6. curl $cont -s -o /tmp/sendsms.log


图十三:sendsms.sh图

3.2.2 增加报警方式类型

  进入zabbix的WEB管理页面,在“Administration”---“Media types”,新建一个告警方式类型,描述栏填写“message send by mobile”,类型栏选择“Script”,Script name栏填写“sendsms.sh”,勾选“enable”单击保存按钮。(图十四)


图十四:media types图

3.2.3 增加报警通知的用户

  进入zabbix的WEB管理页面,在“Administration”---“Users”—“Create user”进入新建用户页面,在该页面中选择“Media”选择新建报警类型“add”。设置告警方式为“message send by mobile”,在send to栏中设置接收报警的手机号码,在相应的栏中设定事件的等级(N未分级、I信息、W警告、A平均、H高、D害难)和工作时间,点击保存。(图十五)


图十五:user图

3.2.4 增加报警动作

  进入zabbix的WEB管理页面,在“Configuration”---“Actions”—“Create action”进入新建动作页面,在该页面中共包含三项目内容:

  “Action”指报警动作的名称、报警周期、标题、详细内容及故障恢复时的报警标题和内容。这里需要注意的是标题和内容不能太长,不然一条短信无法定远整显示(图十六、十七分别表示action默认的内容和精简后的内容)。在标题和内容中都可以使用zabbix中自定义的宏。常见的宏有以下内容:

{HOST.CONN}                                主机IP地址
{TRIGGER.NAME}                           触发事件名称
{TRIGGER.STATUS}                           事件触发状态
{TRIGGER.SEVERITY}                         事件触发级别
{ITEM.NAME1}                               监控项的名称
{ITEM.KEY1}                                监控项的参数
{ITEM.VALUE1}                              监控项目的值


图十六:默认action图


图十七:修改的action图

  “Conditions”指满足条件的主机。“Type of calculation”指的是条件的集合,分为两种:“AND”指条件必须同时满足,“OR”指满足其中的一个条件就可以。“Conditions”指满足条件的主机。图十八所表达的意思是:“当主机的状态不是“维护”并且主机已经触发“问题”并且主机组等于“project3 group”时的所有设备”。


图十八:报警条件

  “Operations”指对于满足条件的主机所采取的操作(图十九)。选择正确的发送周期“step”,默认为0,“operation type”指的是操作方式,可选择发送信息和执行远程指令;“send user groups”指发送的用户组;“send to users”发送到的用户;“send only to”采用的具体发送方式。


图十九:报警操作

  以上的这些设定好后就点“save”保存,当满足条件的主机触发报警时相关的用户就会收到短信提醒(图二十)。


图二十:短信提醒

3.3 添加 Hosts


  Host是Zabbix监控的基本载体,所有的监控项都是基于host的。通过Configuration->Hosts->Create Host来创建监控设备(图二一)。


图二一:HOST

  按提示填入Host name、Groups、IP ,其他选项默认即可,Link Templates 处选择一个模板,save即可成功添加设备。(注:如果host上没安装agent,添加后的状态会是unmonitor,会采集不到值,Zabbix自带大量的设备监控模板,我们添加主机时通过link到这些模板,就可以快速添加主机的监控项和告警触发条件。)
一类的hosts可以归属到同一个Host Group,便于分类管理同一类设备,在Configuration->Host Group->Create Host Group 可以添加设备组。

3.4 添加 Items


  Item是监控项,是监控的基本元素,每一个监控项对应一个被监控端的采集值。(图二二、二三)

  在Configuration->Hosts界面,我们能看到每个host所包含的items总数,点击对应主机的items项,可以看到具体的每个item信息,这些items可以引用自templates,也可以自己创建。


图二二:ITEM

  通过点击具体item名字可以修改已有监控项的属性,点击Satus的链接可以禁用/启用这个监控项。(注:我们可以通过新建一个template,在 template中禁用掉所有不需要用到的items,然后把同一类hosts link to这个template,就不用一台台主机去更改items)新增item可以通过点击右上角的create item来创建。


图二三:ITEM图

  按提示逐项填入相关信息即可,其中key是zabbix已经自带的取值方法,Application类似于host groups,是item的组。(item key也可以自定义,后面会讲到如何自定义监控项)。

3.5 添加 Triggers


  Trigger是触发器,当Items采集值满足triggers的触发条件时,就会产生actions。(图二四、二五)每一个trigger必须对应一个item,但一个item可以对应多个trigger。

  同样,通过点击Configuration->Hosts->Triggers中某个trigger的名字,可以修改trigger的属性。(注意:引用自template的trigger触发值是不能单独修改的,必须在template中修改,或是复制一个同样的trigger再修改,然后禁用掉之前的)新增trigger可以通过点击右上角的create trigger来创建。


图二四:Triggers图


图二五:Triggers图

  Expression中选择对应的item、触发方式及触发值,Severity是告警级别,根据trigger的严重性来选择。Zabbix 提供多种trigger触发方式供选择,常用的我们可以选择last value </>/=/#/N(最近一次采集值),或是选择maximal value for period of time (一段时间内的最大值),等等。可以根据实际需要来设定触发方式。

3.6 添加 Graphs


  Zabbix的Graphs功能很强大,可以为每一个item绘制图表,也可以把多个items绘制在一张图表内。通过 configuration->hosts选择要绘制图表的host,点击graphs,create graphs即可创建图表。(图二六、二七)


图二六:graph图


图二七:graph图

  Graph type:图表样式,有线状、柱状、饼状;还可以自定义图表大小,及Y轴最大最小值;通过add items可以添加在同一个图表中展示的多个items(注:注意每个item的颜色及取值范围,范围相差太大图表会显示不全);配置好的graphs在 monitoring->graphs中查看。在monitoring->last data下能快速查看每个host的每个item的graph。

3.7 添加 Screens


  Screen将多种信息放在一起展示,便于集中展示某个host的多个信息,或是比较多个hosts的同一种信息,这些信息可以为graphs、maps、server infos等等,几乎涵盖zabbix所有的监控信息。(图二八、二九)

  通过configuration->screen->creat screen来创建,创建时定义screen的行数和列数,点击对应单元格内的change,添加相应的信息。


图二八:screen图


图二九:screen图

  通过monitoring-screen,可以查看之前配置好的信息。

3.8 添加 Maps


  这里可以添加关于主机的拓扑图:configration-maps,在右上角可以create maps或者import map。这里我们点击crate maps 点save保存。(图三十、三一)


图三十:maps图


图三一:maps图

3.9 添加 SNMP监控


  Zabbix snmp的监控要在configration 中hosts中添加相关主机和snmp设备IP地址,一般用snmp监控网络设备就可以了。(图三二、三三)在我看来zabbix 对server的监控一般是用agent来做的,所以zabbxi不建议用snmp对server监控,这一点和cacit有本质的区别,因为cacti 主要是通过snmp对主机和网络设备进行监控的。


图三二:SNMP图


图三三:SNMP图

3.10 添加 Templates


  如果有大量的同一类设备,需要监控的信息也大致类似,一个个去修改相关参数比较麻烦,我们可以通过创建一个template来简化操作。(图三四)
Configuration->Host Groups->Template->Create Template。创建template后,在configuration->host->template下找到刚创建的 Template_MicrosoftSQLServer2008,修改相关的items、triggers、graphs等信息,使满足要求后link 到相关的host即可。


图三四:模板图

3.11 添加Reports(定制报表)


  在zabbix中关于报表的功能有三项:Avaliability report:(图三五)整个系统可用的系统报表提供过滤功能。


图三五:avaliability report图

  Most busy triggers top 100:(图三六)提供最常用的triggers 预览。


图三六:triggers top 100图

  Bar report :(图三七)可定制报表可以报多个报表整合到一起。


图三七:bar report图

3.12 Export/Import XML


  Zabbix提供将所有配置导出为标准XML格式的文件,同样,也支持导入标准格式的XML配置文件。

  通过configuration->Host->Export,勾选要导出的host,选择export即可导出xml文件到本地。(图三九)


图三九:export图

  Import可导入本地的XML文件,注意格式一定要符合标准要求,如果server上有同名的配置,会被覆盖掉。(图三八)


图三八:import图

  如果有大量的配置需要手动新增,譬如新增oralce监控,我们可以手动编写xml,一次导入所有的items和triggers,但要注意格式,可自己导出一个配置后参考。

四、Zabbix ITEM、模板及SNMP配置


4.1 Zabbix ITEM说明及配置


  Item是zabbix中最小的监控单位,相关的数据都由item提供。在item项中,最重要的是“Key”项,该项提供具体的监控点(图四十)。这里有几个重要的值,分别如下:

type                          监控类型(有zabbix agent、snmp、jmx等)
key                           监控值(对于windows监控点使用perf_counter前缀)
type of information           信息的类型(数值型、字符型、日志型、文本型等)
data type                     数据的类理(整数型、浮点型等)
Units                         单元(例如B=Byte)
Update interval               数值的更新周期


图四十:item图

  可以通过zabbix_get指令来获取被监控设备的数据值(图四一)。其中:-s指定需要取值的客户端;-p指定通讯端口;-k指定具体的键值。


图四一:zabbix_get图

  理论上只要是windows性能监视器可以查看的值,通过zabbix都可以监控到,但是对于不同的服务器安装的同类应用有可能存在监控键值不一样的情况,在windows系统下通过指令typeperf可以导出windows所有的监控键值(图四二、四三、四四)。


图四二:typeperf图


图四三:sql2005图


图四四:sql2008图

Windows 主机的监控可以参考图四三、图四四所导出来的监控点,在新增的item中新建key,格式为“perf_counter【监控值】”(例如 perf_counter[\Processor(_Total)\% Processor Time]),图四五是参考SQL2005模板结合导出的监控点文件整理的SQL2008模板,请重点对照Key项。


图四五:sql2008模板图

4.2 Zabbix页面显示项配置


  通过更改zabbix的配置文件可以控制zabbix的页面显示内容,在zabbix初始安装完成后,管理界面上的“configuration”中还有一个页面是“install”选项,存在误操作重新安装的风险,通过修改menu.inc.php文件可以禁用该显示项目(图四六)。

  1. vi /var/www/html/zabbix/include/menu.inc.php


图四六:menu.inc.php图

4.3 Zabbix SNMP说明及配置


  SNMP协议主要用在对网络设备的监控方面,如交换机、防火墙等。首先需要在被监控设备上启用SNMP协议(图四七),然后在zabbix中增加被监控的主机。对于未找到snmp模板的设备就需要自己手动添加item,这里通过snmp指令查询到相关值,然后根据实际情况定制自己所需要item。


图四七:启用snmp

  1. snmpwalk 172.16.1.1 -v1 -c public |egrep -i 'if(in|out)'|less
  2. snmpwalk -v1 -c public -On 172.16.1.1 ifInOctets.7
  3. snmpwalk -v1 -c public -On 172.16.1.1 ifOutOctets.7
  4. snmpwalk -v1 -c public -On 172.16.1.1 ifInOctets.9
  5. snmpwalk -v1 -c public -On 172.16.1.1 ifOutOctets.9
  6. snmpwalk 172.16.1.1 -v1 -c public |grep -i eth0
  7. snmpwalk 172.16.1.1 -v1 -c public |grep -i eth2

  通过第一条指令结合实际情况找出需要监控的网卡(一个设备上有多个网卡但仅启用了其中的两个),并且区分出内网网卡和外网网卡;通过其它指令进一步确认网卡的状态及实时的数据,根据得出的数据结合设备实际情况定制zabbix的snmp item项,注意OID的填写(图四八、四九、五十)。


图四八:snmpwalk指令


图四九:snmpwalk指令


图五十:SNMP item图