SkyWalking实现跟踪
架构简析
核心组件
Skywalking OAP Server
Skywalking收集器,接受写入请求与UI数据查询。
Skywalking UI
有调用链路记录、网络拓扑图、性能指标展示等。
Skywalking客户端代理
提供了多种语言的SDK(Java, .NET Core, NodeJS, PHP, Python等),在应用程序进行网络请求的时候进行埋点拦截,整理成需要的指标发送到Skywalking OAP Server,
安装SkyWalking的收集器
docker run --name skywalking-oap-server -p 12800:12800 -p 11800:11800 -p 1234:1234 --restart always -d -e SW_STORAGE=elasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODES=192.168.184.129:9200 apache/skywalking-oap-server:8.4.0-es7 启动成功后去ES查看,多了很多的Index
安装SkyWalking UI
docker run --name skywalking-ui -p 8888:8080 --restart always -d -e SW_OAP_ADDRESS=192.168.184.129:12800 apache/skywalking-ui:8.4.0
使用时注意调整右下角的时区
我们到Github下载源码 https://github.com/SkyAPM/SkyAPM-dotnet,根据how-to-build文档进行编译
- Prepare git and .NET Core SDK. - `git clone https://github.com/SkyAPM/SkyAPM-dotnet.git` - `cd SkyAPM-dotnet/` - Switch to the tag by using `git checkout [tagname]` (Optional, switch if want to build a release from source codes) - `git submodule init` - `git submodule update` - Run `dotnet restore` - Run `dotnet build src/SkyApm.Transport.Grpc.Protocol` - Run `dotnet build skyapm-dotnet.sln`
启动SkyApm.Sample.Frontend与SkyApm.Sample.Backend两个项目,浏览器访问http://localhost:5001/api/values/postin ,就可以见到下面的调用链了。
我在19年的时候使用0.9版本,http.request_body和http.response_body都是没记录需要自己扩展,而现在最新版已经有记录,省了不少的事。
EFK(ElasticSearch+Filebeat+Kibana)实现日志
安装Nginx
主要用来测试的
添加源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装
yum install -y nginx
修改配置
vim /etc/nginx/nginx.conf
把圈起来的配置改动一下
log_format json '{"@timestamp":"$time_iso8601",' '"host": "$server_addr",' '"clientip": "$remote_addr",' '"request_body": "$request_body",' '"responsetime": $request_time,' '"upstreamtime": "$upstream_response_time",' '"upstreamhost": "$upstream_addr",' '"http_host": "$host",' '"url": "$uri",' '"referer": "$http_referer",' '"agent": "$http_user_agent",' '"status": "$status"}'; access_log /var/log/nginx/access.log json;
开机启动
systemctl start nginx.service systemctl enable nginx.service
用浏览器访问,刷新几次,执行cat /var/log/nginx/access.log 就可以看到json格式的日志了