4. 环境准备:Linux服务器初始化、Python3环境、Docker与Docker-Compose安装
好,咱们正式开始动手了。
这一章,说白了就是给监控系统搭个窝。你想想看,一个网络监控系统要跑得稳,底层环境必须扎实。我这些年踩过的坑,十有八九都是环境没配好导致的。所以这一节,咱们把Linux服务器初始化、Python3环境、Docker和Docker-Compose一次性搞定。
核心逻辑:先有干净的系统 → 再装Python3做脚本支撑 → 最后用Docker跑服务。一层叠一层,缺一不可。
4.1 Linux服务器初始化
我个人习惯,拿到一台新服务器,第一件事不是装软件,而是先做安全加固。为什么呢?因为网络监控系统本身就会暴露端口,如果底层有漏洞,那就是引狼入室。
4.1.1 系统更新与基础工具
我用的是Ubuntu 22.04 LTS,当然CentOS 7/8也行。但说实话,我建议你用Ubuntu,因为Docker对它的支持最友好。
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装基础工具
sudo apt install -y curl wget vim git net-tools htop
小技巧:我每次装完系统,都会顺手装个htop。监控系统跑起来后,一眼就能看到CPU和内存占用,排查问题特别方便。
4.1.2 创建专用用户
千万别用root直接操作。我曾经见过一个项目,所有服务都用root跑,结果一个脚本写错了,直接把系统库给删了……嗯,那场面,惨不忍睹。
# 创建监控专用用户
sudo useradd -m -s /bin/bash monitor
sudo passwd monitor
# 赋予sudo权限(按需)
sudo usermod -aG sudo monitor
4.1.3 SSH安全配置
远程管理服务器,SSH是命门。我建议你至少做两件事:改端口、禁用密码登录。
# 编辑SSH配置文件
sudo vim /etc/ssh/sshd_config
# 修改以下参数
Port 2222 # 默认22改成别的
PermitRootLogin no # 禁止root登录
PasswordAuthentication no # 禁用密码,只用密钥
PubkeyAuthentication yes # 开启密钥认证
# 重启SSH服务
sudo systemctl restart sshd
注意:改SSH配置前,一定要先确保你的密钥已经添加到了~/.ssh/authorized_keys里。不然一重启,你自己都登不进去了。我当年就干过这种蠢事,大半夜跑机房拿显示器……
4.1.4 时区与时间同步
监控系统的时间必须准确。告警时间差几分钟,排查起来能让你怀疑人生。
# 设置时区为上海
sudo timedatectl set-timezone Asia/Shanghai
# 安装NTP服务
sudo apt install -y chrony
sudo systemctl enable chrony
sudo systemctl start chrony
# 验证时间同步
timedatectl status
4.2 Python3环境搭建
Python是监控脚本的主力语言。我为什么不用Shell?因为Python处理数据、发告警、写日志都更顺手。说白了,Shell适合简单任务,复杂逻辑还是Python靠谱。
4.2.1 安装Python3与pip
Ubuntu 22.04自带Python3.10,但有时候版本不够新。我个人习惯用deadsnakes源来装最新版。
# 查看当前Python版本
python3 --version
# 安装Python3和pip
sudo apt install -y python3 python3-pip python3-venv
# 升级pip到最新
sudo pip3 install --upgrade pip
4.2.2 配置虚拟环境
这一点非常重要。每个项目用独立的虚拟环境,依赖包互不干扰。我见过太多人把所有包装到系统级,最后版本冲突,项目跑不起来。
# 创建项目目录
mkdir -p ~/network_monitor
cd ~/network_monitor
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 验证
pip list # 应该只有基础包
我的习惯:每次进项目目录,第一件事就是source venv/bin/activate。你可以把这条命令加到.bashrc里,自动激活。
4.2.3 安装常用Python库
网络监控常用的库,我列个清单。这些后面都会用到。
# 激活虚拟环境后执行
pip install requests # HTTP请求
pip install psutil # 系统资源监控
pip install paramiko # SSH连接设备
pip install pysnmp # SNMP协议
pip install flask # 简单Web展示
pip install schedule # 定时任务
| 库名 | 用途 | 我的评价 |
|---|---|---|
| requests | 调用API、发告警 | 必装,没有它我写不了脚本 |
| psutil | 采集CPU/内存/磁盘 | 轻量好用,监控服务器必备 |
| paramiko | SSH登录网络设备 | 替代Telnet,安全第一 |
| pysnmp | SNMP采集 | 虽然配置麻烦,但绕不开 |
4.3 Docker与Docker-Compose安装
终于到了重头戏。Docker让部署变得极其简单。你想想看,以前装个监控系统,要手动装数据库、装Web服务、配置依赖……现在一个docker-compose up就全搞定了。
4.3.1 安装Docker Engine
我推荐用官方脚本安装,省心。
# 卸载旧版本(如果有)
sudo apt remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt install -y ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 启动并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker
# 验证安装
sudo docker --version
sudo docker run hello-world # 测试能否正常运行
避坑指南:我曾经在CentOS 7上装Docker,忘了装containerd.io,结果容器一直起不来。折腾了两小时才发现。Ubuntu上一般不会,但CentOS用户要特别注意。
4.3.2 将用户加入docker组
每次执行docker命令都要加sudo,太烦了。我习惯把当前用户加到docker组里。
# 将monitor用户加入docker组
sudo usermod -aG docker monitor
# 重新登录生效
su - monitor
# 验证
docker ps # 不需要sudo了
4.3.3 安装Docker-Compose
Docker-Compose是用来编排多容器服务的。我们的监控系统会用到多个容器(数据库、Web、采集器),所以必须装。
# 下载最新版Docker-Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
小提示:如果下载慢,可以用国内镜像源。我一般用https://get.daocloud.io/docker/compose/releases/download/替换GitHub地址。
4.3.4 验证Docker环境
装完别急着走,跑个简单的测试,确保一切正常。
# 创建一个测试目录
mkdir ~/docker_test && cd ~/docker_test
# 创建docker-compose.yml
cat > docker-compose.yml <
如果能看到Nginx的欢迎页面,说明Docker和Compose都正常工作。
4.4 环境验证清单
最后,我习惯列一个检查清单。每完成一项就打个勾,心里踏实。
| 检查项 | 命令/方法 | 预期结果 |
|---|---|---|
| 系统版本 | lsb_release -a |
Ubuntu 22.04 LTS |
| Python版本 | python3 --version |
3.10+ |
| pip版本 | pip3 --version |
21.0+ |
| Docker版本 | docker --version |
24.0+ |
| Docker-Compose版本 | docker-compose --version |
2.20+ |
| 容器运行测试 | docker run hello-world |
打印成功信息 |
好了,环境准备到这里就结束了。你可能会觉得步骤有点多,但相信我,这一步走得稳,后面写监控脚本、部署容器的时候,你会感谢现在的自己。
嗯,接下来就可以开始搭建真正的监控系统了。
公众号:蓝海资料掘金营,微信deep3321