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. SqlServer中获取字符串中的数字部分

    具体SQL如下所示: --获取字符串中的数字部分 CREATE FUNCTION [dbo].[f_GetNumStr] ( @Str NVARCHAR(MAX) ) RETURNS NVARCHAR ...

  2. JUC并发—3.volatile和synchronized原理

    大纲 1.volatile关键字的使用例子 2.主内存和CPU的缓存模型 3.CPU高速缓存的数据不一致问题 4.总线锁和缓存锁及MESI缓存一致性协议 5.Java的内存模型JMM 6.JMM如何处 ...

  3. WebKit 简介及工作流程

    一.引言 WebKit 是一个被广泛应用于众多知名浏览器的开源网页渲染引擎.它在现代网页浏览体验中扮演着至关重要的角色. 二.WebKit 简介 WebKit 具有高效.灵活和跨平台的特点.它支持多种 ...

  4. [解决方案]git pull : error: cannot lock ref 'refs/remotes/origin/*' (unable to update local ref)

    错误 git pull 报错不能更新本地分支 错误分析 本地分支跟远程分支不匹配 导致更新失败 解决方案 备份自己修改的代码 .git\refs\remotes (文件路径)对应删除你报错的分支 gi ...

  5. go、thinkphp8、webman数据读取并发测试、性能测试

    前期准备:本地搭建程序运行所需环境,分别编写go,thinkphp8和webman程序,确保程序运行正常,新建mysql的student表,模拟存储学生信息,共计3646条数据,分别使用go语言.th ...

  6. 单页应用(SPA)是什么?

    来源:https://zhuanlan.zhihu.com/p/648113861 概述 单页应用(SPA,Single Page Application)是一种网页应用或网站的设计模式,它在浏览器中 ...

  7. 基于Element的el-input实现一个可以显示千分位符的金额输入框

    直接上代码 1 <template> 2 <!-- 定义一个 Element UI 的输入框组件 --> 3 <el-input 4 v-model="form ...

  8. Windows编程----内核对象竟然如此简单?

    什么是内核对象 内核对象本质上就是内存中的一块内存 ,这块内存由操作系统进行管理和分配,任何应用程序都无法直接操作这块内存区域.至于内核对象的作用,我们暂且不说,这里只需要直到它是内存中的一块内存. ...

  9. go mod 安装bee 报错

    报错信息 go: github.com/beego/bee imports github.com/beego/bee/cmd imports github.com/beego/bee/cmd/comm ...

  10. Xshell连接有跳板机(堡垒机)的服务器

    一.Xshell直连有跳板机的服务器 跳板机IP:112.74.163.161 端口号: 22     服务器IP:47.244.217.66 端口号:22 1. 新建跳板机会话 点击连接,主机和端口 ...