2019年8月

CKI 团队是如何防止 bug 被合并到 Linux 内核中。

Linux 内核的每个发布版本包含了来自 1,700 个开发者产生的 14,000 个变更集,很显然,这使得 Linux 内核快速迭代的同时也产生了巨大的复杂性问题。内核上 Bug 有小麻烦也有大问题,有时是系统崩溃,有时是数据丢失。

随着越来越多的项目对于持续集成(CI)的呼声,内核持续集成(CKI)小组秉承着一个任务目标:防止 Bug 被合并到内核当中。

Linux 测试问题

许多 Linux 发行版只在需要的时候对 Linux 内核进行测试。而这种测试往往只在版本发布时或者用户发现错误时进行。

有时候,出现玄学问题时,维护人员需要在包含了数万个补丁的变更中匆忙地寻找哪个补丁导致这个新的玄学 Bug。诊断 Bug 需要专业的硬件设备、一系列的触发器以及内核相关的专业知识。

CI 和 Linux

许多现代软件代码库都采用某种自动化 CI 测试机制,能够在提交进入代码存储库之前对其进行测试。这种自动化测试使得维护人员可以通过查看 CI 测试报告来发现软件质量问题以及大多数的错误。一些简单的项目,比如某个 Python 库,附带的大量工具使得整个检查过程更简单。

在任何测试之前都需要配置和编译 Linux。而这么做将耗费大量的时间和计算资源。此外,Linux 内核必需在虚拟机或者裸机上启动才能进行测试。而访问某些硬件架构需要额外的开销或者非常慢的仿真。因此,人们必须确定一组能够触发错误或者验证修复的测试集。

CKI 团队如何运作?

Red Hat 公司的 CKI 团队当前正追踪来自数个内部内核分支和上游的稳定内核分支树等内核分支的更改。我们关注每个代码库的两类关键事件:

  1. 当维护人员合并 PR 或者补丁时,代码库变化后的最终结果。
  2. 当开发人员通过拼凑或者稳定补丁队列发起变更合并时。

当这些事件发生时,自动化工具开始执行,GitLab CI 管道开始进行测试。一旦管道开始执行 linting) 脚本、合并每一个补丁,并为多种硬件架构编译内核,真正的测试便开始了。我们会在六分钟内完成四种硬件架构的内核编译工作,并且通常会在两个小时或更短的时间内将反馈提交到稳定邮件列表中。(自 2019 年 1 月起)每月执行超过 100,000 次内核测试,并完成了超过 11,000 个 GitLab 管道。

每个内核都会在本地硬件架构上启动,其中包含:

这些内核上运行了包括 Linux 测试项目(LTP)在内的多个测试,其中包括使用常用测试工具的大量测试。我们 CKI 团队开源了超过 44 个测试并将继续开源更多测试。

参与其中

上游的内核测试工作日渐增多。包括 Google、Intel、LinaroSony 在内的许多公司为各种内核提供了测试输出。每一项工作都专注于为上游内核以及每个公司的客户群带来价值。

如果你或者你的公司想要参与这一工作,请参加在 9 月份在葡萄牙里斯本举办的 Linux Plumbers Conference 2019。在会议结束后的两天加入我们的 Kernel CI hackfest 活动,并推动快速内核测试的发展。

更多详细信息,请见我在 Texas Linux Fest 2019 上的演讲。


via: https://opensource.com/article/19/6/continuous-kernel-integration-linux

作者:Major Hayden 选题:lujun9972 译者:LazyWolfLin 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本教程介绍了在 Ubuntu 和基于 Ubuntu 的 Linux 发行版上安装 MongoDB 的两种方法。

MongoDB 是一个越来越流行的自由开源的 NoSQL 数据库,它将数据存储在类似 JSON 的灵活文档集中,这与 SQL 数据库中常见的表格形式形成对比。

你很可能发现在现代 Web 应用中使用 MongoDB。它的文档模型使得使用各种编程语言能非常直观地访问和处理它。

mongodb Ubuntu

在本文中,我将介绍两种在 Ubuntu 上安装 MongoDB 的方法。

在基于 Ubuntu 的发行版上安装 MongoDB

  1. 使用 Ubuntu 仓库安装 MongoDB。简单但不是最新版本的 MongoDB
  2. 使用其官方仓库安装 MongoDB。稍微复杂,但你能得到最新版本的 MongoDB。

第一种安装方法更容易,但如果你计划使用官方支持的最新版本,那么我建议使用第二种方法。

有些人可能更喜欢使用 snap 包。Ubuntu 软件中心提供了 snap,但我不建议使用它们,因为他们现在已经过期了,因此我这里不会提到。

方法 1:从 Ubuntu 仓库安装 MongoDB

这是在系统中安装 MongoDB 的简便方法,你只需输入一个命令即可。

安装 MongoDB

首先,确保你的包是最新的。打开终端并输入:

sudo apt update && sudo apt upgrade -y

继续安装 MongoDB:

sudo apt install mongodb

这就完成了!MongoDB 现在安装到你的计算机上了。

MongoDB 服务应该在安装时自动启动,但要检查服务状态:

sudo systemctl status mongodb

Check if the MongoDB service is running.

你可以看到该服务是活动的。

运行 MongoDB

MongoDB 目前是一个 systemd 服务,因此我们使用 systemctl 来检查和修改它的状态,使用以下命令:

sudo systemctl status mongodb
sudo systemctl stop mongodb
sudo systemctl start mongodb
sudo systemctl restart mongodb

你也可以修改 MongoDB 是否自动随系统启动(默认:启用):

sudo systemctl disable mongodb
sudo systemctl enable mongodb

要开始使用(创建和编辑)数据库,请输入:

mongo

这将启动 mongo shell。有关查询和选项的详细信息,请查看手册

注意:根据你计划使用 MongoDB 的方式,你可能需要调整防火墙。不过这超出了本篇的内容,并且取决于你的配置。

卸载 MongoDB

如果你从 Ubuntu 仓库安装 MongoDB 并想要卸载它(可能要使用官方支持的方式安装),请输入:

sudo systemctl stop mongodb
sudo apt purge mongodb
sudo apt autoremove

这应该会完全卸载 MongoDB。确保备份你可能想要保留的任何集合或文档,因为它们将被删除!

方法 2:在 Ubuntu 上安装 MongoDB 社区版

这是推荐的安装 MongoDB 的方法,它使用包管理器。你需要多打几条命令,对于 Linux 新手而言,这可能会感到害怕。

但没有什么可怕的!我们将一步步说明安装过程。

安装 MongoDB

由 MongoDB Inc. 维护的包称为 mongodb-org,而不是 mongodb(这是 Ubuntu 仓库中包的名称)。在开始之前,请确保系统上未安装 mongodb。因为包之间会发生冲突。让我们开始吧!

首先,我们必须导入公钥:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

现在,你需要在源列表中添加一个新的仓库,以便你可以安装 MongoDB 社区版并获得自动更新:

echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

要安装 mongodb-org,我们需要更新我们的包数据库,以便系统知道可用的新包:

sudo apt update

现在你可以安装最新稳定版的 MongoDB:

sudo apt install -y mongodb-org

或者某个特定版本(在 = 后面修改版本号)

sudo apt install -y mongodb-org=4.0.6 mongodb-org-server=4.0.6 mongodb-org-shell=4.0.6 mongodb-org-mongos=4.0.6 mongodb-org-tools=4.0.6

如果你选择安装特定版本,请确保在所有位置都修改了版本号。如果你修改了 mongodb-org=4.0.6,你将安装最新版本。

默认情况下,使用包管理器(apt-get)更新时,MongoDB 将更新为最新的版本。要阻止这种情况发生(并冻结为已安装的版本),请使用:

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

你现在已经成功安装了 MongoDB!

配置 MongoDB

默认情况下,包管理器将创建 /var/lib/mongodb/var/log/mongodb,MongoDB 将使用 mongodb 用户帐户运行。

我不会去更改这些默认设置,因为这超出了本指南的范围。有关详细信息,请查看手册

/etc/mongod.conf 中的设置在启动/重新启动 mongodb 服务实例时生效。

运行 MongoDB

要启动 mongodb 的守护进程 mongod,请输入:

sudo service mongod start

现在你应该验证 mongod 进程是否已成功启动。此信息(默认情况下)保存在 /var/log/mongodb/mongod.log 中。我们来看看文件的内容:

sudo cat /var/log/mongodb/mongod.log

Check MongoDB logs to see if the process is running properly.

只要你在某处看到:[initandlisten] waiting for connections on port 27017,就说明进程正常运行。

注意:27017 是 mongod 的默认端口。

要停止/重启 mongod,请输入:

sudo service mongod stop
sudo service mongod restart

现在,你可以通过打开 mongo shell 来使用 MongoDB:

mongo

卸载 MongoDB

运行以下命令:

sudo service mongod stop
sudo apt purge mongodb-org*

要删除数据库日志文件(确保备份你要保留的内容!):

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

总结

MongoDB 是一个很棒的 NoSQL 数据库,它易于集成到现代项目中。我希望本教程能帮助你在 Ubuntu 上安装它!在下面的评论中告诉我们你计划如何使用 MongoDB。


via: https://itsfoss.com/install-mongodb-ubuntu

作者:Sergiu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

NetData 是一个用于系统和应用的分布式实时性能和健康监控工具。它提供了对系统中实时发生的所有事情的全面检测。你可以在高度互动的 Web 仪表板中查看结果。使用 Netdata,你可以清楚地了解现在发生的事情,以及之前系统和应用中发生的事情。你无需成为专家即可在 Linux 系统中部署此工具。NetData 开箱即用,零配置、零依赖。只需安装它然后坐等,之后 NetData 将负责其余部分。

它有自己的内置 Web 服务器,以图形形式显示结果。NetData 非常快速高效,安装后可立即开始分析系统性能。它是用 C 编程语言编写的,所以它非常轻量。它占用的单核 CPU 使用率不到 3%,内存占用 10-15MB。我们可以轻松地在任何现有网页上嵌入图表,并且它还有一个插件 API,以便你可以监控任何应用。

以下是 Linux 系统中 NetData 的监控列表。

  • CPU 使用率
  • RAM 使用率
  • 交换内存使用率
  • 内核内存使用率
  • 硬盘及其使用率
  • 网络接口
  • IPtables
  • Netfilter
  • DDoS 保护
  • 进程
  • 应用
  • NFS 服务器
  • Web 服务器 (Apache 和 Nginx)
  • 数据库服务器 (MySQL),
  • DHCP 服务器
  • DNS 服务器
  • 电子邮件服务
  • 代理服务器
  • Tomcat
  • PHP
  • SNP 设备
  • 等等

NetData 是自由开源工具,它支持 Linux、FreeBSD 和 Mac OS。

在 Linux 上安装 NetData

Netdata 可以安装在任何安装了 Bash 的 Linux 发行版上。

最简单的安装 Netdata 的方法是从终端运行以下命令:

$ bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)

这将下载并安装启动和运行 Netdata 所需的一切。

有些用户可能不想在没有研究的情况下将某些东西直接注入到 Bash。如果你不喜欢此方法,可以按照以下步骤在系统上安装它。

在 Arch Linux 上

Arch Linux 默认仓库中提供了最新版本。所以,我们可以使用以下 pacman 命令安装它:

$ sudo pacman -S netdata

在基于 DEB 和基于 RPM 的系统上

在基于 DEB (Ubuntu / Debian)或基于 RPM(RHEL / CentOS / Fedora) 系统的默认仓库没有 NetData。我们需要从它的 Git 仓库手动安装 NetData。

首先安装所需的依赖项:

# Debian / Ubuntu
$ sudo apt-get install zlib1g-dev uuid-dev libuv1-dev liblz4-dev libjudy-dev libssl-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl

# Fedora
$ sudo dnf install zlib-devel libuuid-devel libuv-devel lz4-devel Judy-devel openssl-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils

# CentOS / Red Hat Enterprise Linux
$ sudo yum install epel-release
$ sudo yum install autoconf automake curl gcc git libmnl-devel libuuid-devel openssl-devel libuv-devel lz4-devel Judy-devel lm_sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel

# openSUSE
$ sudo zypper install zlib-devel libuuid-devel libuv-devel liblz4-devel judy-devel openssl-devel libmnl-devel gcc make git autoconf autoconf-archive autogen automake pkgconfig curl findutils

安装依赖项后,在基于 DEB 或基于 RPM 的系统上安装 NetData,如下所示。

Git 克隆 NetData 仓库:

$ git clone https://github.com/netdata/netdata.git --depth=100

上面的命令将在当前工作目录中创建一个名为 netdata 的目录。

切换到 netdata 目录:

$ cd netdata/

最后,使用命令安装并启动 NetData:

$ sudo ./netdata-installer.sh

示例输出:

Welcome to netdata!
Nice to see you are giving it a try!

You are about to build and install netdata to your system.

It will be installed at these locations:

- the daemon at /usr/sbin/netdata
 - config files at /etc/netdata
 - web files at /usr/share/netdata
 - plugins at /usr/libexec/netdata
 - cache files at /var/cache/netdata
 - db files at /var/lib/netdata
 - log files at /var/log/netdata
 - pid file at /var/run

This installer allows you to change the installation path.
Press Control-C and run the same command with --help for help.

Press ENTER to build and install netdata to your system > ## Press ENTER key

安装完成后,你将在最后看到以下输出:

-------------------------------------------------------------------------------

OK. NetData is installed and it is running (listening to *:19999).

-------------------------------------------------------------------------------

INFO: Command line options changed. -pidfile, -nd and -ch are deprecated.
If you use custom startup scripts, please run netdata -h to see the
corresponding options and update your scripts.

Hit http://localhost:19999/ from your browser.

To stop netdata, just kill it, with:

killall netdata

To start it, just run it:

/usr/sbin/netdata


Enjoy!

Uninstall script generated: ./netdata-uninstaller.sh

安装 NetData

NetData 已安装并启动。

要在其他 Linux 发行版上安装 Netdata,请参阅官方安装说明页面

在防火墙或者路由器上允许 NetData 的默认端口

如果你的系统在防火墙或者路由器后面,那么必须允许默认端口 19999 以便从任何远程系统访问 NetData 的 web 界面。

在 Ubuntu/Debian 中

$ sudo ufw allow 19999

在 CentOS/RHEL/Fedora 中

$ sudo firewall-cmd --permanent --add-port=19999/tcp

$ sudo firewall-cmd --reload

启动/停止 NetData

要在使用 Systemd 的系统上启用和启动 Netdata 服务,请运行:

$ sudo systemctl enable netdata
$ sudo systemctl start netdata

要停止:

$ sudo systemctl stop netdata

要在使用 Init 的系统上启用和启动 Netdata 服务,请运行:

$ sudo service netdata start
$ sudo chkconfig netdata on

要停止:

$ sudo service netdata stop

通过 Web 浏览器访问 NetData

打开 Web 浏览器,然后打开 http://127.0.0.1:19999 或者 http://localhost:19999/ 或者 http://ip-address:19999。你应该看到如下页面。

Netdata 仪表板

在仪表板中,你可以找到 Linux 系统的完整统计信息。向下滚动以查看每个部分。

你可以随时打开 http://localhost:19999/netdata.conf 来下载和/或查看 NetData 默认配置文件。

Netdata 配置文件

更新 NetData

在 Arch Linux 中,只需运行以下命令即可更新 NetData。如果仓库中提供了更新版本,那么就会自动安装该版本。

$ sudo pacman -Syyu

在基于 DEB 或 RPM 的系统中,只需进入已克隆它的目录(此例中是 netdata)。

$ cd netdata

拉取最新更新:

$ git pull

然后,使用命令重新构建并更新它:

$ sudo ./netdata-installer.sh

卸载 NetData

进入克隆 NetData 的文件夹。

$ cd netdata

然后,使用命令卸载它:

$ sudo ./netdata-uninstaller.sh --force

在 Arch Linux 中,使用以下命令卸载它。

$ sudo pacman -Rns netdata

资源


via: https://www.ostechnix.com/netdata-real-time-performance-monitoring-tool-linux/

作者:sk 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们已经在先前的文章中看到如何安装 Debian 10(Buster)。今天,我们将学习如何从 Debian 9 升级为 Debian 10,虽然我们已将看到 Debian 10 和它的特色,所以这里我们不会深入介绍。但是可能读者没有机会读到那篇文章,让我们快速了解一下 Debian 10 和它的新功能。

在差不多两年的开发后,Debian 团队最终发布一个稳定版本,Debian 10 的代码名称是 Buster。Buster 是一个 LTS (长期支持支持)版本,因此未来将由 Debian 支持 5 年。

Debian 10(Buster)新的特色

Debian 10(Buster)回报给大多数 Debian 爱好者大量的新特色。一些特色包括:

  • GNOME 桌面 3.30
  • 默认启用 AppArmor
  • 支持 Linux 内核 4.19.0-4
  • 支持 OpenJDk 11.0
  • 从 Nodejs 4 ~ 8 升级到 Nodejs 10.15.2
  • Iptables 替换为 NFTables

等等。

从 Debian 9 到 Debian 10 的逐步升级指南

在我们开始升级 Debian 10 前,让我们看看升级需要的必备条件:

步骤 1) Debian 升级必备条件

  • 一个良好的网络连接
  • root 用户权限
  • 数据备份

备份你所有的应用程序代码库、数据文件、用户账号详细信息、配置文件是极其重要的,以便在升级出错时,你可以总是可以还原到先前的版本。

步骤 2) 升级 Debian 9 现有的软件包

接下来的步骤是升级你所有现有的软件包,因为一些软件包被标志为保留不能升级,从 Debian 9 升级为 Debian 10 有失败或引发一些问题的可能性。所以,我们不冒任何风险,更好地升级软件包。使用下面的代码来升级软件包:

root@linuxtechi:~$ sudo apt update && sudo apt upgrade -y

步骤 3) 修改软件包存储库文件 /etc/sources.list

接下来的步骤是修改软件包存储库文件 /etc/sources.list,你需要用文本 Buster 替换 Stretch

但是,在你更改任何东西前,确保如下创建一个 sources.list 文件的备份:

root@linuxtechi:~$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

现在使用下面的 sed 命令来在软件包存储库文件中使用 buster 替换 stretch,示例如下显示:

root@linuxtechi:~$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list
root@linuxtechi:~$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/*.list

更新后,你需要如下更新软件包存储库索引:

root@linuxtechi:~$ sudo apt update

在开始升级你现有的 Debian 操作系统前,让我们使用下面的命令验证当前版本,

root@linuxtechi:~$ cat /etc/*-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@linuxtechi:~$

步骤 4) 从 Debian 9 升级到 Debian 10

你做完所有的更改后,是时候从 Debian 9 升级到 Debian 10 了。但是在这之前,再次如下确保更新你的软件包:

root@linuxtechi:~$ sudo apt update && sudo apt upgrade -y

在软件包升级期间,你将被提示启动服务,所以选择你较喜欢的选项。

一旦你系统的所有软件包升级完成,就升级你的发行版的软件包。使用下面的代码来升级发行版:

root@linuxtechi:~$ sudo apt dist-upgrade -y

升级过程可能花费一些时间,取决于你的网络速度。记住在升级过程中,你将被询问一些问题,在软件包升级后是否需要重启服务、你是否需要保留现存的配置文件等。如果你不想进行一些自定义更改,简单地键入 “Y” ,来让升级过程继续。

步骤 5) 验证升级

一旦升级过程完成,重启你的机器,并使用下面的方法检测版本:

root@linuxtechi:~$ lsb_release -a

如果你获得如下输出:

Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster
root@linuxtechi:~$

是的,你已经成功地从 Debian 9 升级到 Debian 10。

验证升级的备用方法:

root@linuxtechi:~$ cat /etc/*-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@linuxtechi:~$

结束

希望上面的逐步指南为你提供了从 Debian 9(Stretch)简单地升级为 Debian 10(Buster)的所有信息。在评论部分,请给予你使用 Debian 10 的反馈、建议、体验。


via: https://www.linuxtechi.com/upgrade-debian-9-to-debian-10-command-line/

作者:Pradeep Kumar 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

目前市场上有许多开源监控工具可用于监控 Linux 系统的性能。当系统达到指定的阈值限制时,它将发送电子邮件警报。它可以监视 CPU 利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。

如果你只有很少的系统并且想要监视它们,那么编写一个小的 shell 脚本可以使你的任务变得非常简单。

在本教程中,我们添加了一个 shell 脚本来监视 Linux 系统上的 messages 日志。

我们过去添加了许多有用的 shell 脚本。如果要查看这些内容,请导航至以下链接。

此脚本将检查 /var/log/messages 文件中的 “warning“、“error” 和 “critical”,如果发现任何有关的东西,就给指定电子邮件地址发邮件。

如果服务器有许多匹配的字符串,我们就不能经常运行这个可能填满收件箱的脚本,我们可以在一天内运行一次。

为了解决这个问题,我让脚本以不同的方式触发电子邮件。

如果 /var/log/messages 文件中昨天的日志中找到任何给定字符串,则脚本将向给定的电子邮件地址发送电子邮件警报。

注意:你需要更改电子邮件地址,而不是我们的电子邮件地址。

# vi /opt/scripts/os-log-alert.sh
#!/bin/bash
#Set the variable which equal to zero
prev_count=0

count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | egrep -wi 'warning|error|critical' | wc -l)

if [ "$prev_count" -lt "$count" ] ; then
    # Send a mail to given email id when errors found in log
    SUBJECT="WARNING: Errors found in log on "`date --date='yesterday' '+%b %e'`""
    # This is a temp file, which is created to store the email message.
    MESSAGE="/tmp/logs.txt"
    TO="[email protected]"
    echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE
    echo  "Hostname: `hostname`" >> $MESSAGE
    echo -e "\n" >> $MESSAGE
    echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
    echo "Error messages in the log file as below" >> $MESSAGE
    echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
    grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >>  $MESSAGE
    mail -s "$SUBJECT" "$TO" < $MESSAGE
    #rm $MESSAGE
fi

os-log-alert.sh 文件设置可执行权限。

$ chmod +x /opt/scripts/os-log-alert.sh

最后添加一个 cron 任务来自动执行此操作。它将每天 7 点钟运行。

# crontab -e
0 7 * * * /bin/bash /opt/scripts/os-log-alert.sh

注意:你将在每天 7 点收到昨天日志的电子邮件提醒。

输出:你将收到类似下面的电子邮件提醒。

ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin.

+-----------------------------------------------------+
Error messages in the log file as below
+-----------------------------------------------------+
Jul  3 02:40:11 ns1 kernel: php-fpm[3175]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
Jul  3 02:50:14 ns1 kernel: lmtp[8249]: segfault at 20 ip 00007f9cc05295e4 sp 00007ffc57bca1a0 error 4 in libdovecot-storage.so.0.0.0[7f9cc04df000+148000]
Jul  3 15:36:09 ns1 kernel: php-fpm[17846]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
Jul  3 15:45:54 ns1 pure-ftpd: ([email protected]) [WARNING] Authentication failed for user [daygeek]
Jul  3 16:25:36 ns1 pure-ftpd: ([email protected]) [WARNING] Sorry, cleartext sessions and weak ciphers are not accepted on this server.#012Please reconnect using TLS security mechanisms.
Jul  3 16:44:20 ns1 kernel: php-fpm[8979]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]

via: https://www.2daygeek.com/linux-bash-script-to-monitor-messages-log-warning-error-critical-send-email/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出