SkyWalking 是针对分布式系统的 APM 系统,也被称为分布式追踪系统

  • 自动监控和手动监控可以同时使用,使用手动监控弥补自动监控不支持的组件,甚至私有化组件。

  • 纯 Java 后端分析程序,提供 RESTful 服务,可为其他语言探针提供分析能力。

  • 高性能纯流式分析

下载JDK1.8

 

wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz #wget命令可能下载不了,自行想办法下载

 

解压JDK1.8

#解压到指定目录 tar -zxvf ./jdk-8u144-linux-x64.tar.gz -C /usr/local/ #最终结果/usr/local/jdk1.8.0_144

 

配置环境变量

 

#vim /etc/profile

 

JAVA_HOME=/usr/local/jdk1.8.0_144

JRE_HOME=/usr/local/jdk1.8.0_144/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export PATH=$PATH:$JAVA_HOME:$JRE_HOME:$CLASSPATH

 

安装Elasticsearch5.5.2

#wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz

解压安装包

 

#解压到指定目录

tar -zxvf ./elasticsearch-5.5.2.tar.gz -C /usr/local/

#最终结果/usr/local/elasticsearch-5.5.2

#改变权限

chown -R elk:elk /usr/local/elasticsearch-5.5.2/

编辑limits.conf配置文件, 添加类似如下内容:

 

vi /etc/security/limits.conf #添加如下内容: *  soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096

 

修改90-nproc.conf配置文件

 

vi /etc/security/limits.d/90-nproc.conf #修改如下内容: * soft nproc 1024 #修改为 * soft nproc 2048

修改配置sysctl.conf

 

vi /etc/sysctl.conf #添加下面配置: vm.max_map_count=655360 #并执行命令: sysctl -p

直接运行elasticsearch

 

 

#创建elasticsearch用户

useradd elk

#切换用户

su elk #进入目录 cd /usr/local/elasticsearch-5.5.2 #运行 ./bin/elasticsearch -d

下载skywalking

#wget http://www-eu.apache.org/dist/incubator/skywalking/5.0.0-beta2/apache-skywalking-apm-incubating-5.0.0-beta2.tar.gz

解压skywalking

 

tar -xf apache-skywalking-apm-incubating-5.0.0-beta2.tar.gz

mv apache-skywalking-apm-incubating skywalking 

修改配置文件,将以下Localhost修改成本机IP地址,如果elasticsearch是分开安装,修改成elasticsearch本机ip

 

vim /root/skywalking/config/application.yml

naming:

  jetty:

    #OS real network IP(binding required), for agent to find collector cluster

    host: localhost

    port: 10800

    contextPath: /

cache:

#  guava:

  caffeine:

remote:

  gRPC:

    # OS real network IP(binding required), for collector nodes communicate with each other in cluster. collectorN --(gRPC) --> collectorM

    host:localhost

    port: 11800

agent_gRPC:

  gRPC:

    #OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector. agent--(gRPC)--> collector

    host: localhost

    port: 11800

    # Set these two setting to open ssl

    #sslCertChainFile: $path

    #sslPrivateKeyFile: $path

 

    # Set your own token to active auth

    #authentication: xxxxxx

agent_jetty:

  jetty:

    # OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector through HTTP. agent--(HTTP)--> collector

    # SkyWalking native Java/.Net/node.js agents don't use this.

    # Open this for other implementor.

    host: localhost

    port: 12800

    contextPath: /

analysis_register:

  default:

analysis_jvm:

  default:

analysis_segment_parser:

  default:

    bufferFilePath: ../buffer/

    bufferOffsetMaxFileSize: 10M

    bufferSegmentMaxFileSize: 500M

    bufferFileCleanWhenRestart: true

ui:

  jetty:

    # Stay in `localhost` if UI starts up in default mode.

    # Change it to OS real network IP(binding required), if deploy collector in different machine.

    host:localhost

    port: 12800

    contextPath: /

storage:

  elasticsearch:

    clusterName: CollectorDBCluster

    clusterTransportSniffer: true

    clusterNodes:localhost:9300

    indexShardsNumber: 2

    indexReplicasNumber: 0

    highPerformanceMode: true

 

修改web控制信息,将127.0.0.1修改成本地真实ip

 

vim skywalking/webapp/webapp.yml 

 

server:

  port: 8080

 

collector:

  path: /graphql

  ribbon:

    ReadTimeout: 10000

    listOfServers:127.0.0.1:10800

 

security:

  user:

    admin:

      password: admin

启动skywalking

 

cd skywalking/bin

#启动Collector、WebUI

./startup.sh

 

SkyWalking监控界面URL: http://127.0.0.1:8080/#/monitor/dashboard

image.png

 

部署探针

拷贝skywalking-agent目录到需要监控的节点服务器上,探针包含整个目录,请不要改变目录结构

 

+-- skywalking-agent

    +-- activations

         apm-toolkit-log4j-1.x-activation.jar

         apm-toolkit-log4j-2.x-activation.jar

         apm-toolkit-logback-1.x-activation.jar

         ...

    +-- config

         agent.config  

    +-- plugins

         apm-dubbo-plugin.jar

         apm-feign-default-http-9.x.jar

         apm-httpClient-4.x-plugin.jar

         .....

    skywalking-agent.jar

修改agent配置文件,将127.0.0.1修改成skywalking服务器ip地址

vim /usr/local/agent/config/agent.config 

 

# 当前的应用编码,最终会显示在webui上。

# 建议一个应用的多个实例,使用有相同的application_code。请使用英文

agent.application_code=Your_ApplicationName

 

# 每三秒采样的Trace数量

# 默认为负数,代表在保证不超过内存Buffer区的前提下,采集所有的Trace

# agent.sample_n_per_3_secs=-1

 

# 设置需要忽略的请求地址

# 默认配置如下

# agent.ignore_suffix=.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg

 

# 探针调试开关,如果设置为true,探针会将所有操作字节码的类输出到/debugging目录下

# skywalking团队可能在调试,需要此文件

# agent.is_open_debugging_class = true

 

# 对应Collector的config/application.yml配置文件中 agent_server/jetty/port 配置内容

# 例如:

# 单节点配置:SERVERS="127.0.0.1:8080" 

# 集群配置:SERVERS="10.2.45.126:8080,10.2.45.127:7600" 

collector.servers=127.0.0.1:10800

 

# 日志文件名称前缀

logging.file_name=skywalking-agent.log

 

# 日志文件最大大小

# 如果超过此大小,则会生成新文件。

# 默认为300M

logging.max_file_size=314572800

 

# 日志级别,默认为DEBUG。

logging.level=DEBUG

 

如果是容器用到tomcat话,添加catalina.sh如下配置

 

# vim /root/test/bin/catalina.sh

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.application_code=test" ; export CATALINA_OPTS

如果一台服务器上跑多个tomcat实例, 只需修改-Dskywalking.agent.application_code=test(将这个值修改成应用名)

如果是jar包启动,添加 以下信息到启动脚本中

java -javaagent:/root/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.application_code=test

如果没有启动脚本,直接在命令行中启动

java -javaagent:/root/skywalking/agent/skywalking-agent.jar -Dserver.port=8084 -Dskywalking.agent.application_code=test -jar test.jar &

        -Dserver.port  应用端口

        -Dskywalking.agent.application_code  监控时显示的应用名称,如有多个应用,根据自行应用程序修改

        test.jar jar包名称

监控画面

image.png

image.pngimage.png

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐