Author:


Nagios更改报警邮件发件人地址

Posted by – 2010-03-10

#发现nagios的发件人地址是这样的:
#“运行nagios的用户”@“服务器上hosts文件中配置的主机名”

#觉得不爽,改之
#nagios发邮件是调用sendmail,所以牵扯到sendmail的配置
#centos下yum安装的sendmail配置文件路径是在/etc/mail/下
#sendmail.cf是Sendmail的主配置文件,其中的内容为特定宏,因为文件中的宏代码实在是太多了。sendmail.cf通常是由一个以mc结尾的文件编译生成。
#先备份下
cp sendmail.cf sendmail.cf.default
cp sendmail.mc sendmail.mc.default
vi sendmail.mc
#—————————-引用文字-开始—————————-
#找到:
dnl MASQUERADE_AS(`mydomain.com’)dnl
#改为自己想要的地址:
MASQUERADE_AS(`chengyongxu.com’)dnl
#—————————-引用文字-结束—————————-

#然后编译一下
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
#如果报下面的错误
#—————————-引用文字-开始—————————-
sendmail.mc:10: m4: cannot open `/usr/share/sendmail-cf/m4/cf.m4′: No such file or directory
#—————————-引用文字-结束—————————-
#请安装sendmail-cf
yum install sendmail-cf

#重启sendmail
service sendmail restart

#这样再收到报警邮件发件人变成了
nagios@chengyongxu.com

#引申
#如果把自己的地址配成yahoo.com
#那么是不是可以伪装为yahoo邮箱呢?

Linux下快速找到占用大量磁盘空间的新文件

Posted by – 2010-01-06

半夜收到N条服务器报警短信,发现40分钟内少了3个G空间。
find / -cmin -600 -size +10M
-cmin -600 #是600分钟内创建的文件
-size +10M #是大于10M的文件

扩展:
-mtime -n +n #按更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按创建时间来查找文件,-n指n天以内,+n指n天以前

-size -n +n单位 #按大小来查找文件,单位可以是b,c,w,k,M,G

常用的命令,但不是所有的参数都常用,不过还是记一笔吧,不然下次又要man find了

使用Audacity编辑音频

Posted by – 2010-01-02

#通过蓝牙向手机传音乐,文件太大了,传不了,还是剪一段吧
#用Audacity,是跨平台的
#下载地址在
http://audacity.sourceforge.net/download/
#选择你自己的操作系统版本
#Mac下的导出MP3用的lame库地址在
http://lame.buanzo.com.ar/Lame_Library_v3.98.2_for_Audacity_on_OSX.dmg

#Mac下使用,:
4
#Linux下使用:
1
2
3

Suse下搭建svn服务

Posted by – 2010-01-02

####################################
#SVN Configuration
#Author:楚霏
#Date: 2010-01-02
#Env: SuSe Linux Enterprise Desktop 11
####################################

一、安装
####################################
#由于是做桌面,管理自己的文档代码,所以采用的YAST安装
#搜索subversion所在的源,使用daemon的方式的,就不依赖WEB服务器了
#打开http://software.opensuse.org/search
#输入subversion进入查找,如下图:

1

#如果用的是opensuse,注意选择正确的版本,然后选择
2

#接下来的按提示非常容易就安装好了
#也可以打开1 key install上边那个链接,把地址复制增加到YAST的更新源里(url方式),直接search安装,效果是一样的
http://download.opensuse.org/repositories/devel:/tools:/scm:/svn/SLE_11/
####################################

二、服务端配置
####################################
#在相应的位置建服务端源目录
#mkdir -p /wwwroot/chengyongxu.com/svnroot
#启动服务端
svnserve -d -r /wwwroot/chengyongxu.com/svnroot
#创建一个版本库
svnadmin create shells
#进入目录配置一个权限
cd /wwwroot/chengyongxu.com/svnroot/shells
vi authz
#增加组和成员的权限

#----------------------------增加文字-开始----------------------------
admin = admin

[shells_svn:/]
@admin = rw
#----------------------------增加文字-结束----------------------------

vi passwd
#增加密码,一行一个用户
#----------------------------增加文字-开始----------------------------
admin = yourpassword
#----------------------------增加文字-结束----------------------------
vi svnserve.conf
#去年下边4行的注释,千万注意行首不要留空格,不然会报错
#----------------------------引用文字-开始----------------------------
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
#----------------------------引用文字-结束----------------------------
####################################

三、客户端配置
####################################
#Mac OS和Windows不再赘述
#Linux下的客户端可以用esvn,如果你有更好的客户端别忘了推荐下哈

3
#增加一个本地的SVN工作目录
#然后就可以checkout了
#esvn执行操作时会显示执行的命令,当然,你在本地终端执行命令也是很方便的,例如检出:
svn checkout svn://127.0.0.1/shells /home/ftp/work/ --username admin --password yourpassword --non-recursive --non-interactive
#完成

备忘一下我的vim配置

Posted by – 2009-12-04


"======================================================================================
"General settings
"======================================================================================
syntax on
set expandtab
set guifont=Courier\ New\ 12
set guifontwide=STXihei:h14
"set guifont=Bitstream\ Vera\ Sans\ Mono:h14
"set nomacatsui
"set termencoding=macroman
set backspace=indent,eol,start
set whichwrap=b,s,<,>,[,]
colorscheme desert
set cmdheight=1
set laststatus=2
set shiftwidth=4
set tabstop=4
set number
set nolinebreak
set nocompatible
set nobackup
set nowb
set noswapfile
set mouse=a
set incsearch
set hlsearch
set history=400
set hidden
set expandtab
set confirm
set et
set wrap
set cindent
set ambiwidth=double
set foldlevel=999
set helplang=cn
set cmdheight=2
set mouse=a
set encoding=utf-8
"set go=e
set backspace=indent,eol,start

set ambiwidth=double

set dictionary-=/opt/local/share/vim/vim72/plugin/funclist.txt dictionary+=/opt/local/share/vim/vim72/plugin/funclist.txt
set complete-=k complete+=k

function! InsertTabWrapper()
let col=col('.')-1
if !col || getline('.')[col-1] !~ '\k'
return "\"
else
return "\"
endif
endfunction

"Remap the tab key to select action with InsertTabWrapper
inoremap =InsertTabWrapper()

map :NERDTreeToggle
"imap :NERDTreeToggle

if has("gui_macvim")
let macvim_skip_cmd_opt_movement = 1
let macvim_hig_shift_movement = 1

set transparency = 2
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
"GUI界面里的字体,默认有抗锯齿
set guifont=Monaco:h12:cANSI
"行间距,如果默认值太小,代码会非常纠结
set linespace=4
"用<>调整缩进时的长度
set shiftwidth=4
"制表符的长度,统一为4个空格的宽度
set tabstop=4
"初始窗口的宽度
set columns=195
"初始窗口的高度
set lines=45
"初始窗口的位置
winpos 52 42

"显示行号
set number
"行号栏的宽度
set numberwidth=4
"禁止自动换行
set nowrap
"在输入命令时列出匹配项目,也就是截图底部的效果
set wildmenu
"显示光标位置
set ruler
"分割窗口时保持相等的宽/高
set equalalways

"匹配括号的规则,增加针对html的<>
set matchpairs=(:),{:},[:],<:>
"让退格,空格,上下箭头遇到行首行尾时自动移到下一行(包括insert模式)
set whichwrap=b,s,<,>,[,]
"取消自动备份
set nobackup
"保存关闭文件之前保留一个备份
set writebackup

"js语法高亮脚本的设置
let g:javascript_enable_domhtmlcss=1

"设置自定义的快捷键
let mapleader=","
let g:mapleader=","

""""""""""""""""""""""""""""""
" bufExplorer插件的设置
""""""""""""""""""""""""""""""
let g:bufExplorerSortBy='mru'
let g:bufExplorerSplitRight=0
let g:bufExplorerSplitVertical=1 .
let g:bufExplorerSplitVertSize = 30
let g:bufExplorerUseCurrentWindow=1
autocmd BufWinEnter \[Buf\ List\] setl nonumber

""""""""""""""""""""""""""""""
" winManager插件的设置
""""""""""""""""""""""""""""""
let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
let g:winManagerWidth = 30
let g:defaultExplorer = 0
nmap wm :WMToggle

""""""""""""""""""""""""""""""
" netrw插件的快捷键
""""""""""""""""""""""""""""""
let g:netrw_winsize = 30
nmap fe :Sexplore!

macm File.Save key=
macm File.Undo key=
macm File.Copy key=
macm File.Paste key=
macm File.Cut key=
macm File.Select\ All key=

endif

"Tab configuration
map tn :tabnew
map te :tabedit
map tc :tabclose
map tm :tabmove
map tt :tabnext
map tp :tabprevious
map tl :tablast
map tf :tabfirst
try
set switchbuf=usetab
set stal=2
catch
endtry

Linux下命令配置无线网

Posted by – 2009-12-01

因为不常用,所以总是忘,还是记一下吧

#列出搜索到的无线网,记下essid,也就是无线路由器的“名字”
iwlist 无线网卡名 scan
例如:iwlist wlan0 scan

#连接没有设密码的无线网络
iwconfig 无线网卡名 essid wireless essid name
例如:iwconfig wlan0 essid cisco

#连接有密码的无线网络
iwconfg 无线网卡名 essid wireless essid name key password
例如:iwconfg wlan0 essid cisco key idonotknow

#启用无线网卡
ifconfig wlan0 up

#通过dhcp获取IP
dhclient wlan0
#用dhcpcd wlan0也可以

Nginx的worker_cpu_affinity详解

Posted by – 2009-11-09

配置文件中的worker_cpu_affinity可以用来绑定每个nginx进程所使用的CPU
官方的解释是:
#----------------------------引用文字-开始----------------------------
Syntax: worker_cpu_affinity cpumask [cpumask...]
Default: none
Linux only.
With this option you can bind the worker process to a CPU, it calls sched_setaffinity().
For example,
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
Bind each worker process to one CPU only.
worker_processes 2;
worker_cpu_affinity 0101 1010;
Bind the first worker to CPU0/CPU2, bind the second worker to CPU1/CPU3. This is suitable for HTT.
#----------------------------引用文字-结束----------------------------

最关键的地方没说清楚,怎样来表示每个CPU?

经过漫天的搜索和多次尝试发现
详解

那么,16核的cpu每个进程分配到一个cpu就应该是
配置

测试一下,用别的服务器发出大量请求
ab -n 20000 -k http://您的ip或域名/index.php

在被测试的服务器上查看cpu状态
top
然后按1
16cpu信息

可以看到每个cpu都在工作了。

Nagios冗余设置

Posted by – 2009-11-09

#主监控服务器搬迁后,原来的配置还是留下做个冗余比较好。
#原主监控机ip为10.0.0.52
#新主监控机ip为10.0.0.166
#原监控机上把配置文件都备份一下
#只留下一个被监控机,一个服务


#在新监控机上更改
#先请允许原主监控机监控自己
vi /usr/local/nrpe/etc/nrpe.cfg
#将allowed_hosts=127.0.0.1,10.0.0.166
#更改为
#----------------------------引用文字-开始----------------------------
allowed_hosts=127.0.0.1,10.0.0.52,10.0.0.166
#----------------------------引用文字-结束----------------------------
#再增加对check_nagios命令的定义
vi /usr/local/nagios/etc/nrpe.cfg
#增加下边这行
#----------------------------引用文字-开始----------------------------
command[check_nagios]=/usr/local/nagios/libexec/check_nagios -e 5 -F /usr/local/nagios/var/status.dat -C /usr/local/nagios/bin/nagios
#----------------------------引用文字-结束----------------------------
service nagios reload


#在原监控机上更改
vi hosts.cfg
#----------------------------引用文字-开始----------------------------
define host{
host_name 10.0.0.166
alias 166.chengyongxu.com
address 10.0.0.166
max_check_attempts 5
#check_interval 1
#retry_interval 1
check_period 24x7
contact_groups sa_groups
notification_interval 30
#first_notification_delay #
notification_period 24x7
notification_options d,u
}
#----------------------------引用文字-结束----------------------------

vi services.cfg
#----------------------------引用文字-开始----------------------------
#monitor 166's nagios
define service{
host_name 10.0.0.166
service_description check_nagios
check_command check_nrpe!check_nagios
max_check_attempts 3
check_interval 5
retry_interval 1
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,u,c
#contacts contacts(*)
contact_groups sa_groups
}
#----------------------------引用文字-结束----------------------------
service nagios reload

#完成了

#没有采用主监控机挂掉后,备用机自动接替主监控的工作。原因是:
#1.因为nagios进程还是非常强健的,之前的那台跑了半年多nagios进程从未挂掉过,当机房受攻击,带宽迅速耗尽的情况下也能发出短信;
#2.主监控都挂了,还不赶快修复?那会不监控也不会有什么损失;
#3.本文所说的设置只为了应付两种情况:主监控机突然断电断网和nagios假死。

Nagios监控磁盘I/O

Posted by – 2009-11-05

#官方默认插件中并无此插件,但官方还是提供了这个插件的下载,地址在:
http://exchange.nagios.org/directory/Plugins/Uncategorized/Operating-Systems/Linux/check_iostat-%252D-I-2FO-statistics/details

#注意:保证所有被监控机上都安装了sysstat包,并可以执行iostat命令

#下载之后,放在每台被监控机的/usr/local/nagios/libexec/目录下
#然后更改属组,赋予可执行权限
chown nagios:nagios /usr/local/nagios/libexec/check_iostat
chmod 755 !$
#被监控机上更改nrpe的配置文件
vi /usr/local/nagios/etc/nrpe.cfg
#增加下边这两行,如果有更多磁盘,相应增加即可,至于警告和严重警告的值,请适当调整

#----------------------------引用文字-开始----------------------------
command[check_sda_iostat]=/usr/local/nagios/libexec/check_iostat -d sda -w 100 -c 200
command[check_sdb_iostat]=/usr/local/nagios/libexec/check_iostat -d sdb -w 100 -c 200
#----------------------------引用文字-结束----------------------------
#重启服务
service nrpe restart

#打开主监控机上的servicegroups.cfg,我选择的是监控所有机器的I/O,所以在all_hosts组下增加下面一段
#----------------------------引用文字-开始----------------------------
define service{
hostgroup_name all_hosts
service_description check_sda_iostat
check_command check_nrpe!check_sda_iostat
max_check_attempts 4
check_interval 1440
retry_interval 5
check_period 24x7
notification_interval 1440
notification_period 24x7
notification_options w,u,c
#contacts contacts(*)
contact_groups sa_groups
}
#----------------------------引用文字-结束----------------------------

#如果只监控个别机器,请在services.cfg中相应的机器下增加
#----------------------------引用文字-开始----------------------------
define service{
host_name 10.0.0.166
service_description check_sda_iostat
check_command check_nrpe!check_sda_iostat
max_check_attempts 3
check_interval 10
retry_interval 5
check_period 24x7
notification_interval 30
notification_period 24x7
notification_options w,u,c
#contacts contacts(*)
contact_groups sa_groups
}
#----------------------------引用文字-结束----------------------------
#检查配置文件并重新加载服务
service nagios checkconfig
service nagios reload

需要层次论与打麻将

Posted by – 2009-11-04

马斯洛的需要层次理论是经典得再不能经典的心理学理论了,学习心理学的人应该都会多次听到不同的老师在不同的学科谈及这一理论,今天翻看闲书的时候发现北邮电的赵玉平老师也在讲这个理论,不过他用来说明需要层次理论的例子比较有意思,用的是中国人熟知的“打麻将”。

需要层次论的基本观点:

(1)生理的需求。这是人类维持自身生存的最基本要求,包括饥、渴、衣、住、性等方面的要求。

(2)安全的需求。这是人们保障自身安全,避免各种危险和威胁的需求,如避免失业和财产损失、避免职业病的侵袭、解除严酷的监督等方面的需求。

(3)社交的需求。一是爱的需求,即人人都需要伙伴之间、同事之间的关系融洽或保持友谊和忠诚;人人都希望得到爱情,希望爱别人,也渴望接受别人的爱。二是归属的需求,即人都有一种归属于一个群体的感情,希望成为群体中的一员,并相互关心和照顾。感情上的需求比生理上的需求来得细致,它和一个人的生理特性、经历、教育、宗教信仰都有关系。

(4)尊重的需求。人人都希望自己有稳定的社会地位,要求个人的能力和成就得到社会的承认。

(5)自我实现的需求。这是最高层次的需要,它是指实现个人的理想、抱负,尽量发挥个人的能力,完成与自己的能力相称的一切事情的需要。自我实现的需求是在努力挖掘自己的潜力,使自己越来越成为自己所期望的人物。

五种需求像阶梯一样从低到高,按层逐级递升,但这种次序不是完全固定的,可以变化,也有很多例外情况。一般来说,某一层次的需求相对满足了,就会向高一层次发展,追求更高一层次的需求就成为驱使行为的动力。

同一时期,一个人可能有几种需求,但每一时期总有一种需求占支配地位,对行为起决定作用。任何一种需求都不会因为更高层次需求的发展而消失。各层次的需求相互依赖和重叠,高层次的需求发展后,低层次的需求仍然存在,只是对行为影响的程度太小。
用打麻将来说明:

打麻将这一游戏:有的人打麻将是为了赢钱,这是典型的物质需求,是一楼层面的;有的人打麻将只要不输钱就可以,这就是安全需求,上升到了二楼;有的人打麻将是为了哥几个聚在一起热闹热闹,这是社会需求,已经上升到三楼了;有的人打麻将是为了向别人证明自己聪明、牌技好,这个是尊严的需求,是第四楼了;还有的人打麻将不为别的,就为了和牌时候的快感,完成挑战性任务后的内心满足,这就是自我实现了,是五楼的需求。一个游戏可以满足人的五大需求,所以这个游戏一定是有着强大生命力的。我们的管理制度和市场营销方式如果都能设计成这种模式,可以全方位满足各个层面的差异化需求,那一定也可以大行其道、所向无敌。


原文地址:http://www.xlxcn.net/archives/1710