Encaminhamento remoto de Centos de logs Rsyslog e armazenamento de log Mysql

Centos: encaminhamento remoto de log Rsyslog e armazenamento de log Mysql

ambiente de laboratório

  • Servidor de registro / banco de dados remoto: Centos 7, ip estático: 192.168.6.128
  • Servidor local de log / banco de dados: Centos 6.9, ip estático: 192.168.6.146

Introdução ao Rsyslog

1. Introdução

  • Nome completo: Sistema rápido de foguete para registro

  • Características: O serviço de log em si suporta multi-threading; suporta muitos logs de protocolo de transmissão: UDP, TCP; pode armazenar logs em um banco de dados como o Mysql; suporta protocolos de criptografia como SSL, TLS; tem um filtro poderoso que pode filtrar o conteúdo do log; Pode personalizar o formato de saída

  • Componentes:

    a. Programa principal: / usr / sbin / rsyslogd

    b. Centos 6 命令: service rsyslog {start | stop | restart | status}

    c. Centos 7 命令 : systemctl {start | stop | restart | status} rsyslog.service

    d. Arquivo de configuração: /etc/rsyslog.conf , /etc/rsyslog.d * .conf

    e. Arquivo de biblioteca: /lib64/rsyslog/*.so

  • Estrutura do arquivo /etc/rsyslog.conf:

    Composto pelo módulo MODULES , configurações globais GLOBAL DIRECTIVES , regras RULES

  • Regra: consiste em instalação, prioridade, destino e o formato de configuração no arquivo de configuração é o seguinte:

    Facility.Proirity[;Fcility.Priority...]			Target
    

2. Instalação

  • Referência: syslog man 3

  • Descrição: este parâmetro é usado para especificar qual serviço (programa) está imprimindo informações de log. Faça com que o arquivo de configuração esclareça a origem do log, para que o processamento correspondente.

  • Tipo de instalação:

    instalação Descrição
    auth Logs de PAM, logs de autenticação
    authpriv FTP, SSH e outros registros de autenticação de login
    enviar Registro de e-mail
    cron Tarefas agendadas (progresso do relógio)
    kern Log de inicialização do kernel
    FTP Informações de registro de FTP
    USUÁRIO (padrão) Gerar mensagens no nível do usuário
    SYSLOG Informações de registro do sistema
    ***** Todas as instalações

3. Prioridade

  • Referência: syslog man 3

  • Descrição: Especifique o nível de importância do log (diminuindo de cima para baixo, diminuindo da esquerda para a direita)

    nível descrição nível descrição
    Emerg Sistema indisponível Aviso prévio Eventos comuns de importância
    Alerta Tome medidas imediatamente após o fechamento Informações Evento útil
    Crit Evento-chave Depurar Informações de depuração
    Errar Evento de erro ***** Todos os níveis
    Advertir Evento de aviso NENHUM Não gravar

4. Alvo

  • Observação: no armazenamento e nos arquivos de log designados, geralmente em / var / log, o caminho do arquivo está na frente da escrita assíncrona; pode ser o seguinte:
  • Arquivo: /var/log/xxx.log
  • Servidor de log: @ip , modo UDP envia o log para o servidor remoto designado para gravação; @@ ip é o modo TCP
  • Pipeline: | COMMAND , encaminhado para outro processamento de comando

Encaminhamento de log Rsyslog

1. Confirmação de instalação do software

yum -y install rsyslog

2. Configuração de firewall e SElinux

  • Se você não aprendeu a configuração do firewall, simplesmente desligue o firewall para atender ao ambiente de sistema necessário para despejo de log

    #关闭防火墙
    iptables -F
    #centos7查看防火墙状态
    systemctl status firewalld
    #cento6查看防火墙状态
    service iptables status
    

3. Modificação do arquivo de configuração do servidor

  • O servidor de log armazenará os logs em arquivos diferentes de acordo com a configuração do arquivo e a facilidade / nível de rsyslog.conf. Definimos o recurso de informações de log do usuário (Facility) como: usuário, correspondendo a um nível de configuração comum importante: aviso, e enviamos o arquivo que atende a essa situação para o servidor de log remoto /var/log/user.log; Em outros casos, os logs gerados por outras instalações enviadas também serão armazenados em outros arquivos designados.

  • Servidor local

    [root@lin ~]# vim /etc/rsyslog.conf 
    # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
    #*.* @@remote-host:514
    #远程转发日志 (ip地址填写远程日志服务器的ip地址)
    #注意:使用@代表走UDP协议,使用@@代表走TCP协议。
    
    user.notice                         @192.168.6.128514
    
    #本地存储日志
    user.notice                         /var/log/user.log
    
    #重启服务
    [root@lin ~]# service rsyslog restart
    Shutting down system logger:                   [  OK  ]
    Starting system logger:                        [  OK  ]
    
  • Servidor de registro remoto

    [root@ ~ 11:24:30]#vim /etc/rsyslog.conf
    # Provides UDP syslog reception
    $ModLoad imudp
    $UDPServerRun 514
    
    user.notice                          /var/log/user.log
    
    #重启
    [root@ ~ 11:39:25]#systemctl restart   rsyslog
    #检查UDP514端口是否在提供服务
    [root@ ~ 11:40:15]#netstat -tulnp|grep 514
    udp        0      0 0.0.0.0:514             0.0.0.0:*                           1217/rsyslogd       
    udp6       0      0 :::514                  :::*                                1217/rsyslogd   
    

4. Teste de logger

  • logger: uma interface de comando shell que leva ao sistema de registro syslog
  • mensagem do registrador: escreva o log, leia a entrada padrão sem adicionar opções
#客户端
[root@lin ~]# logger luelueluepinginglab
[root@lin ~]# cat /var/log/user.log 
Aug  8 20:01:32 lin root: luelueluepinginglab

#服务器端
[root@ ~ 11:40:17]#tailf /var/log/user.log
tailf: stat failed /var/log/user.log: No such file or directory
[root@ ~ 11:40:57]#touch /var/log/user.log
[root@ ~ 11:41:41]#tailf /var/log/user.log   #先执行此命令,再去客户端打印日志
Aug  8 20:01:32 lin root: luelueluepinginglab

Resumo: Por meio da modificação dos arquivos de configuração do servidor de log local e do servidor de log remoto, o log local pode ser armazenado no servidor de log remoto remotamente.

Os logs Rsyslog são encaminhados para um arquivo em um formato específico

1. Configuração do servidor de log remoto /etc/rsyslog.conf

#要求:使不同IP发来的日志单独放到不同的日志文件中
#日志文件名格式:IP-年-月-日.log
#模板设置:rsyslog.conf文件最底部加入如下模板
vim /etc/rsyslog.conf

#定义模板:用来指定接收的日志文件的存放路径,%...%之间定义的是参数
$template DynamicIpLog,"/log/%fromhost-ip%-%$YEAR%-%$MONTH%-%$DAY%.log"

#接收日志:将传来的用户普通消息存到指定位置(?用来标识动态模板)
user.notice                              ?DynamicIpLog

#:x!保存修改

2. Teste

#重启远程服务器端
[root@ ~ 04:53:48]#systemctl restart rsyslog.service
[root@ ~ 04:54:08]#netstat -tulnp |grep 514
udp        0      0 0.0.0.0:514             0.0.0.0:*                           1517/rsyslogd       
udp6       0      0 :::514                  :::*                                1517/rsyslogd      
[root@ ~ 04:54:20]#ls /log   		 #一开始目录还没创建
ls: cannot access /log: No such file or directory
#日志发送端开始发送日志
[root@lin ~]# logger xixihahaxixihaha

#再次查看远程服务器端
[root@ ~ 04:55:05]#cat /log/192.168.6.146-2020-09-12.log    		 #已经将日志存到模板创建的目录中的文件当中
Aug  9 01:01:56 lin root: xixihahaxixihaha   #内容属实
[root@ ~ 04:55:20]#vim /etc/rsyslog.conf  

Os registros Rsyslog são armazenados no MySQL local

1. Instalação

  • centos6: mysql-server
  • centos7: mariadb-server
#安装mysql的yum源
wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
#安装用来配置mysql的yum源的rpm包
rpm -Uvh mysql57-community-release-el6-9.noarch.rpm 
#安装mysql
yum install mysql-community-server
#开启mysql服务
[root@lin ~]# service mysqld start
Starting mysqld:                                 				  [  OK  ]

2. Faça login para alterar a senha

#初次安装,root用户的登陆密码是回车键即没有密码
[root@lin ~]# mysql -u root -p  
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
#登陆进去之后,再修改密码
mysql> use mysql;
mysql> UPDATE user SET Password= password('854633') where User='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 3  Changed: 2  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3. Instale o driver Mysql adequado para o serviço de log Rsyslog

[root@lin ~]# yum install rsyslog-mysql
[root@lin ~]# ll /usr/share/doc/rsyslog-mysql-5.8.10/    #查看是否有sql文件
total 4
-rw-r--r--. 1 root root 1046 Apr 18  2011 createDB.sql   #将指定的sql文件导入到数据库中
[root@lin ~]# mysql -u root -p </usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 
Enter password:
[root@lin ~]# mysql -u root -p                           #登陆mysql
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |									#Syslog日志数据库已经导入
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

4. Configurações de permissão do banco de dados Syslog

#授予Syslog所有表的所有使用权限 给localhost(如果是外网主机这里就是对应ip地址),
#localhost通过账号为sysloguser密码为syspass使用Syslog数据库
mysql> grant all on Syslog.* to 'sysloguser'@'localhost' identified by 'syspass';
mysql> flush privileges; #刷新权限

5. Modifique o arquivo de configuração Rsyslog

vim /etc/rsyslog.conf
#如果要接收其他主机的日志,需要开启相应的模块,以此打开对应监听端口
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
$ModLoad ommysql

#追加模块 
$ModLoad ommysql
#追加规则::模块名:+ip地址,+数据库名,++登陆名,+登陆密码
user.notice                                     :ommysql:127.0.0.1,Syslog,s
ysloguser,syspass
#服务重启
[root@lin ~]# service restart rsyslog
#查看状态
[root@lin ~]# service rsyslog status
rsyslogd (pid  3700) is running...

6. Teste

#如果是将日志服务器的内容通过网络存储到远程数据库服务器中,那么在测试过程当中
#需要进行防火墙配置
#发送日志
[root@lin ~]# logger this is a log to mysql
#登陆mysql后,使用数据库
mysql> use Syslog;
#查看表格
mysql> show tables;
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.00 sec)
#查表
mysql> select * from SystemEvents\G;
*************************** 1. row ***************************
                ID: 1
        CustomerID: NULL
        ReceivedAt: 2020-08-09 04:12:50
DeviceReportedTime: 2020-08-09 04:12:50
          Facility: 1
          Priority: 5
          FromHost: lin
           Message:  this is a log to mysql   #确实是之前发送的日志内容,测试成功
        NTSeverity: NULL
        Importance: NULL
       EventSource: NULL
         EventUser: NULL
     EventCategory: NULL
           EventID: NULL
   EventBinaryData: NULL
      MaxAvailable: NULL
         CurrUsage: NULL
          MinUsage: NULL
          MaxUsage: NULL
        InfoUnitID: 1
         SysLogTag: root:
      EventLogType: NULL
   GenericFileName: NULL
          SystemID: NULL

Acho que você gosta

Origin blog.csdn.net/weixin_31789689/article/details/108556277
Recomendado
Clasificación