03_shell模块化与Prometheus监控

学习目标

---

一、Shell 模块化编程概述

1.1 模块化编程的概念

模块化编程是将复杂任务拆分为多个独立的小模块(函数或脚本)。 每个模块只负责一个明确功能,主脚本统一调度这些模块。

这种思想使脚本更加:

1.2 模块化

1. 模块化设计:每个功能被分离到独立的脚本文件中,主脚本根据用户选择来调用这些模块。 2. 功能模块

主脚本 (main.sh)

项目目录结构

app
    main.sh
    modules
        optimize_system.sh
        configure_aliyun_repo.sh
        ...

注意事项:

#!/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

![](/assets/feishu-images/77a3abe2fa4dbfc8c15f1f57.png)

注意事项:

[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


**注意事项:**




![](/assets/feishu-images/e8de623ba81ba2ae575e96f4.png)

查询一分钟的数据

![](/assets/feishu-images/f792b0037b0c30851ca59cd4.png)





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


获取安装包

![](/assets/feishu-images/2b66aeeecd85203802a12ffd.png)

同样,在线下载安装包或者本地拖动安装包

注意事项:

注意事项:

https://grafana.com/grafana/dashboards/?search=MySQL

image

本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。