默认情况下,sudo执行的命令都会记录到/var/log/secure,为方便分析,想让它记录到其他地方
visudo
在最后加入以下两行,保存退出
Defaults logfile=/var/log/sudo.log
Defaults !syslog
这样设置后,sudo的日志就会保存到/var/log/sudo.log
文章属于类别 Linux
单独记录sudo的日志
spine的make错误:cannot find -lz
./configure时没有报错
/usr/bin/ld: cannot find -lz
vi config.log
搜索lz
可以看到如下错误
configure:19207: $? = 0
configure:19210: test -s conftest
configure:19213: $? = 0
configure:19226: result: yes
configure:19240: checking for deflate in -lz
configure:19270: gcc -o conftest -g -O2 conftest.c -lz -lpthread -lm >&5
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
configure:19276: $? = 1
configure: failed program was:
| /* confdefs.h. */
Google下checking for deflate in -lz,发现跟zlib有关
yum -y install zlib-devel
就可以正常make了
Xen和KVM虚拟机管理工具:Convirture
又一款Xen和KVM虚拟机管理工具:Convirture
产品主页:http://www.convirture.com/index.php
分企业版和开源版
主要特性
1.开源免费
2.多平台支持,能同时支持xen和vmware等虚拟机平台的管理
3.可以实现虚拟机服务器的控制,如打开、关闭、暂停、恢复等
4.可以灵活地对虚拟机服务资源进行配置
5.实时的数据监控、如CPU、内存、硬盘等;可以查看所有的服务器配置信息,快照功能
6.虚拟服务器可实现迁移
7.可以通过管理平台快速创建虚拟机系统、创建系统采用模板化配置管理
8.可以在管理平台上实现对虚拟机的桌面化管理
ConVirt 2.0 Open Source is the leading open source product for managing Xen and KVM, enabling you to standardize and proactively manage your virtualized environment in a centralized fashion. With ConVirt, you can create and provision “gold” images, diagnose performance problems, and balance load across the data center, all from a highly interactive Web based interface and with consistent feature set across open source virtualization platforms. As an open source product, ConVirt 2.0 Open Source is free to download and use. With a large user community and the commercial backing of Convirture, companies large and small use ConVirt as the strategic solution to their virtualization management needs.
Linux下SecureCRT的替代品:PAC Manager
在windows下管理linux服务器,经常用的是securecrt,它主要特性有
1、标签式管理
2、标签可以克隆,方便在不同标签完成不同工作
3、服务器列表支持分类
4、缓存key的 passphrase,只需要输入一次,后续使用该key的服务器访问都不需要再输入
5、Forward agent.
大家通过用securecrt登录到2台服务器,2台服务器上都有自己的key,这时,2台服务器上不需要额外的设置即可以相互scp文件,这个过程用的就是 SSH的Forward agent特性,它把认证进行转发。
而我们在linux下管理linux,比较常用的是gnome terminal,这个与securecrt比起来,未免太原始了,敲命令,敲到手抽筋,最近在网上找securecrt的替代工具,竟然在WOW!Ubuntu上找到了PAC Manager 。
http://wowubuntu.com/pac-254.html
它主要特性:
1、标签式管理
2、标签可以克隆,方便在不同标签完成不同工作
3、服务器列表支持分类
4、Forward agent(这个可以通过PAC本身的配置实现,有可以通过修改/etc/ssh/ssh_config的配置来实现).
对比下可以看到,PAC Manager不支持缓存passphrase,这意味着,你每登录一台服务器 ,你都需要输入一次你key的 passphrase,但这个可以通过修改系统配置来达到.
我在ubuntu 10.10上安装了,下面先来做简单介绍
下面说下PAC Manager的图形化操作
添加组:
PAC窗口左上角“GROUP”显示的是组信息,点击添加可以新建分组
左下角是添加服务器列表,点击添加可以添加服务器信息
填好IP,用户名和密码等,如果是用key登录,密码留空即,再指定key的位置
“Edit connection” -> “Connections Properties” -> “Advanced Options”:
-o “IdentityFile=/path/to/my_private_key_file”
如果想登录2台服务器,可以相互scp文件,则需要在“CONNECTION PROPERTIES”里把“Forward Agent”选上。
这样就可以进行连接了
每台服务器都需要指定key,这个未免太麻烦了,另外有些服务器需要使用另一个key,而且每次使用key登录服务器,都需要输入key的passphrase,为解决这个问题,我们只要把要用到的private key都交给ssh-agent来进行管理,,每个key只需要输入一次passphrase,后面的登录,就不用输入密码了。
ssh-agent 是个管理 private key 的 passphrase 的工具,启动
ssh-agent
添加需要被ssh-agent管理的key,假设你的private key名是id_rsa
ssh-add id_rsa
此时需要输入一次 private key 的 passphrase ,输入正确后,passphrase 就归 ssh-agent 管理,往后的 ssh 操作,就不需要询问 passphrase 了
ssh-add -l 可以看到现有托管的key
PAC Manager的配置文件保存在/home/user/.pac/pac.yml
如果有大量服务器需要添加,可以写脚本,直接生成配置文件放到/home/user/.pac/pac.yml
转载:linux日志logger
一 通过logger命令记录日志
logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。
日志的级别
日志的级别分为七级,从紧急程度由高到底:
emerg 系统已经不可用,级别为紧急
alert 警报,需要立即处理和解决
crit 既将发生,得需要预防。事件就要发生
warnig 警告
err 错误信息,普通的错误信息
notice 提醒信息,很重要的信息
info 通知信息,属于一般信息
debug 这是调试类信息
1。解决方法:
编辑syslog.conf,
#vi /etc/syslog.conf
在第一行加入local3.none,使得设备local3的日志不记录在messages文件里,
# Log anything (except mail) of level info or higher.
# Don’t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local1.none;local3.none /var/log/messages
将设备local3的所有级别的信息都记录在userlog文件里,
#user log
local3.* /var/log/userlog
重新加载syslog服务的配置文件,
[root@KEVEIN Slides]# service syslog reload
Reloading syslogd… [ OK ]
Reloading klogd… [ OK ]
2。测试:
测试机器的环境:
OS:Red Hat Enterprise Linux 5 update 3
Network: 192.168.0.100/24 Gateway:192.168.0.1
[root@KEVEIN Slides]# ping 192.168.0.1 | logger -it logger_test -p local3.notice&
[2] 22484
命令logger -it logger_test -p local3.notice中的参数含义:
-i 在每行都记录进程ID
-t logger_test 每行记录都加上“logger_test”这个标签
-p local3.notice 设置记录的设备和级别
[root@KEVEIN Slides]# tail -f /var/log/userlog
Oct 6 12:48:43 kevein logger_test[22484]: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
Oct 6 12:48:43 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=1 ttl=253 time=49.7 ms
Oct 6 12:48:44 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=2 ttl=253 time=68.4 ms
Oct 6 12:48:45 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=3 ttl=253 time=315 ms
Oct 6 12:48:46 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=4 ttl=253 time=279 ms
Oct 6 12:48:47 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=5 ttl=253 time=347 ms
Oct 6 12:48:49 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=6 ttl=253 time=701 ms
Oct 6 12:48:50 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=7 ttl=253 time=591 ms
Oct 6 12:48:51 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=8 ttl=253 time=592 ms
Oct 6 12:48:52 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=9 ttl=253 time=611 ms
Oct 6 12:48:53 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=10 ttl=253 time=931 ms
ping命令的输出成功输出到/var/log/userlog文件中,实验成功。
二 日志回卷
系统时时刻刻都在产生日志,如果不及时清理,很快就会灌满硬盘,但如果要手工清理,又很麻烦。这种情况下,logrotate 这个程序很好的完成这个任务。
logrotate 用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过一个叫做crond的守护进程来执行,logrotate 还可以用于压缩日志文件,以及发送日志到指定的E-mail 。
logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:
参数 功能
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress
和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory
转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript
在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript
在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count
指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list
让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm- orig, .rpmsave, v, 和 ~
size size
当日志文件到达指定的大小时才转储,Size 可以指定bytes (缺省)以及KB (sizek)或者MB (sizem).
系统对 logrotate 的执行和操作:
在/etc/cron.daily/路径下,有一个logrotate 的shell脚本,所以cron程序会每天调用一次logrotate程序,然后logrotate程序回去检查日志文件是否符合回滚条件,并执行相应动作。
执行操作:/usr/sbin/logrotate /etc/cron.daily/logrotate.conf;
在/etc/logrotate.conf文件中,有如下选项:
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
这个选项说明在执行logrotate程序时,同时执行/etc/logrotated目录下的所有脚本。
执行动作示例:每月清除/var/log/wtmp目录中的相关内容:
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
实验:
1.
环境: Red Hat Enterprise Linux 5.3
实验描述:
(1)用Cron执行logrotate命令,每分钟检查一次目标日志文件是否满足回卷限制。(2)配置/etc/logrotate.conf 或者建立一个自定义的/etc/logrotate.d /userlog
(3)编辑/etc/syslog.conf 使得记录的日志信息可以写入到/var/log/userlog中。
[root@KEVEIN ~]# crontab -e
* * * * * /usr/sbin/logrotate /etc/logrotate.conf //写入这条命令
[root@KEVEIN ~]# vi /etc/logrotate.conf
***省略***
/var/log/userlog {
daily
size 10k ////在这里单位大小写敏感应,应为 k or M
create 0664 root root
rotate 3
prerotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
在这里一定要加prerotate这段脚本,这样可以使syslog程序重新读取配置文件,这样做的作用是让syslog程序释放对userlog文件持有的文件描述符,否则即使日志文件
回滚,syslog也不会向新产生的日志文件写数据。举个例子,如果不加这段脚本,即使logrotate程序将userlog文件截断并重命名为userlog.1,但是syslog程序仍然会向原userlog文件即userlog.1中写入数据。
[root@localhost ~]# vi /etc/syslog.conf
*****省略*****
*.info;mail.none;authpriv.none;cron.none;local1.none;local3.none /var/log/messages
#user log
local3.* /var/log/userlog
重新加载配置文件
[root@KEVEIN ~]# service syslog reload
Reloading syslogd… [ OK ]
Reloading klogd… [ OK ]
重启crond服务
[root@KEVEIN ~]# service crond restart
Stopping crond: [ OK ]
Starting crond: [ OK ]
测试:
通过logger命令向userlog中写入数据,测试logrotate的功能
[root@KEVEIN ~]# ping 192.168.1.1 | logger -it logger_test -p local3.notice&
[1] 5144
[root@KEVEIN ~]# cd /var/log/
[root@KEVEIN log]# ll -h userlog*
-rw-r–r– 1 root root 1.6K Oct 11 19:59 userlog
[root@KEVEIN log]# ll -h userlog*
-rw-r–r– 1 root root 6.1K Oct 11 20:00 userlog
//虽然执行过logrotate,但是没有达到限制值
[root@KEVEIN log]# ll -h userlog*
-rw-rw-r– 1 root root 0 Oct 11 20:08 userlog
-rw-rw-r– 1 root root 15K Oct 11 20:08 userlog.1
-rw-r–r– 1 root root 18K Oct 11 20:05 userlog.2
需要注意的是,当达到限制条件时,logrotate程序会将目标日志文件userlog截断,并命名为userlog.1,将原userlog.1改名为userlog.2,以此类推,syslog程序始终向userlog文件中写数据。