SkyWalking 单机部署

本文参考:

https://blog.csdn.net/OptimusPP/article/details/106425807

1. 概述

1.1 概念

Skywalking是什么?

FROM http://skywalking.apache.org

分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

1.2 功能列表

SkyWalking 有哪些功能?

FROM http://skywalking.apache.org/

  • 多种监控手段。可以通过语言探针和 service mesh 获得监控是数据。
  • 多个语言自动探针。包括 Java,.NET Core 和 Node.JS。
  • 轻量高效。无需大数据平台,和大量的服务器资源。
  • 模块化。UI、存储、集群管理都有多种机制可选。
  • 支持告警。
  • 优秀的可视化解决方案。

1.3 整体架构

SkyWalking 整体架构如何?

FROM http://skywalking.apache.org/

image-20230221145801039

整个架构,分成上、下、左、右四部分:

  • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
  • 左部分 SkyWalking UI :负责提供控台,查看链路等等。

2. 搭建 SkyWalking 单机环境

搭建一个 SkyWalking 单机环境,步骤如下:

image-20230221151409219

  1. 搭建一个 elasticsearch 服务;
  2. 下载 skywalking 软件包;
  3. 搭建一个 skywalking OAP 服务;
  4. 启动一个 Spring Boot 应用,并配置 SkyWalking Agent;
  5. 搭建一个 SkyWalking UI 服务。

主机信息:

OS: centos7.9
IP: 192.168.199.101
docker server版本:20.10.7

2.1 拉取镜像

docker pull elasticsearch:7.5.1
docker pull apache/skywalking-oap-server:6.6.0-es7
docker pull apache/skywalking-ui:6.6.0

注意:使用最新版本的es和skywalking会存在问题,必须使用上述版本。

下载源代码包,下面会使用 agent

https://archive.apache.org/dist/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz

2.2 Elasticsearch搭建

2.2.1 修改系统参数

cat << 'EOF' >> /etc/sysctl.conf
vm.max_map_count=262144
EOF

sysctl -p 

2.2.2 启动 es

docker run -d --name=es7 \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" elasticsearch:7.5.1

等待30秒左右,查看docker日志,有如下记录:

{"type": "server", "timestamp": "2023-02-21T08:16:37,977Z", "level": "INFO", "component": "o.e.c.s.MasterService", "cluster.name": "docker-cluster", "node.name": "29de38aae9c9", "message": "elected-as-master ([1] nodes joined)[{29de38aae9c9}{5XhcKzyZSDySlB7Vk-fE9A}{1DpxpZ9dTDyLShNZRx6GmQ}{172.17.0.2}{172.17.0.2:9300}

通过 curl 访问返回:

> curl localhost:9200
{
  "name" : "29de38aae9c9",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "_7Nk6CLpRtCjkv50eQa7eA",
  "version" : {
    "number" : "7.5.1",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "3ae9ac9a93c95bd0cdc054951cf95d88e1e18d96",
    "build_date" : "2019-12-16T22:57:37.835892Z",
    "build_snapshot" : false,
    "lucene_version" : "8.3.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

即为启动成功。

2.2.3 持久保存es数据

持久化 elasticsearch 方案:

mkdir -p /data/elasticsearch
docker cp es7:/usr/share/elasticsearch/data /data/elasticsearch/
docker cp es7:/usr/share/elasticsearch/logs /data/elasticsearch/
docker rm -f es7
docker run -d --name=es7 \
  --restart=always \
  -p 9200:9200 -p 9300:9300 \
  -e "discovery.type=single-node" \
  -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
  -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:7.5.1

2.3 安装 SkyWalking OAP

注意:等待 elasticsearch 启动完成,再启动 OAP

2.3.1 以容器启动

docker run --name oap --restart always -d \
--restart=always \
-e TZ=Asia/Shanghai \
-p 12800:12800 \
-p 11800:11800 \
--link es7:es7 \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=es7:9200 \
apache/skywalking-oap-server:6.6.0-es7

2.4 安装 SkyWalking UI

2.4.1 以容器启动

docker run -d --name skywalking-ui \
--restart=always \
-e TZ=Asia/Shanghai \
-p 8088:8080 \
--link oap:oap \
-e SW_OAP_ADDRESS=oap:12800 \
apache/skywalking-ui:6.6.0

3. spring-boot实例部署

3.1 项目地址

项目地址:https://github.com/solochen84/SpringBootDemo

3.2 制作jar包

需要安装 jdk1.8 和 maven的支持,使用 maven打包:

mvn clean package

3.3 启动jar包

原来的启动方式为:

java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar

那么使用skywalking agent,启动命令为:

java -javaagent:apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=spring-boot-demo -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar spring-boot-demo-0.0.1-SNAPSHOT.jar

说明:

  • -javaagent - 指定agent包位置。这里我将apache-skywalking-apm-6.6.0.tar.gz解压到/opt目录了,因此路径为:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar
  • -Dskywalking.agent.service_name - 指定服务名,服务名会在skywalking UI中显示
  • -Dskywalking.collector.backend_service - 指定skywalking oap地址,由于在本机,地址为:127.0.0.1:11800
  • -jar - 指定jar包的路径,这里我直接放到/opt/目录了。

4. 访问UI

http://192.168.199.101:8088/

image-20230221165831791

因为机制为懒加载,所以当只有你调用该java接口时,页面上才有显示。所以第一次访问时,数据是没有的。

5. 访问demo接口

SpringBootDemo启动端口为:8080,api接口有3个:

GET /
GET /?name=hukey
GET /random

页面多刷新几次接口:

http://192.168.199.101:8080/
http://192.168.199.101:8080/?name=hukey
http://192.168.199.101:8080/random

6. 仪表盘

刷新UI页面,选择最近 15 分钟或者近1天的。

image

拓扑图:

image

7. 追踪

同样,可查看最近15分钟或1天

image

8. 告警

image

9. 指标

这里可选三个指标进行对比。

image



--- EOF ---

本文作者:hukey

本文链接:https://www.cnblogs.com/hukey/p/17144217.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   hukey  阅读(782)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 彩虹 Jay
彩虹 - Jay
00:00 / 00:00
An audio error has occurred.

彩虹 + 轨迹 (Live) - 周杰伦 (Jay Chou)

彩虹

词:周杰伦

曲:周杰伦

哪里有彩虹告诉我

哪里有彩虹告诉我

能不能把我的愿望还给我

能不能把我的愿望还给我

为什么天这么安静

为什么天这么安静

所有的云都跑到我这里

有没有口罩一个给我

有没有口罩一个给我

释怀说了太多就成真不了

释怀说了太多就成真不了

也许时间是一种解药

也许时间是一种解药

也是我现在正服下的毒药

也是我现在正服下的毒药

看不见你的笑 我怎么睡得着

看不见你的笑 我怎么睡得着

你的声音这么近我却抱不到

你的声音这么近我却抱不到

没有地球太阳还是会绕

没有地球太阳还是会绕

没有理由我也能自己走

没有理由我也能自己走

你要离开 我知道很简单

你要离开 我知道很简单

你说依赖 是我们的阻碍

你说依赖 是我们的阻碍

就算放开 但能不能别没收我的爱

就算放开 但能不能别没收我的爱

当作我最后才明白

当作我最后才明白

看不见你的笑 要我怎么睡得着

看不见你的笑 要我怎么睡得着

你的声音这么近我却抱不到

没有地球太阳还是会绕 会绕

没有理由我也能自己走掉

释怀说了太多就成真不了

也许时间是一种解药 解药

也是我现在正服下的毒药

轨迹

词:黄俊郎

曲:周杰伦

我会发着呆然后忘记你

接着紧紧闭上眼

想着哪一天 会有人代替

想着哪一天 会有人代替

让我不再想念你

我会发着呆 然后微微笑

我会发着呆 然后微微笑

接着紧紧闭上眼

又想了一遍 你温柔的脸

又想了一遍 你温柔的脸

在我忘记之前