一、数据库配置
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 # 查看定时器的执行日志,看看有没有正常执行脚本!
配置成功
这样即可实现数据库监控系统实时磁盘数据。