linuxjmp/linux-monitoring-ir-lab

GitHub: linuxjmp/linux-monitoring-ir-lab

基于 Prometheus、Grafana 与 Ansible 的 Linux 集群监控部署与事件响应实验室,旨在展示运维监控与故障排查的完整实践能力。

Stars: 0 | Forks: 0

# linux-monitoring-ir-lab **Linux 操作环境监控与事件响应实验室** 这是一个作品集家庭实验室项目,它使用 Ansible 和 Podman Quadlet 在由四台主机组成的 Linux 集群中部署 Prometheus、Grafana 和 node_exporter,随后模拟并记录了五个真实的实际生产事件,旨在展示监控、故障排查和沟通技能。 ## 目的 展示胜任 Linux 基础设施岗位的运维能力: - 监控技术栈的部署与配置 - 健康检查脚本(Bash, Python) - 事件的检测、调查与解决 - 面向技术和非技术人员的沟通 - 在实际运行环境中的 SELinux、systemd 和日志分析 ## 架构 ``` +--------------------+ | servera (monitor) | | Prometheus :9090 | | Grafana :3000 | | node_exporter :9100| +---------+----------+ | | Prometheus scrape (HTTP :9100) | +---------+----+ +---------+ +---------+ | serverb | | serverc | | serverd | | node_exporter| | node_ex | | node_ex | +--------------+ +---------+ +---------+ ``` 请查看 [architecture.md](architecture.md) 获取完整的组件图表。 ## 技术栈 - RHEL / Rocky / AlmaLinux - Prometheus + Grafana (Podman Quadlet 容器) - node_exporter (Podman Quadlet) - Ansible (部署与验证) - systemd, SELinux, auditd, firewalld ## 仓库结构 ``` linux-monitoring-ir-lab/ ├── README.md ├── architecture.md ├── ansible.cfg ├── inventory ├── group_vars/ │ └── all.yml # image names, ports, scrape targets ├── playbooks/ │ ├── 01-deploy-node-exporter.yml │ ├── 02-deploy-monitoring-stack.yml │ └── 03-validate-monitoring.yml ├── configs/ │ ├── prometheus/ │ │ └── prometheus.yml # scrape config │ └── grafana/ │ └── provisioning/ # auto-loaded datasource + dashboards ├── dashboards/ │ └── linux-node-health.json ├── scripts/ │ ├── disk-health.sh │ ├── service-health.py │ └── network-check.sh ├── incidents/ │ ├── INC-001-disk-full.md │ ├── INC-002-ssh-failure.md │ ├── INC-003-selinux-denial.md │ ├── INC-004-service-failure-after-update.md │ └── INC-005-dns-outage.md ├── docs/ │ ├── monitoring-runbook.md │ └── lessons-learned.md └── screenshots/ ├── monitoring-validation.txt └── prometheus-targets.txt ``` ## 快速开始 ``` # 在所有主机上部署 node_exporter ansible-playbook playbooks/01-deploy-node-exporter.yml # 在监控主机(servera)上部署 Prometheus + Grafana ansible-playbook playbooks/02-deploy-monitoring-stack.yml # 验证整个 stack ansible-playbook playbooks/03-validate-monitoring.yml ``` 通过 `http://servera:3000` 访问 Grafana (admin / admin)。 通过 `http://servera:9090` 访问 Prometheus。 ## 健康检查脚本 可直接在任何受管主机上运行: ``` bash scripts/disk-health.sh # check disk usage python3 scripts/service-health.py # check required services bash scripts/network-check.sh # check DNS + gateway + ports ``` ## 事件 五个包含完整调查与文档记录的模拟事件: | ID | 场景 | 严重程度 | |---------|---------------------------------------|----------| | INC-001 | 大型临时文件导致的磁盘压力 | 中级 | | INC-002 | SSH 配置拼写错误导致重载失败 | 高级 | | INC-003 | SELinux 阻止 httpd 使用 8888 端口 | 中级 | | INC-004 | inode 耗尽导致 auditd 故障 | 中级 | | INC-005 | /etc/resolv.conf 更改导致 DNS 中断 | 高级 | 每个事件都包含技术摘要、通俗易懂的概要、带实际输出的调查命令、根本原因、修复措施以及经验教训。 ## 作品集证明 | 文件 | 展示内容 | |------|---------------| | `screenshots/monitoring-validation.txt` | 所有验证检查均已通过 | | `screenshots/prometheus-targets.txt` | 所有抓取目标均为 UP 状态 | | `incidents/INC-001..005.md` | 包含真实命令输出的五份事件调查报告 | | `dashboards/linux-node-health.json` | Grafana 仪表板(可导入) | ## 已知问题与部署说明 **Cockpit / 9090 端口冲突:** RHEL 系统会运行一个 Cockpit socket(`cockpit.socket`),它在启动时就会预先占用 9090 端口。部署 playbook 会在监控主机上启动 Prometheus 之前,停止并屏蔽该 socket。在共享主机上,请改为修改 `group_vars/all.yml` 中的 `prometheus_port`。 请查看 [docs/monitoring-runbook.md](docs/monitoring-runbook.md) 获取完整的运维说明。 ## 简历要点
标签:Ansible, BurpSuite集成, Grafana, NIDS, 容器化, 应用安全, 系统提示词, 自定义请求头, 运维监控, 逆向工具