Skywalking-01(Skywalking介绍)
Skywalking介绍
Application performance monitor tool for distributed systems, especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.
SkyWalking is an Observability Analysis Platform and Application Performance Management system.
Tracing, Metrics and Logging all-in-one solution.
Java, .Net Core, PHP, NodeJS, Golang, LUA, C++ agents supported
Istio + Envoy Service Mesh supported
文章图片
Skywalking文档结构
- Welcome
- Concepts and Designs
- What is SkyWalking?
- Overview and Core concepts
- Project Goals
- Project Goals
- Introduction
- Service auto instrument agent
- Manual instrument SDK
- Service Mesh probe
- Backend
- Overview
- Observability Analysis Language
- Query in OAP
- Meter Analysis Language
- UI
- Overview
- What is SkyWalking?
- Setup
- 【Skywalking-01(Skywalking介绍)】Language agents in Service
- Agents
- Java agent
- Supported middleware, framework and library
- Agent Configuration Properties
- Optional plugins
- Bootstrap/JVM class plugin
- Advanced reporters
- Plugin development guide
- Agent plugin tests and performance tests
- Other language agents
- Service Mesh
- Observe Istio Control Plane
- Observe Service Mesh
- Proxy
- Envoy Proxy
- Send Envoy metrics to SkyWalking with / without Istio
- Envoy Proxy
- Backend, UI and CLI setup document
- Backend setup document
- Configuration Vocabulary
- Overriding settings
- IP and port setting
- Backend init mode startup
- Cluster management
- Deploy in kubernetes
- Choose storage
- Set receivers
- Open fetchers
- Trace sampling
- Slow DB statement threshold
- OAL scripts
- Alarm
- Advanced deployment options
- Metrics exporter
- Time To Live (TTL)
- Dynamic Configuration
- Uninstrumented Gateways
- Apdex threshold
- Service Grouping
- Group Parameterized Endpoints
- OpenTelemetry Metrics Analysis
- Meter Analysis
- Spring Sleuth Metrics Analysis
- UI setup document
- CLI setup document
- Backend setup document
- 【Skywalking-01(Skywalking介绍)】Language agents in Service
- UI Introduction
- Contributing Guides
- Contact us
- Process to become official Apache SkyWalking Committer
- Compiling Guide
- Agent plugin development guide
- Protocols
- Query Protocol
- FAQs
怎样读文档
Skywalking
官方文档的组织结构很清晰。读下Welcome,就能大致了解文档结构,然后选感兴趣的读。Skywalking项目结构 部署项目结构
.
├── bin # 执行文件
│├── oapService.bat
│├── oapServiceInit.bat
│├── oapServiceInit.sh # 启动oap并初始化,oap集群中使用
│├── oapServiceNoInit.bat
│├── oapServiceNoInit.sh # 只启动oap,oap集群中使用
│├── oapService.sh # 启动oap并初始化
│├── startup.bat
│├── startup.sh # 启动oap并初始化,同时启动ui
│├── webappService.bat
│└── webappService.sh # 启动ui
├── config # oap配置文件
│├── alarm-settings-sample.yml
│├── alarm-settings.yml # 告警配置
│├── application.yml # oap主配置文件
│├── component-libraries.yml
│├── endpoint-name-grouping.yml
│├── envoy-metrics-rules
││└── envoy.yaml
│├── fetcher-prom-rules # Prometheus Fetcher 配置文件
││└── self.yaml
│├── gateways.yml
│├── log4j2.xml
│├── metadata-service-mapping.yaml
│├── meter-analyzer-config Meter # Receiver配置文件
││└── spring-sleuth.yaml
│├── oal # oal配置文件
││├── browser.oal
││├── core.oal
││├── dotnet-agent.oal
││└── java-agent.oal
│├── otel-oc-rules # OpenTelemetry receiver规则
││├── istio-controlplane.yaml
││├── oap.yaml
││└── vm.yaml
│├── service-apdex-threshold.yml # apdex阈值配置
│└── ui-initialized-templates # ui配置模板
│├── apm.yml
│├── browser.yml
│├── database.yml
│├── istio-dp.yml
│├── istio.yml
│├── self-observability.yml
│├── spring-sleuth.yml
│├── topology-endpoint.yml
│├── topology-instance.yml
│└── vm.yml
├── licenses # 证书
├── logs # 日志目录
├── oap-libs # 依赖库
├── tools # 开发运维工具
│└── profile-exporter # 导出trace原始数据
│├── application.yml
│├── profile_exporter_log4j2.xml
│└── profile_exporter.sh
└── webapp # ui项目
│├── skywalking-webapp.jar
│└── webapp.yml
├── LICENSE
├── NOTICE
└── README.txt
agent目录结构
.
├── activations # 工具包,提供 日志打印TID、跨线程传递TID等功能
│├── apm-toolkit-kafka-activation-8.4.0.jar
│├── apm-toolkit-log4j-1.x-activation-8.4.0.jar
│├── apm-toolkit-log4j-2.x-activation-8.4.0.jar
│├── apm-toolkit-logback-1.x-activation-8.4.0.jar
│├── apm-toolkit-logging-common-8.4.0.jar
│├── apm-toolkit-meter-activation-8.4.0.jar
│├── apm-toolkit-opentracing-activation-8.4.0.jar
│└── apm-toolkit-trace-activation-8.4.0.jar
├── bootstrap-plugins # All bootstrap plugins are optional, due to unexpected risk.
│├── apm-jdk-http-plugin-8.4.0.jar
│└── apm-jdk-threading-plugin-8.4.0.jar
├── config # agent配置文件
│└── agent.config
├── logs # 日志目录
├── optional-plugins # 可选插件
│├── apm-customize-enhance-plugin-8.4.0.jar
│├── apm-gson-2.x-plugin-8.4.0.jar
│├── apm-kotlin-coroutine-plugin-8.4.0.jar
│├── apm-quartz-scheduler-2.x-plugin-8.4.0.jar
│├── apm-spring-annotation-plugin-8.4.0.jar
│├── apm-spring-cloud-gateway-2.0.x-plugin-8.4.0.jar
│├── apm-spring-cloud-gateway-2.1.x-plugin-8.4.0.jar
│├── apm-spring-tx-plugin-8.4.0.jar
│├── apm-spring-webflux-5.x-plugin-8.4.0.jar
│├── apm-trace-ignore-plugin-8.4.0.jar
│└── apm-zookeeper-3.4.x-plugin-8.4.0.jar
├── optional-reporter-plugins # 可选的reporter插件
│└── kafka-reporter-plugin-8.4.0.jar
├── plugins # 插件目录,放在该目录下的插件才会生效
│├── apm-activemq-5.x-plugin-8.4.0.jar
│├── apm-armeria-0.84.x-plugin-8.4.0.jar
│├── apm-armeria-0.85.x-plugin-8.4.0.jar
│├── apm-asynchttpclient-2.x-plugin-8.4.0.jar
│├── apm-avro-plugin-8.4.0.jar
│├── apm-canal-1.x-plugin-8.4.0.jar
│├── apm-cassandra-java-driver-3.x-plugin-8.4.0.jar
│├── apm-cxf-3.x-plugin-8.4.0.jar
│├── apm-dubbo-2.7.x-plugin-8.4.0.jar
│├── apm-dubbo-plugin-8.4.0.jar
│├── apm-ehcache-2.x-plugin-8.4.0.jar
│├── apm-elastic-job-2.x-plugin-8.4.0.jar
│├── apm-elastic-job-3.x-plugin-8.4.0.jar
│├── apm-elasticsearch-5.x-plugin-8.4.0.jar
│├── apm-elasticsearch-6.x-plugin-8.4.0.jar
│├── apm-feign-default-http-9.x-plugin-8.4.0.jar
│├── apm-finagle-6.25.x-plugin-8.4.0.jar
│├── apm-grpc-1.x-plugin-8.4.0.jar
│├── apm-h2-1.x-plugin-8.4.0.jar
│├── apm-hbase-1.x-plugin-8.4.0.jar
│├── apm-httpasyncclient-4.x-plugin-8.4.0.jar
│├── apm-httpclient-3.x-plugin-8.4.0.jar
│├── apm-httpClient-4.x-plugin-8.4.0.jar
│├── apm-httpclient-commons-8.4.0.jar
│├── apm-hystrix-1.x-plugin-8.4.0.jar
│├── apm-influxdb-2.x-plugin-8.4.0.jar
│├── apm-jdbc-commons-8.4.0.jar
│├── apm-jedis-2.x-plugin-8.4.0.jar
│├── apm-jetty-client-9.0-plugin-8.4.0.jar
│├── apm-jetty-client-9.x-plugin-8.4.0.jar
│├── apm-jetty-server-9.x-plugin-8.4.0.jar
│├── apm-kafka-commons-8.4.0.jar
│├── apm-kafka-plugin-8.4.0.jar
│├── apm-lettuce-5.x-plugin-8.4.0.jar
│├── apm-light4j-plugin-8.4.0.jar
│├── apm-mariadb-2.x-plugin-8.4.0.jar
│├── apm-mongodb-2.x-plugin-8.4.0.jar
│├── apm-mongodb-3.x-plugin-8.4.0.jar
│├── apm-mongodb-4.x-plugin-8.4.0.jar
│├── apm-mssql-commons-8.4.0.jar
│├── apm-mssql-jdbc-plugin-8.4.0.jar
│├── apm-mssql-jtds-1.x-plugin-8.4.0.jar
│├── apm-mysql-5.x-plugin-8.4.0.jar
│├── apm-mysql-6.x-plugin-8.4.0.jar
│├── apm-mysql-8.x-plugin-8.4.0.jar
│├── apm-mysql-commons-8.4.0.jar
│├── apm-netty-socketio-plugin-8.4.0.jar
│├── apm-nutz-http-1.x-plugin-8.4.0.jar
│├── apm-nutz-mvc-annotation-1.x-plugin-8.4.0.jar
│├── apm-okhttp-3.x-plugin-8.4.0.jar
│├── apm-play-2.x-plugin-8.4.0.jar
│├── apm-postgresql-8.x-plugin-8.4.0.jar
│├── apm-pulsar-plugin-8.4.0.jar
│├── apm-quasar-plugin-8.4.0.jar
│├── apm-rabbitmq-5.x-plugin-8.4.0.jar
│├── apm-redisson-3.x-plugin-8.4.0.jar
│├── apm-resttemplate-4.3.x-plugin-8.4.0.jar
│├── apm-rocketmq-3.x-plugin-8.4.0.jar
│├── apm-rocketmq-4.x-plugin-8.4.0.jar
│├── apm-servicecomb-java-chassis-0.x-plugin-8.4.0.jar
│├── apm-servicecomb-java-chassis-1.x-plugin-8.4.0.jar
│├── apm-sharding-jdbc-1.5.x-plugin-8.4.0.jar
│├── apm-sharding-sphere-3.x-plugin-8.4.0.jar
│├── apm-shardingsphere-4.0.x-plugin-8.4.0.jar
│├── apm-sharding-sphere-4.1.0-plugin-8.4.0.jar
│├── apm-sharding-sphere-4.x-plugin-8.4.0.jar
│├── apm-sharding-sphere-4.x-rc3-plugin-8.4.0.jar
│├── apm-solrj-7.x-plugin-8.4.0.jar
│├── apm-spring-async-annotation-plugin-8.4.0.jar
│├── apm-spring-cloud-feign-1.x-plugin-8.4.0.jar
│├── apm-spring-cloud-feign-2.x-plugin-8.4.0.jar
│├── apm-spring-concurrent-util-4.x-plugin-8.4.0.jar
│├── apm-spring-core-patch-8.4.0.jar
│├── apm-spring-kafka-1.x-plugin-8.4.0.jar
│├── apm-spring-kafka-2.x-plugin-8.4.0.jar
│├── apm-springmvc-annotation-3.x-plugin-8.4.0.jar
│├── apm-springmvc-annotation-4.x-plugin-8.4.0.jar
│├── apm-springmvc-annotation-5.x-plugin-8.4.0.jar
│├── apm-springmvc-annotation-commons-8.4.0.jar
│├── apm-spring-scheduled-annotation-plugin-8.4.0.jar
│├── apm-spymemcached-2.x-plugin-8.4.0.jar
│├── apm-struts2-2.x-plugin-8.4.0.jar
│├── apm-undertow-2.x-plugin-8.4.0.jar
│├── apm-vertx-core-3.x-plugin-8.4.0.jar
│├── apm-xmemcached-2.x-plugin-8.4.0.jar
│├── apm-xxl-job-2.x-plugin-8.4.0.jar
│├── baidu-brpc-plugin-8.4.0.jar
│├── dbcp-2.x-plugin-8.4.0.jar
│├── dubbo-2.7.x-conflict-patch-8.4.0.jar
│├── dubbo-conflict-patch-8.4.0.jar
│├── graphql-12.x-plugin-8.4.0.jar
│├── graphql-8.x-plugin-8.4.0.jar
│├── graphql-9.x-plugin-8.4.0.jar
│├── motan-plugin-8.4.0.jar
│├── resteasy-server-3.x-plugin-8.4.0.jar
│├── sofa-rpc-plugin-8.4.0.jar
│├── spring-commons-8.4.0.jar
│├── spring-webflux-5.x-webclient-plugin-8.4.0.jar
│├── thrift-plugin-8.4.0.jar
│└── tomcat-7.x-8.x-plugin-8.4.0.jar
└── skywalking-agent.jar # agent入口
源码项目结构
.
├── apm-application-toolkit # 工具包
│├── apm-toolkit-kafka
│├── apm-toolkit-log4j-1.x
│├── apm-toolkit-log4j-2.x
│├── apm-toolkit-logback-1.x
│├── apm-toolkit-meter
│├── apm-toolkit-micrometer-registry
│├── apm-toolkit-opentracing
│└── apm-toolkit-trace
├── apm-checkstyle # checkstyle配置目录
├── apm-commons # common包相关
│├── apm-datacarrier
│└── apm-util
├── apm-dist # 构建后生成的可执行项目目录
├── apm-dist-es7 # 构建后生成的可执行项目目录 base:es7
├── apm-protocol # 协议
│└── apm-network
├── apm-sniffer # agent相关
│├── apm-agent
│├── apm-agent-core
│├── apm-sdk-plugin
││├── activemq-5.x-plugin
││├── armeria-0.84.x-plugin
││├── armeria-0.85.x-plugin
││├── asynchttpclient-2.x-plugin
││├── avro-plugin
││├── baidu-brpc-plugin
││├── canal-1.x-plugin
││├── cassandra-java-driver-3.x-plugin
││├── cxf-3.x-plugin
││├── dbcp-2.x-plugin
││├── dubbo-2.7.x-conflict-patch
││├── dubbo-2.7.x-plugin
││├── dubbo-conflict-patch
││├── dubbo-plugin
││├── ehcache-2.x-plugin
││├── elastic-job-2.x-plugin
││├── elastic-job-3.x-plugin
││├── elasticsearch-5.x-plugin
││├── elasticsearch-6.x-plugin
││├── feign-default-http-9.x-plugin
││├── finagle-6.25.x-plugin
││├── graphql-plugin
│││├── graphql-12.x-plugin
│││├── graphql-8.x-plugin
│││└── graphql-9.x-plugin
││├── grpc-1.x-plugin
││├── h2-1.x-plugin
││├── hbase-1.x-plugin
││├── httpClient-4.x-plugin
││├── httpasyncclient-4.x-plugin
││├── httpclient-3.x-plugin
││├── httpclient-commons
││├── hystrix-1.x-plugin
││├── influxdb-2.x-plugin
││├── jdbc-commons
││├── jedis-2.x-plugin
││├── jetty-plugin
│││├── jetty-client-9.0-plugin
│││├── jetty-client-9.x-plugin
│││└── jetty-server-9.x-plugin
││├── kafka-commons
││├── kafka-plugin
││├── lettuce-5.x-plugin
││├── light4j-plugins
│││└── light4j-plugin
││├── mariadb-2.x-plugin
││├── mongodb-2.x-plugin
││├── mongodb-3.x-plugin
││├── mongodb-4.x-plugin
││├── motan-plugin
││├── mssql-commons
││├── mssql-jdbc-plugin
││├── mssql-jtds-1.x-plugin
││├── mysql-5.x-plugin
││├── mysql-6.x-plugin
││├── mysql-8.x-plugin
││├── mysql-common
││├── netty-socketio-plugin
││├── nutz-plugins
│││├── http-1.x-plugin
│││└── mvc-annotation-1.x-plugin
││├── okhttp-3.x-plugin
││├── play-2.x-plugin
││├── postgresql-8.x-plugin
││├── pulsar-plugin
││├── quasar-plugin
││├── rabbitmq-5.x-plugin
││├── redisson-3.x-plugin
││├── resteasy-plugin
│││└── resteasy-server-3.x-plugin
││├── rocketMQ-3.x-plugin
││├── rocketMQ-4.x-plugin
││├── servicecomb-plugin
│││├── servicecomb-java-chassis-0.x-plugin
│││└── servicecomb-java-chassis-1.x-plugin
││├── sharding-jdbc-1.5.x-plugin
││├── sharding-sphere-3.x-plugin
││├── sharding-sphere-4.0.x-plugin
││├── sharding-sphere-4.1.0-plugin
││├── sharding-sphere-4.x-RC3-plugin
││├── sharding-sphere-4.x-plugin
││├── sofarpc-plugin
││├── solrj-7.x-plugin
││├── spring-plugins
│││├── async-annotation-plugin
│││├── concurrent-util-4.x-plugin
│││├── core-patch
│││├── mvc-annotation-3.x-plugin
│││├── mvc-annotation-4.x-plugin
│││├── mvc-annotation-5.x-plugin
│││├── mvc-annotation-commons
│││├── resttemplate-4.x-plugin
│││├── scheduled-annotation-plugin
│││├── spring-cloud
││││├── netflix-plugins
│││││└── spring-cloud-feign-1.x-plugin
││││└── spring-cloud-feign-2.x-plugin
│││├── spring-commons
│││├── spring-kafka-1.x-plugin
│││├── spring-kafka-2.x-plugin
│││└── spring-webflux-5.x-webclient-plugin
││├── spymemcached-2.x-plugin
││├── struts2-2.x-plugin
││├── thrift-plugin
││├── tomcat-7.x-8.x-plugin
││├── undertow-plugins
│││└── undertow-2.x-plugin
││├── vertx-plugins
│││└── vertx-core-3.x-plugin
││├── xmemcached-2.x-plugin
││└── xxl-job-2.x-plugin
│├── apm-test-tools
│├── apm-toolkit-activation
││├── apm-toolkit-kafka-activation
││├── apm-toolkit-log4j-1.x-activation
││├── apm-toolkit-log4j-2.x-activation
││├── apm-toolkit-logback-1.x-activation
││├── apm-toolkit-logging-common
││├── apm-toolkit-meter-activation
││├── apm-toolkit-opentracing-activation
││└── apm-toolkit-trace-activation
│├── bootstrap-plugins
││├── jdk-http-plugin
││└── jdk-threading-plugin
│├── config
│├── optional-plugins
││├── customize-enhance-plugin
││├── gson-2.8.x-plugin
││├── kotlin-coroutine-plugin
││├── optional-spring-plugins
│││├── optional-spring-cloud
││││├── gateway-2.0.x-plugin
││││└── gateway-2.1.x-plugin
│││├── spring-annotation-plugin
│││├── spring-tx-plugin
│││└── spring-webflux-5.x-plugin
││├── quartz-scheduler-2.x-plugin
││├── trace-ignore-plugin
││└── zookeeper-3.4.x-plugin
│└── optional-reporter-plugins
│└── kafka-reporter-plugin
├── apm-webapp # ui项目后端
├── changes # change日志目录
├── dist-material # 生成的可执行项目相关配置目录
│├── bin
│└── release-docs
│└── licenses
│└── ui-licenses
├── docker # 生成docker镜像
│├── oap
│└── ui
├── docs # 官方文档目录
├── licenses # 证书目录
├── oap-server # oap服务相关
│├── analyzer # 分析器
││├── agent-analyzer
││├── log-analyzer
││└── meter-analyzer
│├── exporter
│├── oal-grammar # oal解释器
│├── oal-rt # oal工具
│├── server-alarm-plugin # 告警插件
│├── server-bootstrap
│├── server-cluster-plugin # 集群插件
││├── cluster-consul-plugin
││├── cluster-etcd-plugin
││├── cluster-kubernetes-plugin
││├── cluster-nacos-plugin
││├── cluster-standalone-plugin
││└── cluster-zookeeper-plugin
│├── server-configuration # 动态配置
││├── configuration-api
││├── configuration-apollo
││├── configuration-consul
││├── configuration-etcd
││├── configuration-k8s-configmap
││├── configuration-nacos
││├── configuration-zookeeper
││└── grpc-configuration-sync
│├── server-core # 核心包
│├── server-fetcher-plugin # fetcher插件
││├── kafka-fetcher-plugin
││└── prometheus-fetcher-plugin
│├── server-health-checker # 健康监测
│├── server-library #
││├── library-client
││├── library-module
││├── library-server
││└── library-util
│├── server-query-plugin # 查询插件
││└── query-graphql-plugin
│├── server-receiver-plugin # receiver插件
││├── configuration-discovery-receiver-plugin
││├── envoy-metrics-receiver-plugin
││├── jaeger-receiver-plugin
││├── otel-receiver-plugin
││├── receiver-proto
││├── skywalking-browser-receiver-plugin
││├── skywalking-clr-receiver-plugin
││├── skywalking-jvm-receiver-plugin
││├── skywalking-log-recevier-plugin
││├── skywalking-management-receiver-plugin
││├── skywalking-mesh-receiver-plugin
││├── skywalking-meter-receiver-plugin
││├── skywalking-profile-receiver-plugin
││├── skywalking-sharing-server-plugin
││├── skywalking-trace-receiver-plugin
││└── zipkin-receiver-plugin
│├── server-starter # 启动器
│├── server-starter-es7 # 启动器 es7
│├── server-storage-plugin # 存储插件
││├── storage-elasticsearch-plugin
││├── storage-elasticsearch7-plugin
││├── storage-influxdb-plugin
││├── storage-jaeger-plugin
││├── storage-jdbc-hikaricp-plugin
││├── storage-tidb-plugin
││└── storage-zipkin-plugin
│├── server-telemetry # 遥测
││├── telemetry-api
││└── telemetry-prometheus
│├── server-testing #
│└── server-tools # 服务工具
│└── profile-exporter
│├── tool-profile-snapshot-bootstrap
│├── tool-profile-snapshot-exporter
│├── tool-profile-snapshot-exporter-es7
│└── tool-profile-snapshot-server-mock
├── skywalking-ui # UI前端
├── test # 集成测试
└── tools # 工具
│├── TLS
│├── coverage
│├── dependencies
│├── plugin
│├── profile-exporter
│├── releasing
│└── select-group.py
├── CHANGES.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── HEADER
├── LICENSE
├── Makefile # 构建文件
├── NOTICE
├── README.md # README
├── codeStyle.xml
├── lombok.config
├── mvnw
├── mvnw.cmd
└── pom.xml
Skywalking环境搭建 部署文件结构
.
├── docker-compose.yml # docker-compose部署文件
├── es # es集群目录
│├── es01
│├── es02
│└── es03
├── kibana # kibana配置目录
│└── kibana.yml
├── mysql # mysql存储目录
├── nacos # nacos配置目录
│├── init.d
││└── custom.properties
│├── nacos01
│├── nacos02
│└── nacos03
├── prometheus # prometheus配置目录
│└── prometheus-cluster.yaml
├── skywalking # skywalking配置目录
│├── oap # oap服务配置
││├── oap01
│││└── config
││└── oap02
││└── config
│└── ui # ui服务配置
│└── webapp.yml
└── startup.sh # docker-compose脚本,提供易用性功能
docker-compose.yaml
version: '3.5'networks:
skywalking_networks:
ipam:
config:
- subnet: 192.168.200.0/24# elastic search参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.13/docker.html
# kibana参考:https://www.elastic.co/guide/en/kibana/7.13/docker.html
# nacos参考:https://github.com/nacos-group/nacos-docker/tree/2.0.1
# nacos prometheus grafana监控参考:https://nacos.io/zh-cn/docs/monitor-guide.html
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:${ES_TAG}
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- cluster.max_shards_per_node=100000
- thread_pool.write.queue_size=1000
- cluster.routing.allocation.disk.threshold_enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- "./es/es01/data:/usr/share/elasticsearch/data"
ports:
- 9201:9200
networks:
skywalking_networks:
ipv4_address: 192.168.200.10
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:${ES_TAG}
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- cluster.max_shards_per_node=100000
- thread_pool.write.queue_size=1000
- cluster.routing.allocation.disk.threshold_enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- "./es/es02/data:/usr/share/elasticsearch/data"
ports:
- 9202:9200
networks:
skywalking_networks:
ipv4_address: 192.168.200.11
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:${ES_TAG}
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- cluster.max_shards_per_node=100000
- thread_pool.write.queue_size=1000
- cluster.routing.allocation.disk.threshold_enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- "./es/es03/data:/usr/share/elasticsearch/data"
ports:
- 9203:9200
networks:
skywalking_networks:
ipv4_address: 192.168.200.12
kibana:
image: docker.elastic.co/kibana/kibana:${ES_TAG}
volumes:
- "./kibana/kibana.yml:/usr/share/kibana/config/kibana.yml"
ports:
- 5601:5601
depends_on:
- es01
- es02
- es03
networks:
skywalking_networks:
ipv4_address: 192.168.200.20
nacos01:
image: nacos/nacos-server:${NACOS_VERSION}
container_name: nacos01
networks:
skywalking_networks:
ipv4_address: 192.168.200.30
volumes:
- ./nacos/nacos01/logs:/home/nacos/logs
- ./nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8848:8848"
- "9848:9848"
- "9555:9555"
environment:
- JVM_XMS=128m
- JVM_XMX=512m
- JVM_XMN=256m
- JVM_MS=128m
- JVM_MMS=256m
- NACOS_SERVERS=192.168.200.30:8848 192.168.200.31:8848 192.168.200.32:8848
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_DB_NAME=nacos_devtest
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=nacos
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
depends_on:
- mysql
nacos02:
image: nacos/nacos-server:${NACOS_VERSION}
container_name: nacos02
networks:
skywalking_networks:
ipv4_address: 192.168.200.31
volumes:
- ./nacos/nacos02/logs:/home/nacos/logs
- ./nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8849:8848"
- "9849:9848"
environment:
- JVM_XMS=128m
- JVM_XMX=512m
- JVM_XMN=256m
- JVM_MS=128m
- JVM_MMS=256m
- NACOS_SERVERS=192.168.200.30:8848 192.168.200.31:8848 192.168.200.32:8848
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_DB_NAME=nacos_devtest
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=nacos
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
depends_on:
- mysql
nacos03:
image: nacos/nacos-server:${NACOS_VERSION}
container_name: nacos03
networks:
skywalking_networks:
ipv4_address: 192.168.200.32
volumes:
- ./nacos/nacos03/logs:/home/nacos/logs
- ./nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8850:8848"
- "9850:9848"
environment:
- JVM_XMS=128m
- JVM_XMX=512m
- JVM_XMN=256m
- JVM_MS=128m
- JVM_MMS=256m
- NACOS_SERVERS=192.168.200.30:8848 192.168.200.31:8848 192.168.200.32:8848
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_DB_NAME=nacos_devtest
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=nacos
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
depends_on:
- mysql
mysql:
container_name: mysql
image: nacos/nacos-mysql:5.7
networks:
skywalking_networks:
ipv4_address: 192.168.200.40
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=nacos_devtest
- MYSQL_USER=nacos
- MYSQL_PASSWORD=nacos
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3307:3306"
prometheus:
container_name: prometheus
image: prom/prometheus:${PROMETHEUS_VERSION}
volumes:
- ./prometheus/prometheus-cluster.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
depends_on:
- nacos01
- nacos02
- nacos03
networks:
skywalking_networks:
ipv4_address: 192.168.200.50
grafana:
container_name: grafana
image: grafana/grafana:${GRAFANA_VERSION}
ports:
- 3000:3000
networks:
skywalking_networks:
ipv4_address: 192.168.200.60
skywalking-oap01:
image: switchvov/skywalking-oap:${TAG}
container_name: skywalking-oap01
depends_on:
- es01
- es02
- es03
- nacos01
- nacos02
- nacos03
volumes:
- "./skywalking/oap/oap01/config:/skywalking/config"
ports:
- 11801:11800
- 12801:12800
environment:
JAVA_OPTS: " -Xms256M -Xmx1024M"
# es7存储
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: es01:9200,es02:9200,es03:9200
# 健康检查
SW_HEALTH_CHECKER: default
# telemetry 与 prometheus
SW_TELEMETRY: prometheus
# 需要更改self->staticConfig->targets->url为当前容器名
# SW_PROMETHEUS_FETCHER: default
TZ: Asia/Shanghai
# 集群模式
SW_CLUSTER: nacos
SW_CLUSTER_NACOS_HOST_PORT: nacos01:8848,nacos02:8848,nacos03:8848
SW_CLUSTER_NACOS_USERNAME: nacos
SW_CLUSTER_NACOS_PASSWORD: nacos
SW_CLUSTER_NACOS_INTERNAL_COM_HOST: 192.168.200.100
SW_CLUSTER_NACOS_INTERNAL_COM_PORT: 11800
# 动态配置
SW_CONFIGURATION: nacos
SW_CONFIG_NACOS_SERVER_ADDR: nacos01
SW_CONFIG_NACOS_SERVER_PORT: 8848
SW_CONFIG_NACOS_SERVER_GROUP: skywalking
SW_CONFIG_NACOS_SERVER_NAMESPACE: skywalking
SW_CONFIG_NACOS_USERNAME: nacos
SW_CONFIG_NACOS_PASSWORD: nacos
restart: on-failure
healthcheck:
test: ["CMD", "./bin/swctl", "ch"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
skywalking_networks:
ipv4_address: 192.168.200.100
skywalking-oap02:
image: switchvov/skywalking-oap:${TAG}
container_name: skywalking-oap02
depends_on:
- es01
- es02
- es03
- nacos01
- nacos02
- nacos03
volumes:
- "./skywalking/oap/oap02/config:/skywalking/config"
ports:
- 11802:11800
- 12802:12800
environment:
JAVA_OPTS: " -Xms256M -Xmx1024M"
# es7存储
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: es01:9200,es02:9200,es03:9200
# 健康检查
SW_HEALTH_CHECKER: default
# telemetry 与 prometheus
SW_TELEMETRY: prometheus
# 需要更改self->staticConfig->targets->url为当前容器名
# SW_PROMETHEUS_FETCHER: default
TZ: Asia/Shanghai
# 集群模式
SW_CLUSTER: nacos
SW_CLUSTER_NACOS_HOST_PORT: nacos01:8848,nacos02:8848,nacos03:8848
SW_CLUSTER_NACOS_USERNAME: nacos
SW_CLUSTER_NACOS_PASSWORD: nacos
SW_CLUSTER_NACOS_INTERNAL_COM_HOST: 192.168.200.101
SW_CLUSTER_NACOS_INTERNAL_COM_PORT: 11800
# 动态配置
SW_CONFIGURATION: nacos
SW_CONFIG_NACOS_SERVER_ADDR: nacos01
SW_CONFIG_NACOS_SERVER_PORT: 8848
SW_CONFIG_NACOS_SERVER_GROUP: skywalking
SW_CONFIG_NACOS_SERVER_NAMESPACE: skywalking
SW_CONFIG_NACOS_USERNAME: nacos
SW_CONFIG_NACOS_PASSWORD: nacos
restart: on-failure
healthcheck:
test: ["CMD", "./bin/swctl", "ch"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
skywalking_networks:
ipv4_address: 192.168.200.101
skywalking-ui:
image: switchvov/skywalking-ui:${TAG}
container_name: skywalking-ui
depends_on:
- skywalking-oap01
- skywalking-oap02
ports:
- 18080:8080
volumes:
- "./skywalking/ui/webapp.yml:/skywalking/webapp/webapp.yml"
environment:
SW_OAP_ADDRESS: skywalking-oap01:12800,skywalking-oap02:12800
networks:
skywalking_networks:
ipv4_address: 192.168.200.110
deploy:
resources:
limits:
memory: 768M
部署文件:docker.zip
PS:可用内存未大于11G,切勿尝试,如想尝试,请限制容器内存使用。
参考文档
- Skywalking官网
- Skywalking项目README文档v8.4.0
分享并记录所学所见
推荐阅读
- Apache多路复用模块(MPMs)介绍
- 第十六天(请介绍一件让你非常自豪的事情,(不能是职业类的),什么原因感到自豪。)
- typeScript入门基础介绍
- “我不想努力了,能给我介绍个富婆吗(”)
- 今日自我介绍,感恩所遇一切
- 杨梦彤自我介绍
- 第六章|第六章 Sleuth--链路追踪
- 区块链开发平台(以太坊)
- trilinos|trilinos 介绍
- 精准!找到想要的关键字