项目介绍

本项目是一款集智能运维与轻量堡垒机于一体的综合性平台,旨在提高运维效率,降低运维风险,保障企业信息系统安全稳定运行。通过自动化、智能化手段,简化运维流程,实现对运维操作的实时监控、审计和控制,防止误操作和恶意操作,提升运维质量。同时,本项目还具有高度集成、智能化、安全可靠、灵活扩展和易用性强等特点,适用于各类企业。

系统功能

  • 资产管理:支持对资产进行分组,实现对主机、密钥和身份的统一管理和授权。
  • 主机运维:提供在线 Terminal 服务,支持快捷命令、大文件上传、在线编辑等操作。
  • 运维审计:提供连接日志,在线会话,文件操作日志。
  • 批量执行:支持批量执行主机命令、多主机文件分发等功能。
  • 计划任务:支持配置 cron 表达式,定时执行主机命令。
  • 安全可靠:动态配置权限,记录用户操作日志,提供简单的审计功能。

技术架构

技术选型

  • SpringBoot 2.7.17
  • Mysql 8.0.+
  • Redis 6.0.+
  • Vue3 3.2.+
  • Arco Design 2.55.+

产品功能预览

主机管理

管理和维护可操作的主机。
  • 主机分组: 设置主机分组以及组内数据
  • 角色授权: 跳转页面到主机授权页面(角色)
  • 用户授权: 跳转页面到主机授权页面(用户)
  • 新增: 添加一台主机
  • 修改: 修改主机信息
  • 配置: 修改主机配置信息
  • 删除: 删除这台主机以及主机关联的数据

主机终端

主机终端页面 支持 SSH,SFTP。 打开后默认会进入新建连接页面,页面的主机数据是用户授权的资产数据。

批量执行

批量执行 ssh 主机 shell 脚本。

批量上传

将文件批量上传到远程服务器。

运维审计

主要包括查看主机终端连接记录,查看连接中的主机会话,查看用户 SFTP 操作日志,是从用户操作日志中过滤查询。

安装部署

所需环境

  • jdk 1.8
  • mysql 8.0.+
  • redis 6.0.+
  • maven 3.5.+
  • node 18.12.+
  • pnpm 9.1.+
  • nginx
maven 推荐使用阿里云 mirror npm 建议使用淘宝镜像 <font style="color:rgb(40, 202, 113);">npm config set registry https://registry.npmmirror.com/</font> pnpm 建议使用淘宝镜像 <font style="color:rgb(40, 202, 113);">pnpm config set registry https://registry.npmmirror.com/</font> ### 构建 1. 拉取代码
  1. # github
  2. git clone https://github.com/lijiahangmax/orion-visor
  3. # gitee
  4. git clone https://gitee.com/lijiahangmax/orion-visor
  1. 初始化数据库
  1. # 执行脚本
  2. orion-visor/sql/init-1-schema-databases.sql
  3. orion-visor/sql/init-2-schema-tables.sql
  4. orion-visor/sql/init-3-schema-quartz.sql
  5. orion-visor/sql/init-4-data.sql
  1. 构建后端代码
  1. # 修改配置文件 (mysql, redis, secret-key)
  2. orion-visor/orion-visor-launch/src/main/resources/application-prod.yaml
  3. # 进入代码目录
  4. cd orion-visor
  5. # 编译
  6. mvn -U clean install -DskipTests
  1. 构建前端代码
  1. # 进入代码目录
  2. cd orion-visor/orion-visor-ui
  3. # 下载 pnpm
  4. npm i -g pnpm
  5. # 下载依赖
  6. pnpm i
  7. # 编译
  8. pnpm build

修改 nginx 配置

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. client_max_body_size 1024m;
  5. # 是否启动 gzip 压缩
  6. gzip on;
  7. # 需要压缩的常见静态资源
  8. gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
  9. # 如果文件大于 1k 就启动压缩
  10. gzip_min_length 1k;
  11. # 缓冲区
  12. gzip_buffers 4 16k;
  13. # 压缩的等级
  14. gzip_comp_level 2;
  15. # access_log /var/log/nginx/host.access.log main;
  16. location / {
  17. root /usr/share/nginx/html;
  18. index index.html index.htm;
  19. proxy_set_header Host $host;
  20. proxy_set_header X-Real-IP $remote_addr;
  21. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  22. proxy_set_header X-Forwarded-Proto $scheme;
  23. # web history 模式 404
  24. try_files $uri $uri/ /index.html;
  25. }
  26. location /orion-visor/api {
  27. proxy_pass http://localhost:9200/orion-visor/api;
  28. proxy_set_header Host $host;
  29. proxy_set_header X-Real-IP $remote_addr;
  30. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  31. proxy_set_header X-Forwarded-Proto $scheme;
  32. }
  33. location /orion-visor/keep-alive {
  34. proxy_pass http://localhost:9200/orion-visor/keep-alive;
  35. proxy_http_version 1.1;
  36. proxy_set_header Upgrade $http_upgrade;
  37. proxy_set_header Connection "upgrade";
  38. proxy_set_header Host $host;
  39. proxy_set_header X-Real-IP $remote_addr;
  40. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  41. proxy_set_header X-Forwarded-Proto $scheme;
  42. proxy_read_timeout 3600s;
  43. proxy_send_timeout 3600s;
  44. }
  45. error_page 500 502 503 504 /50x.html;
  46. location = /50x.html {
  47. root /usr/share/nginx/html;
  48. }
  49. }

部署

  1. 复制 orion-visor/orion-visor-ui/dist /usr/share/nginx/html
  2. 复制 orion-visor/orion-visor-launch/target/orion-visor-launch.jar /data/orion
  3. # 启动后台服务
  4. nohup java -jar orion-visor-launch.jar --spring.profiles.active=prod 2>&1 &
  5. # 启动 nginx
  6. service nginx start

测试访问

在浏览器中输入 http://localhost 访问 账号: admin密码: admin

项目地址

https://gitee.com/lijiahangmax/orion-visor.git