Linuxシステムのログリモート収集

サービスのLinuxサーバの正常な提供は、すべての時間は、その後、本番環境場合、数十またはサーバ数百ものがありますが、ログ情報の多くを生産するシステムが非常に面倒なの一つで表示する様にログインA。

今日の常時更新技術では、そこに多くの可能な技術を一元まだでなければならない最も一般的な操作を記録するために管理することができますELKログ分析システムが、これらのログが生成する方法ですか?それを一元管理することにより、どのサービスが行われていますか?この資料では、このサービス--rsyslogシステムログサービスを記述するために周りになります。

Linuxシステムの多くは、次のログファイルシステム自体の一部です、ログ種別があります。

/var/log/boot.log
/var/log/cron
/var/log/dmesg
/var/log/lastlog
/var/log/maillog或/var/log/mail/*
/var/log/messages
/var/log/secure
/var/log/wtmp,/var/log/faillog
/var/log/httpd/* , /var/log/samba/*

:このブログ記事を参照してくださいどのような情報のログ・ファイル・レコードの詳細について紹介Linuxの共通ログファイルもエラー導入さ7つの段階を含み、!ここでは、長ったらしいされていません。

システムは、次のようにこのサービスがメインの設定ファイルである、主にこの政権にrsyslogのサービスによってログに記録します。

[root@aaa ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#"    #过滤配置文件中的空行和注释行
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                /var/log/messages  
#上面行开头的星号表示所有服务,点号后面的等级表示那些等级记录下来,/var/lo....表示记录到哪里
authpriv.*                          /var/log/secure   #表示authpriv所有等级的信息都记录到secure文件中
mail.*                                -/var/log/maillog   #表示mail服务的所有级别信息都记录到/var/log/maillog中
cron.*                                /var/log/cron
*.emerg                            :omusrmsg:*
uucp,news.crit                 /var/log/spooler
local7.*                            /var/log/boot.log
#由上面几行注释可以看出,第一段中的点号前面表示某个服务,点号后面表示哪些报错等级要记录。
#点号前后都可以使用通配符星号来表示,如第一列为“*.*”,则表示所有服务的所有等级
#若为“*.info”,则表示所有服务的info等级及比info更严重的等级都记录起来。

上記構成ファイルに、ログ保管場所も記録されるログのレベルを変更することができ、変更されたが、一般的な変更を推奨しないことができます。

実際には、この設定ファイルある/etc/rsyslog.confに頼って、また小さな生産環境、小規模なサーバーの場合で、サーバー上で一元管理するために、別の場合には、別のサーバーに自分のログを送信する、とすることができます私たちは、この状況を使用することができますが、本番サーバーの数がより多く、ELKログ分析システムを導入することをお勧めします。

rsyslogのサービスインスタンスの設定

ここで私は、次の要件を満たすために、今、(IPアドレスは、それぞれ、192.168.1.1および1.2である)ホスト名がAAAとBBBあり、二つのサーバを持っています:

  • 1は、BBBサーバー上の一元管理にすべてのシステムサービスのAAAサーバのための詳細ログレベルを送信するために同期。
  • 2、送信ログnginxのは、管理サーバBBBにコンパイルされ、インストールされ;
  • (第2の要求の実現に、nginxのサービスは、停止apacheのサービスを再起動しますので、原因とデフォルトポートとnginxの競合)3は、Apacheのログがコンパイルされ、インストールされるも、BBBに管理サーバに送信されます。

コンフィギュレーションを開始します。

1、同期AAAサーバのBBB上の一元管理を行うために、サーバシステムのすべてのサービスの詳細ログレベルを送ります

(1)サーバーAAAに対して次の操作を実行します。

[root@aaa ~]# vim /etc/rsyslog.conf     #编辑日志服务的配置文件
             #..............省略部分内容
$ModLoad imudp             #将该行开头的注释符号“#”去掉,以便开启udp协议
$UDPServerRun 514     #将该行开头的注释符号“#”去掉,以便开启udp的514端口

# Provides TCP syslog reception
$ModLoad imtcp         #将该行开头的注释符号“#”去掉,以便开启tcp协议
$InputTCPServerRun 514    #将该行开头的注释符号“#”去掉,以便开启tcp的514端口
             #..............省略部分内容
*.info;mail.none;authpriv.none;cron.none         /var/log/messages
*.info                         @@192.168.1.2  #星号表示所有服务“*.info”表示info等级及以上的信息
#@@表示使用tcp协议传输,192.168.1.2是指定要发送到哪台服务器,若使用一个@符号,则表示使用udp协议传输
             #..............省略部分内容
#编辑完成后,保存退出即可。
[root@aaa ~]# systemctl restart rsyslog           #重启rsyslog服务,以便更改生效

(2)サーバBBB上の次の操作を実行します。

[root@bbb ~]# vim /etc/rsyslog.conf        #编辑日志服务的配置文件,开启udp和tcp的514端口
             #..............省略部分内容
$ModLoad imudp                #去掉该行开头的“#”注释符号
$UDPServerRun 514                #去掉该行开头的“#”注释符号

# Provides TCP syslog reception 
$ModLoad imtcp               #去掉该行开头的“#”注释符号
$InputTCPServerRun 514               #去掉该行开头的“#”注释符号
             #..............省略部分内容
[root@bbb ~]# systemctl restart rsyslog        #重启服务,使更改生效
[root@bbb ~]# tailf /var/log/secure     #动态监控着本机的日志文件
Sep 19 15:00:32 aaa useradd[5998]: new group: name=lvjianzh, GID=1003
Sep 19 15:00:32 aaa useradd[5998]: new user: name=lvjianzh, UID=1003, GID=1003, home=/home/lvjianzh, shell=/bin/bash
             #..............省略部分内容

(3)(主にログ情報を生成するために)サーバ、AAAに対して次の操作を実行します。

[root@aaa ~]# useradd admini
[root@aaa ~]# echo '123.com' | passwd --stdin admini
更改用户 admini 的密码 。
passwd:所有的身份验证令牌已经成功更新。

以下のように(4)を表示BBB新しいログを生成するには、次のとおりです。

Linuxシステムのログリモート収集

2、送信ログnginxのは、管理サーバBBBにコンパイルされ、インストールされ;

(1)サーバーAAAに対して次の操作を実行します。

[root@aaa ~]# vim /etc/yum.repos.d/epel.repo     #写入以下文件,指定阿里镜像站

[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
#必须保证系统默认自带的yum文件也存在/etc/yum.repos.d/目录下,写入后保存退出即可。
[root@aaa ~]# yum repolist             #最好执行一下该命令
             #..............省略部分内容
(7/7): base/7/x86_64/primary_db                    | 6.0 MB   00:01     
源标识                          源名称                            状态
base/7/x86_64                   CentOS-7 - Base                   10,097
epel                            epel                              13,384     #这一行就是我们刚写入的文件生效的,表示没问题
extras/7/x86_64                 CentOS-7 - Extras                    304
updates/7/x86_64                CentOS-7 - Updates                   311
repolist: 24,096
#若命令yum  repolist执行后没有显示出上述内容,排除配置文件的错误后,可以执行以下命令
[root@aaa ~]# yum makecache          #用来建立元数据缓存的
             #..............省略部分内容
元数据缓存已建立
[root@aaa ~]# yum -y install nginx                 #安装nginx服务
[root@aaa ~]# systemctl start nginx     #启动Nginx服务
[root@aaa ~]# netstat -anpt | grep nginx              #确定Nginx服务已启动
tcp        0      0 0.0.0.0:80      0.0.0.0:* LISTEN      6609/nginx: master  
tcp6       0      0 :::80       :::*         LISTEN      6609/nginx: master  
[root@aaa ~]# ls /var/log/nginx/   #以下是yum安装Nginx后,Nginx两个日志文件的存放位置
access.log  error.log
#记住Nginx日志的存放路径,一会要用到,若采用的是编译安装,请自行找到Nginx日志存放路径记下来
[root@aaa ~]# vim /etc/rsyslog.conf           #编辑rsyslog服务的配置文件
             #..............省略部分内容
#在配置文件末尾写入以下内容
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /var/log/nginx/access.log
$InputFileTag nginx-info-access;
$InputFilestateFile state-nginx-info-accesslog
$InputRunFileMonitor
$InputFileName /var/log/nginx/error.log
$InputFileTag nginx-info-error;
$InputFilestateFile state-nginx-info-errorlog
$InputRunFileMonitor
$InputFilePollInterval 10
if $programname == 'nginx-info-access' then @192.168.1.2:514
if $programname == 'nginx-info-access' then ~
if $programname == 'nginx-info-error' then @192.168.1.2:514
if $programname == 'nginx-info-error' then ~
[root@aaa ~]# systemctl restart rsyslog               #重启服务以便生效

上記の設定項目について書かれた次のように説明されています。

$ModLoad imfile         #加载模块
$InputFilePollInterval 1    #间隔多久采集次,默认单位是秒
$InputFileName /var/log/nginx/access.log    #指定要采集的日志文件
$InputFileTag nginx-info-access;           #给对应的日志打一个标签
$InputFilestateFile state-nginx-info-accesslog    #给这个日志命名
$InputRunFileMonitor        #启动监控
#以下的配置和上面类似,因为要采集两个日志文件嘛!
$InputFileName /var/log/nginx/error.log
$InputFileTag nginx-info-error;
$InputFilestateFile state-nginx-info-errorlog
$InputRunFileMonitor
$InputFilePollInterval 10
#以下是指定将采集的日志发送到哪里,同理,一个@符号表示使用的udp协议,两个表示tcp协议
if $programname == 'nginx-info-access' then @192.168.1.2:514  
if $programname == 'nginx-info-access' then ~   #这的~,表示本地的意思
if $programname == 'nginx-info-error' then @192.168.1.2:514
if $programname == 'nginx-info-error' then ~

(2)サーバBBB上のログを監視するには:

Linuxシステムのログリモート収集

(3)nginxのサービスのクライアントアクセスAAAを、ログを生成するためです。

Linuxシステムのログリモート収集

(4)(、クライアントは数回更新することができ、新たなログが生成されていない場合を前提に構成エラーをトラブルシューティング)生成nginxのAAAサーバのアクセスログについてがあるかどうかを確認するために戻ってサーバにBBB:
Linuxシステムのログリモート収集

見ることができ、ログ情報nginxのは、単に右、あまりにも詳細ではありませんか?情報は、ログが生成時間を含むログ?サーバによって生成されましたか?ラベル名は何ですか?どのIPアドレスのアクセス?アクセス時間は、いつですか?ステータスコードへのアクセスとは何ですか?どのシステムのクライアントにアクセスする際に、システムのビット数がどのくらいあるでしょうか?このように、どのようなブラウザのアクセスに使用されます(;; Win64のWindows NTの10.0 x64の、64はwin10システムとして表されますか)?私はGoogleが、それは実際にも、私のクライアントバージョンのGoogleブラウザを記録し、ここに訪問した使用します。

これまでのところ、nginxのログファイルの収集は、単純にどのような設定項目それに変更、はるかに簡単である寝具、目の前で、完全な、今apacheのログ収集です。

3は、Apacheのログコンパイラのインストールは、管理サーバBBBに送信されます

(1)サーバーAAAに対して次の操作を実行します。

[root@aaa ~]# yum -y install httpd            #安装apache服务
[root@aaa ~]# systemctl stop nginx      #为了避免端口冲突,停止Nginx服务
[root@aaa ~]# systemctl start httpd      #启动apache服务
[root@aaa ~]# vim /etc/rsyslog.conf          #更改rsyslog配置文件,主要是更改采集日志的路径
             #..............省略部分内容
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /var/log/httpd/access_log      #主要是改这个
$InputFileTag httpd-info-access;
$InputFilestateFile state-httpd-info-accesslog
$InputRunFileMonitor
$InputFileName /var/log/httpd/error_log #还要改这个,其余配置项可不改,但是建议改一下,以免看起来日志不太直观
$InputFileTag httpd-info-error;
$InputFilestateFile state-httpd-info-errorlog
$InputRunFileMonitor
$InputFilePollInterval 10
if $programname == 'httpd-info-access' then @192.168.1.2:514
if $programname == 'httpd-info-access' then ~
if $programname == 'httpd-info-error' then @192.168.1.2:514
if $programname == 'httpd-info-error' then ~
#主要就是将上面配置中的Nginx都换成了httpd。
[root@aaa ~]# systemctl restart rsyslog                 #重启服务,使更改生效

(2)サーバBBB上のログを監視するには:

Linuxシステムのログリモート収集

nginxのサービスの(3)クライアントアクセスAAA、ログを生成するために(数回をリフレッシュします)。

Linuxシステムのログリモート収集

(4)BBBバックサーバにAAAの世代の場合のhttpdサーバーのアクセスログを参照してください。

Linuxシステムのログリモート収集

OK!いいえ問題は、集めるません。

--------この記事の最後に、これまで、読んでくれてありがとう--------

おすすめ

転載: blog.51cto.com/14154700/2439346