syslog-ng详细安装配置

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

最近的一个sendcloud项目中需要使用到syslog-ng收集日志。

原理是多台生产机部署不同的模块,包括nodeJs、java等等,各个生产机根据一定的规则产生日志。

一般我们的生产机redhat默认采用syslogd记录日志,可以使用syslogd将日志通过网络发送到指定的日志收集机器,统一分析。

这台日志收集机器安装的就是syslog-ng,下面讲解一下syslog-ng的安装和配置步骤:

[root@server2 ~]# cd /usr/local/src/tarbag/
[root@server2 tarbag]# wget http://www.balabit.com/downloads/files?path=/eventlog/0.2/eventlog_0.2.12.tar.gz
[root@server2 tarbag]# tar -zxvf eventlog_0.2.12.tar.gz -C ../software/
[root@server2 tarbag]# cd ../software/eventlog-0.2.12/
[root@server2 eventlog-0.2.9]# ./configure   --prefix=/usr/local/eventlog && make && make install
[root@server2 eventlog-0.2.9]# ls /usr/local/eventlog/
include   lib
 
[root@server2 syslog-ng-3.0.5]# cd -
/usr/local/src/tarbag
[root@server2 tarbag]# wget http://www.balabit.com/downloads/files?path=/libol/0.3/libol-0.3.15.tar.gz
[root@server2 tarbag]# tar -zxvf libol-0.3.15.tar.gz -C ../software/
[root@server2 tarbag]# cd ../software/libol-0.3.15/
[root@server2 libol-0.3.9]# ./configure --prefix=/usr/local/libol && make && make install
[root@server2 libol-0.3.9]# ls /usr/local/libol/
bin   include   lib
[root@server2 libol-0.3.9]# cd -
[root@server2 tarbag]# wget http://www.balabit.com/downloads/files?path=/syslog-ng/open-source-edition/3.3.5/source/syslog-ng_3.3.5.tar.gz
[root@server2 tarbag]# tar -zxvf syslog-ng_3.3.5.tar.gz -C ../software/
[root@server2 tarbag]# cd ../software/syslog-ng-3.3.5/
[root@server2 syslog-ng-3.0.5]#   export PKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig
[root@server2 syslog-ng-3.0.5]# ./configure --prefix=/usr/local/syslog-ng --with-libol=/usr/local/libol && make && make install
configure: error: Cannot find eventlog version >= 0.2: is pkg-config in path? (若出现这个错误,基本上是由于前面的PKG_CONFIG_PATH变量没指定好)
[root@server2 syslog-ng-3.0.5]# ls /usr/local/syslog-ng/
bin   libexec   sbin   share
[root@server2 syslog-ng-3.0.5]# mkdir /usr/local/syslog-ng/etc
[root@server2 syslog-ng-3.0.5]# mkdir /usr/local/syslog-ng/var
[root@server2 syslog-ng-3.0.5]# cp contrib/syslog-ng.conf.RedHat   /usr/local/syslog-ng/etc/
[root@server2 syslog-ng-3.0.5]# cp modules.conf scl.conf /usr/local/syslog-ng/etc/
[root@server2 syslog-ng-3.0.5]# cp contrib/init.d.RedHat /etc/init.d/syslog-ng
 
[root@server2 syslog-ng-3.0.5]# cd /usr/local/syslog-ng/etc/
[root@server2 etc]# mv syslog-ng.conf.RedHat syslog-ng.conf
[root@server2 etc]# cat syslog-ng.conf
@version:3.0
options {
long_hostnames(off);
log_msg_size(8192);
flush_lines(1);
log_fifo_size(20480);
time_reopen(10);
use_dns(yes);
dns_cache(yes);
use_fqdn(yes);
keep_hostname(yes);
chain_hostnames(no);
perm(0644);
stats_freq(43200);
};
source s_internal { internal(); };
destination d_syslognglog { file("/var/log/syslog-ng.log"); };
log { source(s_internal); destination(d_syslognglog); };
 
source s_local {
         unix-dgram("/dev/log");
         file("/proc/kmsg" program_override("kernel:"));
}; 

filter f_messages { level(info..emerg); };   //定义7种日志类型
filter f_secure { facility(authpriv); };
filter f_mail { facility(mail); };
filter f_cron { facility(cron); };
filter f_emerg { level(emerg); };
filter f_spooler { level(crit..emerg) and facility(uucp, news); };
filter f_local7 { facility(local7); };
destination d_messages { file("/var/log/messages"); };   //定义7种类型日志在客户端的位置
destination d_secure { file("/var/log/secure"); };
destination d_maillog { file("/var/log/maillog"); };
destination d_cron { file("/var/log/cron"); };
destination d_console { usertty("root"); };
destination d_spooler { file("/var/log/spooler"); };
destination d_bootlog { file("/var/log/dmesg"); };
log { source(s_local); filter(f_emerg); destination(d_console); };
log { source(s_local); filter(f_secure); destination(d_secure); flags(final); };
log { source(s_local); filter(f_mail); destination(d_maillog); flags(final); };
log { source(s_local); filter(f_cron); destination(d_cron); flags(final); };
log { source(s_local); filter(f_spooler); destination(d_spooler); };
log { source(s_local); filter(f_local7); destination(d_bootlog); };
log { source(s_local); filter(f_messages); destination(d_messages); };
 
# Remote logging   //定义监听的端口
source s_remote {
         tcp(ip(0.0.0.0) port(514));
         udp(ip(0.0.0.0) port(514));
};
//定义客户端日志在服务器上保存的格式,位置和权限等
destination r_console {file("/var/log/syslog-ng/$YEAR$MONTH$DAY/$HOST/console" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));};
destination r_secure {file("/var/log/syslog-ng/$YEAR$MONTH$DAY/$HOST/secure" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));};
destination r_cron {file("/var/log/syslog-ng/$YEAR$MONTH$DAY/$HOST/cron" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));};
destination r_spooler {file("/var/log/syslog-ng/$YEAR$MONTH$DAY/$HOST/spooler" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));};
destination r_bootlog {file("/var/log/syslog-ng/$YEAR$MONTH$DAY/$HOST/bootlog" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));};
destination r_messages {file("/var/log/syslog-ng/$YEAR$MONTH$DAY/$HOST/messages" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));};
log { source(s_remote); filter(f_emerg); destination(r_console); };
log { source(s_remote); filter(f_secure); destination(r_secure); flags(final); };
log { source(s_remote); filter(f_cron); destination(r_cron); flags(final); };
log { source(s_remote); filter(f_spooler); destination(r_spooler); };
log { source(s_remote); filter(f_local7); destination(r_bootlog); };
log { source(s_remote); filter(f_messages); destination(r_messages); };
 
[root@server2 etc]# chmod +x /etc/init.d/syslog-ng 
[root@server2 etc]# chkconfig --add syslog-ng
service syslog-ng does not support chkconfig(若出现该错误,请修改该脚本前四行如下)
[root@server2 etc]# head -4 /etc/init.d/syslog-ng 
#!/bin/bash
#chkconifg: --add syslog-ng
#chkconfig: 2345 12 88
#Description: syslog-ng

该脚本还需要修改下面的三个位置
[root@server2 etc]# grep ‘PATH‘ /etc/init.d/syslog-ng 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/syslog-ng/bin:/usr/local/syslog-ng/sbin
[root@server2 etc]# grep 'INIT' /etc/init.d/syslog-ng |head -2

INIT_PROG="/usr/local/syslog-ng/sbin/syslog-ng"     # Full path to daemon
INIT_OPTS="-f /usr/local/syslog-ng/etc/syslog-ng.conf"                       # options passed to daemon
 

[root@server2 etc]# service syslog-ng start
Starting syslog-ng: /usr/local/syslog-ng/sbin/syslog-ng: error while loading shared libraries: libevtlog.so.0: cannot open shared object file: No such file or directory
Starting Kernel Logger: 出现此错误是因为共享库链接没做好
[root@server2 etc]# 
ln -s /usr/local/eventlog/lib/* /lib/
ln -s /usr/local/eventlog/lib/* /lib64/

 
出现下面的问题是因为主配置文件中缺少:@version:3.0这行
Starting syslog-ng: Configuration file has no version number, assuming syslog-ng 2.1 format. Please add @version: maj.min to the beginning of the file;
 
[root@server2 ~]# service syslog-ng start
Starting Kernel Logger:                                     [   OK   ]
[root@server2 etc]# cat /var/log/syslog-ng.log 
Jan 28 03:59:07 server2.yang.com syslog-ng[20225]: syslog-ng starting up; version='3.0.5'
 

客户端配置:
[root@client ~]# tail -1 /etc/syslog.conf 
*.*                                                      @192.168.90.20
 
[root@client ~]# logger -i just one test
[root@client ~]# tail -1 /var/log/messages 
Jan 27 22:12:02 client root[2861]: just one test
[root@server2 ~]# cat /var/log/syslog-ng/20100128/192.168.90.10/messages 
Jan 28 04:24:32 192.168.90.10 root[2861]: just one test
 
[root@server2 ~]# cat /var/log/syslog-ng/20100128/192.168.90.10/secure 
Jan 28 04:01:04 192.168.90.10 sshd[2832]: Accepted publickey for root from 192.168.90.1 port 48834 ssh2
Jan 28 04:01:04 192.168.90.10 sshd[2832]: pam_unix(sshd:session): session opened for user root by (uid=0)

前面配置好了syslog-ng,下面简要的概述下如何将系统日志存入mysql
1:将mysql的头文件和库文件链接到/usr/local下
[root@server2 ~]# ln -s /usr/local/mysql/lib/mysql /usr/local/lib/mysql
[root@server2 ~]# ln -s /usr/local/mysql/include/mysql/ /usr/local/include



 


[root@server2 ~]# cd /usr/local/src/software/sqlsyslogd
2:下载sqlsyslogd源码包,由于是整个目录下载,所以会下载index.html打头的索引文件
[root@server2 software]# wget -d -r -np http://www.frasunek.com/sources/security/sqlsyslogd/
[root@server2 software]# cd www.frasunek.com/sources/security/sqlsyslogd/
[root@server2 sqlsyslogd]# rm -rf index.html*
[root@server2 sqlsyslogd]# cd contrib/
[root@server2 contrib]# rm -rf index.html*
[root@server2 contrib]# cd
[root@server2 ~]# mv /usr/local/src/software/www.frasunek.com/sources/security/sqlsyslogd/ /usr/
local/src/software/
3:make,复制sqlsyslogd二进制程序到/usr/local/sbin目录下
[root@server2 ~]# cd /usr/local/src/software/sqlsyslogd/
[root@server2 sqlsyslogd]# make
cc -O6 -Wall -pipe -I/usr/local/include -DCONF=\"/usr/local/etc/sqlsyslogd.conf\" -L/usr/local/lib/mysql -lmysqlclient sqlsyslogd.c   -o sqlsyslogd
[root@server2 sqlsyslogd]# cp sqlsyslogd /usr/local/sbin/
4:执行下sqlsyslogd程序,出现下面的命令选项则说明安装成功
[root@server2 sqlsyslogd]# sqlsyslogd 
usage: sqlsyslogd [-h hostname] <-u username> [-p] <-t table> [database] 
5:修改/etc/ld.so.conf文件,并使其生效,这个文件维护着编译的动态链接库位置
[root@server2 sqlsyslogd]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib/mysql
[root@server2 sqlsyslogd]# ldconfig
 
6:在数据库中创建相应的库和表
[root@server2 sqlsyslogd]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 158
Server version: 5.1.36-log Source distribution
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> create database syslog;
Query OK, 1 row affected (0.00 sec)
 
mysql> use syslog
Database changed
mysql> create table logs (Id int(10) NOT NULL auto_increment,Timestamp varchar(16),Host varchar(50),Prog varchar(50),Mesg text,PRIMARY KEY (id));
Query OK, 0 rows affected (0.01 sec)
 
mysql> exit
Bye
 
7:该文件定义了连接数据库的密码
[root@server2 sqlsyslogd]# cat /usr/local/etc/sqlsyslogd.conf 
123456
 
8:在syslog-ng主配置文件中添加下列配置
[root@server2 sqlsyslogd]# vi /usr/local/syslog-ng/etc/syslog-ng.conf
 
destination sqlsyslogd{
program("/usr/local/sbin/sqlsyslogd -u root -t logs syslog -p");
};
 
log {
        source(s_remote);
        destination(sqlsyslogd);
};
 
9:重启syslog-ng服务
[root@server2 sqlsyslogd]# service syslog-ng restart
Stopping Kernel Logger:                                    [ OK ]
Starting Kernel Logger:                                    [ OK ]
 
10:客户端发消息测试
[root@server2 sqlsyslogd]# tail -1 /var/log/syslog-ng/20100226/192.168.90.1/messages 
Feb 26 14:25:47 192.168.90.1 root[6058]: just for fun


上面的安装步骤中syslog-ng.conf文件的配置不够形象,下面再详细贴一个syslog-ng.conf的简单配置作为参考:

#############################################################################
# Default syslog-ng.conf file which collects all local logs into a
# single file called /var/log/messages.
#

@version: 3.3
@include "scl.conf"

source s_local {
        system();
        internal();
};

source s_network {
         tcp(ip(0.0.0.0) port(514));
         udp(ip(0.0.0.0) port(514));
};

filter f_outbound {
         level(info..emerg);
         host("ip|ip") and program("^node-syslog-outbound");
};

destination d_local {
        file("/var/log/messages");
};

destination d_network {
        file("/opt/apps/log/$YEAR$MONTH$DAY$HOUR$MIN.log" create_dirs(yes));
};

log {
        #source(s_local);
        #destination(d_local);
        source(s_network);
        filter(f_outbound);
        destination(d_network);
};


filter f_inbound {
         level(info..emerg);
         host("ip|ip") and program("^node-syslog-inbound");
};

destination d_inbound {
        file("/opt/apps/log_inbound/$YEAR$MONTH$DAY$HOUR$MIN.log" create_dirs(yes));
};
log {
        source(s_network);
        filter(f_softbound);
        destination(d_softbound);
};



以上就配置好了日志收集机器了,但是其它生产机怎么将日志发过来呢?

因为其它生产机默认采用的syslogd写syslog的,而syslogd自带有发送日志到网络上,只需要添加配置即可。

在/etc/syslog.conf上添加一行:

*.*             @ip

syslogd就会将服务器上的sysylog发送到这个ip上面,默认连接的端口是514,这一点可以在syslog-ng的配置里面看到。

 

ok,一个日志收集搭建完毕。

 

我写的《聊聊微服务架构》电子书,包括微服务技术,从微服务的入门,搭建、部署以及各模块的使用的技术书籍。 大部分内容是来源于我写的CSDN文章。

https://download.csdn.net/download/jsjwk/13585763

SuSE(SLES)安装配置syslog-ng日志服务器,可整合splunk 在自动化部署AutoYast,自动化监控BMC Patrol两方面形成雏形后,日志的收集、管理、分析也顺势成为我们需要考虑的问题,结合自身业务系统平台特点,大多数系统基于sles_11_sp1或者sp2,对比rsyslogsyslog-ng后最终选择syslog-ng ose(open source edition)作为研究对象。以下内容中的参数解释请参阅官方文档,后续会补充有关Oracle日志写入方式,如果实力不行再考虑MySQL 阅读详情

相关推荐

Docker:安装 Syslog-ng 的技术指南

本文介绍了使用Docker部署Syslog-ng日志管理系统的详细步骤。首先通过Docker Compose配置容器,创建必要的目录结构和配置文件,启动Syslog-ng服务。然后以Spring Boot应用为例,演示了如何通过Logback将Java日志发送到Syslog-ng服务器,包括依赖引入、log4j配置和示例代码编写。最后提供了日志验证方法,确保日志成功接收并存储。这种部署方式简化了Syslog-ng安装过程,实现了高效的日志集中管理,适用于各种应用场景。

木头 1452

syslog-ng安装包及安装步骤

syslog-ng安装包及安装步骤(syslog-ng_3.3.5.tar.gz,eventlog_0.2.12.tar.gz,syslog-ng安装步骤.txt)

51、系统日志管理与监控:Syslog-ng 配置详解

本文详细介绍了Syslog-ng配置方法,涵盖全局选项、消息源、消息目的地、过滤器及日志规则的构建。通过实例解析了如何灵活运用options、source、destination、filter和log语句,深入讲解了主机名处理、时间戳设置、文件权限控制、宏替换与日志模板等核心功能,帮助用户实现高效、可定制的日志管理系统。

java5的博客 123

syslogsyslog-ng详解

一台服务器的日志对系统工程师来说是至关重要的,一旦服务器出现故障或被***,我们需要查看日志来定位问题的关键所在,所以说对于线上跑的服务器而言日志应该合理的处理及管理.下面来介绍下linux系统的syslog日志服务器. 一.syslog详解 1,syslog简介 syslog 系统日志,记录linux系统启动及运行的过程中产生的信息,rhel5.x系统上默认自带...

weixin_34326429的博客 1205

syslog-ng详解——syslog-ng配置语法

在“运行syslog-ng”中我们简单介绍了一个基本配置文件的大概结构,保证syslog-ng能正常运行起来。这边将详细介绍下syslog-ng的日志配置及如何进行高效的配置,先介绍下syslog的一些基本知识: 日志级别及日志设备 syslog-ngsyslog一样,日志级别都有以下8种: 级别越低代表越重要的日志。 设备号有以下几种: 由设备号和日志级别

专注探索c++,Linux等后台开发相关机制,欢迎关注,欢迎交流 2万+

syslog-ng 安装配置

 1. 安装eventlog  tar zxvf eventlog.tar.gz   configure --prefix=/usr/local/eventlog   make   make install  2. 安装libol   tar zxvf libol.tar.gz   configure --prefix=/usr/local/li

风起云涌 4222

java syslog-ng_syslog-ng详细安装配置

最近的一个sendcloud项目中需要使用到syslog-ng收集日志。原理是多台生产机部署不同的模块,包括nodeJs、java等等,各个生产机根据一定的规则产生日志。一般我们的生产机RedHat默认采用syslogd记录日志,可以使用syslogd将日志通过网络发送到指定的日志收集机器,统一分析。这台日志收集机器安装的就是syslog-ng,下面讲解一下syslog-ng安装配置步骤:[r...

weixin_39756336的博客 568

Syslog-ng RHEL 的安装配置

syslog-ng 作为 syslog 的替代工具,可以完全替代 syslog 的服务,并且通过定义规则,实现更好的过滤功能。作为运维来说一个好的日志工具比什么都重要。通常我们会管理不同的服务器,因此我们需要把日志集中一下以便于快速查找。这个时候就需要在每个服务器上部署一个日志收集工具了 syslog-ng 是你的不二选择。

HONEY MOOSE 910

Linux(Centos 7)yum安装syslog-ng配置

环境:CentOS Linux release 7.3.1611 (Core) 获取安装的RPM: [root@localhost yum.repos.d]# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-13.noarch.rpm --2020-11-26 09:50:24-- https://dl.fedoraproject.org/pub/epel/7/x86_64/Packa.

cn_honor的博客 4003

syslog-ng mysql_syslog_ng安装配置及日志记录至mysql

实现环境:centos5.4+syslog-ng_3.3.1.tar+eventlog_0.2.12.tar+libol-0.3.9.tar安装eventlog:./configure –prefix=/usr/local/eventlog && make && make install安装 libol: http://www.balabit.com/do...

weixin_26757949的博客 454

配置rhel 6.4(64位)安装使用syslog-ng 3.5

这个笔记是我根据以往的syslog-ng 2.0的方面,更新到syslog-ng 3.5的笔记, 实测系统:centos 5.x 和 rhel 6.x 都顺利安装成功

过客2019 3341

mysql用 fifo 记录日志_syslog_ng安装配置及日志记录至mysql

实现环境:centos5.4+syslog-ng_3.3.1.tar+eventlog_0.2.12.tar+libol-0.3.9.tar安装eventlog:./configure –prefix=/usr/local/eventlog && make && make install安装 libol: http://www.balabit.com/do...

weixin_42364855的博客 240

Syslog-NG日志服务器安装配置

一.服务器端安装配置 1.从syslog-ng的官方网站上下载编译好的rpm包,针对rhel的. 我把需要的rpm打个包放在这里了. 文件: Syslog-NG.rar 大小: 859KB 下载: 下载 2.安装(服务器跟客户端安装都一样,这里指的是linux客户端,windows客户端需要另外的软件) [root@Kevin syslog]# ls libdbi8-0

gyy823的专栏 3331

PLC对接扫码支付:串口与Modbus RTU实战指南

PLC对接扫码支付本质上是工业控制系统与消费级终端的协议桥接问题,核心在于理解串口通信基础、Modbus RTU帧结构及数据映射原理。它要求开发者掌握RS485物理层接线规范、ASCII到BCD的链路层解析逻辑,并将支付状态转化为确定性控制信号。该技术广泛应用于智能售货机、无人仓储分拣线和定制化包装设备等场景,尤其适合需在严苛时序下实现扫码触发动作的电气工程师与设备制造商。文中重点剖析了串口调试、Modbus RTU校验、台达PLC 485从站配置等高频实操难点,为工业现场快速落地提供可复用的技术路径。

aofan9566的博客 378

Solaris10下syslog-ng安装配置

从sunfreesoftware.com下载以下安装软件:gcc,eventlog, libiconv, libintl, zlib, pcre, openssl, glib, syslog-ng. syslog-ng安装 按顺序依次安装以下软件. gcc : root@node1 # gunzip gcc-3.4.6-sol10-sparc-local.gz root@nod...

weixin_30677073的博客 347

日志系统---配置rhel 6.4(64位)安装使用syslog-ng 3.5

第一步:安装 wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.5.4.1/source/syslog-ng_3.5.4.1.tar.gz wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.5...

FeelTouch Labs 536
上一篇: Nexus配置实践
下一篇: 原创安装大全啊,安装配置:celery,rabbitMQ,NodeJs,Maven + Nexus,Django,Python,RabbitMQ,TTserver,Easy_install,redis
不止思考
博客等级 码龄18年 293粉丝 102原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值