極客時間運維進階訓練營第八週作業

1、基於 docker-compose 或二進制部署 SkyWalking

#部署系統 安裝es
echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -p
dpkg -i /usr/local/src/elasticsearch-8.5.1-amd64.deb

cp /etc/elasticsearch/elasticsearch.yml{,.bak}

tee /etc/elasticsearch/elasticsearch.yml << "EOF"
cluster.name: skywalking-cluster
node.name: node1
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.56.157",]
cluster.initial_master_nodes: ["192.168.56.157",]


path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: false
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
http.host: 0.0.0.0
EOF

systemctl restart elasticsearch.service
systemctl enabled elasticsearch.service


#部署系統二進制安裝skywalking
apt-update
apt install -y openjdk-11-jdk
install -d /apps
tar xzf /usr/local/src/apache-skywalking-apm-9.3.0.tar.gz  -C /apps/
ln -s /apps/apache-skywalking-apm-bin/ /apps/skywalking
cp /apps/skywalking/config/application.yml{,.bak}
sed -i 's/selector: ${SW_STORAGE:h2}/selector: ${SW_STORAGE:elasticsearch}/g' /apps/skywalking/config/application.yml
sed -i 's/clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}/clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.56.157:9200}/g' /apps/skywalking/config/application.yml

tee /etc/systemd/system/skywalking.service << "EOF"
[Unit]
Description=Apache Skywalking
After=network.target
[Service]
Type=oneshot
User=root
WorkingDirectory=/apps/skywalking/bin/
ExecStart=/bin/bash /apps/skywalking/bin/startup.sh
RemainAfterExit=yes
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload && systemctl restart skywalking && systemctl enable  skywalking
# 登錄地址: http://192.168.56.151:8080/

2、實現單體服務 Halo 博客和 Jenkins 的請求鏈路跟蹤

2.1 halo 博客

#部署系統 安裝skywalking agent
install -d /data
tar xzf /usr/local/src/apache-skywalking-java-agent-8.13.0.tgz  -C /data/
cp /data/skywalking-agent/config/agent.config{,.bak}
sed -i 's/agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}/agent.service_name=${SW_AGENT_NAME:ic_halo}/g' /data/skywalking-agent/config/agent.config
sed -i 's/agent.namespace=${SW_AGENT_NAMESPACE:}/agent.namespace=${SW_AGENT_NAMESPACE:ic-java}/g' /data/skywalking-agent/config/agent.config
sed -i 's/collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}/collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.56.151:11800}/g' /data/skywalking-agent/config/agent.config


# 安裝halo博客
apt update
apt install -y openjdk-11-jdk
java -version
install -d /apps
cd /apps && curl -O https://dl.halo.run/release/halo-1.6.1.jar
java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/halo-1.6.1.jar

# 入口 http://192.168.56.158:8090   admin\12345678

2.2 jenkins

# tomcat 部署
install -d /apps
tar xf /usr/local/src/apache-tomcat-8.5.84.tar.gz -C /apps/
rm -fr /apps/apache-tomcat-8.5.84/webapps/*
cp /usr/local/src/jenkins.war  /apps/apache-tomcat-8.5.84/webapps/
cp /data/skywalking-agent/config/agent.config{,.bak}
sed -i 's/agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}/agent.service_name=${SW_AGENT_NAME:ic_jenkins}/g' /data/skywalking-agent/config/agent.config

vim /apps/apache-tomcat-8.5.84/bin/catalina.sh
# 開頭添加內容
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS

 /apps/apache-tomcat-8.5.84/bin/catalina.sh run

3、實現 Dubbo 微服務實現鏈路跟蹤案例

#部署 安裝zookeeper 註冊中心
apt update
apt install -y openjdk-8-jdk
install -d /apps
tar xzf /usr/local/src/apache-zookeeper-3.7.1-bin.tar.gz  -C /apps/
cp /apps/apache-zookeeper-3.7.1-bin/conf/zoo_sample.cfg /apps/apache-zookeeper-3.7.1-bin/conf/zoo.cfg
/apps/apache-zookeeper-3.7.1-bin/bin/zkServer.sh  start

#部署系統 dubbo 微服務 服務端
apt update
apt install -y openjdk-8-jdk
install -d /data
tar xzf /usr/local/src/apache-skywalking-java-agent-8.13.0.tgz  -C /data/
cp /data/skywalking-agent/config/agent.config{,.bak}
sed -i 's/agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}/agent.service_name=${SW_AGENT_NAME:ic_dubbo_server1}/g' /data/skywalking-agent/config/agent.config
sed -i 's/agent.namespace=${SW_AGENT_NAMESPACE:}/agent.namespace=${SW_AGENT_NAMESPACE:ic-java2}/g' /data/skywalking-agent/config/agent.config
sed -i 's/collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}/collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.56.151:11800}/g' /data/skywalking-agent/config/agent.config


echo "export ZK_SERVER1=192.168.56.153"  >> /etc/profile

source /etc/profile
install -d /apps/dubbo/provider
cp /usr/local/src/dubbo-server.jar  /apps/dubbo/provider/

java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/dubbo/provider/dubbo-server.jar

# zookeeper 查看數據

root@skywalking-zookeeper:/apps/apache-zookeeper-3.7.1-bin/bin# ./zkCli.sh
ls /dubbo/com.od.dubbotest.api.HelloService/providers


# 安裝dubbo client 端
apt update
apt install -y openjdk-8-jdk
install -d /data
# 部署client端
tar xzf /usr/local/src/apache-skywalking-java-agent-8.13.0.tgz  -C /data/
cp /data/skywalking-agent/config/agent.config{,.bak}
sed -i 's/agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}/agent.service_name=${SW_AGENT_NAME:ic_dubbo_consumer1}/g' /data/skywalking-agent/config/agent.config
sed -i 's/agent.namespace=${SW_AGENT_NAMESPACE:}/agent.namespace=${SW_AGENT_NAMESPACE:ic-java2}/g' /data/skywalking-agent/config/agent.config
sed -i 's/collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}/collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.56.151:11800}/g' /data/skywalking-agent/config/agent.config
echo "export ZK_SERVER1=192.168.56.153"  >> /etc/profile
source /etc/profile
install -d /apps/dubbo/consumer
cp /usr/local/src/dubbo-client.jar /apps/dubbo/consumer/
java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/dubbo/consumer/dubbo-client.jar
# 驗證 http://192.168.56.156:8080/hello?name=zhangsan

  

4、實現 skywalking 的釘釘告警

4.1 設置釘釘機器人

 

 

 

 

 

 

 

 

4.2 設置skywalking

tee /apps/skywalking/config/alarm-settings.yml << "EOF"
rules:  #定義rule規則
  service_cpm_rule: #唯一的規則名稱,必須以_rule結尾
    # Metrics value need to be long, double or int
    metrics-name: service_cpm  #指標名稱
    op: ">" #操作符,>, >=, <, <=, ==
    threshold: 1 #指標閾值
    # The length of time to evaluate the metrics
    period: 1 #評估指標的間隔週期
    # How many times after the metrics match the condition, will trigger alarm
    count: 1 #匹配成功多少次就會觸發告警
    # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
    #silence-period: 3
    silence-period: 0 #觸發告警後的靜默時間
    message: "dubbo-provider service_cpm 被訪問的次數超過1次了" #告警信息

dingtalkHooks:
  textTemplate: |-
    {
      "msgtype": "text",
      "text": {
        "content": "Apache SkyWalking Alarm: \n %s."
      }
    }
  webhooks:
    - url: https://oapi.dingtalk.com/robot/send?access_token=bed3ba562f6816f750435e6292c648b011aa9e02f860f5f5f6b8f6cc77d48ed7
EOF
 systemctl  restart skywalking

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章