Linux之实现Apache服务器监控、数据库定时备份及通过使用Shell脚本发送邮件

news2024/11/27 12:34:04

目录

 一、Apache服务器监控

为什么要用到服务监控?

实现Apache服务器监控

二、数据库备份

为什么要用到数据库备份?

实现数据库备份

三、Shell脚本发送邮件

为什么要用使用Shell脚本发送邮件?

实现Shell脚本发送邮件


一、Apache服务器监控

为什么要用到服务监控?

在Linux中监控Apache服务器是非常重要的,原因如下:

  1. 保证服务器稳定性:通过监控Apache服务器,可以及时发现并解决服务器故障、崩溃或其他问题。这可以避免服务器宕机或无法提供正常的服务,确保网站的稳定运行。

  2. 提高性能和响应速度:通过监控Apache服务器的性能指标,如CPU使用率、内存使用率、连接数、请求响应时间等,可以发现性能瓶颈和优化机会。优化服务器的配置和资源分配,可以提高网站的响应速度和用户体验。

  3. 预防安全漏洞和攻击:监控Apache服务器可以帮助发现安全漏洞、异常活动和潜在的攻击。通过监控日志文件、网络流量和异常行为,可以及时采取措施来防止或应对恶意攻击和入侵。

  4. 规划和预测容量:通过监控Apache服务器的负载和资源使用情况,可以了解网站的访问模式和流量趋势。这对于规划服务器的容量和扩展能力非常重要,以满足未来增长的需求。

  5. 管理和维护:监控Apache服务器可以提供有关服务器的详细信息,如版本、模块、配置和运行状态等。这对于服务器的管理、维护和故障排除非常有帮助。

总而言之,监控Apache服务器可以帮助我们了解服务器的状态、性能和安全性,并及时采取相应的措施来保证服务器的稳定运行、提高性能和防止安全问题。这对于网站的可用性、用户体验和业务成功至关重要。

实现Apache服务器监控

在 root 目录下新建一个tomcat_moniter.sh文件并编辑

tomcat_moniter.sh文件内容如下:

#!/bin/bash
# author: 空空bye.
# description: tomcat apache http server

# 用于判断tomcat是否启动
port=$(nmap -sT 192.168.181.128 | grep 8080/tcp | grep http | awk '{print $2'})

if [ "$port" == "open" ]
        then
                echo "$(date) tomcat is running" >> /tmp/tomcat-access.log
        else
                echo "$(date) tomcat is not running" >> /tmp/tomcat-error.log
fi

$():等同于cmd,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。l's

  • #!/bin/bash 的作用是:用于指定默认情况下运行指定脚本的解释器。当脚本以 #!/bin/bash 开头时,内核就知道用 /bin/bash 这个可执行文件来解释并运行这个脚本。不同解释器的写法如下:

    #!/bin/sh
    #!/bin/bash
    #!/usr/bin/perl
    #!/usr/bin/tcl
    #!/bin/sed -f
    #!/usr/awk -f

    上边每一个脚本头的行都指定了一个命令解释器,注意:#! 后边给出的路径名必须是正确的,否则将会出现一个错误消息,通常是"Command not found"

  • Nmap:(“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。官方网址

  • Nmap有四种基本功能:「端口扫描」、「主机探测」、「服务识别」和「系统识别」。

    Nmap服务安装命令如下:

    yum install - y nmap

    使用Nmap扫描端口如下:

    nmap -sT 192.168.181.128 | grep 8080/tcp | grep http | awk '{print $2'}

列出端口号和协议,状态和服务名称。状态可能是 open(开放的),filtered(被过滤的), closed(关闭的),或者unfiltered(未被过滤的)。

awk '{print $2}'意为取第二个字段输出。

二、数据库备份

为什么要用到数据库备份?

在Linux系统中,使用数据库定时备份有以下几个原因:

  1. 数据安全性:数据库中存储着重要的数据,而数据丢失或损坏可能会对业务运营产生严重影响。通过定时备份数据库,可以保障数据的安全性,一旦发生数据丢失或损坏的情况,可以通过备份数据进行恢复。

  2. 避免人为错误:人为错误是导致数据丢失或损坏的一大原因。通过定时备份数据库,可以避免因人为操作失误而造成的数据丢失,即使出现问题,也可以通过备份进行恢复。

  3. 数据恢复:数据库备份可以提供数据恢复的能力,当数据库发生故障或出现错误时,可以通过备份数据进行恢复,减少业务中断时间,保证业务的连续性。

  4. 数据迁移和复制:定时备份数据库可以方便进行数据迁移和复制。当需要将数据库从一个服务器迁移到另一个服务器时,可以通过备份数据进行快速迁移。同时,备份数据也可以用于在不同的服务器之间进行数据复制,以实现高可用性和负载均衡。

总的来说,数据库定时备份是保障数据安全、避免数据丢失和损坏,以及实现数据恢复、迁移和复制的重要措施之一。

实现数据库备份

/usr/local 目录下创建 moniter 目录并编辑 mysql_backup.sh 

mysql_backup.sh 文件内容如下:

#!/bin/bash
# author: 空空bye.
# description: 用于定时备份数据库
# $(date +%Y%m%d) 获取当前日期
BAK_DIR=/data/db-backup/$(date +%Y%m%d)
DB_NAME="vue"
DB_USER="root"
DB_PWD="1234"
MYSQL_DUMP_CMD=/usr/bin/mysqldump
# $UID 获取当前用户ID,如果不等于0则表示不是root用户
if [ $UID -ne 0 ];then
        echo "请使用root用户执行";
        exit;
fi
# !表示取反,-d表示目录
if [ ! -d $BAK_DIR ];then
        mkdir -p $BAK_DIR
        echo -e "$BAK_DIR 创建成功"
else
        echo -e "$BAK_DIR  目录已存在"
fi

$MYSQL_DUMP_CMD -u$DB_USER -p$DB_PWD $DB_NAME > $BAK_DIR/$DB_NAME.sql
# 显示最后命令的退出状态,0表示没有错误,其他表示有错误
if [ $? -eq 0 ];then
        echo -e "数据库备份成功"
else
        echo -e  "数据库备份失败,请检查备份脚本"
fi

exit

:文件需修改

DB_NAME="vue"        数据库名称
DB_USER="root"        用户名
DB_PWD="1234"        密码

 编辑mysql_backup.sh完成后,赋予mysql_backup.sh权限并启动

# 赋权
chmod 755 mysql_backup.sh
# 启动
./mysql_backup.sh

数据库备份完成后进入 data/db-backup/20240401/ 目录查看的SQL文件

# 切换目录
cd /data/db-backup/20240401/
# 查看文件后15行
tail -15 vue.sql

三、Shell脚本发送邮件

为什么要用使用Shell脚本发送邮件?

在Linux中使用Shell脚本发送邮件有以下几个原因:

  1. 自动化任务:Shell脚本可以用于自动化执行特定的任务,例如备份数据、检查系统状态等。发送邮件可以帮助管理员及时了解任务的执行情况。

  2. 监控和警报:通过Shell脚本发送邮件可以实现对系统的监控和警报功能。例如,当系统出现异常或达到某种预先设定的阈值时,可以发送邮件给管理员以便及时采取措施。

  3. 定时报告:使用Shell脚本可以定时生成报告,并通过邮件发送给相关人员。这样可以方便地分享系统状态、日志、性能统计等信息。

  4. 通知和通信:Shell脚本可以用于发送通知和通信邮件,例如发送给用户的欢迎邮件、密码重置邮件等。

  5. 执行远程操作:Shell脚本可以通过发送邮件的方式触发远程操作,例如向远程服务器发送命令、执行远程脚本等。

总之,使用Shell脚本发送邮件可以帮助管理员实现自动化、监控、报告和通信等功能,提高系统管理的效率和及时性。

实现Shell脚本发送邮件

使用sendmail发送邮件,如果没有安装,可以使用如下命令先安装

yum install -y sendmail

安装服务之后,请启动服务:

systemctl start sendmail

在 root 目录下新建一个sendmail.sh文件并编辑,文件内容如下:

#!/bin/bash
# author 空空bye.
email_header="Subject: 系统信息\nTo: *******@qq.com"
email="$email_header\ntomcat服务器正常运行,日期:$(date '+%Y-%m-%d %H:%M:%S')"
echo -e "$email" | sendmail -t

注意: -e参数不能丢,否则不会讲\n解析为换行;请修改自己的QQ邮箱

编辑sendmail.sh完成后,赋予sendmail.sh权限并启动 

# 赋权
chmod 755 sendmail.sh
# 启动
./sendmail.sh

发送成功之后,请登录到QQ邮箱并进行以下设置:

  • 点击自助查询
  • 点击收件查询,将发送的邮件添加到白名单中

 最后展示效果如下:

查看sendmail日志的命令:  

tail -f /var/log/maillog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1562881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法——所有可能的真二叉树:递归

. - 力扣(LeetCode) 思路:递归。因为要是真二叉树,节点树必为奇数个。 对于左子树和右子树分别递归构造,左子树从1开始一直到n-2,右子树从n-2开始一直到1; 然后使用数组接受左右子树构造出来的…

Annaconda的替代品miniforge!

用了多年的Annaconda竟然要收费了(个人不收费,企业收费,但个人电脑在企业IP下,还是被警告了),只能用miniforge 全面替换了! 一、卸载anaconda windows下卸载, 设置 -> 应用和功…

STM32之HAL开发——SPI写Flash源码

SPI通信收发原理框图(F1系列) SPI 初始化结构体详解 typedef struct { uint32_t Mode; /* 设置 SPI 的主/从机端模式 */ uint32_t Direction; /* 设置 SPI 的单双向模式 */ uint32_t DataSize; /* 设置 SPI 的数据帧长度,可选 8/16 位 */ u…

vscode连接服务器步骤

一 、下载vscode 下载vscode 在官网(https://code.visualstudio.com/)下载VsCode安装vscode 放到自己想安装的盘,最好不要C盘安装中文插件 安装完成后后下角会有提示说重启,点击重启就行。 4. 设置自动保存 点击右上角的文件—…

红杉资本:2024年关于AI的4大预测

四大预测 预测一:Copilot 将逐渐向 AI Agent 转变。 2024 年,AI 将从辅助人类的 Copilot 转变为真正能替代一些人类工作的Agent。AI 将更像是一个同事,而不仅仅是一个工具,这点在软件工程、客服等行业已经初步显现。 预测二&…

快速入门Linux,Linux岗位有哪些?(一)

文章目录 Linux与Linux运维操作系统?操作系统图解 认识LinuxLinux受欢迎的原因什么是Linux运维Linux运维岗位Linux运维岗位职责Linux运维架构师岗位职责Linux运维职业发展路线计算机硬件分类运维人员的三大核心职责 运维人员工作(服务器)什么…

【自我提升】一、Hyperledger Fabric 概念梳理

写在前面:最近因为业务需要,开始学习Hyperledger Fabric了,做java全栈工程师可真难搞。现在算是啥类型的都在涉及了,现在这个技术啥都不懂,就先开个学习专栏,记录记录。顺带也给各位道友参考参考。 目录 …

crypto-聪明的小

如图 暗示为栅栏密码 差行输入得到flag

【Android Studio3.5.2安装以及错误错误解决】

前言 下面是博主在安装Android studio时遇到的一些问题,并且花费很长时间寻找解决方法,经过了血和泪的教训下面将自己在安装过程中遇到的查看的资料贴出来(感谢各位大佬的文章帮助本闲狗解答疑惑,此处贴出原文链接,如…

用python,将有道词典中的生词导入扇贝单词

我试过有道词典和扇贝单词,个人感觉扇贝单词记忆功能非常好用,但是扇贝单词没有pc版,而有道在这方面就做的很好。博主平时都是用有道查生词,那有没有办法将有道词典中的生词导入扇贝中呢?下面的过程看上去很复杂&#…

一文搞定防盗链设计

大家好,我是蓝胖子,在涉及到图片或者视频链接时,通常都会提到防盗链,这一节我将会从防盗链的含义到落地,向大家展示如何设计资源的防盗链。 防盗链的含义与作用 防盗链,顾名思义,是为了防止资…

差分与前缀和

目录 差分法 例题:大学里的树木要打药 前缀和 例题:大学里的树木要维护 差分法 差分法的应用主要是用于处理区间问题,当一个数组要在很多不确定的区间,加上相同的一个数,我们如果每个数都进行加法操作的话&#x…

数据结构01 线性表

#include<stdio.h>/* 如果没有使用&符 void test(int x){ */ void test(int & x){x 1024;printf("test函数内部 x %d\n", x);} int main(){int x 1;printf("调用test前 x %d\n", x);test(x);printf("调用test后 x %d\n", …

4.机器学习-十大算法之一线性回归算法(LinearRegression)案例讲解

机器学习-十大算法之一线性回归算法案例讲解 一摘要二个人简介三什么是线性回归四LinearRegression使用方法五糖尿病数据线性回归预测1.数据说明2.导包3.导入数据4.脱敏处理5.抽取训练数据和预测数据6.创建模型7.预测8.线性回归评估指标9.研究每个特征和标记结果之间的关系.来分…

网络体系结构概述

目录 1. OSI/RM参考模型1.1. 物理层1.2. 数据链路层1.3. 网络层1.4. 传输层1.5. 会话层1.6. 表示层1.7. 应用层 2. TCP/IP参考模型3. 理解OSI七层模型 网络体系结构是线代网络技术的整体蓝图。 1. OSI/RM参考模型 开放互联参考模型&#xff08;Open System Interconnection/…

CH347

动态库封装实例 import ctypes# Load the CH347DLL library ch347dll ctypes.WinDLL(CH347DLLA64.dll) # Update the filename if necessary# Define the argument and return types for CH347OpenDevice ch347dll.CH347OpenDevice.argtypes [ctypes.c_ulong] ch347dll.CH3…

Selinux安全策略文件

在Selinux框架中&#xff0c;安全策略都是写在te文件中&#xff0c;以adb.te 文件为例 allow adbd shell_data_file:dir create_dir_perms;策略的基本格式是&#xff1a; rule_name source_type target_type :object_class perm_setrule_name 规则名。常见的规则名有allow,ne…

无问芯穹 MaaS AI 平台公测免费试用笔记:一

本篇文章聊聊正在公开测试的平台&#xff0c;无问芯穹的 MaaS 服务&#xff0c;包含了平台使用体验和一些小技巧。 因为测试给的免费卡时比较少&#xff0c;估计想完成完整测试或许需要一些时间&#xff0c;额外用一些账号进行。就先记录下常规折腾过程吧&#xff0c;让再次“…

element-ui message 组件源码分享

今日简单分享 message 组件的源码&#xff0c;主要从以下四个方面来分享&#xff1a; 1、message 组件的页面结构 2、message 组件的 options 配置 3、mesage 组件的方法 4、个人总结 一、message 组件的页面结构 二、message 组件的 options 配置 前置说明&#xff1a;m…

Centos7 安装 Oracle19c

下载oracle预安装包 wget http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 下载19c安装包 https://www.oracle.com/cn/database/technologies/oracle-database-software-downloads.html#19c 选择…