38 Star 178 Fork 111

anolis / sysom

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

简介

致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 探索创新的sysAK、ossre诊断工具及高效的LCC(Libbpf Compiler Collection)开发编译平台和netinfo网络抖动问题监控系统等, 实现系统问题的快速上报、分析与解决,提升集群的全自动运维效率,构建大规模集群运维生态链。

目标

通过社区合作,打造出一个自动化运维平台,涵盖云场景中各种典型服务场景,包括线上问题分析诊断、资源和异常事件监控、系统修复业务止血, 安全审计和CVE补丁推送等各种功能,提供强大的底层系统运维能力,融合到统一的智能运维平台,实现自动化运维。

功能

  • 主机管理
  • 配置中心
  • 安全审计
  • 监控报警
  • 智能问题诊断
  • 发布部署

安装部署

1. 编译部署

1.1 依赖

  • nodejs >= 12.0.0
  • python >= 3.6
  • git
  • tar
  • wget

1.2 编译

  • 依赖安装

    dnf module install nodejs:16 -y
    npm install -g yarn
    dnf install git tar wget -y
  • 编译打包

    git clone https://gitee.com/anolis/sysom.git
    cd sysom
    bash package.sh

    输出包含如下结果表示编译成功: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dbTldAef-1676539163032)(https://foruda.gitee.com/images/1674977326579767317/e08cc909_643601.png "编译日志.png")]

    执行完之后使用 tree -L 1 查看当前文件夹分布如下:

    .
    ├── LICENSE
    ├── package_rpm_offline.sh
    ├── package_rpm_online.sh
    ├── package.sh
    ├── README.md
    ├── script
    ├── sysomRelease-20230129142347.tar.gz
    ├── sysom_server
    ├── sysom_web
    └── tools

    注意:打包出的 release 包的命名格式为 sysomRelease-xxx.tar.gz ,其中 xxx 为打包时的时间,因此每次打包时生成的压缩包名称都是不同的

1.3 热补丁编译机(builder)设置

用户需要使用热补丁中心的功能时,需要配置热补丁的编译机。

  • 在单机部署的情况下,可以忽略本步骤,部署完毕即可使用

  • 在多机部署的情况下,请确保builder机器与server机器在同一网段内。需要配置sysom/script/server/6_sysom_hotfix_builder下的init.sh以及sysom_server/sysom_hotfix_builder下的builder.ini

    #! /bin/bash
    SERVER_DIR="sysom_server"
    HOTFIX_BUILDER_DIR=${SERVER_DIR}/sysom_hotfix_builder
    VIRTUALENV_HOME=${SERVER_HOME}/virtualenv
    SERVICE_NAME=sysom-hotfix-builder
    NFS_SERVER_IP=${SERVER_LOCAL_IP}  # 将NFS_SEVER_IP配置为sysom主服务器的内网ip地址

    builder.ini

    [sysom_server]
    server_ip = http://127.0.0.1  # sysom主服务器的ip地址
    account = account             # 用于登录sysom的账户
    password = password           # 用于登录sysom的密码
    
    [cec]
    cec_url = redis://127.0.0.1:6379  # 此处指向sysom主服务器的redis地址,填写内网ip地址
    
    [builder]
    hotfix_base = /hotfix_build/hotfix                      # 此处配置hotfix构建的工作目录
    nfs_dir_home = /usr/local/sysom/server/builder/hotfix   # 此处构建与sysom主服务器共享目录的路径
    package_repo = /hotfix/packages                         # 缓存设定路径

注意:在多机部署的情况下,角色为builder的机器可以在/sysom/server/conf下仅使能[base]和[hotfix-builder]这两个服务即可;此外,需要修改server的redis配置文件(如/etc/redis.conf),允许其他机器访问server的redis,否则服务会不可用 。

1.4 部署

  • 解压 release 包

    注意下面压缩包的名称要替换成实际打包出的 release 包的名称

    tar -zxvf sysomRelease-20230129142347.tar.gz
    cd sysomRelease-20230129142347

    解压完成后,Release 包内的文件分布如下:

    .
    ├── clear.sh
    ├── deploy.sh
    ├── script
    ├── sysom_server
    ├── sysom_web
    └── tools
  • 使用 deploy.sh 脚本进行部署

    • 首先使用 ifconfig 查看当前机器的IP => 比如:172.22.3.238

    • deploy.sh 部署脚本参数说明

      bash deploy.sh <部署目录> <内网IP> <外网IP>
      • arg1 : 部署目录
      • arg2 : 内网IP(主要是方便内网通讯,用户需要保证内网能通)
      • arg3 : 外网IP(浏览器可以访问到的IP地址)
    • 使用 deploy.sh 脚本进行一键部署

      如果没有公网IP,均使用内网IP即可,实际部署时可以替换成公网IP

      # 通过环境变量控制需要使能的服务(以下是一个常用默认搭配)
      export DEPLOY_SERVER_LIST=sysom_api,sysom_diagnosis,sysom_channel,sysom_monitor_server,sysom_log,sysom_vmcore,sysom_migration,sysom_cluster_health,sysom_alarm,sysom_cmg,sysom_vul
      
      # 使用部署脚本部署
      ./deploy.sh /usr/local/sysom 172.22.3.238 172.22.3.238
    • 当服务日志输出下列日志表示部署成功:

      Oct 10 12:58:51 mfeng bash[3217754]: /usr/local/sysom/init_scripts/server
      Oct 10 12:58:51 mfeng bash[3217754]: + for dir in `ls`
      Oct 10 12:58:51 mfeng bash[3217754]: + '[' -d init.sh ']'
      Oct 10 12:58:51 mfeng bash[3217754]: + for dir in `ls`
      Oct 10 12:58:51 mfeng bash[3217754]: + '[' -d stop.sh ']'
      Oct 10 12:58:51 mfeng bash[3217754]: + sed -i 's/^FIRST_INIT_DONE=0/FIRST_INIT_DONE=1/g'     /usr/local/sysom/init_scripts/server/init.sh

2. RPM打包部署

2.1 依赖

  • nodejs >= 12.0.0
  • python >= 3.6
  • git
  • tar
  • wget
  • Rpmbuild

2.2 编译

  • 依赖安装

    dnf module install nodejs:16 -y
    npm install -g yarn
    dnf install git tar wget rpm-build -y
  • 生成 RPM 包

    # 前端打包需要本地已经具备yarn环境,如不具备,需要提前部署yarn环境,然后进到 sysom_web 目录执行 yarn 命令安装依赖包。
    # mac 环境下 yarn 安装可以采用脚本:curl -o- -L https://yarnpkg.com/install.sh | bash
    # 安装yarn完成后,执行下列命令打包项目
    # 由于是制作rpm包,因此也需要打包具备制作rpm的条件,如rpmbuild,python3命令等。
    bash package_rpm_online.sh

    打包完成后,生成的 RPM 包被存放在 /root/rpmbuild/RPMS/x86_64 下面,使用 tree -L 1 /root/rpmbuild/RPMS/x86_64 查看的结果如下:

    /root/rpmbuild/RPMS/x86_64
    └── sysom-2.0-1.an8.x86_64.rpm

    注意:RPM包的名称会随 sysom 的版本、打包机器的架构和发行版本而变化,因此实际使用 RPM 包时,以实际的名称为准。

2.3 部署

  • 安装 rpm 包

    rpm -ivh sysom-2.0-1.an8.x86_64.rpm
    # 或 yum install -y sysom-2.0-1.an8.x86_64.rpm
    • 默认安装路径为 /usr/local/sysom
    • 默认配置使用的nginx对外端口为80,可以通过 export SERVER_PORT=xxx 来设置
    • 默认配置的内网IP是通过 ip -4 route 命令查找的第一个IP,可以通过 export SERVER_LOCAL_IP=xxx.xxx.xxx.xxx 来设置
  • 启动

    # 使用以下命令进行启动:
    bash -x /usr/local/sysom/init_scripts/server/init.sh
  • 当服务日志输出下列日志表示部署成功:

    Oct 10 12:58:51 mfeng bash[3217754]: /usr/local/sysom/init_scripts/server
    Oct 10 12:58:51 mfeng bash[3217754]: + for dir in `ls`
    Oct 10 12:58:51 mfeng bash[3217754]: + '[' -d init.sh ']'
    Oct 10 12:58:51 mfeng bash[3217754]: + for dir in `ls`
    Oct 10 12:58:51 mfeng bash[3217754]: + '[' -d stop.sh ']'
    Oct 10 12:58:51 mfeng bash[3217754]: + sed -i 's/^FIRST_INIT_DONE=0/FIRST_INIT_DONE=1/g'     /usr/local/sysom/init_scripts/server/init.sh

3. 容器化部署

3.1 基础服务部署

docker build -t sysom-base -f docker/sysom_base_dockerfile .
docker run -idt --privileged --name sysom-base sysom-base

可以通过修改 docker/sysom_base_dockerfile 使能不同的微服务

4. 通过 WEB 前端访问

部署成功之后,可以通过访问部署时指定的公网/私网地址访问 SysOM前端,比如 http://172.22.3.238

其它问题见FAQ

https://gitee.com/anolis/sysom/wikis/SysOM%20FAQ

The MIT License (MIT) Copyright © 2021 <copyright holders> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 探索创新的sysAK、ossre诊断工具及高效的LCC(Libbpf Compiler Collection)开发编译平台和netinfo网络抖动问题监控系统等, 实现系统问题的快速上报、分析与解决,提升集群的全自动运维效率,构建大规模集群运维生态链。 展开 收起
MIT
取消

发行版 (10)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/anolis/sysom.git
git@gitee.com:anolis/sysom.git
anolis
sysom
sysom
main

搜索帮助