mysql远程监控linux服务器硬盘状态(详细)

一、数据库配置

1、查看linux内核信息:

hostnamectl

我的为Centos Linux 7

2、安装数据库

配置mysql数据库yum源

网址:MySQL :: Download MySQL Yum Repository

选择适合自己的内核版本进行安装(我是通过rpm的方式)

rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm

检查是否安装成功:

rpm -qa | grep mysql

如图:

使用yum安装mysql:
yum install -y mysql mysql-server mysql-devel

注:必须要安装Mysql客户端

检查mysql是否安装成功:
yum list | grep mysql-community

如图:

启动mysql服务:
systemctl status mysqld  #查看mysql状态

systemctl start mysqld   #开启Mysql

3、启动数据库

初始化登录

第一次登录数据库时,密码一般保存在/var/log/mysqld.log中,使用vim查看:

通过打开后搜索temporary即可定位找到相关信息行,如图:

登录

mysql -u root -p

输入输入该初始密码即可

修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpaswword';  #newpassword是你要修改的尼玛

提示修改成功,即可使用新密码进行root@localhost账户的登录

创建并授权一下面向所有主机的用户,以方便远程登入数据库

输入一下命令进行用户创建及授权:

CREATE USER 'new_user'@'%' IDENTIFIED BY 'password';    #创建root用户,%表示所有主机地址。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;    #授权该用户
使用过数据库进行linux服务器上mysql数据库连接(我用的时navicat)

连接测试成功即可。如果出现报错,可能是服务器Ip有误,或者是上一步账户授权有问题。

创建保存系统信息数据库表

先创建数据库:

CREATE DATABASE your_databasename;

创建表diskcheck_fb:

CREATE TABLE `diskcheck_fb` (
  `avail` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '硬盘空余空间',
  `used` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '硬盘已用空间',
  `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '硬盘空间大小',
  `host` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '所检查主机ip',
  `mounted` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '所检查硬盘目录',
  `cpu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'cpu使用率',
  `date` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

4、配置shell文件,获取系统信息

查看系统磁盘信息(以最大磁盘的为例)
df -h

如图所示: 

创建shell文件dfstatus.sh
vim dfstatus.sh
配置shell文件
#!/bin/bash
echo 'dfstatus shell 20240416'
# 检查 output.txt 文件是否存在,如果不存在则创建
if [ ! -f "output.txt" ]; then
    touch output.txt
fi

# 清空 output.txt 文件内容
> output.txt

# 执行 df -h 命令获取硬盘分区信息
df -h | awk '{
   filesystem = $1
    size = $2
    used = $3
    avail = $4
    use_percentage = $5
    mounted_on = $6

    # 声明变量并赋值
    file_system_name = filesystem
    total_size = size
    used_capacity = used
    available_space = avail
    usage_percentage = use_percentage
    mount_point = mounted_on

    # 只匹配文件系统名称为 /dev/mapper/centos_root 的数据
    if (filesystem == "/dev/mapper/centos_root") {

       total_size = substr(total_size, 0, length(total_size) - 1)
       available_space = substr(available_space, 0, length(available_space) - 1)
       used_capacity = substr(used_capacity, 0, length(used_capacity) - 1)
       usage_percentage = substr(usage_percentage, 0, length(usage_percentage) - 1)
       host="你的服务器ip地址"

        


        # 输出变量值到文件
        print file_system_name, total_size, used_capacity, available_space, usage_percentage, mount_point, host >> "output.txt"
     


    }
}' 
echo 'dfstatus told you system info get success!'
# 读取文件并输出变量值
while IFS= read -r line; do
    fields=($line)
    file_system_name="${fields[0]}"
    total_size="${fields[1]}"
    used_capacity="${fields[2]}"
    available_space="${fields[3]}"
    usage_percentage="${fields[4]}"
    mount_point="${fields[5]}"
    host="${fields[6]}"
    echo "文件系统名称:$file_system_name"
    echo "总大小:$total_size"
    echo "已使用:$used_capacity"
    echo "可用空间:$available_space"
    echo "使用率:$usage_percentage"
    echo "挂载点:$mount_point"
    echo "主机地址:$host"

TABLE="diskcheck_fb"   #所要保存监控数据的表
SQL_LIST="use yourdatabases"    #所要使用的数据库

mysql -h <你的linux服务器ip地址> -P 3306 -uroot -p<root账户的密码> << EOF

$SQL_LIST

INSERT INTO diskcheck_fb (avail,used,size,host,mounted,cpu,date) VALUES('$available_space','$usage_percentage','$total_size','$host','$mount_point',"$usage_percentage",NOW());
EOF
echo 'dfstatus told you insert db success!'




done < output.txt

保存并退出

执行shell文件
sh dfstatus.sh

如图:

警告不用管,出现警告是因为我们shell文件登录时,将密码明文输入出来的原因。

此时我看看shell文件中你设置的数据库中的diskcheck_fb表中就会出现系统磁盘的数据。

5、定时任务设置

crontab设置
crontab -e
设置定时任务:
* * * * * sh /home/dfstatus.sh  # 你的dfstatus.sh的文件路径

#(分)(时)(日)(月)(星期)

#这种全星号的意思就是每分钟执行一次,可以根据实际情况进行调整。

保存并推出

检查定时任务
crontab -l

如图:

可以查看定时任务日志查看是否执行:

tail -f /var/log/cron  # 查看定时器的执行日志,看看有没有正常执行脚本!

配置成功

这样即可实现数据库监控系统实时磁盘数据。

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值