跳转至
首页 解决方案 下载 文档
演示环境

v1.5.0(20220528)

如果您是老用户,请根据下面步骤升级,如果您是新用户请根据【安装部署】-【基础平台安装】文档全新安装。v1.5.0版本变化较大,并且涉及到底层更新较多,请务必完成更新。老版本将不再支持。

升级步骤

必须严格按顺序执行,先更新PaaS代码,再执行更新操作,因为更新脚本都是在PaaS这个项目上。

更新opsany-paas

  • 更新最新版本代码
cd /opt/opsany-paas && git pull

如果本地修过脚本中的密码,可以执行git checkout filename,更新完毕之后再修改。

2.重新下载SaaS软件包,请查收更新通知邮件,或者在社区群获取。

OpsAny推崇熟人社交,拒绝陌生人,我们坚信技术人就应该相互学习,彼此协作。所以最新消息以社区微信群为第一通知渠道。没有找到社区群入口?在官网下载申请后,收到的邮件中有二维码哦,也或许是因为缘分还未到,把问题留给时间。

3.进行ESB更新。ESB更新会替换配置,并重新导入ESB相关的SQL。

cd /opt/opsany-paas/install
./saas-esb-update.sh

4.更新Websocket镜像,此版本提高了稳定性。

cd /opt/opsany-paas/install/
grep '^[A-Z]' install.config > install.env
source ./install.env && rm -f install.env

#停止并删除websocket容器
docker stop opsany-paas-websocket && docker rm -f opsany-paas-websocket

#根据实际情况,删除对应的镜像,请修改为正确的镜像地址和版本
docker rmi ${PAAS_DOCKER_REG}/opsany-paas-websocket:v3.2.11

#使用新镜像启动websocket服务
docker run -d --restart=always --name opsany-paas-websocket \
    -p 8004:8004 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \
    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \
    -v ${INSTALL_PATH}/conf/settings_production.py.websocket:/opt/opsany/websocket/config/prod.py \
    -v ${INSTALL_PATH}/conf/settings_production.py.websocket.init:/opt/opsany/websocket/config/__init__.py \
    -v /usr/share/zoneinfo:/usr/share/zoneinfo \
    -v /etc/localtime:/etc/localtime:ro \
    ${PAAS_DOCKER_REG}/opsany-paas-websocket:v3.2.12

5.更新login镜像,此版本增加了移动端登录支持。

cd /opt/opsany-paas/install/
grep '^[A-Z]' install.config > install.env
source ./install.env && rm -f install.env

#停止并删除老的login容器,版本根据实际修改。
docker stop opsany-paas-login && docker rm -f opsany-paas-login
docker rmi ${PAAS_DOCKER_REG}/opsany-paas-login:v3.2.11

#使用新镜像启动login服务
docker run -d --restart=always --name opsany-paas-login \
    -p 8003:8003 -v ${INSTALL_PATH}/logs:/opt/opsany/logs \
    -v ${INSTALL_PATH}/conf/settings_production.py.login:/opt/opsany/paas/login/conf/settings_production.py \
    -v /etc/localtime:/etc/localtime:ro \
    ${PAAS_DOCKER_REG}/opsany-paas-login:v3.2.12

启动最新版本Proxy

最新版本的Proxy将替代之前启动的SaltStack容器,Proxy支持单独部署,下面根据使用OpsAny的MySQL和Redis的配置。如果单独部署,请查看Proxy部署文档。

  1. 停止老的SaltStack服务

    docker stop opsany-saltstack && docker rm opsany-saltstack
    # 修改之前的SaltStack的挂载目录名称,和Proxy保持一致,保证SaltStack的证书可以正常挂载到新的Proxy中去。
    cd /opt/opsany/ && mv salt-volume/ proxy-volume
    

  2. 创建Proxy的数据库并授权,如果执行失败,可以手工创建该数据库并授权。

export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}
mysql -h "${MYSQL_SERVER_IP}" -u root  -e "CREATE DATABASE IF NOT EXISTS opsany_proxy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql -h "${MYSQL_SERVER_IP}" -u root  -e "grant all on opsany_proxy.* to opsany@'%' identified by "\"${MYSQL_OPSANY_PASSWORD}\"";" 
  1. 准备Proxy的配置文件

Proxy会自动根据目标主机的IP地址确定使用LOCAL_IP还是使用PUBLIC_IP与其进行通信。

#请修改为Proxy内网地址,用于内网主机和Proxy通信。
PROXY_LOCAL_IP=10.0.0.80
#请修改为Proxy外网地址,用于外网主机和Proxy通信。如没有外网IP,请填写为内网IP。
PROXY_PUBLIC_IP=120.92.89.12

# 配置Proxy配置文件。
cd /opt/opsany-paas/install/
cp -r ./conf/proxy/ ${INSTALL_PATH}/conf/
sed -i "s/REDIS_SERVER_IP/${REDIS_SERVER_IP}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/REDIS_SERVER_PASSWORD/${REDIS_SERVER_PASSWORD}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/MYSQL_SERVER_IP/${MYSQL_SERVER_IP}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/MYSQL_OPSANY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/local-proxy.opsany.com/${PROXY_LOCAL_IP}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
sed -i "s/public-proxy.opsany.com/${PROXY_PUBLIC_IP}/g" ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy

# 配置Proxy使用的脚本中的数据库配置。
cd /opt/opsany-paas/saas/
cp invscript_proxy.py ${INSTALL_PATH}/conf/proxy/
sed -i "s/LOCALHOST/${MYSQL_SERVER_IP}/g" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py
sed -i "s/PROXY_PASSWORD/${MYSQL_OPSANY_PASSWORD}/g" ${INSTALL_PATH}/conf/proxy/invscript_proxy.py
chmod +x ${INSTALL_PATH}/conf/proxy/invscript_proxy.py


# 建议验证一下,查看sed更新的是否都成功了。IP地址和用户名密码是否正确。不正确有可能是环境变量未设置。
cat ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy
cat ${INSTALL_PATH}/conf/proxy/invscript_proxy.py
  1. 启动Proxy服务并进行初始化
# 启动Proxy容器
docker run --restart=always --name opsany-proxy -d \
        -p 4505:4505 -p 4506:4506 -p 8010:8010 \
        -v ${INSTALL_PATH}/logs:${INSTALL_PATH}/logs \
        -v ${INSTALL_PATH}/proxy-volume/certs/:/etc/pki/tls/certs/ \
        -v ${INSTALL_PATH}/proxy-volume/etc/salt/:/etc/salt/ \
        -v ${INSTALL_PATH}/proxy-volume/cache/:/var/cache/salt/ \
        -v ${INSTALL_PATH}/proxy-volume/srv/salt:/srv/salt/ \
        -v ${INSTALL_PATH}/proxy-volume/srv/pillar:/srv/pillar/ \
        -v ${INSTALL_PATH}/proxy-volume/srv/playbook:/srv/playbook/ \
        -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \
        -v ${INSTALL_PATH}/conf/proxy/settings_production.py.proxy:/opt/opsany-proxy/config/prod.py \
        -v ${INSTALL_PATH}/conf/proxy/invscript_proxy.py:/opt/opsany-proxy/invscript_proxy.py \
        -v /etc/localtime:/etc/localtime:ro \
        ${PAAS_DOCKER_REG}/opsany-proxy:1.1.17

# 初始化Proxy数据库
docker exec -e OPS_ANY_ENV=production \
        opsany-proxy /bin/sh -c "/usr/local/bin/python3 /opt/opsany-proxy/manage.py makemigrations && /usr/local/bin/python3 /opt/opsany-proxy/manage.py migrate"
  1. 修改OpenResty配置并重新创建。
/bin/cp /opt/opsany-paas/install/conf/nginx-conf.d/nginx_proxy.conf ${INSTALL_PATH}/conf/nginx-conf.d/
sed -i "s/LOCAL_IP/${PROXY_LOCAL_IP}/g" ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf 
sed -i "s/DOMAIN_NAME/${DOMAIN_NAME}/g" ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf
cat ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf

docker stop opsany-openresty && docker rm opsany-openresty
docker run -d --restart=always --name opsany-openresty \
    -p 80:80 -p 443:443 -p 8011:8011 -p 8012:8012 \
    -v ${INSTALL_PATH}/logs:/opt/opsany/logs \
    -v ${INSTALL_PATH}/conf/nginx-conf.d:/etc/nginx/conf.d \
    -v ${INSTALL_PATH}/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v ${INSTALL_PATH}/uploads:/opt/opsany/uploads \
    -v /etc/localtime:/etc/localtime:ro \
    ${PAAS_DOCKER_REG}/openresty:1.17.8.2-alpine

如果遇到Openresty无法启动,请检查配置文件是否正确。

vim ${INSTALL_PATH}/conf/nginx-conf.d/nginx_proxy.conf

更新1.5.0 最新版本应用

在开发中心,挨个上传部署,或者使用saas-update.sh脚本进行批量更新。注意修改脚本中的admin密码。

./saas-update.sh base

saas-update.sh脚本的本质是通过API帮用户在开发中心进行上传部署,所以需要修改脚本中的admin密码,如果admin开启了MFA,请临时关闭后,再操作。

集成最新版本Proxy到管控平台

  1. 获取Proxy访问的密钥
docker exec -e OPS_ANY_ENV=production \
            opsany-proxy /bin/sh -c " /usr/local/bin/python3 /opt/opsany-proxy/manage.py create_access" | grep 'Access' | awk -F ': ' '{print $2}' | awk -F '.' '{print $1}'

执行完毕后,会自动输出Proxy Token,请在【管控平台】-【采控管理】-【控制器】编辑默认控制器,填写Proxy的IP地址和Token。

  • Proxy地址(外网): https://IP:8011
  • Proxy地址(内网网): https://IP:8011
  • Proxy密钥: 脚本输出的Proxy Token。不要增加引号!

如果你创建完毕之后忘记了Token,可以这样获取

docker exec -e OPS_ANY_ENV=production opsany-proxy /bin/sh -c " /usr/local/bin/python3 /opt/opsany-proxy/manage.py get_access"

  1. 旧数据同步

将主机同步到对应的Proxy的数据库中去。已经纳管的主机,可能需要进行重新纳管一下,也建议重新安装最新版本Agent。

cd /opt/opsany-paas/install/
grep '^[A-Z]' install.config > install.env
source ./install.env && rm -f install.env
cd /opt/opsany-paas/saas/
python3 sync_proxy_hosts.py --mysql_ip ${MYSQL_SERVER_IP}  \
          --mysql_port 3306  \
          --control_username control \
          --control_password ${MYSQL_OPSANY_CONTROL_PASSWORD} \
          --control_db_name control \
           --proxy_username opsany  \
          --proxy_password ${MYSQL_OPSANY_PASSWORD} \
          --proxy_db_name opsany_proxy

更新最新版本Agent(必须更新)

最新版本Agent默认不再安装Zabbix Agent。由用户自行决定,并且最新版本的Agent。也不再依赖主机上的Python环境,已经自带Python环境。如遇到低版本Linux系统无法启动问题,可以在社区群中交流。

cd /opt/opsany/uploads/ && mv agent agent-bak
wget https://opsany-saas.oss-cn-beijing.aliyuncs.com/opsany-agent-1.3.0.tar.gz
tar zxf opsany-agent-1.3.0.tar.gz

初始化脚本和作业

OpsAny从1.5.0版本之后,默认内置常用脚本和作业,升级用户可以进行手工初始化导入。

  # 如果没有Python3需要提前安装。
  yum install mysql-devel python-devel gcc gcc-devel python3-devel -y 
  pip3 install mysqlclient

 # 修改为OpsAny平台admin的密码
 ADMIN_PASSWORD=admin

 cd /opt/opsany-paas/install/init/
    python3 import_script.py --domain https://${DOMAIN_NAME} --paas_username admin --paas_password ${ADMIN_PASSWORD} \
--target_type script --target_path ./job-script

    python3 import_script.py --domain https://$DOMAIN_NAME --paas_username admin --paas_password ${ADMIN_PASSWORD} \
--target_type task --target_path ./job-task

v1.5.0版本更新记录

重大改进:

  1. 管控平台:控制器(Proxy)完成重构。
  2. Agent重构,不在依赖主机系统上的Python。
  3. 工作台:增加移动端支持(企业微信、钉钉)。

功能新增:

  1. 管控平台:提供独立Proxy安装部署脚本和卸载脚本,一键添加Proxy。
  2. 工作台:增加移动端支持,可以集成企业微信和钉钉。
  3. 管控平台、基础监控:增加网络设备管理和监控功能。
  4. 基础监控:重新开放服务拨测功能。
  5. 管控平台:主机管理分组改成左侧树形式展示同时支持多级分组。
  6. 基础监控:主机监控左侧树增加数字统计。
  7. 大屏展示:增加智能监控大屏和工单统计分析大屏。
  8. 作业平台:增加内置作业和内置脚本,实现开箱即用。
  9. 应用平台:应用详情左侧关联关系增加数字统计功能。
  10. 作业平台:作业市场和作业编排支持导入和导出功能。

缺陷修复和功能优化:

  1. 智能巡检:快速巡检与定时巡检选择巡检实例的弹框优化以及回显展示优化。
  2. 作业平台:选择目标主机弹框样式优化以及回显展示优化。
  3. 资源平台:孤岛分析选择模型分析下拉展示模型分组。
  4. 工作台:工单系统修复提单时字段不显示问题。
  5. 资源平台:自动采集选择执行主机弹框样式优化以及回显展示优化。
  6. 基础监控:概览页主机类型数量统计不对已修复。
  7. 管控平台:资产采集选择调试目标弹框以及回显展示样式优化。
  8. 云管平台:更新到阿里云、腾讯云最新版本SDK。
  9. 工作台:工单流程的第一个步骤,去除字段增加的限制,可以自由创建字段。
Document