开源系统管理资源大合辑

Automation build.

自动化构建

  • Apache Ant – 用 Java 编写的自动化构建工具,与 make 类似
  • Apache Maven – 主要为 Java 开发的自动化构建工具
  • Bazel – Google 的分布式构建系统
  • GNU Make – 最流行的自动化构建系统
  • Gradle – 另一个自动化构建系统

Backup software.

备份软件

  • Amanda – C/S 模式的备份软件
  • Attic – 用 Python 编写的去重备份程序
  • Bareos – Bacula 备份程序的衍生版本
  • Backupninja – 轻量级、可扩展的元数据备份
  • Brebis – 全自动的备份检查
  • Burp – 网络备份和还原程序
  • Duplicity – 使用 rsync 算法加密的带宽-效率备份软件
  • Elkarbackup – 基于 RSnapshot 的、带有简单 Web 交互接口的备份解决方案
  • Lsyncd – 对文件进行监控,并开启一个进程来同步更改(默认是用 rsync)
  • Obnam – 一个简便、安全、基于快照、带有数据备份程序
  • Rdiff-backup – 远程增量备份工具
  • Rsnapshot – 文件系统快照辅助工具
  • Snebu – 带有多客户端去重和透明压缩的快照备份程序
  • UrBackup – 另一个 C/S 备份系统
  • DREBS – 官方策略支持的 AWS EBS 备份脚本
  • ZBackup – 一个通用去重备份工具

Build and software organization tools

构建和软件安排

  • EasyBuild – EasyBuild builds software and modulefiles for High Performance Computing (HPC) systems in an efficient way.
  • environment-modules Lmod – Lmod is a Lua based module system that easily handles the MODULEPATH Hierarchical problem.
  • HPCBIOS – HPCBIOS is an effort to setup a common, well-documented and reproducible, environment spanning across multiple HPC systems & sites, inclusive of documentation.

ChatOps

运维机器人

对话驱动的运维和管理。请看 reddit 查看更多信息
– CloudBot – Python 编写的简单、快速、可扩展的 IRC 机器人
– Eggdrop – the world’s most popular IRC bot, designed for flexibility and ease of use, and is freely distributable under the GNU GPL.
– Err – a plugin based chatbot designed to be easily deployable, extensible and maintainable.
– Hubot – 可定制的、生活改良型机器人
– Lazlo – 用 Go 编写的运维机器人自动化框架
– Lita – 你公司的聊天室的机器人同伴

Client management

客户端管理

  • OCS Inventory NG – 资产管理、部署和网络扫描
  • Opsi (开放式 PC 服务器集合) – 运行于 Debian 专为 Windows 客户端开发的客户端管理软件
  • WAPT – 全网范围的 Windows 软件安装、卸载、配置和升级
  • WPKG – Windows 程序的部署、升级和移除

Cloning

克隆软件

  • Clonezilla – 硬盘分区、硬盘镜像/克隆程序
  • Fog – 另一个计算机克隆问题解决方案

Cloud Computing

云计算

  • AppScale – 兼容 GAE 的云计算软件
  • Archipel – Manage and supervise virtual machines using Libvirt.
  • CloudStack – Cloud computing software for creating, managing, and deploying infrastructure cloud services.
  • Cobbler – Cobbler is a Linux installation server that allows for rapid setup of network installation environments.
  • Cracow Cloud One – Polish Private Cloud – The CC1 system provides a complete solution for Private Cloud Computing.
  • Eucalyptus – Private cloud software with AWS compatibility.
  • Flynn – PaaS
  • Mesos – Develop and run resource-efficient distributed systems.
  • OpenNebula – User-driven cloud management platform for sysadmins and devops.
  • Openshift – PaaS product from Red Hat.
  • OpenStack – 构建你的私有或共有云
  • The Foreman – 面向物理和虚拟服务器的全生命周期管理工具
  • Tsuru – Tsuru is an extensible Platform as a Service software.

Cloud Orchestration

云业务流程

  • BOSH – IaaS orchestration platform originally written for deploying and managing Cloud Foundry PaaS, but also useful for general purpose distributed systems.
  • Cloudify – 使用 Python 和 YAML 编写,基于 TOSCA 的云业务流程软件平台
  • CloudSlang – 面向管理开发应用程序、基于流的业务流程管理工具,支持 Docker
  • Juju – Cloud orchestration tool which manages services as charms, YAML configuration and deployment script bundles.
  • MCollective – 用于管理服务器的业务流程的 Ruby 框架,由 Puppet 实验室开发
  • Overcast – Deploy VMs across different cloud providers, and run commands and scripts across any or all of them in parallel via SSH.
  • Rundeck – 简单的业务流程工具
  • Salt – 用 Python/ZeroMQ 编写的快速、可扩展、灵活的系统管理软件
  • StackStorm – Event Driven Operations and ChatOps platform for infrastructure management. Written in Python

Cloud Storage

云存储

  • git-annex assistant – 你全部设备的同步文件夹(包括你的 OSX 、 Linux 、安卓设备 、可移动设备 、NAS 、 NAS 应用、 云服务)
  • ownCloud – 通过 Web 端、电脑以及移动设备来提供对你文件和数据的通用访问
  • Pydio – Pydio (formerly AjaXplorer) is a mature solution for file sharing and synchronization.
  • Seafile – 另一个云存储解决方案
  • SparkleShare – 提供云存储和文件同步服务,默认使用 Git 作为存储后端
  • Swift – 高可用、分布式、最终一致的对象/二进制大对象存储
  • Syncthing – 私人、加密、带有身份验证的分布式数据系统

Code Review

代码评审

  • Gerrit – 基于 Git 的版本控制,可以帮助软件开发者通过接受或拒绝源代码的改动来评审、改进源代码
  • Phabricator – 由 Facebook 开发的代码评审工具,被 WikiMedia 、Facebook 、Dropbox 等公司使用。附带了一个集成的 Wiki 、Bug 跟踪、 VC 集成、 和一个被叫做“奥术师”的 CLI 工具。
  • Review Board – MIT 许可证下的免费软件

Collaborative Software

协作软件

  • Citadel/UX – Collaboration suite (messaging and groupware) that is descended from the Citadel family of programs.
  • EGroupware – 用 PHP 编写的协作软件
  • Horde Groupware – 基于 PHP 的协作软件套件,包括电子邮件、日历、Wiki、进度跟踪和文件管理
  • Kolab – 另一个协作套件
  • SOGo – 专注于简单和弹性的协作软件服务器
  • Zimbra – 包含电子邮件服务器和 Web 客户端的协作软件套件

Configuration Management Database

配置管理数据库软件

  • i-doit – IT 文档和配置数据库管理
  • iTop – Complete ITIL web based service management tool.
  • Ralph – Asset management, DCIM and CMDB system for large Data Centers as well as smaller LAN networks.
  • Clusto – Helps you keep track of your inventory, where it is, how it’s connected, and provides an abstracted interface for interacting with the elements of the infrastructure.
  • Collins – At Tumblr, it’s the infrastructure source of truth and knowledge.

Configuration Management

配置管理工具

  • Ansible – 用 Python 编写的,使用 SSH 来管理节点
  • CFEngine – 轻量级代理系统,配置情况通过声明式语言指定
  • Chef – 使用 Ruby 和 Erlang 编写的,使用纯 Ruby 的 DSL
  • Pallet – 通过 Clojure DSL 来进行基础设施的定义、配置和管理
  • Puppet – 用 Ruby 编写的,使用 Puppet 的声明式语言或者 Ruby 的 DSL
  • Salt – 用 Python 编写的配置管理工具
  • Slaughter – 用 Perl 编写的配置管理工具

Continuous Integration & Continuous Deployment

持续集成和持续部署

  • Buildbot – 基于 Python 的持续集成套件
  • Drone – 基于 Docker 构建的持续集成服务器,使用 YAML 文件进行配置
  • GitLab CI – Based off of ruby. They also provide GitLab, which manages git repositories.
  • Go – 持续交付服务器
  • Jenkins – 一个可扩展的持续集成服务器

    Control Panels

控制面板

◦Froxlor – 使用 Nginx 和 PHP-FPM 开发的面向 Linux 的使用面板
◦ISPConfig – Linux 主机控制面板
◦Sentora – Control panel for Linux, BSD, and Windows based on ZPanel.
◦VestaCP – 使用 Nginx 的面向 Linux 的主机控制面板

  • DNS

域名解析

◦Atomia DNS – DNS 管理系统
◦PDNS Gui – 拥有管理域名的 Web 界面,并将记录通过 PowerDNS 记录到 MySQL 中
◦Poweradmin – 基于 PowerDNS 服务器友好的 Web 管理工具

  • Revision Control

版本控制

◦iF.SVNAdmin – 通过 Web 界面来管理资料库和用户/组的权限
◦SCM-Manager – 用最简单的办法来管理你的 Git、Mercurial 和资料库
◦WebSVN – 开源的 Web 资料库浏览器

  • Virtualization

虚拟化

◦Feathur – VPS 资源调配和管理软件
◦Panamax – Project that makes deploying complex containerized apps as easy as Drag-and-Drop.
◦OpenVZ Web Panel – 控制你的 OpenVZ 服务器的 Web 面板
◦Virtkick – 简易管理虚拟机或 Docker 容器的控制器
◦WebVirtMgr – 基于 libvirt 的管理虚拟机 Web 接口 machines.

  • Server

服务器

◦Ajenti – Linux 和 BSD 的控制面板
◦Cockpit – 用 C 编写的,针对 Linux 服务器的, 多服务器 Web 管理接口
◦Virtualmin – 基于 webmin 的 Linux 系统控制面板
◦Webmin – Linux 服务器控制面板

•Deployment Automation

自动部署

  • Capistrano – Deploy your application to any number of machines simultaneously, in sequence or as a rolling set via SSH (rake based).
  • Fabric – Python 库和命令行工具,为了简化应用部署时 SSH 的使用、系统管理任务等
  • Mina – 基于 rake 的快速部署和服务器自动化工具
  • Rocketeer – PHP 任务运行和部署工具
  • Vlad the Deployer – 基于 rake 的自动化部署工具

Distributed Filesystems

分布式存储系统

  • Ceph – 分布式对象存储和文件系统
  • DRBD – 分布式复制块设备
  • LeoFS – 非结构化对象/数据存储,高可用、分布式、一致的存储系统
  • GlusterFS – Scale-out network-attached storage file system.
  • HDFS – 用 Java 编写的,面向 hadoop 框架的分布式、可伸缩、便携式文件系统
  • Lustre – Parallel distributed file system, generally used for large-scale cluster computing.
  • MooseFS – 容错的网络分布式文件系统
  • MogileFS – 应用层的网络分布式文件系统
  • OpenAFS – Distributed network file system with read-only replicas and multi-OS support.
  • TahoeLAFS – 安全、分散、容错、点对点分布式数据存储和分布式文件系统
  • XtreemFS – XtreemFS is a fault-tolerant distributed file system for all storage needs.

DNS

域名解析系统

  • Bind – 最广泛使用的域名服务器软件
  • djbdns – DNS 应用集合,包括 tinydns
  • Designate – DNS REST API that support several DNS servers as its backend.
  • dnsmasq – 一个轻量级的为小型网络提供 DNS \ DHCP \ TFTP 服务的服务
  • Knot – 高性能授权的 DNS 服务器
  • NSD – 仅权威的、高效、简单的域名服务器
  • PowerDNS – 带有后端海量数据存储和负载均衡的DNS 服务器
  • Unbound – 验证、递归和缓存 DNS 解析程序
  • Yadifa – 使用 DNSSEC 提供的 .eu 顶级域名的轻量级权威域名服务器

Editors

开源代码编辑器

  • Atom – Github 开发的一个可编程文本编辑器
  • Brackets – 面向前段工程师和 Web 设计师的代码编辑器
  • Eclipse – 用 Java 编写的可扩展插件的 IDE
  • Geany – GTK2 文本编辑器
  • GNU Emacs – 可扩展的、可自定义的文本编辑器
  • Haroopad – 带有实时预览的 Markdown 编辑器
  • ICEcoder – 彪悍的代码编辑器,用来架构常见的 Web 语言
  • jotgit – 基于 Git 的实时协作代码编辑
  • KDevelop – IDE by the people behind KDE.
  • Light Table – 下一代编辑器
  • Lime – 旨在提供一个对标 Sublime Text 且开放源代码的解决方案
  • TextMate – OS X 上的图形文本编辑器.
  • Vim – 目的是高效编辑的高度可配置的文本编辑器

Identity Management

身份管理

LDAP
– 389 Directory Server – 由 Red Hat 开发的
– Apache Directory Server – 用 Java 编写的, Apache 软件基金会项目
– OpenDJ – 是 OpenDS 令一个实现版本
– OpenDS – 用 Java 写的另一个目录服务器
– OpenLDAP – 由 OpenLDAP 项目组开发

Tools and web interfaces

工具和 Web 接口

  • Fusion Directory – 改善基于 OpenLDAP 的公司目录和服务的管理
  • FreeIPA – 安全管理解决方案,可以管理 LDAP、KRB、DNS、sudo 等等
  • LDAP Account Manager (LAM) – 存储在 LDAP 的 Web 前端管理条目(包括用户、组、DHCP 设置等)
  • Samba – 活动目录和 CIFS 协议控制

IT Asset Management

IT 资产管理软件

  • GLPI – 带有额外管理接口的信息资源管理
  • OCS Inventory NG – 管理 IT 资产清单
  • RackTables – Datacenter and server room asset management like document hardware assets, network addresses, space in racks, networks configuration.
  • Ralph – 面向大型数据中心和小型局域网的资产管理、DCIM 、CMDB 系统
  • Snipe IT – 资产和许可证管理软件

Log Management

日志管理工具(包括收集、分析、可视化)

  • Elasticsearch – 基于 Lucene 的文档存储,主要用于日志索引、存储和分析
  • Fluentd – 日志收集和传送
  • Flume – 分布式日志收集和聚合系统
  • Graylog2 – 带有报警选项的插件化日志、事件分析服务器
  • Heka – 用于日志聚合的流处理系统
  • Kibana – 日志和时间戳数据的可视化
  • Logstash – 用于管理事件和日志的工具
  • Octopussy – 日志管理解决方案(可视化、报警、报告)

Mail Clients

邮件客户端

  • Claws Mail – Old school email client (and news reader), based on GTK+.
  • Mutt – 强大的基于文本的邮件客户端
  • Thunderbird – 易于设置和自定义的免费邮件应用

Webmail

Web 邮件应用

  • Roundcube – 带有用户接口的基于浏览器的 IMAP 客户端
  • SquirrelMail – 另一个基于浏览器的 IMAP 客户端
  • Horde – Web 电子邮件和群组客户端
  • Rainloop – 支持 IMAP / SMTP 和多账户的 Web 电子邮件

Mail Servers

邮件服务器

MDA (IMAP/POP3)
Mail Delivery Agents (IMAP/POP3 software).
– Courier IMAP/POP3 – 快速、弹性、企业级 IMAP 和 POP3 服务器
– Cyrus IMAP/POP3 – Intended to be run on sealed servers, where normal users are not permitted to log in.
– Dovecot – IMAP and POP3 server written primarily with security in mind.

MTA (SMTP)
Mail Transfer Agents (SMTP servers).
– Exim – Message transfer agent (MTA) developed at the University of Cambridge.
– Haraka – A high-performance, pluginable SMTP server written in JavaScript.
– MailCatcher – Ruby gem that deploys a simply SMTP MTA gateway that accepts all mail and displays in web interface. Useful for debugging or development.
– Maildrop – Disposable email SMTP server, also useful for development.
– OpenSMTPD – Secure SMTP server implementation from the OpenBSD project.
– Postfix – Fast, easy to administer, and secure Sendmail replacement.
– Qmail – Secure Sendmail replacement.
– Sendmail – Message transfer agent (MTA).

complete solutions

Software for simple deployment of a mail server, e.g. for inexperienced or impatient admins.
– hMailServer – Open source e-mail server for Microsoft Windows
– Mail-in-a-Box – Take back control of your email with this easy-to-deploy mail server in a box.
– iRedMail – Full-featured mail server solution based on Postfix and Dovecot.
– Citadel – Feature packed, easy, versatile, and powerful mail server, thanks to exclusive “rooms” based architecture.
– Modoboa – Modoboa is a mail hosting and management platform including a modern and simplified Web User Interface.
– Fufix – Fufix is a mailserver installer based on Dovecot, Postfix, Postfixadmin, Nginx, PHP, MySQL and Fail2ban.

Monitoring

监控软件

  • Alerta – 分布式、可扩展、灵活的监控系统
  • Cacti – 带有制图工具的基于 Web 的网络监控
  • Cabot – 带有监视和报警功能,与 PagerDuty 类似
  • check_mk – Nagios 的扩展
  • Dash – 对 GNU/Linux 机器的低开销的监控 Web 仪表盘
  • Flapjack – 监控通知事件处理系统
  • Icinga – Nagios 的另一个分支版本
  • LibreNMS – 全功能网络监视系统,提供了丰富的功能和设备支持
  • Monit – 使用小程序,用于管理、监控 Unix 系统
  • Munin – 网络资源监控工具
  • Naemon – Network monitoring tool based on the基于 Nagios 4 的网络监控工具,带有核心性能和新功能改进
  • Nagios – 计算机系统、网络和基础设施监控软件
  • Node-Bell – Real-time anomalies detection for periodic time series, metrics monitor.
  • Observium – 通过 SNMP 监控服务器和网络设备,运行在 Linux 上
  • OMD – 分布式监控
  • PhpSysInfo – 可定制的 PHP 脚本,更好地显示相关系统信息
  • Riemann – 复杂、快速的事项处理
  • Sensu – 监控框架
  • Sentry – 应用程序监视、事件日志和聚合
  • ServerStatus BotoX – 监视并展示你的服务器统计信息
  • ServerStatus moejda – 服务器状态脚本,展示正常运行时间、空闲 RAM、空闲硬盘空间
  • Shinken – 另一个监控框架
  • Thruk – Multibackend monitoring web interface with support for Naemon, Nagios, Icinga and Shinken.
  • Xymon – 受到 Big Brother 启发的网络监控
  • Zabbix – 为监控网络和应用开发的企业级软件
  • Zenoss – 基于 Zope 的应用程序、服务器和网络管理平台

Metric & Metric Collection

度量收集和展示软件

  • Collectd – 守护进程的系统统计信息的收集
  • Collectl – 高精度系统性能指标收集工具
  • Dashing – Ruby gem that allows for rapid statistical dashboard development. An all HTML5 approach allows for big screen displays in data centers or conference rooms.
  • Diamond – 基于 Python 的统计信息收集守护程序
  • Facette – Time series data visualization and graphing software written in Go.
  • Freeboard – 一个前端实时控制面板,原生的 JSON 串转换成 UI
  • Ganglia – High performance, scalable RRD based monitoring for grids and/or clusters of servers. Compatible with Graphite using a single collection process.
  • Grafana – Graphite 和 InfluxDB 的仪表盘和图形编辑
  • Graphite – 弹性的图形显示服务器
  • InfluxDB – 不需要外部依赖的分布式时间序列数据库
  • KairosDB – Fast distributed scalable time series database, fork of OpenTSDB 1.x.
  • OpenTSDB – 没有粒度损失的服务器时间序列数据存储收集
  • Packetbeat – 捕获网络流量并显示到 Kibana 的仪表盘上
  • Prometheus – 服务监控系统和时间序列数据库
  • RRDtool – 应用于时间序列数据的行业标准、高性能数据日志和绘图系统
  • Statsd – 应用统计监听程序

Network Configuration Management

网络配置管理工具

  • GestióIP – 自动化的基于 Web 的 IPv4/IPv6 地址管理工具
  • Oxidized – 用 Web 接口和 Git 存储的网络设备配置监控模块
  • RANCID – 监视网络设备的配置和维护变换的历史
  • rConfig – 另一个网络设备配置管理工具
  • trigger – 用 Python 编写的强大网络自动化工具集

Newsletters

通讯软件

  • DadaMail – 用 Perl 编写的邮件列表管理
  • phpList – 用 PHP 编写的通信管理
  • LibreMailer – Libre Mailer is a modest and simple web based email marketing application.
  • Lewsnetter – 电子邮件营销管理程序(通过 SES 创建和发送电子邮件)包括订阅管理、交付、投诉通知、模版和数据.

NoSQL

NoSQL 数据库

  • Column-Family
    ◦Apache HBase – Hadoop 数据库,分布式的大数据存储
    ◦Cassandra – 设计为处理跨多台服务器的海量数据的分布式数据库管理系统
    ◦Hypertable – C++ based BigTable-like DBMS, communicates through Thrift and runs either as stand-alone or on distributed FS such as Hadoop.
  • Document Store (面向海量数据访问)
    ◦CouchDB – 易用的、多主机复制的文档型数据库
    ◦ElasticSearch – 基于 Java 的数据库,因为日志聚合以及电子邮件归档而流行
    ◦MongoDB – 另一个文档型数据库
    ◦RavenDB – 用于 ACID/事务性功能基于文档的数据库
    ◦RethinkDB – 分布式文档存储数据库,聚焦与 JSON
  • Graph
    ◦FlockDB – Twitter 的分布式容错图数据库
    ◦Neo4j – 图型数据库
  • Key-Value (面向高性能并发读写)
    ◦LevelDB – Google 的高性能键值对数据库
    ◦Redis – 网络上、内存中、键值对存储,持久性数据库
    ◦Riak – 另一个容错的键值对 NoSQL 数据库

Packaging

打包工具

  • fpm – Versatile multi format package creator.
  • omnibus-ruby – 依赖 Ruby 的全栈、跨平台的打包软件
  • packman – 依赖 Python 的全栈、跨平台的打包软件
  • tito – 为基于 Git 的项目构建 RPM 包

Project Management

项目管理和 Bug 跟踪

  • CaseBox – 在一个系统中管理你组织的全部信息
  • ChiliProject – Redmine 的另一个分支版本
  • GitBucket – 用 Scala 编写的 Github 的克隆
  • GitLab – 用 Ruby 编写的 Github 的克隆
  • Gogs – 用 Go 编写的自托管 Git 服务
  • OpenProject – 项目协同
  • Phabricator 用 PHP 编写
  • Redmine – 用 Ruby 编写的跑在 rails 上
  • Taiga – 基于 Kanban 和 Scrum 的敏捷项目管理工具
  • The Bug Genie – 用 PHP 编写
  • Trac – 用 Python 编写

Queuing

消息队列

  • ActiveMQ – Java 消息代理
  • BeanstalkD – 简单、快速的工作队列
  • Gearman – 快速、多语言队列/任务处理平台
  • Kafka – 性能极高的发布/订阅消息系统
  • NSQ – 实时分布式消息平台
  • RabbitMQ – 功能齐全、跨各发行版的队列系统
  • ZeroMQ – 轻量级队列系统

RDBMS

关系型数据库管理系统

  • Firebird – 通用数据库
  • Galera – Galera Cluster for MySQL is an easy-to-use high-availability solution with high system up-time, no data loss, and scalability for future growth.
  • MariaDB – 社区驱动的 MySQL 分支版本
  • Percona Server – Enhanced, drop-in MySQL replacement.
  • PostgreSQL – 对象关系型数据库管理系统
  • PostgreSQL-XL – 可伸缩、基于 PostgreSQL 的数据库集群
  • SQLite – 实现了独立的、无服务器、零配置、事务性 SQL 数据库

Security

安全工具

  • Blackbox – 在 Git 中安全存储机密信息,提供工具来自动加密机密信息(例如密码)
  • Bro – 网络分析和安全监控的强大框架
  • Denyhosts – 守卫 SSH 免受字典和暴力破解攻击
  • Fail2Ban – 扫描日志文件并显示出恶意行为的 IP 地址
  • fwknop – 通过单个数据包授权来保护你防火墙的端口
  • Glastopf – 用于模拟漏洞和共济数据的收集的低交互蜜罐
  • Kippo – 中交互的 SSH 蜜罐,主要是带有可配置文件系统沙盒的独立 SSH 守护进程
  • Linux Malware Detect – 为了解决共享主机环境所面临风险的 Linux 恶意软件扫描器
  • OSSEC – 一个可执行日至分析、FIM、Rootkit 检测等的 HIDS
  • OSQuery – 通过类似 SQL 的用户接口来查询你服务器的状态和相关信息
  • pfSense – FreeBSD 的防火墙和路由器分支
  • Snort – 网络入侵防御系统(NIPS)和网络入侵检测系统(NIDS)
  • SpamAssassin – 使用各种检测技术的垃圾电子邮件过滤器

Service Discovery

服务发现

  • Consul – 服务发现、监控和配置的工具
  • Doozerd – Doozer is a highly-available, completely consistent store for small amounts of extremely important data.
  • etcd – distributed K/V-Store, authenticating via SSL PKI and a REST HTTP Api for shared configuration and service discovery.
  • ZooKeeper – 一个集中维护配置信息服务、命名、提供分布式同步并提供服务的系统

Software Containers

软件容器

  • Docker – 为开发人员和系统管理员建立的分布式应用程序
  • LXC – Userspace interface for the Linux kernel containment features.
  • OpenVZ – Container-based virtualization for Linux.

SSH

SSH 工具

  • Advanced SSH config – 全透明地增强 ssh_config 文件能力
  • autossh – 在网络中断后自动重连的 ssh 会话
  • Cluster SSH – 通过单一的图形化控制台控制一系列窗口
  • DSH – 分布式 Shell, 通过一个命令终端在多个远程 Shell 中执行命令
  • Mosh – 手机 Shell
  • parallel-ssh – 提供 OpenSSH 的并行版本和相关工具
  • ssh-cert-authority – 一个 SSH 证书颁发工具
  • ssh-ca – 推送用户密钥到服务器,从而允许 SSH 对服务器的访问权限
  • SSH Power Tool – 同时使用预共享的密钥来执行命令、上传文件到多个服务器
  • sshrc – sources ~/.sshrc on your local computer after logging in remotely.
  • stormssh – 一个用来管理 SSH 连接的命令行工具

Statistics

统计分析软件

  • AWStats – 生成 Web 、流、FTP、邮件服务器的统计图
  • GoAccess – 实时 Web 日志分析和交互查看器,在终端中运行
  • Open Web Analytics – 使用 JS、 PHP or REST APIs 向网站中添加 Web 网站分析
  • Piwik – Web 分析应用
  • Webalizer – 快速 Web 服务器日志文件分析

Status Pages

状态页

  • Cachet – 用 PHP 编写的状态页系统
  • Stashboard – 为云服务和 API 开发的状态页
  • System Status Dashboard (SSD) – 概览组织的基础设施健康状况
  • Staytus – 一个完整的发布信息的解决方案,关于你的 Web 应用、网络或者服务的最新信息

Ticketing systems

任务跟踪系统

  • Bugzilla – 通用的 Bug 跟踪和测试工具,最初由 Mozilla 项目组开发
  • Cerb – 小组的电子邮件管理项目
  • Flyspray – 用 PHP 编写的,基于 Web 的 Bug 跟踪系统
  • MantisBT – 基于 Web 的 Bug 跟踪系统
  • osTicket – Simple support ticket system.
  • OTRS – Trouble ticket system for assigning tickets to incoming queries and tracking further communications.
  • Request Tracker – 用 Perl 编写的任务跟踪系统
  • TheBugGenie – 可扩展的用户权限的跟踪系统

Troubleshooting

故障排除工具

  • grml – 带有强大 CLI 工具的 Debian 启动盘
  • mitmproxy – 用于拦截、查看、修改网络流量的 Python 工具,在确定的问题的故障排除时是神器
  • Sysdig – 在 Linux 实例中捕捉系统状态和活动,保存、过滤并分析数据
  • Wireshark – 世界上最好的网络协议分析工具

Version control

版本控制

  • Fossil – 内置 Wiki 和 Bug 跟踪的分布式版本控制
  • Git – 以速度为重点的分布式版本控制和源码管理
  • GNU Bazaar – 由 Canonical 发起的分布式版本控制系统
  • Mercurial – 另一个分布式版本控制系统
  • Subversion – C/S 架构的版本控制系统

Virtualization

虚拟化软件

  • Archipel – 基于 XMPP 的虚拟化管理平台
  • ConVirt – 为集中管理您的 KVM 和 Xen 虚拟化环境提供核心功能
  • Ganeti – Cluster virtual server management software tool built on top of KVM and Xen.
  • KVM – Linux 内核虚拟机
  • OpenNebula – 灵活的企业云
  • oVirt – 管理虚拟机,存储和虚拟网络
  • Packer – A tool for creating identical machine images for multiple platforms from a single source configuration.
  • Proxmox VE – 虚拟化管理解决方案
  • QEMU – QEMU is a generic machine emulator and virtualizer.
  • Vagrant – 构建完整开发环境的工具
  • VirtualBox – 甲骨文公司的虚拟化产品
  • Xen – Virtual machine monitor for 32/64 bit Intel / AMD (IA 64) and PowerPC 970 architectures.

VPN

VPN 软件

  • OpenVPN – 使用自定义的安全协议,使用 SSL/TLS 进行密钥交换
  • Pritunl – OpenVPN based solution. Easy to set up.
  • SoftEther – 具有高级功能的多协议 VPN 软件
  • sshuttle – Poor man’s VPN.
  • strongSwan – Complete IPsec implementation for Linux.
  • tinc – 分布式 P2P VPN

XMPP

XMPP 服务器

  • ejabberd – 用 Erlang/OTP 编写的 XMPP 即时消息服务器
  • Metronome IM – Prosody 的分支版本
  • MongooseIM – ejabberd 的分支版本
  • Openfire – 实时协作(RTC)服务器
  • Prosody IM – 用 Lua 编写的 XMPP 服务器
  • Tigase – 用 Java 实现的 XMPP 服务器

XMPP Web Clients

XMPP Web 客户端

  • Candy – 使用 Javascript 编写的多用户 XMPP 客户端
  • Kaiwa – 现代风格基于 Web 的聊天客户端
  • Lets-Chat – 用 Node 编写的自托管的聊天套件

Web

Web 服务器

  • Apache – 最流行的 Web 服务器
  • Cherokee – 轻量级、高性能 Web 服务器/反向代理服务器
  • Lighttpd – 高速环境下最优的 Web 服务器
  • Nginx – 反向代理、负载均衡、HTTP 缓存和 Web 服务器
  • uWSGI – The uWSGI project aims at developing a full stack for building hosting services.

Web Performance

Web 性能

  • HAProxy – 基于软件的负载均衡,使用 SSL 减轻负载,进行性能优化、压缩和通用 Web 路由
  • Varnish – 关注优化缓存和压缩的基于 HTTP 的 Web 应用程序加速器

Wiki Software

Wiki 软件

  • DokuWiki – 简易、高度灵活的 Wiki,不需要数据库
  • Gollum – 带有 API 接口、本地前端,简易、Git 驱动的 Wiki
  • ikiwiki – 一个 Wiki 编译器
  • MDwiki – 完全基于 HTML5/Javascript 的 Wiki
  • Mediawiki – Used to power Wikipedia.
  • MoinMoin – 拥有很大用户群的、易于使用、可扩展的 Wiki 引擎
  • Ōlelo Wiki – 页面存储在 Git 仓库中的 Wiki
  • PmWiki – Wiki-based system for collaborative creation and maintenance of websites.
  • TiddlyWiki – 用 Javascript 编写的完整交互式 Wiki

The 7 Best Open Source Load Testing Tools of 2017

All open source load testing tools don’t have the same functionality and some will better suit to your needs than others.

open-source-load-testing

Open Source Drawbacks

Open source load testing tools may not be ideal, but they’re a whole lot better than skipping load testing entirely just because you don’t have room in the budget for a premium tool. That doesn’t mean you should just use the first open source tool you can find. They don’t all have the same functionality and some will be better suited to your needs than others.

The drawback to all open source load testing solutions (as opposed to cloud-based solutions like LoadView) is that all the virtual users originate on your own servers. You’ll be testing your site under ideal conditions – you won’t even be crossing your own firewall. This may be adequate for your needs, or you may eventually decide to upgrade to a premium load testing solution.

Apache JMeter

JMeter is the most popular open source load testing tool, and it’s easy to see why. It offers almost as many features as premium tools. It allows you to record test scripts via point and click, specify a maximum number of users, and validate the test scripts before running the load test. Reports include easy-to-read graphs that show a variety of performance metrics.

However, JMeter doesn’t easily scale to large-scale testing across a number of machines.

Taurus

Taurus is meant to work on its own or in conjunction with other open source load testing tools, adding to their functionality. Taurus allows you to perform load testing on a specific piece of code while it’s still being developed. Instead of recording test scripts with point and click functionality, you’ll write test scripts in YAML (an easily readable coding language). Reports are displayed within the application.

Locust

With Locust, you code test scripts in Python, and the application sends a swarm of virtual users to your website (or other system) to carry out those test scripts. Locust allows you to create hundreds of thousands of virtual users. It offers a web-based UI that displays load test results in real time.

The Grinder

The Grinder is Java-based and can load test any system that has a Java API. It’s designed to be used by programmers, but can also be used for production load testing. It requires you to write scripts in Jython or Clojure.

Gatling

Gatling uses a DSL (domain-specific language) for test scripting. The report it generates is colorful and dynamic. It works with any browser or operating system. Gatling does allow you to execute test cases in different clouds, but doesn’t allow you to distribute load between multiple machines.

Multi-Mechanize

Multi-Mechanize performs load tests by running concurrent Python scripts. It can be used to load test any remote API accessible from Python, but is most often used to test web performance and scalability. Reports include a variety of graphs.

Siege

Siege is another load testing tool aimed at developers. Test scripts can test basic authentication, HTTP, HTTPS, cookies, and FTP protocols. Siege doesn’t support more complicated transactions, but may still be adequate for your needs. It can be run with multiple IP addresses from the same machine, better mimicking real-world traffic. Siege isn’t suited for large-scale testing, and is most useful in the coding phase.

postgreSQL常用命令

连接数据库, 默认的用户和数据库是postgres
psql -U user -d dbname

\c dbname 切换数据库,相当于mysql的use dbname

\l 列举数据库,相当于mysql的show databases

\dt 列举表,相当于show tables

\d tblname 查看表结构,相当于desc tblname,show columns from tbname

 

一般性
\c[onnect] [资料库名称|- 用户名称|- 主机|- 埠号|-]
连线到新的资料库 (目前是 “test”)
\cd [目录]     改变目前的工作目录
\copyright     显示 PostgreSQL 的使用和发行条款
\encoding [字元编码名称]
显示或设定用户端字元编码
\h [名称]      SQL 命令语法上的说明,用 * 显示全部命令
\prompt [文本] 名称
提示用户设定内部变数
\password [USERNAME]
securely change the password for a user
\q             退出 psql
\set [名称 [值数]]
设定内部变数,若无参数则列出全部变数
\timing        切换命令计时开关 (目前是 关闭)
\unset 名称    清空(删除)内部变数
\! [命令]      在 shell 里执行命令或开启一个 shell

查询缓存区
\e [档案]      使用外部编辑器编辑查询缓存区(或档案)
\g [档案]      将查询缓存区送至伺服器 (并把结果写入档案或 | 管线”pipe”)
\p             显示查询缓存区的内容
\r             重置(清除)查询缓存区
\w 档案        将查询缓存区写入档案

输入/输出
\echo [字串]   将字串写至标准输出
\i 档案        从档案中执行命令
\o [档案]      将全部查询结果写入档案或 |管道”pipe”
\qecho [字串]
将字串写入查询输出串流 (参考 \o)
资讯性
\d [名称]      为资料表、索引、序列数或视观表加上注解
\d{t|i|s|v|S} [模型] (加上 “+” 取得更多资讯)
列出资料表/索引/序列数/视观表/系统资料表
\da [模型]     列出聚集函数
\db [模型]     列出表空间 (加上 “+” 取得更多资讯)
\dc [模型]     列出字元编码转换
\dC            列出型别转换
\dd [模型]     显示物件的注解
\dD [模型]     列出共同值域
\df [模型]     列出函数(加上 “+” 取得更多资讯)
\dF [模型]     列出文本搜寻组态 (加上 “+” 取得更多资讯)
\dFb [模型]     列出文本搜寻字典 (加上 “+” 取得更多资讯)
\dFt [模型]     列出文本搜寻样式
\dFp [模型]     列出文本搜寻剖析器 (加上 “+” 取得更多资讯)
\dg [模型]     列出群组
\dn [模型]     列出架构模式 (加上 “+” 取得更多资讯)
\do [名称]     列出运算子
\dl            列出大型物件,同 \lo_list
\dp [模型]     列出资料表、视观表和序列数的存取权限
\dT [模型]     列出资料型别(加上 “+” 取得更多资讯)
\du [模型]     列出角色
\l             列出全部资料库(加上 “+” 取得更多资讯)
\z [模型]     列出资料表、视观表和序列数存取权限(同 \dp)

格式化
\a             切换非对齐模式和对齐模式
\C [字串]      设定资料表标题或取消
\f [字串]      显示或设定非对齐模式的栏位分隔符号
\H             切换 HTML 输出模式 (目前是 关闭)
\pset 名称 [值数]
设定资料表输出选项
(名称:= {format|border|expanded|fieldsep|footer|null|
recordsep|tuples_only|title|tableattr|pager})
\t             只显示资料列 (目前是 关闭)
\T [字串]      设定 HTML 表格标签属性
\x             切换扩展输出模式(目前是 关闭)
复制(Copy),大型物件(Large Object)
\copy …      执行 SQL COPY,资料流指向客户端主机
\lo_export LOBOID 档案
\lo_import 档案 [COMMENT]
\lo_list
\lo_unlink LOBOID    大型物件运算子

搭建微信 AI 机器人

公众号申请

任务时间:10min ~ 15min

注册一个公众号

首先进入微信公众号平台,然后注册一个账号,类型选择订阅号,然后根据相应的提示完成信息的填写和验证。具体操作可参考以下视频。

  • 视频 – 注册公众号

后台服务器的搭建

任务时间:10min ~ 15min

安装 NodeJS

首先执行以下命令

sudo su

下载最新的稳定版 v6.10.3 到本地

wget https://nodejs.org/dist/v6.10.3/node-v6.10.3-linux-x64.tar.xz

下载完成后, 将其解压

tar xvJf node-v6.10.3-linux-x64.tar.xz

将解压的 Node.js 目录移动到 /usr/local 目录下

mv node-v6.10.3-linux-x64 /usr/local/node-v6

配置 node 软链接到 /bin 目录

ln -s /usr/local/node-v6/bin/node /bin/node

配置 NPM

NPM 是 Node.js 的包管理和分发工具。它可以让 Node.js 开发者能够更加轻松的共享代码和共用代码片段

下载 node 的压缩包中已经包含了 npm , 我们只需要将其软链接到 bin 目录下即可

ln -s /usr/local/node-v6/bin/npm /bin/npm

配置环境变量

将 /usr/local/node-v6/bin 目录添加到 $PATH 环境变量中可以方便地使用通过 npm 全局安装的第三方工具

echo 'export PATH=/usr/local/node-v6/bin:$PATH' >> /etc/profile

生效环境变量

source /etc/profile

安装 Express

安装 Express 应用脚手架:

npm install express-generator -g

创建新的项目

执行

cd /data/
express yourApp

这时候会在 /data 生成应用目录 /yourApp,继续执行以下命令

cd yourApp
npm install
npm start

此时服务已经在 http://<您的 CVM IP 地址>:3000 上启动,可以在浏览器中浏览测试。

进入开发者模式

任务时间:10min ~ 15min

配置服务器信息,进入开发者模式

微信平台会去验证你填写的服务器的有效性,所以配置服务器前要先编写服务器有效性验证的代码。

在终端使用 Ctrl + C 终止刚才启动的服务,然后执行以下命令安装依赖的文件:

npm install xml2js sha1 querystring
  • 编辑 app.js,参考下面的代码:
示例代码:/data/yourApp/app.js
var express = require('express');
var app = express();
var http = require('http');
var sha1 = require('sha1');
var xml2js = require('xml2js');
var querystring  = require('querystring');

process.env.PORT = '80';
function checkSignature(req) {
  // 获取校验参数
  var signature = req.query.signature;
  var timestamp = req.query.timestamp;
  var nonce = req.query.nonce;

  // 此处为实验分配了一个 token,也可以修改为自己的 token
  var token = 'Password';

  // 按照字典排序
  var params = [token, timestamp, nonce];
  params.sort();

  // 连接
  var str = sha1(params.join(""));

  // 返回签名是否一致
  return str == signature;
}

// 接入验证
app.get('/', function(req, res) {
  // 签名成功
  if (checkSignature(req)) {
    res.send(200, req.query.echostr);
  } else {
    res.send(200, 'fail');
  }
});

module.exports = app;

启动服务:

npm start

登录微信公众号平台,然后拉到页面的最下面,点击基本配置菜单。填写以下信息:

  • 服务器地址(URL):填写 <您的 CVM IP 地址> [?]
  • 令牌(Token):填写上面代码中使用到的 Token,如无修改,直接使用 Password
  • 消息加解密密钥(EncodingAESKey):随机字符串。可以让平台生成。
  • 消息加解密方式:选择明文方式

配置完毕后点击提交,提交成功后,在基本配置菜单页面点击启用

此时,微信用户给公众号发送的信息,会由微信平台转发给您的服务器,然后您的服务器进行处理后返回给用户。

在页面点击提交,检查是否可以提交成功。

这是您的服务器地址,服务器主要是用于实现机器人的逻辑。主机部分必须是公网 IP 或者可解析到公网 IP 的域名。

机器人的实现

任务时间:10min ~ 15min

实现机器人功能

首先在图灵机器人官网注册和申请一个机器人,具体步骤可以参考视频。

  • 视频 – 申请图灵机器人

申请之后,我们来调用 API 实现机器人的功能。

编辑 app.js,参考下面的代码 [?]

示例代码:/data/yourApp/app.js
var express = require('express');
var app = express();
var http = require('http');
var sha1 = require('sha1');
var xml2js = require('xml2js');
var querystring  = require('querystring');

process.env.PORT = '80';
function checkSignature(req) {
  // 获取校验参数
  var signature = req.query.signature;
  var timestamp = req.query.timestamp;
  var nonce = req.query.nonce;

  // 此处为实验分配了一个 token,也可以修改为自己的 token
  var token = 'Password';

  // 按照字典排序
  var params = [token, timestamp, nonce];
  params.sort();

  // 连接
  var str = sha1(params.join(""));

  // 返回签名是否一致
  return str == signature;
}

// 接入验证
app.get('/', function(req, res) {
  // 签名成功
  if (checkSignature(req)) {
    res.send(200, req.query.echostr);
  } else {
    res.send(200, 'fail');
  }
});

function handler(req, res) {
  let  buf = '';
  // 获取XML内容
  req.setEncoding('utf8');
  req.on('data', function(chunk) {
    buf += chunk;
  });
  // 内容接收完毕
  req.on('end', function() {
    xml2js.parseString(buf, function(err, json) {
      if (err) {
        err.status = 400;
      } else {
        req.body = json;
      }
    });

    let data = req.body.xml;
    var msg = {
      "toUserName" : data.FromUserName[0],
      "fromUserName" : data.ToUserName[0],
      "createTime" : data.CreateTime[0],
      "msgType" : data.MsgType[0],
      "content" : data.Content[0],
      "msgId" : data.MsgId[0]
    };
    request(msg, req, res)

  });
}

function request(data, req, res) { 
  var msg = {             
    "key":'6d76234cf7ee488d84aa1a54397ae866',   // 可以填入自己申请的机器人的apiKey            
    "info": data.content,             
    "userid": ~~(Math.random() * 99999)
  };  
  var text = querystring.stringify(msg);    
  var options = {  
      hostname: 'www.tuling123.com',  
      path: '/openapi/api',  
      method: 'POST',
      headers: {  
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'  
    }  
  };  

  var requestObj = http.request(options, function (response) {  
      var result = '';
      response.setEncoding('utf8');  
      response.on('data', function (chunk) {  
         result +=  chunk;
      });  
      response.on('end',function() {  
      try{
          var obj = JSON.parse(result);
        }
          catch(e){
              data.content = e.message;
          echo(data, res);
          return;
            }
        data.content = obj.text;
        echo(data, res);
      })
  });  

  requestObj.on('error', function (e) {
      console.log('problem with request: ' + e.message);  
      data.content = e.message;  
      echo(data, res);
  });  
  requestObj.write(text);
  requestObj.end();  
}
function echo(data, res) {
  var time = Math.round(new Date().getTime() / 1000);
  var output = "" +
              "<xml>" +
                 "<ToUserName><![CDATA[" + data.toUserName + "]]></ToUserName>" +
                 "<FromUserName><![CDATA[" + data.fromUserName + "]]></FromUserName>" +
                 "<CreateTime>" + time + "</CreateTime>" +
                 "<MsgType><![CDATA[" + data.msgType + "]]></MsgType>" +
                 "<Content><![CDATA[" + data.content + "]]></Content>" +
              "</xml>";

  res.type('xml');
  res.send(output);
}
// Start
app.post('/', function(req, res) {
  handler(req, res);
});

module.exports = app;

操作键盘按下 Ctrl + C 终止之前的服务,然后重新启动:

npm start

您可用对比模式查看新增的部分

部署完成

任务时间:3min ~ 5min

访问服务

在微信公众号中关注自己的公众号,然后发送信息给公众号,测试是否有返回。在微信公众号平台可以对公众号信息进行管理。更复杂的逻辑可以参考微信公众号平台开发者文档图灵机器人开发文档

大功告成

恭喜您已经完成了搭建微信 AI 机器人的学习