Solaris中syslog机制有什么用

这篇文章将为大家详细讲解有关Solaris中syslog机制有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

创新互联公司不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的网站设计、做网站质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式成都全网营销需求,让再小的品牌网站制作也能产生价值!

syslog机制负责发送、记录系统内核及工具所产生的信息,由syslog()调用、syslogd守护进程和配置文件/etc/syslog.conf组成。当系统内核及工具产生信息时,通过调用syslog(),把信息送往syslogd,syslogd再根据/etc/syslog.conf中的配置要求,将这些信息分别作如下处理:
1.记录到系统日志中;
2.输出到系统控制台上;
3.转发给指定的用户;
4.通过网络转发给其它主机上的syslogd。
通过syslog.conf的配置,我们可以灵活地对信息的发送和保存进行控制。

syslogd进程在系统启动时由/etc/rc2.d/S74syslog启动。如果需要手工启动或停止syslogd,可以使用命令:
# /etc/init.d/syslog start | stop

/etc/syslog.conf文件中的一项配置记录由“选项”(selector)和“动作”(action)两个部分组成,两者间用tab制表符进行分隔。而“选项”又由一个或多个形如“类型.级别”格式的保留字段组合而成,各保留字段间用分号分隔。

保留字段中的“类型”代表信息产生的源头,可以是:
kern 由kernel产生的信息;
user 由用户进程产生的信息。对那些由程序或不在此列出的工具产生的信息,其缺省类型都是“user”;
mail 邮件系统产生的信息;
daemon 系统守护进程的信息,如in.ftpd、telnetd;
auth 由login, su, getty等进行身份认证时产生的信息;
syslog 由syslogd自己内部产生的信息;
lpr 行打印spooling系统的信息;
news USENET 网络新闻系统的信息;
uucp UUCP系统信息;
cron cron和at工具信息;
local0-7 保留为local使用;
mark syslogd内部产生的时间戳信息;
* 除mark之外的所有其它类型(此符号不可用以代表所有级别)。

保留字段中的“级别”代表信息的重要性,可以是:
emerg 紧急,处于Panic状态。通常应广播到所有用户;
alert 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃;
crit 关键状态的警告。例如,硬件故障;
err 其它错误;
warning 警告;
notice 注意;非错误状态的报告,但应特别处理;
info 通报信息;
debug 调试程序时的信息;
none 通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。

“动作”域指示信息发送的目的地。可以是:
/filename 日志文件。由绝对路径指出的文件名,此文件必须事先建立;
@host 远程主机;
user1, user2 指定用户。如果指定用户已登录,那么他们将收到信息;
* 所有用户。所有已登录的用户都将收到信息。

我们来看看/etc/syslog.conf文件中的实例:
……
*.err;kern.debug;daemon.notice;mail.crit /var/adm/messages
……

这行中的“action”就是我们常关心的那个/var/adm/messages文件,输出到它的信息源头“selector”是:
*.err - 所有的一般错误信息;
kern.debug - 核心产生的调试信息;
daemon.notice - 守护进程的注意信息;
mail.crit - 邮件系统的关键警告信息

于是我们对/var/adm/messages中的东东怎么来的大致清楚一点了。再看下面(不理会那个注释符号“#”):
……
# if a non-loghost machine chooses to have authentication messages
# sent to the loghost machine, un-comment out the following line:
#auth.notice ifdef(‘LOGHOST’, /var/log/authlog, @loghost)
……

这里涉及Solaris下的loghost和m4宏解释器。loghost好理解,就是在局域网内多台SUN机器中指定一台作为loghost,大家的syslogd有水就都往它上面灌。具体谁是loghost在/etc/hosts中定义:
……
192.168.1.11 host1 loghost
192.168.1.22 host2
……

m4负责解释ifdef,它的事迹这里就不去深究了(要考SA的兄弟姐妹们可要去看啊,有题的),反正上面那个ifdef的意思就是:如果本机是loghost,那么信息送到/var/log/authlog中,否则送到@后的主机上。

下面作为一个示例,看看如何使用syslog机制来对telnet登录进行记录。
Telnet和ftp等许多网络服务是通过inetd来提供的。因此先检查一下inetd使用了什么类型和级别的syslog调用:

# man inetd
……
-t Instructs inetd to trace the incoming
connections for all of its TCP services. It does this by
logging the client’s IP address and TCP port number,
along with the name of the service, using the syslog(3)
facility. UDP services can not be traced. When tracing is
enabled, inetd uses the syslog facility code ``daemon’’
and ``notice’’ priority level.
……

就是说,启动带-t选项的inetd,它才会调用syslog来记录TCP服务的细节,类型是daemon,级别是notice。于是先修改inetd的启动脚本/etc/init.d/inetsvc,找到inetd那行,改为:
/usr/sbin/inetd -s -t &

前面看到,daemon.notice已经包括在syslog.conf中,action是/var/adm/messages。如果action不想变,那么就不用做修改了。

重启一下syslogd:
# /etc/init.d/syslog stop
# /etc/init.d/syslog start

重启一下inetd:
# /etc/init.d/inetsvc stop
# /etc/init.d/inetsvc start

试验一下结果。开一个窗口监视有没有新的message来:
# tail -f /var/adm/messages

从另一台机器上telnet或ftp上来。上面的监视窗口中应该有输出(^C 终止监视):
……
Jun 18 12:08:42 host1 inetd[755]: [ID 317013 daemon.notice] ftp[759] from 192.168.1.88 1082
Jun 18 12:09:13 host1 inetd[755]: [ID 317013 daemon.notice] telnet[760] from 192.168.1.88 1083
Jun 18 12:11:22 host1 inetd[755]: [ID 317013 daemon.notice] ftp[771] from 192.168.1.88 1084

关于“Solaris中syslog机制有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


本文题目:Solaris中syslog机制有什么用
分享地址:http://pwwzsj.com/article/iepiep.html