Centos7搭建SkyWalking完整教程
这是一份基于CentOS 7环境搭建Apache SkyWalking (v9.x)的完整实战教程。⚠️重要前置提醒CentOS 7 已于2024年6月30日正式停止维护EOL。在生产环境中强烈建议升级至 Rocky Linux 9、AlmaLinux 9 或 Ubuntu 22.04/24.04。若因历史遗留系统必须使用 CentOS 7请务必配置归档镜像源并做好安全加固。本教程以目前主流且稳定的SkyWalking 9.7.0 Elasticsearch 8.x组合为例。️ 架构规划与资源要求组件版本端口最低配置说明JDKOpenJDK 17--SkyWalking 9.x 强制要求 JDK 17Elasticsearch8.11.x9200/93004C8G作为存储后端推荐SkyWalking OAP9.7.011800/128004C8G核心分析引擎SkyWalking UI9.7.080802C4GWeb 控制台Agent9.7.0--挂载到业务 Java 应用 第一步基础环境准备1. 配置 YUM 归档源CentOS 7 必做# 备份原有源mv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak# 写入 vault 归档源cat/etc/yum.repos.d/CentOS-Base.repoEOF [base] nameCentOS-7-Vault baseurlhttps://vault.centos.org/7.9.2009/os/x86_64/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 [updates] nameCentOS-7-Vault-Updates baseurlhttps://vault.centos.org/7.9.2009/updates/x86_64/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 EOFyum clean allyum makecache2. 安装 JDK 17# 下载并解压 OpenJDK 17cd/optwgethttps://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gztar-xzfopenjdk-17.0.2_linux-x64_bin.tar.gz# 配置环境变量cat/etc/profile.d/java.shEOF export JAVA_HOME/opt/jdk-17.0.2 export PATH$JAVA_HOME/bin:$PATH EOFsource/etc/profile.d/java.sh# 验证java-version3. 系统内核优化关键# ES 需要足够的虚拟内存和文件句柄cat/etc/sysctl.confEOF vm.max_map_count262144 vm.swappiness1 EOFsysctl-pcat/etc/security/limits.confEOF * soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096 es soft memlock unlimited es hard memlock unlimited EOF 第二步部署 Elasticsearch 8.x# 添加 ES 仓库rpm--importhttps://artifacts.elastic.co/GPG-KEY-elasticsearchcat/etc/yum.repos.d/elasticsearch.repoEOF [elasticsearch] nameElasticsearch repository for 8.x packages baseurlhttps://artifacts.elastic.co/packages/8.x/yum gpgcheck1 gpgkeyhttps://artifacts.elastic.co/GPG-KEY-elasticsearch enabled1 autorefresh1 typerpm-md EOF# 安装yuminstall-yelasticsearch修改 ES 配置/etc/elasticsearch/elasticsearch.ymlcluster.name:skywalking-clusternode.name:node-1path.data:/var/lib/elasticsearchpath.logs:/var/log/elasticsearchnetwork.host:0.0.0.0http.port:9200discovery.type:single-node# ⚠️ 单机测试环境关闭安全认证生产环境请保留并配置证书xpack.security.enabled:falsexpack.security.enrollment.enabled:false# 启动并设置开机自启systemctl daemon-reload systemctlenable--nowelasticsearch# 验证返回集群信息即成功curlhttp://localhost:9200/_cluster/health?pretty️ 第三步部署 SkyWalking OAP Servercd/optwgethttps://dlcdn.apache.org/skywalking/9.7.0/apache-skywalking-apm-9.7.0.tar.gztar-xzfapache-skywalking-apm-9.7.0.tar.gzln-s/opt/apache-skywalking-apm-bin /opt/skywalking修改 OAP 配置/opt/skywalking/config/application.yml# 找到 storage 部分激活 elasticsearchstorage:selector:${SW_STORAGE:elasticsearch}elasticsearch:namespace:${SW_NAMESPACE:}clusterNodes:${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}protocol:${SW_STORAGE_ES_HTTP_PROTOCOL:http}# 如果开启了ES安全认证取消下面注释# user: ${SW_ES_USER:elastic}# password: ${SW_ES_PASSWORD:changeme}dayStep:${SW_STORAGE_DAY_STEP:1}# 索引按天滚动indexShardsNumber:${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1}indexReplicasNumber:${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}# 单节点设为0创建 Systemd 服务/etc/systemd/system/sw-oap.service[Unit] DescriptionSkyWalking OAP Server Afternetwork.target elasticsearch.service [Service] Typesimple Userroot EnvironmentJAVA_HOME/opt/jdk-17.0.2 ExecStart/opt/skywalking/bin/oapService.sh start ExecStop/opt/skywalking/bin/oapService.sh stop Restarton-failure LimitNOFILE65536 [Install] WantedBymulti-user.targetsystemctl daemon-reload systemctlenable--nowsw-oap# 查看日志确认启动成功无 ERRORtail-f/opt/skywalking/logs/oap-server.log️ 第四步部署 SkyWalking UI修改 UI 配置/opt/skywalking/webapp/application.ymlserverPort:${SW_SERVER_PORT:-8080}oapServices:${SW_OAP_ADDRESS:http://localhost:12800}创建 Systemd 服务/etc/systemd/system/sw-ui.service[Unit] DescriptionSkyWalking UI Aftersw-oap.service [Service] Typesimple Userroot EnvironmentJAVA_HOME/opt/jdk-17.0.2 ExecStart/opt/skywalking/bin/webappService.sh start ExecStop/opt/skywalking/bin/webappService.sh stop Restarton-failure [Install] WantedBymulti-user.targetsystemctl daemon-reload systemctlenable--nowsw-ui访问http://服务器IP:8080默认账号密码均为admin/admin。 第五步Java Agent 接入示例将 Agent 目录复制到业务应用服务器cp-r/opt/skywalking/agent /your-app-path/agent在 Java 启动命令中添加java-javaagent:/your-app-path/agent/skywalking-agent.jar\-Dskywalking.agent.service_namemy-java-service\-Dskywalking.collector.backend_serviceOAP_IP:11800\-jaryour-application.jarSpring Boot 集成提示如果使用 Spring Boot确保 Agent 路径中不包含中文或空格。对于 Tomcat 部署将参数添加到CATALINA_OPTS中。✅ 验证清单检查项命令/操作预期结果ES 健康状态curl localhost:9200/_cluster/healthstatus:green或yellowOAP 启动grep started successfully /opt/skywalking/logs/oap-server.log输出包含该关键字UI 可访问浏览器打开http://IP:8080显示登录页Agent 上报UI → Topology 页面出现服务节点和调用链路数据持久化重启 OAP 后 UI 仍有历史数据数据未丢失⚠️ CentOS 7 专属避坑指南glibc 版本过低ES 8.x 依赖 glibc ≥ 2.17CentOS 7 自带 2.17 刚好满足下限。若遇到GLIBC_2.xx not found不要手动升级 glibc极易导致系统崩溃应降级使用 ES 7.17.x。OpenSSL 版本CentOS 7 的 OpenSSL 1.0.2 可能导致 Agent 与 OAP 的 TLS 通信失败。若不涉及 HTTPS保持 HTTP 即可若必须 HTTPS建议编译安装 OpenSSL 1.1.1。防火墙放行firewall-cmd--permanent--add-port{8080,11800,12800,9200}/tcp firewall-cmd--reloadSELinux如遇权限问题临时排查setenforce 0。生产环境建议编写 SELinux 策略而非永久关闭。迁移建议此套 SkyWalking 9.7 ES 8.x 架构完全兼容 RHEL/Rocky/Alma Linux 9。建议在下一个维护窗口期迁移操作系统仅需重新安装基础包SkyWalking 配置和数据可直接复用。