简介
SkyWalking 是一个开源的应用性能监控 (APM) 和可观测性平台,旨在帮助开发者、运维人员和架构师监控、诊断和优化微服务架构中的应用。SkyWalking 提供了一套完整的工具链,用于收集、分析和可视化应用的性能指标、追踪和日志数据。
SkyWalking 的主要特点
自动化的观测性:
- 自动发现服务拓扑图。
- 自动跟踪服务间的依赖关系。
- 自动收集服务和应用的性能指标。
广泛的集成支持:
- 支持多种编程语言,包括 Java、Go、.NET、Node.js 等。
- 支持多种服务网格和容器编排平台,如 Kubernetes、Istio 等。
- 支持多种数据库、缓存和消息队列系统。
灵活的部署模式:
- 可以部署在本地环境中。
- 支持云原生部署,如 Kubernetes。
- 支持混合云和多云环境。
丰富的可视化功能:
- 提供详细的性能指标图表和报告。
- 动态的服务拓扑视图。
- 分布式追踪视图。
强大的告警和通知系统:
- 支持基于阈值的告警。
- 可以集成到现有的告警系统中。
- 支持多种通知渠道,如 Slack、Email 等。
低侵入性:
- 通过插件和代理的方式收集数据,对应用性能影响极小。
- 支持无侵入式采集,无需修改现有应用代码。
高度可扩展:
- 支持水平扩展以处理大规模部署。
- 可以通过插件机制扩展功能。
链路跟踪:

下载skywalking
https://skywalking.apache.org/downloads
这里选择推荐ES版本,这里系统的centos 7

ES7部署
Download Elasticsearch | Elastic

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.2-linux-x86_64.tar.gz
解压
tar -xvf elasticsearch-7.13.2-linux-x86_64.tar.gz
1、配置
修改配置 vim /usr/local/elasticsearch-7.13.2/bin/elasticsearch
添加
export ES_JAVA_HOME=/usr/local/elasticsearch-7.13.2/jdk
export PATH=ES_JAVA_HOME/bin:PATH

- 新增用户
es不能用root执行,需要添加用户执行
useradd my-es
chown my-es:my-es -R /usr/local/elasticsearch-7.13.2
切换到my-es用户
su my-es
进入到目录:
cd /usr/local/elasticsearch-7.13.2/bin
3、启动
启动elasticsearch
./elasticsearch

4、配置文件
vim /usr/local/elasticsearch-7.13.2/config/elasticsearch.yml
修改日志
:可以修改存储数据的路径和日志,默认在elasticsearch根目录
path.data:
path.logs:
修改绑定ip
#默认只允许本机访问,修改为0.0.0.0后则可以远程访问
network.host: 0.0.0.0
初始化节点名称
cluster.name: my_elasticsearch
node.name: es-node0
cluster.initial_master_nodes: ["es-node0"]
修改端口号
http.port: 19200
设置账号密码(不添加默认不使用密码,添加之后可以设置登录账户密码)
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

启动账号密码

5、后台运行
./elasticsearch -d
6、关闭
ps -ef | grep elastic
找到pid kill掉就行

7、设置账户密码
重启elasticsearch服务
执行如下命令:
如果端口或者其他变化了,可以指定ip
export ELASTICSEARCH_URL=http://192.168.20.13:19200
./elasticsearch-setup-passwords interactive
- elastic: 超级用户
- kibana_system: Kibana 系统用户
- apm_system: APM 服务器系统用户
- beats_system: Beats 系统用户
- logstash_system: Logstash 系统用户
这里全部把密码设置为:123456
8、后台管理
在网页端输入:http://192.168.20.13:19200 (这里选择自己的ip,或者127.0.0.1)
9、错误
max file descriptors [4096]问题
vm.max_map_count [65530] is too low问题

进入到root权限
vim /etc/sysctl.conf
添加
vm.max_map_count=262144

保存退出:
sysctl -p
vi /etc/security/limits.conf
添加
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

重启系统
Reboot
skywalking配置
1、配置
配置端口,默认是11800和12800

配置elasticsearch7
storage:
selector: ${SW_STORAGE:elasticsearch7}
elasticsearch7:
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:19200}

端口修改为19200 默认是9200

配置es的账号密码:
这里填写的elastic的账号密码

修改webui的端口8080 修改为12808
webapp/webapp.yml

2、启动
启动主程序
bin/oapService.sh
查询日志是否成功启动
logs/skywalking-oap-server.log
启动webui
bin/webappService.sh
查询日志是否启动
Logs/webapp-console.log
防火墙放开端口
firewall-cmd --add-port=12808/tcp --permanent
firewall-cmd --reload
访问web

Agent配置
1、Agent拷贝
把apache-skywalking-apm-bin-es7 下面的agent拷贝到应用的设备上面
我这边直接拷贝到我的开发工程下面

2、修改配置
agent\config\agent.config
新增
agent.service_name=${SW_AGENT_NAME:diandimall-product}
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.20.13:11800}

服务器启动时候需要做探针
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
如下:
java -javaagent:./agent/skywalking-agent.jar -Dspring.profiles.active=dev -Xms512m -Xmx1024m -jar xxx-0.0.1-SNAPSHOT.jar
在ideal添加如下vm参数
-javaagent:F:\work\code\java\attendance\admin\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=at-gateway
-Dskywalking.collector.backend_service=192.168.20.13:11800

注意这里选择java1.8 不然版本太高会报错

随便请求几次就会出现了

参考SkyWalking 极简入门 | Apache SkyWalking