Centos: encaminhamento remoto de log Rsyslog e armazenamento de log Mysql
Artigo Diretório
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.128:514 #本地存储日志 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