banner
云野阁

云野阁

闲云野鹤,八方逍遥

docker デプロイ SkyWalking

前言#

🔜SkyWalkingとは?🔚

優れた国産 APM ツールです。

分散システムのアプリケーションパフォーマンス監視ツールで、マイクロサービス、クラウドネイティブアーキテクチャ、コンテナ(Docker、K8s、Mesos)アーキテクチャ向けに設計されています。

分散トレーシング、サービスメッシュのテレメトリー分析、メトリクスの集約と可視化を統合的に提供します。

SkyWalking のアーキテクチャは UI、OAP、ストレージ、プローブの 4 つの部分に分かれています。

その中で UI はSkyWalking UI :コンソールの提供、トレーシングの確認などを担当します;(可視化表示)

OAP はSkyWalking OAP :エージェント(プローブ)から送信されたトレーシングデータ情報を受信し、分析(Analysis Core) を行い、外部ストレージ ( Storage ) に保存し、最終的にクエリ ( Query ) 機能を提供します。(データ分析)

ストレージはトレーシングデータの保存を担当します。現在、ES、MySQL、Sharding Sphere、TiDB、H2 などの複数のストレージをサポートしています。現在、私たちが採用しているのは ES で、主に SkyWalking 開発チーム自身の生産環境が ES を使用しているためです。(データ保存)

プローブはエージェント:アプリケーションからトレーシング情報を収集し、SkyWalking OAP サーバーに送信します。現在、SkyWalking、Zikpin、Jaeger などが提供するトレーシングデータ情報をサポートしています。現在、私たちが採用しているのは、SkyWalking エージェントが SkyWalking トレーシングデータを収集し、サーバーに渡すことです。(データ収集)

環境準備#

(1)スクリプトを使用して docker、docker-compose をインストールします。

bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

(2)イメージの加速を設定します。

vi /etc/docker/daemon.json

{
  "data-root": "/data/dockerData",
  "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com",
    "https://huecker.io",
    "https://docker.rainbond.cc",
    "https://dockerhub.timeweb.cloud",
    "https://dockerhub.icu",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc",
    "https://docker.kubesre.xyz"],
    "log-driver":"json-file",
    "log-opts":{"max-size" :"50m","max-file":"3"}
}

(3)docker サービスを起動します。

systemctl start docker
systemctl enable docker
systemctl status docker

(4)メモリマッピングに関連するカーネルパラメータを 262144 に設定し、システムに適用されるカーネルパラメータを確認します。

echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

デプロイ手順#

(1)デプロイファイルに必要なストレージディレクトリを作成します。

mkdir -p /data/elasticsearch/data /data/elasticsearch/logs /data/skywalking/oap
chmod -R 777 /data/elasticsearch

(2)一時的な skywalking-oap-server コンテナを作成し、skywalking 設定ファイルをマウントディレクトリにコピーします。

cd /data/skywalking/oap
# 一時的なskywalking-oap-serverコンテナを作成し、skywalking設定ファイルをホストディレクトリにコピーします
docker run -itd --name=oap-temp apache/skywalking-oap-server:9.5.0
docker cp  oap-temp:/skywalking/config/. .
docker rm -f oap-temp

(3)skywalking の設定ファイル application.yml を修正し、elasticsearch をデータストレージとして設定します。

vi application.yml

storage:
  selector: ${SW_STORAGE:elasticsearch} #h2をelasticsearchに変更
  elasticsearch:
    namespace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:ローカルIP:9200} #localhostをホストIPに変更
    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
    connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
    socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
    responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000}
    numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}
    user: ${SW_ES_USER:"elastic"} #esのアカウントを入力
    password: ${SW_ES_PASSWORD:"elastic"} #esパスワードを入力
    trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
    trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}

(4)docker-compose ファイルを作成し、skywalking、es、skywalking-ui を編成します。

vi skywalking.yml

services:
  elasticsearch:
    image: elasticsearch:8.15.0
    container_name: elasticsearch
    restart: always
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms1g -Xmx1g
      - ELASTIC_PASSWORD=elastic
      - TZ=Asia/Shanghai
    ports:
      - "9200:9200"
      - "9300:9300"
    healthcheck:
      test: [ "CMD-SHELL", "curl --silent --fail -u elastic:elasitc localhost:9200/_cluster/health || exit 1" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
  logging:
      driver: "json-file"
      options:
        max-size: "50m"
        max-file: "3"
    volumes:
      - /data/elasticsearch/data:/usr/share/elasticsearch/data
      - /data/elasticsearch/logs:/usr/share/elasticsearch/logs
      - /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins
    networks:
      skywalking-network:
        ipv4_address: 172.20.110.11
    ulimits:
      memlock:
        soft: -1
        hard: -1

  skywalking-oap:
    image: apache/skywalking-oap-server:9.5.0
    container_name: skywalking-oap
    restart: always
    ports:
      - "11800:11800"
      - "12800:12800"
      - "1234:1234"  
    healthcheck:
      test: [ "CMD-SHELL", "/skywalking/bin/swctl health" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    depends_on:
      elasticsearch:
        condition: service_healthy
    environment:
      - SW_STORAGE=elasticsearch
      - SW_HEALTH_CHECKER=default
      - TZ=Asia/Shanghai
      - JVM_Xms=512M
      - JVM_Xmx=1024M
      - SW_STORAGE_ES_CLUSTER_NODES=ローカルIP:9200
    volumes:
      - /data/skywalking/oap:/skywalking/config
    networks:
      skywalking-network:
        ipv4_address: 172.20.110.12


  skywalking-ui:
    image: apache/skywalking-ui:9.5.0
    container_name: skywalking-ui
    restart: always
    environment:
      - SW_OAP_ADDRESS=http://ローカルIP:12800
      - SW_ZIPKIN_ADDRESS=http://ローカルIP:9412
      - TZ=Asia/Shanghai
    ports:
      - "8080:8080"
    depends_on:
      skywalking-oap:
        condition: service_healthy
    networks:
      skywalking-network:
        ipv4_address: 172.20.110.13

networks:
  skywalking-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.110.0/24
docker compose -f skywalking.yml up -d

Skywalking は以下の 2 つの方法で es に接続できます。どちらか一方を使用してください。

Skywalking が HTTP 認証を介して Elasticsearch に接続

# esのssl証明書認証を無効にする
docker exec -it elasticsearch bash -c ' sed -i "s/  enabled: true/  enabled: false/g" /usr/share/elasticsearch/config/elasticsearch.yml'
docker exec -it elasticsearch bash -c 'cat /usr/share/elasticsearch/config/elasticsearch.yml'
docker restart elasticsearch
docker restart skywalking-oap

Skywalking が HTTPS SSL 認証を介して Elasticsearch に接続

(1) es の crt と key 証明書ファイルを p12 形式に変換します。

openssl pkcs12 -export -in ca.crt -inkey ca.key -out es.p12 -name esca -CAfile es.crt

2 回 keypass を入力し、-name パラメータはエイリアスです。

openssl pkcs12 -export -in ca.crt -inkey ca.key -out es.p12 -name esca -CAfile es.crt
Enter Export Password:
Verifying - Enter Export Password:

(2) p12 形式の証明書を jks 証明書に変換します。

JDK をインストールします。keytoolは JDK の一部であり、証明書変換操作を行うには JDK をインストールする必要があります。

 yum install - java-11-openjdk-devel

storepass パラメータは jks 証明書のパスワードで、srcstorepass パラメータは p12 証明書のパスワードです。

keytool -importkeystore -v -srckeystore es.p12 -srcstoretype PKCS12  -srcstorepass wasd2345  -deststoretype JKS -destkeystore es.jks -storepass qiswasd2345

storage:
selector: ${SW_STORAGE}
elasticsearch:
namespace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:es があるサーバーのアドレス:443}
protocol: 443${SW_STORAGE_ES_HTTP_PROTOCOL:"https"}
connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000}
numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}
user: ${SW_ES_USER:"es ユーザー名"}
password: ${SW_ES_PASSWORD:"es パスワード"}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:"jks 証明書のパス"}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:"jks 証明書のパスワード"}

Linux 監視を有効にする#

Prometheus node-exporter を VM からメトリクスデータを収集するためにインストールします。(ソースコード方式)#

yum install -y wget
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar -xvzf node_exporter-1.8.2.linux-amd64.tar.gz
cd 
mv node_exporter-1.8.2.linux-amd64/node_exporter /usr/sbin/
cd /usr/sbin/
./node_exporter

実行されているかどうかを確認します。

curl http://localhost:9100/metrics

node_exporter サービスファイルを作成します。

vi /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node exporter service
Documentation=https://prometheus.io
After=network.target

[Service]
Type=simple
User=root
Group=root
#node_exporterの保存場所
ExecStart=/usr/sbin/node_exporter  
Restart=on-failure

[Install]
WantedBy=multi-user.target

システム管理者の設定ファイルを再読み込みし、node_exporter サービスを起動して自動起動を設定します。

systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporter
systemctl status node_exporter

Prometheus node-exporter(コンテナ方式)をインストールします。#

services:
  node-exporter:
    image: quay.io/prometheus/node-exporter
    container_name: node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 9100:9100
    networks:
       linux_exporter:
        ipv4_address: 172.20.104.11

networks:
  linux_exporter:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.104.0/24

OpenTelemetry Collector をインストールします。#

OpenTelemetry Collector 設定ファイルを作成します。

mkdir /data/opentelemetry-collector
vi /data/opentelemetry-collector/config.yaml

receivers:
  prometheus:
    config:
     scrape_configs:
       - job_name: 'vm-monitoring' #skywalking-oapのotel-rulesのvm.yamlの名前と一致させる
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:9100']
             labels:
               host_name: 10.10.2.145
               service: oap-server
processors:
  batch:

exporters:
  otlp:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging:
    loglevel: debug

service:
  pipelines:
    metrics:
      receivers: [prometheus]
      processors: [batch]
      exporters: [otlp, logging]
services:
  otelcol:
    image: otel/opentelemetry-collector
    container_name: otelcol
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /data/opentelemetry-collector/config.yaml:/etc/otelcol/config.yaml
    networks:
       opentelemetry:
        ipv4_address: 172.20.101.11

networks:
  opentelemetry:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.101.0/24

opentelemetry-collector の最新のイメージ設定ファイルの変更は、最新のコンテナイメージ(0.113.0)で exporters の中で debug を使用して logging の代わりに使用します
つまり、v0.86.0 バージョン以前は logging を使用します

exporters:
otlp:
endpoint: ip + ポート
tls:
insecure: true
logging:
loglevel: debug

その後、debug を使用します

exporters:
otlp:
endpoint: ip + ポート
tls:
insecure: true
debug:
verbosity: detailed

SkyWalking サービスの自己監視を有効にする#

バックエンドテレメトリーを有効にし、skywalking-oap の設定ファイル application.yml で prometheus の部分を見つけ、パラメータを修正します。

telemetry:
  selector: ${SW_TELEMETRY:prometheus} #noneをprometheusに変更
  none:
  prometheus:
    host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}
    port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
    sslEnabled: ${SW_TELEMETRY_PROMETHEUS_SSL_ENABLED:false}
    sslKeyPath: ${SW_TELEMETRY_PROMETHEUS_SSL_KEY_PATH:""}
    sslCertChainPath: ${SW_TELEMETRY_PROMETHEUS_SSL_CERT_CHAIN_PATH:""}

OpenTelemetry Collector 設定ファイルに自己監視のパラメータを追加します。

receivers:
  prometheus:
    config:
     scrape_configs:
       - job_name: 'vm-monitoring'
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:9100']
             labels:
               host_name: 10.10.2.145
               service: skywalking-oap-server
  prometheus/2:  #追加
    config:
     scrape_configs:
       - job_name: 'skywalking-so11y'  #skywalking-oapのotel-rulesのoap.yamlの名前と一致させる
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:1234']   #ポートは1234
             labels:
               host_name: 10.10.2.145_self
               service: skywalking-oap


processors:
  batch:
  batch/2:

exporters:
  otlp:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging:
    loglevel: debug
  otlp/2:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging/2:
    loglevel: debug

service:
  pipelines:
    metrics:
      receivers: [prometheus, prometheus/2]
      processors: [batch, batch/2]
      exporters: [otlp, otlp/2, logging, logging/2]

otelcol コンテナと skywalking-oap を順次再起動し、自己監視が生成されているか確認します。

MySQL/MariaDB データベースの監視を有効にする#

(1)mysqld_exporter をデプロイします。

services:
  mysqld_exporter:
    image: prom/mysqld-exporter
    container_name: mysqld_exporter
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "9104:9104"
    command:
      - "--mysqld.username=user:password"   #ユーザー名とパスワード
      - "--mysqld.address=10.10.2.145:3306"   #IPとポート番号
    networks:
       sw-mysql:
        ipv4_address: 172.20.102.11

networks:
  sw-mysql:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.102.0/24

(2)OpenTelemetry Collector 設定ファイルに mysql の監視パラメータを追加します。

receivers:
  prometheus:
    config:
     scrape_configs:
       - job_name: 'vm-monitoring'
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:9100']
             labels:
               host_name: 10.10.2.145
               service: skywalking-oap-server
  prometheus/2:
    config:
     scrape_configs:
       - job_name: 'skywalking-so11y'
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:1234']
             labels:
               host_name: 10.10.2.145_self
               service: skywalking-oap

  prometheus/3:  #mysql、mariadbの監視部分
    config:
     scrape_configs:
       - job_name: 'mysql-monitoring' #skywalking-oapのotel-rules/mysqlディレクトリのyamlファイルの名前と一致させる
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:9104']
             labels:
               host_name: mariadb-monitoring

processors:
  batch:
  batch/2:
  batch/3:

exporters:
  otlp:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging:
    loglevel: debug
  otlp/2:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging/2:
    loglevel: debug
  otlp/3:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging/3:
    loglevel: debug

service:
  pipelines:
    metrics:
      receivers:
      - prometheus
      - prometheus/2
      - prometheus/3
      processors:
      - batch
      - batch/2
      - batch/3
      exporters:
      - otlp
      - otlp/2
      - otlp/3
      - logging
      - logging/2
      - logging/3

otelcol コンテナと skywalking-oap を順次再起動し、mysql または mariadb の監視データが生成されているか確認します。

Elasticsearch の監視を有効にする#

(1)elasticsearch_exporter をデプロイします。

services:
  elasticsearch_exporter:
    image: quay.io/prometheuscommunity/elasticsearch-exporter:latest
    container_name: elasticsearch_exporter
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "9114:9114"
    command:
      #- '--es.uri=http://elastic:[email protected]:9200'   #esはhttpプロトコルを使用
      - '--es.uri=https://elastic:[email protected]:9200' 
      - "--es.ssl-skip-verify"   #esに接続する際にSSL検証をスキップ
    networks:
       es_exporter:
        ipv4_address: 172.20.103.11

networks:
  es_exporter:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.103.0/24

(2)OpenTelemetry Collector 設定ファイルに es の監視パラメータを追加します。

receivers:
  prometheus:
    config:
     scrape_configs:
       - job_name: 'elasticsearch-monitoring'
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:9114']
             labels:
               host_name: elasticsearch-monitoring


processors:
  batch:

exporters:
  otlp:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging:
    loglevel: debug

service:
  pipelines:
    metrics:
      receivers:
      - prometheus
      processors:
      - batch
      exporters:
      - otlp
      - logging

otelcol コンテナと skywalking-oap を順次再起動し、es の監視データが生成されているか確認します。

PostgreSQL データベースの監視を有効にする#

(1)postgres-exporter をデプロイします。

services:
  postgres-exporter:
    image: quay.io/prometheuscommunity/postgres-exporter
    container_name: postgres-exporter
    restart: always
    environment:
      TZ: "Asia/Shanghai"
      DATA_SOURCE_URI: "localhost:5432/postgres?sslmode=disable"
      DATA_SOURCE_USER: "postgres"
      DATA_SOURCE_PASS: "password"
    ports:
      - "9187:9187"
    networks:
       sw-pgsql:
        ipv4_address: 172.20.105.11

networks:
  sw-pgsql:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.105.0/24

(2)OpenTelemetry Collector 設定ファイルに postgresql の監視パラメータを追加します。

receivers:
  prometheus:
    config:
     scrape_configs:
       - job_name: 'postgresql-monitoring'
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:9187']
             labels:
               host_name: postgresql-monitoring


processors:
  batch:

exporters:
  otlp:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging:
    loglevel: debug

service:
  pipelines:
    metrics:
      receivers:
      - prometheus
      processors:
      - batch
      exporters:
      - otlp
      - logging

skywalking-oap コンテナと otelcol を順次再起動し、postgresql の監視データが生成されているか確認します。

MongoDB データベースの監視を有効にする#

(1)mongodb_exporter をデプロイします。

services:
  mongodb_exporter:
    image: percona/mongodb_exporter:0.40
    container_name: mongodb_exporter
    restart: always
    ports:
      - "9216:9216"
    environment:
      - TZ=Asia/Shanghai
      - MONGODB_URI=mongodb://user:[email protected]:27017/?authSource=admin
    command:
      - --collect-all
      - --web.listen-address=:9216
    networks:
       sw-mongodb:
        ipv4_address: 172.20.106.11

networks:
  sw-mongodb:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.106.0/24

(2) OpenTelemetry Collector 設定ファイルに mongodb の監視パラメータを追加します。

receivers:
  prometheus:
    config:
     scrape_configs:
       - job_name: 'mongodb-monitoring'
         scrape_interval: 5s
         static_configs:
           - targets: ['10.10.2.145:9216']
             labels:
               host_name: mongodb-monitoring


processors:
  batch:

exporters:
  otlp:
    endpoint: 10.10.2.145:11800
    tls:
      insecure: true
  logging:
    loglevel: debug

service:
  pipelines:
    metrics:
      receivers:
      - prometheus
      processors:
      - batch
      exporters:
      - otlp
      - logging

.NET プロジェクトサービスのトレーシングを有効にする#

SkyWalking .NET Core エージェントをインストール(Windows 環境)#

(1)Visual Studio のプロジェクトにnugetパッケージSkyAPM.Agent.AspNetCoreをインストールします。

(2)launchSettings.jsonファイルに環境変数"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore""SKYWALKING__SERVICENAME": "サービス名(実行するdllプログラムの名前と一致)"を追加します。

  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:5205",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        //環境変数を追加
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore",
        "SKYWALKING__SERVICENAME": "サービス名(実行するdllプログラムの名前と一致)"
      }
    },
    "https": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7105;http://localhost:5205",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        //環境変数を追加
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore",
        "SKYWALKING__SERVICENAME": "サービス名(実行するdllプログラムの名前と一致)"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
         //環境変数を追加
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore",
        "SKYWALKING__SERVICENAME": "サービス名(実行するdllプログラムの名前と一致)"
      }
    }
  }
,

(3)Program.cs に設定パラメータを追加します。

//SkyApm
builder.Services.AddSkyApmExtensions();
Environment.SetEnvironmentVariable
("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "SkyAPM.Agent.AspNetCore");
Environment.SetEnvironmentVariable("SKYWALKING__SERVICENAME", "サービス名(実行するdllプログラムの名前と一致)");

(4)skyapm.json ファイルを追加します。追加方法は 2 つあります。

1 つは、dll 実行プログラムの同じディレクトリに skyapm.json を作成し、以下の内容を書き込みます。

{
  "SkyWalking": {
    "ServiceName": "サービス名(実行するdllプログラムの名前と一致)",
    "Namespace": "",
    "HeaderVersions": [
      "sw8"
    ],
    "Sampling": {
      "SamplePer3Secs": -1,
      "Percentage": -1.0
    },
    "Logging": {
      "Level": "Information",
      "FilePath": "logs\\skyapm-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "ProtocolVersion": "v8",
      "QueueSize": 30000,
      "BatchSize": 3000,
      "gRPC": {
        "Servers": "SkyWalkingサービスIP:11800",
        "Timeout": 10000,
        "ConnectTimeout": 10000,
        "ReportTimeout": 600000,
        "Authentication": ""
      }
    }
  }
}

2 つ目は、Visual Studio のコンソールでコマンドを入力して skyapm.json を作成します。

dotnet tool install -g SkyAPM.DotNet.CLI
dotnet skyapm config サービス名(実行するdllプログラムの名前と一致) SkyWalkingサービスIP:11800

(5)設定が完了したら、実行中のサーバーに環境変数を追加します。

方法 1:サーバーに追加します。

vi  ~/.bashrc


export ASPNETCORE_ENVIRONMENT=development
export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
export SKYWALKING__SERVICENAME=サービス名


#設定を有効にする
source ~/.bashrc

方法 2:コンテナに追加する場合は、Dockerfile ファイルに追加できます。

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
......
ENV ASPNETCORE_ENVIRONMENT=development
ENV ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
ENV SKYWALKING__SERVICENAME=サービス名
#コンテナのエントリーポイント
ENTRYPOINT ["dotnet", "xxx"]

(6).NET プロジェクトにアクセスし、Skywalking の一般サービス - サービスで生成されたサービス監視を確認します。(効果図は最後にあります)

SkyWalking .NET Core エージェントをインストール(Linux 環境)#

Linux 上で作成された.NET プロジェクトに適用されます。

(1)SkyWalking .NET Core エージェントをインストールします。

dotnet add package SkyAPM.Agent.AspNetCore
export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
export SKYWALKING__SERVICENAME=サービス名(実行するdllプログラムの名前と一致)

(2)SkyAPM.DotNet.CLI をインストールし、skyapm.json を生成します。

dotnet tool install -g SkyAPM.DotNet.CLI
dotnet skyapm config サービス名(実行するdllプログラムの名前と一致) SkyWalkingサービスIP:11800

(3)設定が完了したら、実行中のサーバーに環境変数を追加します。

方法 1:サーバーに追加します。

vi  ~/.bashrc


export ASPNETCORE_ENVIRONMENT=development
export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
export SKYWALKING__SERVICENAME=サービス名


#設定を有効にする
source ~/.bashrc

方法 2:コンテナに追加する場合は、Dockerfile ファイルに追加できます。

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
......
ENV ASPNETCORE_ENVIRONMENT=development
ENV ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
ENV SKYWALKING__SERVICENAME=サービス名
#コンテナのエントリーポイント
ENTRYPOINT ["dotnet", "xxx"]

(4).NET プロジェクトにアクセスし、Skywalking の一般サービス - サービスで生成されたサービス監視を確認します。

1

フロントエンド監視を統合する#

(1)プロジェクトに skywalking-client-js パッケージを追加します。

npm install skywalking-client-js --save

(2)vue.config.js にプロキシを設定します。

proxy:{
      '/browser': {
        target:'SkyWalkingサービスIP:12800',//ここはルーティングとエラーレポートのプロキシ
        changeOrigin: true
      },
      '/v3':{
        target:'SkyWalkingサービスIP:12800',
        changeOrigin: true//ここはトレーシングレポートのプロキシ
      }
}

(3)main.js に skywalking-client-js を統合します。

//skywalking監視システム
import ClientMonitor from 'skywalking-client-js';
//skywalkingを登録
ClientMonitor.register({
    service: 'サービス名',//サービス名        
    serviceVersion:'',//アプリケーションバージョン番号
    traceSDKInternal:true,//トレーシングSDK
    pagePath: location.href,//現在のルートアドレス
    useFmp: true
});

(4) 対応するビジネスシステムのサーバーで、対応する nginx プロキシサービスに対応するプロキシ設定を追加します。

    location /browser/ {
        proxy_pass http://SkyWalkingサービスIP:12800/browser/;
        client_max_body_size 1000M;
    }
        location /v3/ {
        proxy_pass http://SkyWalkingサービスIP:12800/v3/;
        client_max_body_size 1000M;
    }
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。