背景
前两天看见有小哥介绍 Windows 下安装 skywalking 的介绍地址在这.
正好最近也在搭建 Linux 环境的 SkyWalking, 顺便把 Linux 环境搭建的经验分享下, 帮助下使用 Linux 部署 DotNetCore 项目的同学.
介绍
SkyWalking 是开源的 apm 工具, 服务器端使用 java 编写, 客服端支持 java,DotNetCore,Node.JS,PHP 接入.
详细点击进入官方介绍: SkyWalking
服务部署环境
Linux Centos7 3.10.0-862.11.6.el7.x86_64
说明
SkyWalking 6x 版本可以选择 h2,es,MySQL 等存储. 这里选择 es 进行搭建. 为了减少下载各个环境依赖的麻烦, 使用 docker 安装存储.
Es 可以使用集群方式搭建, 可以不与 Skywalking 主程序放在一块
端口开放访问问题
我是使用 itpables 进行端口管理, 编辑 iptables 文件加入想要的开放端口配置
编辑文件
vi /etc/sysconfig/iptables
加入如下配置
- # web 端口
- -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
- # es 地址, 可以查询 es, 如果建立
- -A INPUT -p tcp -m tcp --dport 9200 -j ACCEPT
- #grpc 端口
- -A INPUT -p tcp -m tcp --dport 11800 -j ACCEPT
docker 安装
CentOS 安装官网地址: 点这里
按照步骤即可安装完成 docker 环境
拉取 es
SkyWalking 6x 版本依赖的 es 是 6.6.2
- # 拉取 es, 版本: 6.6.2
- docker pull docker.elastic.co/Elasticsearch/Elasticsearch:6.6.2
- # 运行 docker , 映射 http 端口及 tcp 端口, 可以使用 - v 参数进行目录挂载
- docker run --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/Elasticsearch/Elasticsearch:6.6.2
如果需要修改 es 配置文件, 比如修改跨域问题, 可以进行如下操作
- docker exec -it es /bin/bash
- cd /config
- vi Elasticsearch.yum
加入如下参数
- http.cors.enabled: true
- http.cors.allow-origin: "*"
然后重启 docker 服务
sudo docker restart es
如果需对 es 进行管理, 可以安装 head 插件, 参照上方端口开放说明开放端口说明
head 安装
- docker pull mobz/Elasticsearch-head:5
- ## 运行 head
- docker run -d --name es_head -p 9100:9100 mobz/Elasticsearch-head:5
如果对 docker 容器进行可视化管理的话, 拉取 dockerui
docker run -d -p 5000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
SkyWalking 安装
skywalking 是 java 编写, 所以运行以来 java, 可以参照如下安装 java
java 安装
项目获取
地址:
以最新 6.0.0-GA 为例
- # 下载文件
- wget -O SkyWalking6.0.0 https://github.com/apache/incubator-skywalking/archive/v6.0.0-GA.tar.gz
- # 进行配置
- tar -zxvf SkyWalking6.0.0
- cd ./SkyWalking6.0.0/config
- # 编辑配置文件, 将 es 配置开放
- VIM application.yum
默认是使用 h2, 将 h2 注释掉, 将 es 配置开放出来. ES 使用集群的话, 可以将 clusterNodes 配置进行替换
- storage:
- # h2:
- # driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
- # url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
- # user: ${SW_STORAGE_H2_USER:sa}
- Elasticsearch:
- clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:127.0.0.1:9200}
- indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
- indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
- bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests
- bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
- flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
- concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
保存后启动服务
../bin/startup.sh
服务启动后, 如下地址进行访问
ui 地址
http://{ip}:8080 http://{ip}:8080/
grp 地址
{ip}:11800
ui 默认启动账号密码: admin,admin
这个可以在 webapp 目录下 webapp.yum 进行设置
DotNetCore 接入
说了半天, 终于到正文了
6x 版本已经实现无代码侵入接入, 可以使用 SkyAPM.CLI 进行生成配置文件.
假如 DotNetCore 项目名称是 SWTest, grpc 地址是 127.0.0.1:11800
执行如下命令
- # 安装 cli 工具
- dotnet tool install -g SkyAPM.DotNet.CLI
- # 生成配置文件
- dotnet skyapm config SWTest 127.0.0.1:11800
生成文件 skyapm.JSON, 配置如下
- {
- "SkyWalking": {
- "ServiceName": "WSTest",
- "Namespace": "",
- "HeaderVersions": [
- "sw6"
- ],
- "Sampling": {
- "SamplePer3Secs": -1,
- "Percentage": -1.0
- },
- "Logging": {
- "Level": "Information",
- "FilePath": "logs\\skyapm-{Date}.log"
- },
- "Transport": {
- "Interval": 3000,
- "ProtocolVersion": "v6",
- "QueueSize": 30000,
- "BatchSize": 3000,
- "gRPC": {
- "Servers": "12.0.0.1:11800",
- "Timeout": 10000,
- "ConnectTimeout": 10000,
- "ReportTimeout": 600000
- }
- }
- }
- }
添加如下环境变量
- ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
- SKYWALKING__SERVICENAME=WSTest
将文件设置为始终复制, 启动项目即可
Git 官网接入说明地址: Git 介绍 https://github.com/SkyAPM/SkyAPM-dotnet
福利
如下服务可以进行测试
139.219.12.5:11800:11800
查看数据私信发管理后台账号密码, 嘿嘿
来源: https://www.cnblogs.com/cgyqu/p/10622114.html