极客时间运维进阶训练营第八周作业
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