通过syslog接收远程日志

通过syslog接收远程主机的日志,需要做一些环境配置。

客户机A通过syslog将日志信息发送到服务主机B(或称日志采集服务器)。以下说明配置过程
(我的实验环境是,客户机A:Solaris 10,服务主机B:redhat linux企业服务器版):  www.2cto.com

客户机A配置:

vi /etc/syslog.conf

*.info;*.!emerg;mail.none;authpriv.none;cron.none /var/log/messages

。。。。。。

# 自定义syslog消息处理方式,这里是发送到远程主机

syslog.info                                     @10.10.65.143

其中,10.10.65.143就是服务主机B的ip地址。  www.2cto.com

重启syslog:

# svcadm restart system-log

或者

# /etc/init.d/syslog restart

服务器B配置:

首先确定远程发来的消息是哪一级的,比如Panabit发过来的都是emerg级消息,某些路由器用的是notice级。实在不行就先用info然后过滤(具体办法见后文)。

vi /etc/sysconfig/syslog

SYSLOGD_OPTIONS="-r -x -m 0"

-r: 打开接受外来日志消息的功能,其监控514 UDP端口;

-x: 关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;

vi /etc/syslog.conf

# 把emerg等级的消息从messages中除开,免得重复记录:

*.info;*.!emerg;mail.none;authpriv.none;cron.none /var/log/messages          # *.!emerg 表示不记录emerg级的消息

#*.emerg    *                   # 注释掉原来的emerg,不将emerg级消息显示到控制台

# 接收远程主机发来的syslog日志信息,输出到/var/log/mylog

syslog.info                                             /var/log/mylog

然后重启syslog:service syslog restart

这样就把远程日志写入/var/log/mylog并且不影响本机syslog工作了。

客户机A上的发送syslog日志小程序:

#include <stdio.h>

#include <syslog.h>

int main(int argc, char* argv[])

{

//openlog(argv[0], LOG_CONS | LOG_PID, LOG_USER);

int count = 0;

while(count<5){

syslog(LOG_SYSLOG | LOG_INFO, "%d:, syslog info test", count);

count++;

}

//closelog();

return 0;

}

客户机A上该程序运行后,在服务器B的/var/log/mylog中查看

[[email protected] socket]# tail -f /var/log/mylog

Jul  1 13:40:35 localhost syslogd 1.4.1: restart (remote reception).

Jul  1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 0:, syslog info test

Jul  1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 1:, syslog info test

Jul  1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 2:, syslog info test

Jul  1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 3:, syslog info test

Jul  1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 4:, syslog info test

可见,日志信息已经接收过来了。

【附录】:关于/etc/syslog.conf写法,这里有个详细说明:

/etc/syslog.conf 根据如下的格式定义规则:

facility.level action

设备.优先级 动作

1、facility 定义日志消息的范围,其可使用的key有:

auth -由 pam_pwdb 报告的认证活动。

authpriv -包括特权信息如用户名在内的认证活动

cron -与 cron 和 at 有关的计划任务信息。

daemon -与 inetd 守护进程有关的后台进程信息。

kern -内核信息,首先通过 klogd 传递。

lpr -与打印服务有关的信息。

mail -与电子邮件有关的信息

mark - syslog内部功能用于生成时间戳

news -来自新闻服务器的信息

syslog -由 syslog 生成的信息

user -由用户程序生成的信息

uucp -由 uucp 生成的信息

local0-local7 -与自定义程序使用

* 通配符代表除了 mark 以外的所有功能

除mark为内部使用外,还有security为一个旧的key定义,等同于auth,已经不再建议使用。

2、level级别定义消息的紧急程度。按严重程度由高到低顺序排列为:

emerg -该系统不可用,等同panic

alert -需要立即被修改的条件

crit -阻止某些工具或子系统功能实现的错误条件

err -阻止工具或某些子系统部分功能实现的错误条件,等同error

warning -预警信息,等同warn

notice -具有重要性的普通条件

info -提供信息的消息

debug -不包含函数条件或问题的其他信息

none -没有重要级,通常用于排错

* 所有级别,除了none

其中,panic、error、warn均为旧的标识符,不再建议使用。

在定义level级别的时候,需要注意两点:

1)优先级是由应用程序在编程的时候已经决定的,除非修改源码再编译,否则不能改变消息的优先级;

2)低的优先级包含高优先级,例如,为某个应用程序定义info的日志导向,则涵盖notice、warning、err、crit、alert、emerg等消息。(除非使用=号定义)

3、selector选择条件

通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。

可以使用分号“;”同时定义多个选择条件。也支持三个修饰符:

* - 所有日志信息

= - 等于,即仅包含本优先级的日志信息

! - 不等于,本优先级日志信息除外

4、action动作 由前面选择条件定义的日志信息,可执行下面的动作:

file-指定日志文件的绝对路径

terminal 或 print -发送到串行或并行设备标志符,例如/dev/ttyS2

@host -远程的日志服务器

username -发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中

named pipe -发送到预先使用 mkfifo 命令来创建的 FIFO 文件的绝对路径

※注意,不能通过“|/var/xxx.sh”方式导向日志到其他脚本中处理!!

来源: http://www.2cto.com/os/201301/183887.html

来自为知笔记(Wiz)

时间: 2024-10-11 05:27:50

通过syslog接收远程日志的相关文章

syslog远程日志存储/514端口【转】

昨天在抓包的时候,发现在514端口,有SYSLOG字段的东西,不知道是用来干啥的,现在来分析一下: 其实他是在电脑间用了syslog远程日志存储,他用udp监控了514端口的数据流,之后收集整理日志:具体实现方法如下: 原文地址:http://blog.csdn.net/hxh129/article/details/8061196 syslog远程日志存储/514端口 标签: 存储apache服务器测试 A机做日志数据存储服务器 B机是syslog日志产生 两个主机的/etc/syslog.co

linux安全---远程日志管理

远程日志管理: S:192.168.10.115 C:192.168.10.43 1.S,C端安装rsyslog yum  -y  install  rsyslog 2.修改S端配置监听514端口,提供远程日志存放. vi  /etc/rsyslog.conf   ##去掉13,14,17,18的注释 12 # Provides UDP syslog reception 13 $ModLoad imudp 14 $UDPServerRun 514 15 16 # Provides TCP sys

基于Centos 6.5+MariaDB+loganalyzer+syslog搭建远程系统日志收集和分析环境

 一.首先来解读下rsyslog配置文件的含义 配置文件路径/etc/rsyslog.conf 在rsyslog中facility设施 可以从功能或者程序上对日志分类常用的以下几种 auth 和认证相关的 authpriv 和认证授权相关的 cron 专门给周期性任务计划做日志记录的 daemon 帮守护进程做日志记录 kern 给内核做日志记录 lpr 给打印做日志记录 mail 给邮件做日志记录 mark 防火墙标记 news 新闻组(这个是很早的) security 和安全相关的(相当于a

自动发送密码抓取远程日志用Shell脚本如何实现?

在linux系统中,如何用shell脚本抓取远程日志?分析线上的日志会有一个困境,机器太多,如果每台都登录上去看不太现实,但是下载下来更麻烦因为每台SCP都要求输入密码.于是我便写了一个自动抓取远程日志的脚本,实现在基本功能. 代码: #!/usr/bin/expect -f if { $argc !=1 && $argc !=2 } {send_user "没有输入远程日志文件名.\n"send_user "格式是:get.sh ${remote_log}

seci-log 1.07 发布 增加资产发现和远程日志分析

日志分析软件 seci-log 1.07发布,增加了资产,端口扫描,并把发现的资产自动添加到资产库中,支持远程日志采集分析.上篇文章http://www.oschina.net/news/63425/seci-log-1-06,有兴趣可以了解一下. 资产扫描 系统支持自动扫描资产,并添加到资产库中,同时扫描系统的对外开放端口.系统资产扫描借助了nmap的扫描能力,nmap在系统中已经集成到系统中了,但nmap在window下依赖winpcap,所以需要手动安装winpcap,文件路径在程序的to

linux服务器远程日志统一管理

远程日志配置 1.服务端 (1)编辑日志文件   vim /etc/rsyslog.conf //重启日志服务   /etc/init.d/rsyslog restart (2)在/usr/share/doc/rsyslog-5.8.10/下递归寻找所有包含fromhost信息的文件 grep -r fromhost /usr/share/doc/rsyslog-5.8.10/ (3)在存放自己日志文件的目录下创建一个名字将并已复制路径ip粘贴过来vim /etc/rsyslog.d/feiyu

远程日志管理

远程日志管理 部署服务器 1.获取网卡ip地址 a.首先在虚拟机里添加一块网卡 设置为桥接模式 b.[[email protected]_05 ~]# dhclient -d eth1 //获取网卡IP 这里用作service端,这里作区分用 2.关闭防火墙及selinux [[email protected]_05 ~]# /etc/init.d/iptables stop //关闭防火墙 [[email protected]_05 ~]# setenforce 0 //临时允许selinux

syslog-ng+syslog收集Tomcat日志(二)

上一篇我们把日志服务器搭建和配置讲解完成,这节讲rsyslog客户端配置.因为系统默认已经安装rsyslo就不在复数了.只讲配置. 注:教程配置文件下载. 在rsyslog.conf 中配置,在文件末尾添加如下,全局远程提交路径: 如果客户端所有日志都提交到一个服务器,可以把IP定义在全局变量里,反之则在相关脚本中定义. @代表UDF方式传输,@@代表是TCP方式传输. *.* 左边的*是设备,右边*是类型(正常.一般.紧急等),这个不要理解成系统里的文件名和后缀. vi /etc/rsyslo

syslog-ng+syslog收集Tomcat日志(三)

本篇讲解如果提交tomcat日志,为tomcat创建独立配置. 为什么要创建独立配置文件? 做成模块化便于管理,调试.不需要时,直接删除对应的配置文件即可. 以下是配置内容,都做了相关注释. 注:教程相关配置下载. 配置文件中的中文注释为方便初学者,并非官方提供,中文注释可能会引起奇怪的问题. 建议:在使用中删除所有的中文注释,如需注释可以用英文(实在不行就拼音) 环境:tomcat安装路径 /web/webfront vi /etc/rsyslog.d/tomcat-log.conf # rs