温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用SkyWalking+elasticsearch实现全链路监控

发布时间:2020-07-12 22:31:57 来源:网络 阅读:3489 作者:xuad88 栏目:系统运维

随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响。
使用SkyWalking+elasticsearch实现全链路监控
面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。这时候分布式追踪系统就该闪亮登场了。

一、分布式追踪系统skywalking

1、什么是分布式追踪?
使用SkyWalking+elasticsearch实现全链路监控
上图是常见的微服务的框架,4个实例,2个MySQL、1个Redis。实际上它有两次完全不同的请求进来:有一次的一个请求会访问 Redis,再去访问MySQL;另外一个可能走到另外的服务上,然后直接去MySQL。整个分布式追踪的目的是什么?是为了让我们最终在页面上、UI上、和数据上能够复现这个过程。我们要拿到整个完整的链路,包括精确的响应时间,访问的方法、访问的circle,访问的Redis的key等,这些是我们在做分布式追踪的时候需要展现的一个完整的信息。
2、skywalking简介

SkyWalking 是针对分布式系统的 APM 系统,也被称为分布式追踪系统
* 全自动探针监控,不需要修改应用程序代码。查看支持的中间件和组件库列表:https://github.com/apache/incubator-skywalking
* 支持手动探针监控, 提供了支持 OpenTracing 标准的SDK。覆盖范围扩大到 OpenTracing-Java 支持的组件。查看OpenTracing组件支持列表:https://github.com/opentracing-contrib/meta
* 自动监控和手动监控可以同时使用,使用手动监控弥补自动监控不支持的组件,甚至私有化组件。
* 纯 Java 后端分析程序,提供 RESTful 服务,可为其他语言探针提供分析能力。
* 高性能纯流式分析

使用SkyWalking+elasticsearch实现全链路监控
SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。
下面基于Linux环境部署SkyWalking+elasticsearch。

二、部署前的准备工作

1、关闭 selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sed -i 's/SELINUXTYPE=targeted/#&/' /etc/selinux/config
setenforce 0

2、安装需要用的工具

yum -y install vim wget java

3、下载SkyWalking和elasticsearch
SkyWalking和elasticsearch都提供编译好的包,下载下来解压后直接使用。

cd /data/
wget https://www-eu.apache.org/dist/skywalking/6.4.0/apache-skywalking-apm-6.4.0.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz

注:SkyWalking 6.4.0目前只支持elasticsearch 6.x版本
4、防火墙开放以下端口

firewall-cmd --permanent --add-port=9200/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=11800/tcp
firewall-cmd --permanent --add-port=12800/tcp
firewall-cmd --reload

三、部署elasticsearch

tar zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz
mv elasticsearch-6.6.2 elasticsearch

修改elasticsearch配置

vim elasticsearch/config/elasticsearch.yml
cluster.name: CollectorDBCluster
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200

创建启动用户

useradd els -p 123456
chown -R els:els /data/elasticsearch

修改limit数量,需要重新登陆系统生效

vim /etc/security/limits.conf  #添加以下内容
* soft nofile 75535
* hard nofile 75535

修改内核参数vm.max_map_count

vim /etc/sysctl.conf  #添加以下内容
vm.max_map_count=262144

执行以下命令生效

sysctl -p

切换到els用户,启动elasticsearch

su - els
/data/elasticsearch/bin/elasticsearch -d

浏览器访问http://192.168.2.211:9200/进行验证
使用SkyWalking+elasticsearch实现全链路监控
出现以上页面说明elasticsearch安装OK。

四、部署SkyWalking

tar zxvf apache-skywalking-apm-6.4.0.tar.gz

修改SkyWalking配置

vim apache-skywalking-apm-bin/config/application.yml

将h3内容注释掉,启用elasticsearch内容,使用elasticsearch存储数据。
使用SkyWalking+elasticsearch实现全链路监控
注:nameSpace需要与elasticsearch的cluster.name保持一致
启动SkyWalking

cd apache-skywalking-apm-bin/bin/
./startup.sh

验证,浏览器访问http://192.168.2.211:8080/
使用SkyWalking+elasticsearch实现全链路监控
能正常访问表示安装OK。

五、Java项目接入

skywalking支持很多项目,比如Java、.net、github、sample等,这里我只讲下Java项目的接入使用,其他项目大家可自行查看官方文档。
修改agent/config/agent.config文件内容,只需要修改以下两行

agent.service_name=${SW_AGENT_NAME:YFW_Java}
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.2.211:11800}

注:agent.servicename是你的java项目的名称;collector.backendservice是项目连接skywalking的IP地址和端口号。
将agent打包并上传到java项目服务器上,在java程序启动时添加下面这个参数启动即可。

-javaagent:/yibang/agent/skywalking-agent.jar

注:指定skywalking-agent.jar文件的完整路径
然后将skywalking页面刷新一下,便可看到数据了。
使用SkyWalking+elasticsearch实现全链路监控
点击“追踪”可以看到详细内容。
使用SkyWalking+elasticsearch实现全链路监控
使用SkyWalking+elasticsearch实现全链路监控

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI