驽马十驾 驽马十驾

驽马十驾,功在不舍

目录
skywalking 5.0 GA 版本安装记录和踩坑记录
/    

skywalking 5.0 GA 版本安装记录和踩坑记录

相关资料

ElasticSearch 的安装

基本安装

  1. 根据上述地址下载 Elasticsearch 5.X 版本。

  2. 下载完成后对/config/elasticsearch.yml做如下修改并包装

cluster.name: CollectorDBCluster
node.name: Mic-KJ-Node
network.host: 0.0.0.0
thread_pool.bulk.queue_size: 1000
  1. 启动 elasticsearch,启动后其端口为10080
cd elasticsearch-5.6.14/
./bin/elasticsearch

此处没有做集群,如果有需要请根据文档做集群处理。

安装成功后可以通过:http://10.5.21.27:9200/进行测试,如果如下类似内容则表示启动成功:

{
  "name" : "liuchunfu",
  "cluster_name" : "CollectorDBCluster",
  "cluster_uuid" : "bjje0ZP1SwSHCag8K-ddFQ",
  "version" : {
    "number" : "5.6.14",
    "build_hash" : "f310fe9",
    "build_date" : "2018-12-05T21:20:16.416Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}

问题解决

elasticsearch 在 root下无法启动

添加用于并分组

groupadd devgroup  
adduser liuchunfu
passwd dev #后续连续输入多次密码
useradd -g devgroup newuser  # 此处为新建
usermod -G groupname username  # 这个会把用户从其他组中去掉

授权文件夹为非 上述构建好的用户

chown -R liuchunfu:devgroup elasticsearch-5.6.14/

如果一定要通过 root进行处理,执行如下指令

# 此非后台运行
runuser -l liuchunfu -c 'sh /mic-project/elasticsearch-5.6.14/bin/elasticsearch' 

# 后台运行
runuser -l liuchunfu -c 'sh /mic-project/elasticsearch-5.6.14/bin/elasticsearch -d -p pid' 
# 杀掉此进程。或者 jps 杀掉
kill `cat pid`

其中liuchunfu为用户名,后面单括号的内容为命令,命令中的 elaticsearch 需要全路径。

当然也可以通过非 root账户登录后进行处理。

提示:max file descriptors [4096] for elasticsearch process is too low, increase to at least

vi /etc/security/limits.conf
然后在后面添加
* soft nofile 65536
* hard nofile 131072

提示:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

# 通过如下指定查看
sysctl -a|grep vm.max_map_count
# 通过如下指定设置
sysctl -w vm.max_map_count=262144

Skywalking 的 Collecotr 和 UI

基本安装

  1. 根据上述地址下载Skywalking 5.0 GA版本后,解压
  2. 目录结构如下所示
├── .....
├── agent
│   ├── activations
│   ├── config
│   ├── logs
│   ├── optional-plugins
│   ├── plugins
│   └── skywalking-agent.jar
├── bin
│   ├── collectorService.bat
│   ├── collectorService.sh
│   ├── startup.bat
│   ├── startup.sh
│   ├── webappService.bat
│   └── webappService.sh
|── ......
├── config
│   ├── application.yml
│   ├── component-libraries.yml
│   └── log4j2.xml
├── .....
├── logs
│   ├── collector.log
│   ├── skywalking-collector-server.log
│   ├── webapp-console.log
│   └── webapp.log
└── webapp
    ├── skywalking-webapp.jar
    └── webapp.yml

上述列表是比较重要的东西,我们依次来说

  • agent 这个目录是 jar包启动的时候需要的,通过-agent进行指定
  • agent/config下的文件agent.config用于配置代理jar包的信息
    • 应用名称。建议:同一类应用,名称一致。
    • collector地址,其启动在下述的bin 目录下。
  • bin目录下的startup.sh用于启动2个服务
    • collecotr 的服务
    • ui显示界面的服务。
  • config(同级)这个目录下的配置文件application.yml作用如下
    • 配置collecotr的启动ip 和端口
    • 配置storage的信息,就是elasticsearch的信息
  • logs 是日志目录,包含了
    • Collector 的日志
    • ui应用的日志。
  • webapp 下面有2个文件
    • skywalking-webapp.jar:ui界面服务的 jar 包
    • webapp.yml:配置文件,里面主要是graphql的配置【此处可能有坑】

综上我们根据是否属于代理分为2类:

  • agent类:只有 agent 这个目录下的文件
  • 综合管理类:ui和收集器。
  1. 根据 elasticsearch实际安装地址修改bin 同级目录下的config下的application.yml
storage:
  elasticsearch:
    clusterName: CollectorDBCluster
    clusterTransportSniffer: true
    clusterNodes: localhost:9300 # 修改此处的ip和端口。9300是elastic的默认端口
  1. 跳转到 bin路径并启动。
cd bin
sh startup.sh

通过上述命令即可启动:collecot服务ui 界面服务

  1. 通过路径http://10.5.21.27:8080/查看是否出现登录界面,默认的用户名密码是:admin admin

启动界面报错500

解决方案是查看日志,日志在logs\webapp-console.log目录下。

我遇到一个典型错误是通过zuul无法访问127.0.0.1

org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:10800 [/127.0.0.1] failed: 拒绝连接 (Connection refused)
...
com.netflix.zuul.exception.ZuulException: Forwarding error
	at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutingFilter.java:189)
	at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:164)
	at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.run(RibbonRoutingFilter.java:111)

我是通过修改webapp.yml中的 listOfServers进行解决的,我的配置如下所示:

server:
  port: 8080

collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    listOfServers: 10.5.21.27:10800

security:
  user:
    admin:
      password: admin

skywalking 的agent使用

实际开发时候,每一个 jar包获取应用都应该单独使用一个 agent,所以将agent 这个目录拷贝到各自对应的 jar包路径下。

核心部分的目录信息如下:

├── activations
├── config
│   └── agent.config
├── logs
│   └── skywalking-api.log
├── optional-plugins
├── plugins
└── skywalking-agent.jar

其中 config/agent.config是最重要的,需要修改的核心参数如下所示

# 应用名称,当前代理的应用名称,用于 UI界面分类和展示。
agent.application_code=Mic-APM
# 收集器的地址,这个根据实际情况设置,上述`Collector`在哪台服务器启动,ip就设置为多少。
collector.servers=127.0.0.1:10800

设置好参数后,对于 Java 应用,添加核心的-javaagent进行启动

java -javaagent:agent/skywalking-agent.jar -jar xxx.jar

简单的架构图

yum install GeoIP-devel

整体设计如上所示。