作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维
欢迎关注本人公众号,更多精彩与您分享。
在上一篇文章MySQL一条命令生成数据库巡检报告,省时省力! 提到用一条命令生成一份可供DBA分析数据库状态的报告,生成的hmtl没有样式,比较难看。想着能不能像oracle 的awr报告那样的样式显示,于是用shell脚本来实现,把CSS样式加入到生成的html里,shell脚本如下:
#!/bin/bash
# MySQL 连接参数
HOST="10.10.10.1"
PORT="3306"
USER="root"
PASSWORD="rootmysql"
SQL_QUERY="CALL sys.diagnostics(1, 1, 'current')"
# 输出 HTML 文件路径
html_file="/tmp/report_$(date +"%Y-%m-%d_%H-%M").html"
# 执行 SQL 并生成 HTML 文件
mysql -h"$HOST" -P"$PORT" -u"$USER" -p"$PASSWORD" -H -e "$SQL_QUERY" > "$html_file"
# 插入 AWR 风格的 CSS 样式
cat << 'EOF' | sed -i '1i\
<!DOCTYPE html>\
<html lang="en">\
<head>\
<meta charset="UTF-8">\
<title>MySQL Diagnostics Report</title>\
<style type="text/css">\
body { font: bold 10pt Arial, Helvetica, sans-serif; color: black; background: white; }\
table { width: 100%; border-collapse: collapse; }\
th { background-color: #0066CC; color: white; padding: 8px; text-align: left; }\
td { padding: 8px; border: 1px solid #ddd; vertical-align: top; }\
tr:nth-child(even) { background-color: #f2f2f2; }\
h1 { font-size: 20pt; color: #336699; margin-bottom: 10px; }\
h2 { font-size: 18pt; color: #336699; margin-top: 10px; margin-bottom: 5px; }\
a { color: #0066CC; text-decoration: none; }\
a:hover { text-decoration: underline; }\
</style>\
</head>\
<body>\
<h1>MySQL Diagnostics Report</h1>' "$html_file"
EOF
# 追加 HTML 结束标签
echo "</body></html>" >> "$html_file"
echo "Report generated: $html_file"
产生的html如下:
对比之前的:
是不是感觉好看、顺眼许多?
另外,想着这个报告内容也比较多,没有一个目录,找起来麻烦。能不能像awr报告,先在报告开头生成一个Main report目录,要看哪个项,点一下,自动跳转查看具体项目。于是又改了一下脚本,生成的效果如下:
可以看到,有了一个总目录,要查看具体项时,点一下就能自动跳转了!查看完,点一下浏览器的返回键,返回到回到目录,再查看其他的项目,是不是又方便很多!!!
当然,这些目录都生成在一列上,基本上首屏都被它撑满了,能不能给它分成三列或者四列来显示?当然可以,继续更改脚本,最终效果如下:
这样看起来是不是又清爽很多,有没有爱上它了?好了,如果有兴趣,需要脚本的,可以关注我,后台发送消息“MySQL巡检”,即可获得!
关注我,学习更多的数据库知识!