Linux下安装 SkyWalking 分布式追踪系统

Stella981
• 阅读 797

Linux下安装 SkyWalking 分布式追踪系统--完全无代码入侵【落地】

背景:由于现系统拆分为了分布式系统,对于线上查看错误日志有点费劲

方案:部署搭建 SkyWalking的分布式追踪系统

一、SkyWalking简介

SkyWalking 介绍:
SkyWalking项目是由华为大牛吴晟开源的个人项目,目前已经加入Apache孵化器。SkyWalking项目的核心目标是针对微服务、Cloud Native、容器化架构提供应用性能监控 和 分布式调用链 追踪功能,目前链路追踪和监控应用支持的组件包括主流框架和容器,如dubbo、motan、spring boot、spring cloud等。
分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

SkyWalking 组成部分:
1.skywalking-collector:链路数据归集器,数据可以保存在 H2、ElasticSearch、mysql、tidb
2.skywalking-web:web的可视化管理后台,可以查看归集的数据
3.skywalking-agent:探针,用来 收集和推送数据 到归集器

SkyWalking 主要功能:
    分布式追踪和上下文传输
    应用、实例、服务性能指标分析
    根源分析
    应用拓扑分析
    应用和服务依赖分析
    慢服务检测
    性能优化

二、部署前准备工作

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

# cd /usr/local/src    这是我的安装目录,可以自定义
wget http://archive.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.关闭防火墙

1.查看防火墙状态
   service iptables status 或者
    systemctl status firewalld
    firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
2.查看防火墙是否开机启动
    systemctl is-enabled firewalld
3.关闭防火墙
    systemctl stop firewalld
    systemctl stop firewalld.service
    systemctl status firewalld
4.禁用防火墙(系统启动时不启动防火墙服务)
    systemctl disable firewalld
    systemctl disable firewalld.service
    systemctl is-enabled firewalld

三、部署elasticsearch

1.解压

2.修改配置文件

vim /xxx/elasticsearch/config/elasticsearch.yml

cluster.name: CollectorDBCluster
//path.data: /xx/elasticsearch/data 默认配置
//path.logs: /xx/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200

3.创建用户(es不能用root用户启动)

useradd es -p es 
chown -R es:es /xx/elasticsearch

4.修改limit数量,否则启动es报错

vim /etc/security/limits.conf #添加以下内容

## 每个进程最大打开文件数
* soft nofile 65536
* hard nofile 131072
## 每个进程最大进程个数
* soft nproc 4096
* hard nproc 4096

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

#执行该命令使配置生效
sysctl -p

#切换es用户,启动es服务
su - es
cd /usr/local/src/xxes安装目录/bin/elasticsearch &

测试是否安装成功

访问浏览器 ip:9200

或者Linux访问 

Linux下安装 SkyWalking 分布式追踪系统

表示安装es成功

四、部署skywarking

1.解压

2.修改配置文件

vim /opt/skywalking/config/application.yml

将h2内容注释掉,启用elasticsearch存储方案,使用elasticsearch存储数据(修改es服务器地址)。

Linux下安装 SkyWalking 分布式追踪系统

3.启动

也是安装目录的bin目录下(root即可)

#启动命令,和启动tomcat一样
./startup.sh

4.验证是否安装成功

ip:8080

能访问代表安装成功

五、Java项目接入

skywalking支持很多项目,比如Java、.net、github、sample等,这里我只讲下Java项目的接入使用,其他项目大家可自行查看官方文档。

1.需要把skywarking安装目录下的agent包 复制到你指定项目服务器的自定义的目录下

2.启动脚本配置

##linux##--Tomcat配置探针--配置tomcat catclina.sh脚本
找到部署项目tomcat 放在catalina.sh第一行(第二行),service_name代表当前应用的名称、ip就是你部署的skywarking的机器ip

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/xxx你刚才指定的探针目录/agent/skywalking-agent.jar=agent.service_name=xxx,collector.backend_service=ip:11800"; 
export CATALINA_OPTS

3.重启tomcat项目,然后访问项目

下面是效果图:

Linux下安装 SkyWalking 分布式追踪系统

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这