skywalking使用mysql_SkyWalking 使用 MySQL Storage

本文详细介绍了如何将SkyWalking与MySQL集成,以`apache/skywalking-oap-server:6.5.0` Docker镜像为例。内容包括SkyWalking的默认存储、如何添加MySQL驱动到oap-libs目录、通过环境变量配置MySQL以及`docker-entrypoint.sh`脚本的部分内容。适用于希望在生产环境中使用MySQL作为SkyWalking存储的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# SkyWalking 使用 MySQL Storage

> [SkyWalking Backend Storage](https://github.com/apache/skywalking/blob/6.x/docs/en/setup/backend/backend-storage.md)

本文介绍 Skywalking 使用 MySQL Storage,以 `apache/skywalking-oap-server:6.5.0` Docker 镜像为例子。

SW 默认使用H2,测试环境可使用H2,生产官方推荐使用ES。如果平台流量很小,使用MySQL也是不错的选择,但是需要忽略掉一些无意义的采样如: **"健康检查"**、**"心跳"**等接口。

## 镜像目录结构

HOME目录是 `/skywalking`,下面是主要树结构。

* 应用、预警等配置都在 config 目录下

* 各类jar包位于 oap-libs

```

$ tree

.

├── config

│   ├── alarm-settings-sample.yml

│   ├── alarm-settings.yml

│   ├── application.yml

│   ├── component-libraries.yml

│   ├── gateways.yml

│   ├── log4j2.xml

│   └── official_analysis.oal

├── docker-entrypoint.sh

├── licenses

└── oap-libs

├── HdrHistogram-2.1.9.jar

```

## 添加驱动

官方镜像中不包含MySQL驱动,自行下载并添加到 `oap-libs` 目录即可。

例如将下载的jar放到任意目录,然后拷贝到 skywalking 中,下面是示例Dockerfile:

```dockerfile

FROM apache/skywalking-oap-server:6.5.0

COPY ./libs/* /skywalking/oap-libs

```

## 通过环境变量配置MySQL

应用配置在 `application.yml` 中,文件由 `docker-entrypoint.sh` 根据环境变量动态生成。

```bash

docker run -d \

--name skywalking-oap \

-p 12800:12800 \

-p 11800:11800 \

-e TZ=Asia/Shanghai \

-e SW_STORAGE=mysql \

-e SW_JDBC_URL="jdbc:mysql://x.x.x.x:3306/sw" \

-e SW_DATA_SOURCE_USER=sw \

-e SW_DATA_SOURCE_PASSWORD=sw \

apache/skywalking-oap-server:6.5.0

```

* SW_STORAGE:选择存储,支持 `elasticsearch h2 mysql`

* SW_JDBC_URL、SW_DATA_SOURCE_USER、SW_DATA_SOURCE_PASSWORD是mysql的配置

下面是截取的 `docker-entrypoint.sh` 中部分脚本:

```bash

generateApplicationYaml() {

# validate

validateVariables "SW_STORAGE" "$SW_STORAGE" "elasticsearch h2 mysql"

# generate storage

case ${SW_STORAGE} in

elasticsearch) generateStorageElastisearch;;

h2) generateStorageH2;;

mysql) generateStorageMySQL;;

esac

```

扫码或搜索 codercyj 关注微信公众号, 结伴学习, 一起努力

wechat.jpg;jsessionid=5C8C3CAE0D41BA82E06E0553D74A6BC9

### Kubernetes 上使用 MySQL 作为存储后端安装 SkyWalking 8.9.1 #### 准备工作 为了在 Kubernetes 中配置 SkyWalking使用 MySQL 存储数据,需先准备必要的资源文件和服务定义。这包括 MySQL 实例的设置以及 SkyWalking 各组件之间的通信。 #### 创建 MySQL 服务和持久卷声明 (PVC) ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: mysql-deployment spec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: root-password volumeMounts: - mountPath: /var/lib/mysql name: mysql-persistent-storage ports: - containerPort: 3306 --- apiVersion: v1 kind: Service metadata: name: mysql-service spec: ports: - port: 3306 selector: app: mysql --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi ``` 上述 YAML 文件描述了 MySQL 的部署方式及其对应的 PVC 和服务暴露[^1]。 #### 配置 SkyWalking OAP Server 使用 MySQL 编辑 `application.yml` 或者通过环境变量指定 MySQL 连接参数: ```yaml storage: selector: $STORAGE mysql: datasource: url: jdbc:mysql://mysql-service:3306/sw?useSSL=false&serverTimezone=UTC username: root password: ${MYSQL_ROOT_PASSWORD} ``` 此部分配置告知 SkyWalking 如何连接至 MySQL 数据库实例并保存追踪记录和其他性能指标信息。 #### 构建 SkyWalking 组件的 K8S 资源清单 对于 SkyWalking 自身,在 Kubernetes 环境下的资源配置如下所示: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: skywalking-oap-server spec: replicas: 1 selector: matchLabels: app: skywalking-oap-server template: metadata: labels: app: skywalking-oap-server spec: containers: - name: oap-server image: apache/skywalking-oap-server:8.9.1 args: ["--spring.datasource.url=jdbc:mysql://mysql-service:3306/sw", "--spring.datasource.username=root"] env: - name: STORAGE value: "mysql" - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: root-password readinessProbe: tcpSocket: port: 12800 initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: tcpSocket: port: 12800 initialDelaySeconds: 15 periodSeconds: 20 --- apiVersion: v1 kind: Service metadata: name: skywalking-ui spec: type: LoadBalancer ports: - port: 80 targetPort: 12800 selector: app: skywalking-oap-server ``` 这段代码片段展示了如何创建 SkyWalking OAP server 及其 UI 接口的服务,并指定了与之前提到的 MySQL 数据库交互所需的必要参数[^2]。 #### 应用程序接入 SkyWalking Java Agent 为了让应用程序能够被监控,需要引入 SkyWalking 提供的 Java agent jar 包,并按照官方文档指导将其附加到 JVM 参数中去启动应用容器。通常情况下是在 Dockerfile 或者 kubernetes deployment yaml 文件里添加 `-javaagent:/path/to/your-agent.jar` 形式的命令行选项[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值