GNU General Public License v2.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

运维面板神器:getway/diting

项目背景与痛点

在现代企业环境中,运维工作往往会面临极为复杂的场景。运维人员需要频繁穿梭于各种系统之间,跨越多个终端进行诊断和处理。这不仅增加了工作负担,还可能导致效率低下,甚至因疏忽导致错误。getway/diting 提供了统一的运维界面,不仅简化了运维流程,还集成了多系统管理功能,从而显著提升了运维效率。

getway/diting 解决的核心问题是运维管理的复杂性。它通过整合所有运维操作至一个由用户统一鉴权、管理和监控的工作台,显著降低了各系统间跳转的负担。数据的集中管理和监控使得问题诊断和处理更加高效,同时也增强了系统的安全性和可靠性。

核心技术揭秘

getway/diting 采用了先进的架构设计,以确保高效、安全和易用的运维体验。其核心组件包括运维面板、运维导航、统一账号平台以及 LDAP 管理平台。这里我们深入剖析其架构和技术细节。

技术栈:

  • 后端:Go 语言
  • 前端框架:React
  • 运行环境:Docker
  • 数据库:PostgreSQL
  • 认证管理:LDAP

系统架构与数据流

getway/diting 的系统架构和数据流如下:

graph TD A[用户请求] B{"路由分发"} C[认证中心] D[资源管理] E{"API分发"} F[操作执行] G[响应返回] A --> B B -->|认证| C B -->|资源| D C --> E D --> E E --> F F --> G G --> A

用户发起的请求首先由路由分发器处理,进行初步的分发。认证中心确保请求者的身份和权限,资源管理器完成资源的加载和分配。API 分发器接收到请求后,根据不同的操作指令,调用相应功能模块执行操作。最终的响应返回给用户,整个过程确保了数据流的高效和安全。

核心功能实现

  • 统一账号管理:getway/diting 使用 LDAP 进行用户账号和权限管理,确保了系统的安全性和一致性。用户的认证和授权不仅可以通过 LDAP 服务直接验证,还可以与第三方身份认证系统集成,实现灵活的身份验证策略。
  • 多系统监控与管理:通过运维导航,运维人员可以快速浏览和管理各个运维项目,实时监控系统状态。运维面板提供了集中化的操作界面,使得分散的系统管理操作能够在一个平台上高效完成。
  • 插件化架构:系统采用模块化的插件机制,可以在不修改核心代码的情况下,通过增加不同功能的插件来扩展系统的功能,降低了系统耦合度和维护成本。

功能亮点与差异

getway/diting 相比于其他运维管理平台,有几个独到之处:

  • 高效的运维操作整合:通过集中化的运维面板和导航,运维人员可以轻松执行多个系统的运维操作,提供一站式的运维解决方案。
  • 灵活的扩展能力:插件化架构使得系统可以根据实际需要增加和移除功能模块,系统扩展变得简单灵活,降低了系统的整体维护成本。
  • 集成的LDAP管理:利用 LDAP 进行用户管理,不仅可以实现统一账号,还提供了与现代企业环境中的身份管理系统无缝集成的能力。

应用场景与落地建议

getway/diting 适用于需要集中管理和监控多个系统的企业环境,尤其适合 IT 基础设施复杂、系统多样化的大型企业。使用者应注意以下几点:

  • 安全性配置:确保正确配置LDAP认证机制,防止账号泄露。
  • 插件化管理:基于实际需求,合理选择和配置插件,保持系统的灵活性。
  • 系统集成与监控:合理使用运维导航,定期监控系统的健康状态,及时发现和解决问题。

综合评价

getway/diting 凭借便捷的统一管理运维系统的能力,简化了复杂操作流程,提升了运维效率。其灵活的插件化架构亦使其拥有较高的扩展性。然而,因其复杂的架构配置需求,初使用者可能需要一定的时间成本。总体上,这款运维神器能够显著提升运维效率,是值得推荐的运维管理工具。

简要分析

热度分
305
价值分
122
活跃状态
活跃

语言占比

CSS
Python
Shell

Release

README

Diting 谛听系统

目标:让运维更简单

目前在jumpserver的框架下,开始项目(还有一版融合了最新版的jumpserver - jumpserver-ldap-manager 有堡垒机功能和谛听的功能,欢迎体验。

1 当前功能:

  • 用户管理-用户增删改查
  • 运维导航-快速链接、导航面板管理-增删改查
  • 统一账户体系,支持LDAP登录、本地用户登录,开启LDAP的情况下,用户改密码实时同步到LDAP,新增用户直接可以添加到LDAP账户体系中
  • LDAP账户修改一些属性同步到LDAP

2 待添加功能

  • 导航权限分配
  • 支持接入开源没有账户体系的系统
  • 其他

欢迎有兴趣的同学一起开发,这里感谢Jumpserver这么好的项目,借用了框架。

运维导航

导航列表

导航详情

用户管理

3 安装说明

需要基本环境Python3.6 项目路径: {install path} 首先配置config.py 主要配置数据库地址

3.1 系统环境设置

# CentOS 7
$ setenforce 0  # 可以设置配置文件永久关闭
$ systemctl stop iptables.service
$ systemctl stop firewalld.service

# 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文
$ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
$ export LC_ALL=zh_CN.UTF-8
$ echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf

# CentOS6
$ setenforce 0
$ service iptables stop

# 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文
$ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
$ export LC_ALL=zh_CN.UTF-8
$ echo 'LANG=zh_CN.UTF-8' > /etc/sysconfig/i18n

3.2 准备 Python3 和 Python 虚拟环境

$ yum groupinstall "Development tools" -y
#安装系统依赖
$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git python-ldap openldap-devel python-devel

#安装python3.6
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar xvf Python-3.6.1.tar.xz  && cd Python-3.6.1
$ ./configure && make && make install
# 这里必须执行编译安装,否则在安装 Python 库依赖时会有麻烦...

# 使用虚拟环境
$ /usr/local/bin/python3.6 -m venv /opt/venv3
$ source /opt/venv3/bin/activate
#注意:当出现(venv3)时候,表示虚拟环境生成成功
$ (venv3) [root@xxx xxx]#

3.3 安装谛听(diting)

#进入到安装目录/opt
$ cd /opt
$ git clone https://github.com/getway/diting.git
$ cd diting
# 安装依赖
$ pip install -r requirements/requirements.txt
#配置数据库以及redis  自行更改config.py

# 数据库迁移(初始化数据库)
$ cd /opt/diting/utils
$ python3 ../apps/manage.py makemigrations common users perms navis likes
$ bash make_migrations.sh
#导入数据
$ cd /opt/diting/apps
$ python manage.py loaddata fixtures/init.json


3.4 服务启动

$ cd /opt/diting
直接启动:
$ ./dt start
#或后台启动
$ ./dt start -d

# 访问
http://127.0.0.1:8080
用户名 : admin
密码: admin

3.5 nginx配置

生产环境,请把配置中DEBUG改为False

#nginx配置文件
server {
	listen 80;
	listen 443 ssl http2;
	server_name 域名; #配置自己的域名

	#https配置,没有的可以忽略
	#ssl on;
	#ssl_certificate ***.cer;  #替换为自己的路径
	#ssl_certificate_key ***.key; #替换为自己的路径
	#ssl_session_timeout 5m;
	#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
	#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	#ssl_prefer_server_ciphers on;

	index index.html index.htm index.php;

	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header Host $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

	location /media/ {
		root /opt/diting/data/;
	}

	location /static/ {
		root /opt/diting/data/;
	}

	location / {
		proxy_pass http://localhost:8080;
	}

}

评论

暂无评论