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典型问题诊断模式:
- 磁盘空间告警:当服务发布失败时,先运行
./serverdiag -s检查存储空间 - 性能瓶颈分析:结合
-p参数输出系统负载指标 - 权限问题排查:使用
-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 fi2. 服务管理命令行实战
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 -fPortal for ArcGIS特殊操作:
# 维护模式启动 /arcgis/portal/startportal.sh -m # 重置管理员密码 /arcgis/portal/tools/resetadminpassword.sh -u newadmin -p newpasswordDataStore备份恢复:
# 关系型数据存储备份 /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.log3. 日志分析与故障排查
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 -delete3.3 常见故障处理流程
服务无法启动:
- 检查
/arcgis/server/framework/etc/service-startup.log - 验证端口占用情况:
netstat -tulnp | grep 6443 - 查看系统资源:
free -h和df -h
- 检查
性能下降:
# 生成JVM线程转储 jstack -l $(cat /arcgis/server/usr/server.pid) > /tmp/server_thread_dump.txt # 分析内存使用 jstat -gcutil $(cat /arcgis/server/usr/server.pid) 1000 5Web Adaptor故障:
- 检查Tomcat连接器配置:
/conf/server.xml - 验证证书有效期:
keytool -list -v -keystore /path/to/keystore
- 检查Tomcat连接器配置:
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 -pJVM调优建议:
# /arcgis/server/framework/etc/jvm.properties -Xms4g -Xmx8g -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -XX:+UseG1GC4.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灾难恢复检查清单:
- 验证备份完整性
- 准备干净的操作系统环境
- 按相同路径安装ArcGIS组件
- 按依赖顺序恢复各组件(DataStore → Server → Portal)
- 重新配置Web Adaptor联合
