Skywalking与MySQL集成:从配置到监控的完整指南
1. Skywalking与MySQL集成概述Skywalking作为一款开源的APM应用性能监控系统在微服务架构中扮演着重要角色。它能够帮助我们追踪服务调用链路、分析性能瓶颈而将这些监控数据存储到MySQL数据库中则是许多中小型团队的常见选择。相比Elasticsearch方案MySQL部署更简单运维成本更低特别适合刚开始搭建监控体系的技术团队。我去年在电商项目中首次尝试这种组合时发现官方文档对MySQL集成的说明比较分散。经过三次部署失败后终于摸清了从环境准备到服务监控的完整流程。本文将分享这些实战经验包括容易踩坑的配置细节和性能优化技巧。即使你是第一次接触Skywalking按照这个指南也能在30分钟内完成整套环境的搭建。2. 环境准备与安装2.1 基础环境配置在开始之前请确保你的机器满足以下条件JDK 8或以上版本推荐OpenJDK 11MySQL 5.7数据库服务已启动8080UI端口、11800Agent通信端口未被占用建议专门创建一个数据库用户用于SkywalkingCREATE DATABASE sw_collector CHARACTER SET utf8mb4; CREATE USER sw_user% IDENTIFIED BY StrongPassword123!; GRANT ALL PRIVILEGES ON sw_collector.* TO sw_user%;注意生产环境请将%替换为具体IP并使用更复杂的密码2.2 Skywalking安装包获取从官网下载最新稳定版当前为9.4.0wget https://archive.apache.org/dist/skywalking/9.4.0/apache-skywalking-apm-9.4.0.tar.gz tar -zxvf apache-skywalking-apm-9.4.0.tar.gz cd apache-skywalking-apm-bin目录结构说明/bin启动脚本所在位置/config核心配置文件/oap-libs需要放置MySQL驱动的地方/webappUI界面静态资源3. MySQL存储配置详解3.1 修改application.yml打开config/application.yml找到storage段修改storage: selector: ${SW_STORAGE:mysql} mysql: properties: jdbcUrl: ${SW_JDBC_URL:jdbc:mysql://127.0.0.1:3306/sw_collector?rewriteBatchedStatementstrue} dataSource.user: ${SW_DATA_SOURCE_USER:sw_user} dataSource.password: ${SW_DATA_SOURCE_PASSWORD:StrongPassword123!} dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true} dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SIZE:250} dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}关键参数说明rewriteBatchedStatements提升批量插入性能cachePrepStmts启用预编译语句缓存最后三个参数是MySQL性能优化关键能显著降低数据库负载3.2 安装MySQL驱动下载对应版本的MySQL Connector/Jwget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar mv mysql-connector-java-8.0.28.jar oap-libs/实测发现使用5.x版本驱动在高并发时会出现连接泄漏推荐8.x版本4. 服务启动与验证4.1 启动OAP服务Linux系统执行bin/oapService.shWindows系统执行bin\oapService.bat成功启动后应该看到类似日志INFO 2023-08-20 14:00:00 SkywalkingOAPServer : Started SkywalkingOAPServer in 15.3 seconds4.2 启动Web UI新开终端执行bin/webappService.sh访问http://localhost:8080应该看到登录界面。如果页面空白检查终端是否有错误日志确认路径不含中文或特殊字符查看logs/skywalking-oap-server.log中的异常5. 应用接入监控5.1 Java应用接入示例在启动命令中添加agent参数java -javaagent:/path/to/skywalking-agent.jar \ -Dskywalking.agent.service_nameorder-service \ -Dskywalking.collector.backend_service127.0.0.1:11800 \ -jar your-app.jar5.2 高级agent配置修改agent/config/agent.config# 每3秒上报数据 agent.keep_tracingtrue agent.sample_n_per_3_secs10 # 忽略健康检查接口 agent.ignore_suffix.jpg,.css,.js,.png,.ico,.gif # 自定义标签 agent.instance_properties[key1]value16. 常见问题排查6.1 数据库连接问题错误现象Failed to get driver instance for jdbcUrljdbc:mysql://localhost:3306/swtest解决方案确认驱动jar已放入oap-libs检查MySQL服务是否允许远程连接在jdbcUrl中添加时区参数?serverTimezoneUTC6.2 监控数据不显示检查步骤在UI点击Auto刷新按钮确认agent与服务名称匹配查看OAP日志是否有数据处理异常6.3 高负载优化建议当监控大量服务时调整MySQL的innodb_buffer_pool_size建议4G修改OAP的core/default/persistentPeriod为更长间隔考虑使用分库分表策略7. 监控数据分析技巧在Dashboard中重点关注Service Apdex Score服务满意度指数Service Response Time响应时间百分位图Endpoint Slow Query慢查询TOP 10JVM GC CountJava应用GC情况点击Trace标签可以查看完整的调用链路支持按状态码如HTTP 500、耗时等条件过滤。我曾在生产环境通过这个功能快速定位到某个微服务的数据库连接池泄漏问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2443447.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!