通过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中查看
[root@localhost 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”方式导向日志到其他脚本中处理!!
- Centos7 配置rsyslog客户端接收远程日志
rsyslog 因为路由器我设定每天重启,但是日志一重启就会清除,并且路由器最多只能保存1024条记录,所以我想把路由器的日志记录到一台服务器上,发现路由器包含远程日志功能 于是我就在我的centos ...
- syslog远程日志存储/514端口【转】
昨天在抓包的时候,发现在514端口,有SYSLOG字段的东西,不知道是用来干啥的,现在来分析一下: 其实他是在电脑间用了syslog远程日志存储,他用udp监控了514端口的数据流,之后收集整理日志: ...
- rsyslog+loganalyzer远程日志系统搭建教程(CentOS6.8)
一.说明 本文主要是对“CentOS 6.7搭建Rsyslog日志服务器”进行整理,同时在本地进行环境搭建,验证在CentOS6.8上的正确性. 二.安装配置rsyslog 1.清空iptables关 ...
- Logstash和Flume-NG Syslog接收小测试
目前在大规模日志处理平台中常见的日志采集器可以采用Logstash或Flume.这两种日志采集器架构设计理念基本相似,都采用采集-过滤处理-输出的方式.下面对这两种采集器Syslog接收性能做个简单测 ...
- 一个人的安全部之ELK接收Paloalto日志并用钉钉告警
起因 通报漏洞后,开发未能及时修复漏洞,导致被攻击,领导说我发现被攻击的时间晚了,由于一个人安全部精力有限未能及时看IPS告警,于是做了个钉钉告警. 本人环境介绍 ubuntu 14.04 pytho ...
- CentOS配置远程日志服务器
(1).发送日志的服务器(被收集) [root@xuexi ~]# vim /etc/rsyslog.conf //在#*.* @@remote-host:514行下添加一行 *.* @@192.16 ...
- iOS接收远程通知响应方法
点击 iOS 接收远程推送主要牵扯到的方法有以下五种 (1) - (BOOL)application:(UIApplication *)application didFinishLaunchingWi ...
- 十八、.net core(.NET 6)搭建ElasticSearch(ES)系列之使用Logstash通过Rabbitmq接收Serilog日志到ES
使用Logstash通过Rabbitmq接收Serilog日志到ES 首先,要部署logstash 为了与前面的ElasticSearch版本保持一致,此处Logstash下载的版本也是7.13.1, ...
- nxlog以syslog方式发送日志
1.nxlog简介 nxlog是个跨平台日志传输插件,支持linux.windows平台,支持window及linux内置的大部分系统日志及常见的web日志,支持tcp.udp.http(s)等协议传 ...
随机推荐
- winScp如何通过隧道代理进行远程连接
目标机器:a ip为192.168.2.150(内网ip) a.xxx.x.xx(外网ip) 跳板机器:b ip为192.168.2.151(内网ip) b.xxx.xx.xx(外网ip) 目标机 ...
- Linux服务器管理: 系统的进程管理top命令
查看系统运行状态的命令top [root@localhost~]#top [选项] 选项: -d 秒数 指定top命令每个几秒更新.默认为3秒 在top命令的交互模式当中可以执行的命令 ?或h 查看帮 ...
- EF-联合查询-结果集-Group by-统计数目
EF框架用着痛并且快乐着··· 毕竟用习惯了SQL语句直接硬查的··· SELECT C0.ID,C_C.Name,C_C.C_COUNT FROM article_type C0 INNER JOI ...
- JSON/XML序列化与反序列化(非构造自定义类)
隔了很长时间再重看自己的代码,觉得好陌生..以后要养成多注释的好习惯..直接贴代码..对不起( ▼-▼ ) 保存保存:进行序列化后存入应用设置里 ApplicationDataContainer _a ...
- Python的Set和List的性能比较 + 两者之间的转换
1.能用set 不用list ~$ python -m timeit -n 1000 "[x for x in range(1000) if x in range(500, 1500)]&q ...
- php网络编程
php面试题之三--PHP网络编程(高级部分) 三.PHP网络编程 [!!!]1.禁用COOKIE后SEESION还能用吗?(51.com笔试题) 可以,COOKIE和SESSION都是用来实现会话机 ...
- windows 下wamp环境2 配置之mysql的安装
安装配置mysql 5.7 打开mysql官网: https://www.mysql.com/ 点击downloads,然后选择commuity 选择MySQL Community Server选择对 ...
- nginx 虚拟主机
基于域名的虚拟主机 创建站点目录 [root@nginx conf]# cd /usr/local/nginx/html/ [root@nginx html]# pwd /usr/local/ngin ...
- 无法解析类型 javax.servlet.http.HttpServletRequest。从必需的 .class 文件间接引用
java.lang.Error: 无法解析的编译问题: 无法解析类型 javax.servlet.http.HttpServletRequest.从必需的 .class 文件间接引用了它 无法解析类型 ...
- 19 BasicTaskScheduler0 基本任务调度类基类(一)——Live555源码阅读(一)任务调度相关类
这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/ol ...