03_shell模块化与Prometheus监控
学习目标
- [ ] 能够实现shell脚本模块化
- [ ] 能够完成Prometheus 安装与基本配置
- [ ] 能够完成Grafana 安装与数据源配置
- [ ] 能够完成监控 MySQL 实例(使用 exporter)
一、Shell 模块化编程概述
1.1 模块化编程的概念
模块化编程是将复杂任务拆分为多个独立的小模块(函数或脚本)。 每个模块只负责一个明确功能,主脚本统一调度这些模块。
这种思想使脚本更加:
- 可复用
- 易维护
- 易扩展
- 结构清晰
1.2 模块化
1. 模块化设计:每个功能被分离到独立的脚本文件中,主脚本根据用户选择来调用这些模块。 2. 功能模块:
- 系统优化
- 配置阿里云源
- 配置SSH
- 配置时间同步
- 配置防火墙
- 安装常用工具
- 配置静态IP
- 安装nginx
- 安装mysql
主脚本 (main.sh)
项目目录结构
app
main.sh
modules
optimize_system.sh
configure_aliyun_repo.sh
...注意事项:
- 修改配置前先备份原文件,尤其是 SSH、Nginx、数据库和 Kubernetes 生产配置。
#!/bin/bash
source ./optimize_system.sh
source ./configure_aliyun_repo.sh
source ./configure_ssh.sh
source ./configure_time_sync.sh
source ./configure_firewall.sh
source ./install_basic_tools.sh
source ./configure_static_ip.sh各模块脚本
(1) 系统优化模块 (optimize_system.sh)
vi optimize_system.sh命令作用:
- 这条命令用于打开并编辑文件。进入编辑器后需要保存退出,修改才会写回文件。
执行结果:
- 编辑器会打开目标文件;保存并退出后文件内容才会改变。
关键参数:
注意事项:
#!/bin/bash }
**关键参数:**
**注意事项:**
命令说明:
#!/bin/bash
#flag=0 }
**注意事项:**
命令说明:
#!/bin/bash
iphost=${iphost:-'192.168.88.1'}
}
iphost=${iphost:-'192.168.88.1'} action=${action:-'y'}
protocol=${protocol:-'tcp'} port=${port:-'80'}
}
**注意事项:**
注意事项:
#!/bin/bash }
**注意事项:**
命令说明:
#!/bin/bash
configure_static_ip(){
mask=${mask:-24}
dns=${dns:-119.29.29.29}
config_file="/etc/NetworkManager/system-connections/$iface.nmconnection"
[connection] id=$iface uuid=$(uuidgen) type=ethernet interface-name=$iface autoconnect-priority=-999
[ipv4] address1=$ipaddr/$mask,$gateway method=manual dns=$dns
[ipv6] method=disabled
}
**注意事项:**
网址:https://prometheus.io
Prometheus是一个开源的系统监控和报警系统,它启发与Google的borgmon监控系统,在一定程度上开源理解为,Google BorgMon监控系统的开源版本。
该软件由工作在SoundClound的前Google员工在2012年创建,作为社区开源项目进行开发,并于2015年正式成立。
Prometheus本身基于Go语言开发的一套开源的系统监控报警框架和时序列数据库(**TSDB**)。
Prometheus的监控能功能很完善和全面,性能也足够支持上万台规模的集群。
下载地址:https://prometheus.io/download
注意事项:
[Unit] Documentation=https://prometheus.io/docs/introduction/overview/ After=network-online.target
[Service] User=prometheus Group=prometheus Restart=on-failure --web.enable-admin-api
LimitNOFILE=65535
[Install] WantedBy=multi-user.target
**注意事项:**

查询一分钟的数据

被监控的主机上:本次实验安装在node2和node3中,node1主promethues主服务服务器。
获取安装包

同样,在线下载安装包或者本地拖动安装包注意事项:
注意事项:
https://grafana.com/grafana/dashboards/?search=MySQL
