ArcGIS Enterprise 10.8 Linux部署后,如何用命令行高效运维?这些脚本和诊断工具你得知道

ArcGIS Enterprise 10.8 Linux部署后,如何用命令行高效运维?这些脚本和诊断工具你得知道

ArcGIS Enterprise 10.8 Linux环境高效运维实战指南

当ArcGIS Enterprise在Linux服务器上完成基础部署后,真正的挑战才刚刚开始。作为GIS系统管理员,日常运维中80%的时间都消耗在重复性任务和突发故障排查上。本文将分享一套经过实战检验的命令行运维方案,帮助您从繁琐的Web界面操作中解放出来,实现高效、精准的系统管理。

1. 核心诊断工具深度应用

ArcGIS Enterprise自带的三套诊断工具(serverdiag/portaldiag/datastorediag)是系统健康检查的第一道防线。这些工具隐藏在安装目录的diag子文件夹中,大多数管理员仅用其进行安装前的环境检测,却忽略了它们在日常运维中的价值。

1.1 诊断工具高级用法

/arcgis/server/tools/serverdiag路径下,serverdiag工具支持多种参数组合:

# 完整系统检查(默认) ./serverdiag -a # 专项检查网络配置 ./serverdiag -n # 生成HTML格式报告(适合存档) ./serverdiag -r /tmp/server_report.html

典型问题诊断模式:

  1. 磁盘空间告警:当服务发布失败时,先运行./serverdiag -s检查存储空间
  2. 性能瓶颈分析:结合-p参数输出系统负载指标
  3. 权限问题排查:使用-f参数验证关键目录的读写权限

注意:诊断工具需要以arcgis用户身份运行,root用户直接执行会遗漏关键权限检查

1.2 诊断结果解读技巧

工具输出的Warning和Failure需要区别对待:

问题类型处理策略典型案例
Failure必须立即处理内存不足、关键端口冲突
Warning需评估影响时区未同步、SWAP分区偏小
Notice建议优化文件描述符限制、透明大页面配置

对于频繁出现的存储警告,可以建立自动化检查机制:

#!/bin/bash DIAG_RESULT=$(/arcgis/server/tools/serverdiag/serverdiag -s | grep "disk space") if [[ $DIAG_RESULT == *"Warning"* ]]; then echo "$(date) 存储空间告警" >> /var/log/arcgis_monitor.log # 自动清理临时文件 find /arcgis/server/usr/directories/arcgiscache -type f -mtime +7 -delete fi

2. 服务管理命令行实战

Web界面操作在批量管理时效率低下,ArcGIS Enterprise所有组件都提供完整的命令行管理接口。

2.1 服务启停控制

ArcGIS Server服务管理

# 查看服务状态 /arcgis/server/startserver.sh -s /arcgis/server/stopserver.sh -s # 带详细日志的启动 /arcgis/server/startserver.sh -v # 强制终止(慎用) /arcgis/server/stopserver.sh -f

Portal for ArcGIS特殊操作

# 维护模式启动 /arcgis/portal/startportal.sh -m # 重置管理员密码 /arcgis/portal/tools/resetadminpassword.sh -u newadmin -p newpassword

DataStore备份恢复

# 关系型数据存储备份 /arcgis/datastore/tools/backup.sh -t relational -l /backup/ -n backup_$(date +%Y%m%d) # 时空大数据存储恢复 /arcgis/datastore/tools/restore.sh -t spatiotemporal -l /backup/st_20230101/

2.2 服务监控脚本

实时监控服务状态的Shell脚本示例:

#!/bin/bash check_service() { local service_name=$1 local pid_file="/arcgis/$service_name/usr/$service_name.pid" if [ -f "$pid_file" ]; then local pid=$(cat $pid_file) if ps -p $pid > /dev/null; then echo "$service_name 运行正常 (PID: $pid)" return 0 fi fi echo "$service_name 服务异常" return 1 } check_service "server" check_service "portal" check_service "datastore"

将上述脚本加入cron定时任务,实现自动化监控:

# 每5分钟检查一次 */5 * * * * /opt/scripts/check_arcgis_services.sh >> /var/log/arcgis_status.log

3. 日志分析与故障排查

3.1 关键日志文件定位

组件日志路径关键信息
ArcGIS Server/arcgis/server/usr/logs/ERROR, WARN级别的日志
Portal/arcgis/portal/usr/logs/portal/portaladmin.log
DataStore/arcgis/datastore/usr/logs/gc.log(垃圾回收日志)
Web Adaptor/var/log/tomcat/catalina.out

3.2 日志分析实用命令

实时错误监控

# 跟踪Server最新错误 tail -f /arcgis/server/usr/logs/<机器名>/server-*.log | grep -E "ERROR|WARN" # 统计Portal错误次数 grep -c "ERROR" /arcgis/portal/usr/logs/portal/*.log

日志切割与归档

# 按日期归档Server日志 find /arcgis/server/usr/logs/ -name "*.log" -mtime +30 -exec gzip {} \; # 自动清理过期日志 find /arcgis/server/usr/logs/ -name "*.gz" -mtime +90 -delete

3.3 常见故障处理流程

  1. 服务无法启动

    • 检查/arcgis/server/framework/etc/service-startup.log
    • 验证端口占用情况:netstat -tulnp | grep 6443
    • 查看系统资源:free -hdf -h
  2. 性能下降

    # 生成JVM线程转储 jstack -l $(cat /arcgis/server/usr/server.pid) > /tmp/server_thread_dump.txt # 分析内存使用 jstat -gcutil $(cat /arcgis/server/usr/server.pid) 1000 5
  3. Web Adaptor故障

    • 检查Tomcat连接器配置:/conf/server.xml
    • 验证证书有效期:keytool -list -v -keystore /path/to/keystore

4. 自动化运维体系构建

4.1 常用维护脚本库

日志清理脚本

#!/bin/bash LOG_DIRS=( "/arcgis/server/usr/logs" "/arcgis/portal/usr/logs" "/arcgis/datastore/usr/logs" ) for dir in "${LOG_DIRS[@]}"; do find "$dir" -name "*.log" -type f -mtime +15 -exec gzip {} \; find "$dir" -name "*.gz" -type f -mtime +60 -delete echo "$(date) 已清理 $dir" >> /var/log/arcgis_maintenance.log done

服务状态看板脚本

#!/bin/bash echo "======= ArcGIS Enterprise 状态报告 =======" echo "生成时间: $(date)" # 系统资源概览 echo -e "\n[系统资源]" free -h | awk '/Mem/{print "内存: " $3 "/" $2}' df -h | awk '/\/$/{print "磁盘: " $3 "/" $2 " (" $5 ")"}' # 服务状态检查 echo -e "\n[服务状态]" systemctl is-active arcgisserver.service >/dev/null && echo "ArcGIS Server: 运行中" || echo "ArcGIS Server: 停止" netstat -ltn | grep -q 7443 && echo "Portal: 运行中" || echo "Portal: 停止" # 最近错误统计 echo -e "\n[错误统计]" grep -c "ERROR" /arcgis/server/usr/logs/*.log | awk -F: '{sum+=$2} END{print "Server错误数: " sum}'

4.2 性能优化参数调整

Linux内核参数优化

# 编辑/etc/sysctl.conf echo "vm.swappiness = 1" >> /etc/sysctl.conf echo "vm.max_map_count = 262144" >> /etc/sysctl.conf echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf sysctl -p

JVM调优建议

# /arcgis/server/framework/etc/jvm.properties -Xms4g -Xmx8g -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -XX:+UseG1GC

4.3 备份恢复策略

全量备份方案

#!/bin/bash BACKUP_DIR="/backup/arcgis_$(date +%Y%m%d)" mkdir -p $BACKUP_DIR # 备份Server配置 /arcgis/server/tools/backuprestore/backup.sh -f $BACKUP_DIR/server.bk # 备份Portal内容 /arcgis/portal/tools/portalbackup/backup.sh -d $BACKUP_DIR -n portal_backup # 备份DataStore /arcgis/datastore/tools/backup.sh -t all -l $BACKUP_DIR # 打包压缩 tar -czf $BACKUP_DIR.tar.gz $BACKUP_DIR

灾难恢复检查清单

  1. 验证备份完整性
  2. 准备干净的操作系统环境
  3. 按相同路径安装ArcGIS组件
  4. 按依赖顺序恢复各组件(DataStore → Server → Portal)
  5. 重新配置Web Adaptor联合