rsyslog

在Linux上,默认情况下,所有日志文件都位于/var/log目录下,有几种类型的日志文件存储不同的消息,可以是cron,内核,安全性,事件,用户,这些日志文件大多由rsyslog服务控制。

在最近使用systemd的系统上,一些日志由journald守护程序管理,它们是二进制格式的,这些日志是易失性的,因为它们被写入RAM并且不能承受系统重启,它们经常在/run/log/journal/上找到,但请注意,也可以将journald配置为通过写入文件来永久存储日志消息。

我们将把rsyslog服务器配置为集中式日志管理系统,rsyslog服务将侦听udp/tcp端口, rsyslog使用的默认端口是514,在客户端系统上,rsyslog将通过UDP或TCP端口通过网络收集日志并将日志发送到rsyslog服务器。

使用syslog消息时,存在表征日志文件的优先级/严重性级别,即:

emerg,panic(紧急):0级 - 这是最低的日志级别,系统无法使用。

警报(警报):1级 - 必须立即采取行动。

错误(错误):3级 - 危急情况。

警告(警告):等级4 - 警告条件。

通知(通知):第5级 - 正常但重要的条件。

info(信息):6级 - 信息性消息。

debug(Debugging):Level 7 - 这是最高级别 - 调试级别的消息。

安装Rsyslog

默认情况下,在Ubuntu 16.04系统上Rsyslog安装非常的简单,只需要一个命令,你可以通过运行以下命令来安装它:

sudo apt-get install rsyslog

安装后,检查服务以查看它是否正在运行,运行sudo systemctl status rsyslog命令即可:

systemctl status rsyslog

一、日志外发(日志服务器配置)

1、登录到服务器/日志服务器

2、编辑配置文件

sudo vim /etc/rsyslog.conf

取消注释udp和tcp端口绑定的行:

module(load="imudp")

input(type="imudp" port="514")

# provides TCP syslog reception

module(load="imtcp")

input(type="imtcp" port="514")

3、如果你想限制访问特定子网,IP或域,请添加如下:

$AllowedSender TCP, 127.0.0.1, 192.168.10.0/24, *.example.com

可以在输入input(type=“imtcp” port=“514”)行后添加上面的行,请记住用正确的值替换给定的值。如下:


input(type="imtcp" port="514")$AllowedSender TCP, 127.0.0.1, 192.168.10.0/24, *.example.com

4、创建用于接收远程消息的新模板(在日志服务器配置)

让我们创建一个模板,指示rsyslog服务器如何存储传入的syslog消息,在GLOBAL DIRECTIVES部分之前添加模板:

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"

*.* ?remote-incoming-logs

& ~

收到的日志将使用上面的模板进行解析并存储在目录/var/log/中,文件命名遵循约定:%HOSTNAME% and %PROGRAMNAME%变量,即客户端主机名和生成日志消息的客户端工具:

& ~指示rsyslog守护程序仅将日志消息存储到指定的文件。

可以使用的其它变量包括:

%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%

重新启动rsyslog服务以使更改生效:

sudo systemctl restart rsyslog

5、确认服务是否正在侦听已配置的端口:

ss -tunelp | grep 514


6、配置Rsyslog防火墙
如果你的ufw防火墙服务正在运行,请允许rsyslog防火墙端口:

sudo ufw allow 514/tcp

sudo ufw allow 514/udp

4、保存退出,重启服务

 

 service syslog restart

二、日志外发(客户端)

sudo vim /etc/rsyslog.conf

1、允许保留FQDN:

$PreserveFQDN on

2、添加远程rsyslog服务器:


*.* @10.1.30.33:514

还可以使用FQDN而不是服务器IP地址:

*.* @fqdn-of-rsysog-server:514

以上行将允许通过UDP发送日志,因为tcp使用@@而不是单个@:

*.* @@10.1.30.33:514

或者:

*.* @@fqdn-of-rsysog-server:514
当rsyslog服务器关闭时,还要添加以下内容:

$ActionQueueFileName queue

$ActionQueueMaxDiskSpace 1g

$ActionQueueSaveOnShutdown on

$ActionQueueType LinkedList

$ActionResumeRetryCount -1

然后重启rsyslog服务:

systemctl restart rsyslog

二、 本地定期备份

首先:
开启cron日志

vi  /etc/rsyslog.d/50-default.conf

找到


#cron.* /var/log/cron.log

去掉注释
重启rsyslog

 service rsyslog restart

此时就可以查看日志了

tail -f /var/log/cron.log

使用crontab

  1. 使用crontab
  2. 第一次使用需要选择编辑器
select-editor
  1. crontab -e

  2. 每天23.30运行备份脚本

30 23 * * * /bin/bash /var/back_sh/back.sh

给脚本权限


chmod 777 /var/back_sh/back.sh

或直接编辑(针对系统的定时任务)

vi /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do. SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
30 23 * * * root /bin/bash /var/back_sh/back.sh


每天23.10运行备份脚本
脚本内容:

echo "The program being executed......"
back_dir=/var/dengbao/log_back
file_dir=/var/log #定义备份文件名字
file_name=`date +%Y-%m-%d --date='-1 day'` if [[ ! -d "${back_dir}" ]]; then
mkdir "${back_dir}"
fi if [[ ! -d "${back_dir}/${file_name}" ]]; then
mkdir "${back_dir}/${file_name}"
fi cp -r ${file_dir}/* ${back_dir}/${file_name}/
echo "succeed"

欢迎关注公众号:

Ubuntu 使用crontab定时备份log的更多相关文章

  1. Linux下使用crontab定时备份日志

    上周学习了Linux,其中有使用crontab定时备份日志的内容,现把主要步骤记录如下: 首先需要备份的日志的源目录位于/opt/lampp/logs/access_log 备份到/tmp/logs下 ...

  2. Python +crontab定时备份目录发送邮件

    公司有一台静态页面展示服务器仅供给客户展示我们做的项目,当时买的时候是最低配,也就是磁盘空间为20G的系统盘,考虑到代码量很小所以没有另加磁盘,后来项目多了,就写了个crontab 定时备份目录. 就 ...

  3. linux下使用crontab定时备份MYSQL数据库的方法:

    摘要 linux下使用crontab定时备份MYSQL数据库的方法: 只需按照下面3步做,一切都在你的掌控之下: 第一步:在服务器上配置备份目录代码: ------------------------ ...

  4. MySQL定时备份之使用Linux下的crontab定时备份实例

    这篇文章主要介绍了使用Linux下的crontab进行MySQL定时备份的例子,需要的朋友可以参考下   复制代码代码如下: ##################################### ...

  5. Linux下MySQL备份以及crontab定时备份

    1. 备份某个数据库 ################################################################## # 备份某个数据库 ############ ...

  6. MySQL使用crontab定时备份不执行问题

    在使用crontab定时备份数据库时,发现并没有执行备份命令. 下面是定时备份的代码: 30 1 * * * /usr/local/mysql/bin/mysqldump --defaults-ext ...

  7. Linux 使用crontab定时备份Mysql数据库

    项目中数据库的数据是至关重要的!在实际项目中,遇到有客户机房断电导致数据库数据丢失的问题,又因为备份容灾不及时,导致部分数据恢复不了,而刚好这部分丢失的数据对于客户来说又是至关重要的,那么怎么办呢?盲 ...

  8. Ubuntu下的定时备份数据库

    1.编写备份数据库的shell脚本 mysqldump -uUserName -pPassword dbName >/XXX/XXXX/XXXX/fileName_$(date +%Y%m%d_ ...

  9. Gitlab备份,Crontab定时备份

    1:Gitlab备份非常简单,只需要一条命令就可以创建完整的备份 gitlab-rake gitlab:backup:create 使用以上命令,就相当于在/var/opt/gitlab/backup ...

  10. ubuntu crontab 定时备份postgres数据库并上传ftp服务器

    最近公司要求备份数据库,所以就查了比较作的资料.废话不多说,入正题. 目的:定期备份ubuntu下的postgres数据库,打包上传到指定ftp服务器. 经过查找资料,解决方法: ①编写备份数据库.打 ...

随机推荐

  1. MySQL8.0事务知识点

    mysql8.0事务学习 1.基本概念 事务(Transaction)是访问和更新数据库的程序执行单元:是一个最小的不可分割的工作单元,能保证一个业务的完整性:事务中可能包含一个或多个sql语句,这些 ...

  2. 安川机器人HW1171766-A本体线缆维修详解

    随着工业自动化程度的不断提高,安川机器人在生产线上的应用越来越广泛.然而,在长期运行过程中,安川机器人本体线缆可能会出现磨损.老化.断裂问题,这些问题不仅会影响机器人的正常运行,还可能导致生产线的停滞 ...

  3. STM32 DMA操作

    https://blog.csdn.net/u014754841/article/details/79525637?utm_medium=distribute.pc_relevant.none-tas ...

  4. Typecho美化之网页底部增加好久不见的底部样式

    好久不见之本站同款网站底部样式,效果见本站. 1.修改footer.php首先,在页脚文件footer.php文件的最下面放入以下代码: <!-- 好久不见 --> <div cla ...

  5. Flink学习(三) 批流版本的wordcount JAVA版本

    Flink 开发环境通常来讲,任何一门大数据框架在实际生产环境中都是以集群的形式运行,而我们调试代码大多数会在本地搭建一个模板工程,Flink 也不例外. Flink 一个以 Java 及 Scala ...

  6. P4688 [Ynoi Easy Round 2016] 掉进兔子洞

    莫队可以维护种类数 但是无法维护出现次数 考虑离散化以后我们后面腾出了一些空位 那么我们就可以填进那些坑里面 这样做我们就可以用 bitset 直接做与运算 那么 莫队 + bitset 即可

  7. C#之 Dictionary 详解

    基本概念 Dictionary<TKey, TValue>是C#中用于存储键值对集合的泛型类,属于System.Collections.Generic命名空间.它允许使用键(Key)来访问 ...

  8. css 保留后端 textarea 中的换行与空格字符

    原文链接:https://blog.jijian.link/2020-10-22/css-pre/ 如果后台使用 textarea 输入内容,在前段显示需要保留换行符与空白字符,该如何做? 常规方法 ...

  9. pytorch报错 No module named 'nn'

    问题描述 pytorch 报错 No module named 'nn' 如果你 import torch 没问题,而 import torch.nn时出现问题,你可能命名使用了一个名字为 torch ...

  10. vSphere虚拟化之ESXi的安装及部署

    vSphere虚拟化之ESXi的安装及部署一.什么是vSphere?vSphere是VNware公司在2001年基于云计算推出的一套企业级虚拟化解决方案.核心组件为ESXi.如今,经历了5个版本的改进 ...