当前位置: 首页 > news >正文

企业建网站的意义ip地址获取

企业建网站的意义,ip地址获取,网页设计网站视频,河北搜索引擎推广价格在前文“分布式应用全链路跟踪实现”中介绍了分布式应用全链路跟踪的几种实现方法#xff0c;本文将重点介绍基于Skywalking的全链路实现#xff0c;包括Skywalking的整体架构和基本概念原理、Skywalking环境部署、SpringBoot和Python集成Skywalking监控实现等。 1、Skywalki…在前文“分布式应用全链路跟踪实现”中介绍了分布式应用全链路跟踪的几种实现方法本文将重点介绍基于Skywalking的全链路实现包括Skywalking的整体架构和基本概念原理、Skywalking环境部署、SpringBoot和Python集成Skywalking监控实现等。 1、Skywalking基本介绍 1.1 Skywalking整体架构 Skywalking 8.x版本架构图 SkyWalking整体架构在逻辑上分为四部分探针Agent、平台后端OAP、存储和UI界面 探针Agent负责从应用中收集链路信息并发送给SkyWalking的OAP服务器。它会收集Tracing和Metrics数据将数据格式化为SkyWalking适用的格式。探针安装在服务所在的服务器上以方便数据的获取。平台后端OAP接收探针发送的数据并在内存中使用分析引擎进行数据的整合运算然后将数据存储到对应的存储介质上。OAP支持数据聚合、数据分析以及驱动数据流从探针到用户界面的流程。分析包括Skywalking原生链路跟踪和性能指标以及第三方来源包括Istio及 Envoy telemetry、Zipkin链路跟踪格式化等。存储通过开放的插件化的接口存放SkyWalking数据目前支持的存储器有Elasticsearch、MySQL、ShardingSphere、TiDB、H2等。用户界面UI负责提供控制台查看链路、服务指标等。UI是一个基于接口高度定制化的Web系统用户可以可视化查看和管理SkyWalking数据。 1.2 Skywalking基本概念 1.2.1 Skywalking中的核心概念 与Prometheus不同SkyWalking的度量机制是围绕以下具有层次结构的核心概念构建的 层Layer表示计算机科学中的一个抽象框架如 Operating SystemOS_LINUX 层、Kubernetesk8s层。该层将是从不同技术检测到的不同服务的所有者。服务表示一组或一组工作负载它为传入请求提供相同的行为。服务实例Service Instance服务组中的单个工作负载。端点Endpoint传入请求的服务路径。进程操作系统进程。在某些场景下service instance不是一个进程比如一个 Kubernetes Pod可能包含多个进程。 1.2.2 Skywalking中的指标流 Metric名称和属性标签由SkyWalking OAP服务器根据数据源以及OAL和MAL配置。SkyWalking 提供了对时间序列指标进行下采样down-sampling并生成不同时间段数据分钟、小时、天的能力。SkyWalking指标流如下 2、Skywalking原理解析 2.1 Skywalking中Trace实现 Skywalking中实现了OpenTracing中的Trace、Span、Tags、Logs等核心概念不同之处是在Trace级别和Span级别之间加了一个Segment概念用于表示一个服务实例内的Span集合。 2.1.1 Trace ID 在Skywalking中全局ID由三个 long 类型的字段part1、part2、part3构成分别记录了ServiceInstanceId、Thread ID和Context生成序列格式如下所示 ${ServiceInstanceId}.${Thread ID}.(${时间戳} * 10000 线程自增序列([0, 9999]))2.1.2 TraceSegment 在SkyWalking中TraceSegment是一个介于Trace与Span之间的概念它是一条Trace的一段可以包含多个Span。在微服务架构中一个请求基本都会涉及跨进程以及跨线程的操作例如RPC调用、通过MQ异步执行、HTTP请求远端资源等处理一个请求就需要涉及到多个服务的多个线程。TraceSegment记录了一个请求在一个线程中的执行流程即Trace信息。将该请求关联的TraceSegment串联起来就能得到该请求对应的完整Trace。 TraceSegment的核心结构如图所示包括以下核心字段 traceSegmentIdID类型TraceSegment的全局唯一标识refsList 类型它指向父TraceSegmentrelatedGlobalTracesDistributedTraceIds类型记录当前TraceSegment所属Trace的Trace ID。spansList类型当前TraceSegment包含的所有Span。ignoreboolean类型ignore字段表示当前TraceSegment是否被忽略。 2.1.3 Context SkyWalking中的每个TraceSegment都与一个Context上下文对象一对一绑定Context上下文不仅记录了TraceSegment的上下文信息还提供了管理TraceSegment生命周期、创建Span以及跨进程跨线程传播相关的功能。 2.2 Trace的收集和发送 2.2.1 Context的生成与采样 应用访问时如果不做任何限制每个请求都会生成一条完整的Trace。在面对海量的业务请求时会同步产生海量的Trace数据对网络和存储都带来巨大的压力因此几乎所有的Trace系统都支持采样功能。在Skywalking Agent中是通过SamplingService服务实现的SamplingService的trySampling()方法递增samplingFactorHolder字段当增加到阈值默认值为3可以通过agent.sample_n_per_3_secs配置进行修改时会返回false表示采样失这时就会生成IgnoredTracerContextIgnoredTracerContext是个空Context实现不会记录Trace信息。 2.2.2 Trace的收集 当TracingContext通过stopSpan()方法关闭最后一个Span时会调用finish()方法关闭相应的TraceSegment与此同时还会通知所有监听TracingContext关闭事件的监听器TracingContextListener。TraceSegmentServiceClient主要功能就是在TraceSegment结束时对其进行收集并发送到后端的OAP集群。 2.3 Skywalking OAP内核架构 Skywalking OAP采用微内核架构使用ModuleManager组件管理器管理多个Module组件一个Module可以对应多个ModuleProvider组件服务提供者ModuleProvider是Module底层真正的实现。 在OAP服务启动时一个Module只能选择使用一个ModuleProvider对外提供服务。一个ModuleProvider可能支撑了一个非常复杂的大功能在一个ModuleProvider中可以包含多个Service一个Service实现了一个ModuleProvider中的一部分功能通过将多个Service进行组装集成可以得到ModuleProvider的完整功能。 3、Skywalking环境部署 Skywalking测试demo环境如下所示分别测试SpringBoot应用和Python程序的监控实现。 1解压安装包使用9.3.0版本 # tar -xzvf apache-skywalking-apm-9.3.0.tar.gz # mv apache-skywalking-apm-bin/ /usr/local/skywalking2修改OAP配置文件指定存储类型为MySQL # vi config/application.yml cluster:selector: ${SW_CLUSTER:standalone} storage:selector: ${SW_STORAGE:mysql}mysql:properties:jdbcUrl: ${SW_JDBC_URL:jdbc:mysql://192.168.112.121:3306/swtest?rewriteBatchedStatementstrueallowMultiQueriestrue}dataSource.user: ${SW_DATA_SOURCE_USER:root}dataSource.password: ${SW_DATA_SOURCE_PASSWORD:123456}dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}maxSizeOfBatchSql: ${SW_STORAGE_MAX_SIZE_OF_BATCH_SQL:2000}asyncBatchPersistentPoolSize: ${SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE:4}3对Webapp进行配置 # vi webapp/application.yml serverPort: ${SW_SERVER_PORT:-18080} # Comma seperated list of OAP addresses. oapServices: ${SW_OAP_ADDRESS:-http://192.168.112.121:12800}默认使用8080端口访问修改为18080 4下载MySQL连接jar并拷贝到oap-libs #下载链接mysql-connector-java-8.0.28.jar https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar # cp mysql-connector-java-8.0.28.jar /usr/local/skywalking/oap-libs/将jar包放在oap-libs目录下即可如果没有连接jar包会抛如下异常 java.lang.RuntimeException: Failed to get driver instance for jdbcUrljdbc:mysql://localhost:3306/swtest?rewriteBatchedStatementstrueallowMultiQueriestrue5连接mysql创建应用库swtest # mysql -uroot -p mysql create database swtest;在mysql中创建配置文件中的应用库swtest否则会提示报错 com.zaxxer.hikari.pool.HikariPool - 574 [main] ERROR [] - HikariPool-1 - Exception during pool initialization.java.sql.SQLSyntaxErrorException: Unknown database swtest6启动Skywalking服务 进入bin目录执行startup.sh文件即可启动SkyWalking平台 cd ../bin ./startup.sh启动成功看log输出日志 2023-11-04 16:06:18,455 - com.linecorp.armeria.common.util.SystemInfo - 237 [main] INFO [] - hostname: tango-db01 (from /proc/sys/kernel/hostname) 2023-11-04 16:06:20,036 - com.linecorp.armeria.server.Server - 797 [armeria-boss-http-*:12800] INFO [] - Serving HTTP at /0:0:0:0:0:0:0:0%0:12800 - http://127.0.0.1:12800/再查看swtest库中已经创建了很多表 mysql show tables; -------------------------------------------------------- | Tables_in_swtest | -------------------------------------------------------- | alarm_record | | alarm_record_tag | | browser_app_error_rate |7访问UI页面端口为18080http://192.168.112.121:18080/ 4、Skywalking全链路监控实现 4.1 SpringBoot应用集成Skywalking监控 4.1.1 环境准备 1在mysql中创建表并插入数据 mysql use sw_mysql; Database changed mysql CREATE TABLE sw_tb ( - id int(11) NOT NULL AUTO_INCREMENT, - username varchar(50) DEFAULT NULL, - password varchar(50) DEFAULT NULL,- PRIMARY KEY (id) - ) ENGINEInnoDB DEFAULT CHARSETutf8- ; Query OK, 0 rows affected, 2 warnings (0.03 sec)mysql insert into sw_mysql.sw_tb(username,password) values(张三,AAA),(李四,BBB),(王五,CCC); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0mysql select * from sw_mysql.sw_tb; ------------------------ | id | username | password | ------------------------ | 1 | 张三 | AAA | | 2 | 李四 | BBB | | 3 | 王五 | CCC | ------------------------ 3 rows in set (0.00 sec)4.1.2 在Eclipse中创建SpringBoot项目 1在pom.xml文件中添加引入Skywalking的依赖包 dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-trace/artifactIdversion8.3.0/version/dependencydependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-log4j-2.x/artifactIdversion8.3.0/version/dependencydependency !-- 引入log4j2依赖 --groupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId/dependency2配置trace 使用apm-toolkit-trace输出traceid信息并修改log4j2.xml配置日志格式。这样会将traceid信息写入日志用于后续的日志采集和集中分析。 Properties!-- 格式化输出%date表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %msg日志消息%n是换行符 %logger{36} 表示 Logger 名字最长36个字符--!--1.文件输出格式--property namefile_pattern value%d{yyyy-MM-dd HH:mm:ss} [%traceId] [%thread] [%-5level] %msg %l%n /!--2.控制台显示日志格式--!--[%traceId]追踪id--!--[%sw_ctx]打印为[$serviceName,$instanceName,$traceId,$traceSegmentId,$spanId]服务名,实例名,追踪id,追踪片段id,跨度id--property nameconsole_pattern value%red{%d{yyyy-MM-dd HH:mm:ss}} [%traceId] %green{[%thread]} %magenta{[%-5level]} %cyan{%msg} %l%n/!--3.skyWalking收集格式--property nameskyWalking_pattern value%msg %l%n/!-- 定义日志存储的路径 --property nameFILE_PATH value./log/spring-skywalking/ /property nameFILE_NAME valuespring-skywalking //Properties3控制程序如下 package com.tango.skywalking_mysql.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import com.tango.skywalking_mysql.SkywalkingMysqlApplication;import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; RestController RequestMapping(/demo) public class DemoController {private static final Logger logger LogManager.getLogger(SkywalkingMysqlApplication.class); Autowiredprivate JdbcTemplate template;GetMapping(/mysql)public String mysql() {String result;try {this.selectById(1);System.out.println(skywalking-test!);logger.info(skywalking-test!);resultMySQL查询正常;} catch(Exception e) {System.out.println(e);logger.error(e);resultMySQL查询异常;}return result;}public Object selectById(Integer id) {return template.queryForObject(SELECT id, username, password FROM sw_tb WHERE id ?,new BeanPropertyRowMapper(Object.class), id);} }4在IDE配置中添加如下选项配置Skywalking agent和服务的地址 -javaagent:D:\Skywalking-demo\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_nameskywalking-demo-service -Dskywalking.collector.backend_service192.168.112.121:118004.1.3 运行SpringBoot服务程序 1运行应用后输出以下信息表示agent启动成功 INFO 2023-11-04 17:11:44.918 main SkyWalkingAgent : Skywalking agent begin to install transformer ... Starting application skywalking_mysql [31m2023-11-04 17:11:52[m [TID: N/A] [32m[main][m [35m[INFO ][m [36mStarting application skywalking_mysql[m com.tango.skywalking_mysql.SkywalkingMysqlApplication.main(SkywalkingMysqlApplication.java:13)2同时能够查看到日志中的traceid信息 [31m2023-11-04 17:17:43[m [TID: e6978740bf3e41bfa6a53760e2d64b8a.44.16988302617370001] [32m[http-nio-18079-exec-1][m [35m[INFO ][m [36mskywalking-test![m com.tango.skywalking_mysql.controller.DemoController.mysql(DemoController.java:29) skywalking-test! [31m2023-11-04 17:20:39[m [TID: e6978740bf3e41bfa6a53760e2d64b8a.47.16988304392400001] [32m[http-nio-18079-exec-4][m [35m[INFO ][m [36mskywalking-test![m com.tango.skywalking_mysql.controller.DemoController.mysql(DemoController.java:29) skywalking-test!3查看服务端的11800端口已经有服务 [roottango-DB01 config]# netstat -an|grep 11800 tcp6 0 0 :::11800 :::* LISTEN tcp6 0 0 192.168.112.121:11800 192.168.112.1:49590 ESTABLISHED4访问SpringBoot应用服务 每查询一次发起一笔业务访问http://192.168.112.1:18079/demo/mysql 4.1.4 登录Skywalking监控服务运行情况 1在Skywalking界面看到新的Serviceskywalking-demo-service 2查看服务的运行性能指标情况 3查看服务的拓扑结构这是一个访问mysql数据库的应用 4查看trace信息 5查看具体的SQL语句执行情况 4.2 Python应用集成Skywalking监控 4.2.1 Python程序中Agent配置 1在Python程序中引入Skywalking Agent from skywalking import agent,config#配置OAP服务信息 config.init(agent_collector_backend_services192.168.112.121:11800, agent_nameskywalking-demo-python) agent.start()4.2.2 运行Python程序在Skywalking监控服务运行情况 1拓扑图如下所示包括服务和mysql数据库 2查看Trace信息 3查看具体执行的SQL信息 4.2.3 代码实现 1完整代码实现如下 # -*- coding: utf-8 -*-import pymysql import sys import time import codecs import logging import base64from skywalking import agent,config # 配置logging模块 logging.basicConfig(filenametest.log, levellogging.INFO) def getInfo(sql):ip192.168.112.121port3306userrootpwdbase64.decodebytes(bMTIzNDU2Cg).strip().decode(utf-8)dbnamesw_mysqlinfo []conn pymysql.connect(hostip,portport,useruser,passwdpwd,databasedbname,charsetutf8)cursor conn.cursor()try:cursor.execute(sql)info cursor.fetchall()except Exception as e:print(e)conn.commit()cursor.close()conn.close()return infoif __name__ __main__:if sys.version[0] 2:reload(sys)sys.setdefaultcoding(utf8)config.init(agent_collector_backend_services192.168.112.121:11800, agent_nameskywalking-demo-python)agent.start()exec_sql select id,username,password from sw_mysql.sw_tbwhile True:get_info getInfo(exec_sql)if len(get_info) 0:print(get_info[0])print(Success!)else:print(Error!) time.sleep(5)agent.stop()以上是基于Skywalking的全链路跟踪的简单指标采集实现。Skywalking功能强大还具备拓扑关联分析、分布式跟踪和上下文传播、告警等功能值得深入研究。 参考资料 https://github.com/apache/skywalkinghttps://github.com/SkyAPM/document-cn-translation-of-skywalkinghttps://skywalking.apache.org/docs/skywalking-pythonhttps://blog.csdn.net/weixin_42073629/article/details/106775584
http://www.pierceye.com/news/655849/

相关文章:

  • 网站建设需要考啥证广告设计与制作专业课程
  • 泸州市往建局建设银行网站名称广州网站建设 推广公司哪家好
  • 运维网站制作dw设计个人网页
  • 南城网站建设公司信息吉林省建设招标网站
  • 怎么把自己的网站上传到百度wordpress 文章拆分
  • 南湖网站建设公司百度app推广方法
  • 做海报用的图片网站数据库端口 wordpress
  • js面向对象网站开发工业控制软件开发
  • 做网站的时候说需求的专业术语app开发定制外包26
  • 辽源网站建设公司做网站有送企业邮箱吗
  • 哈尔滨网站建设可信赖惠州网站制作专业
  • 中法电商网站建设石家庄手机网站建站
  • 北京pk10做号网站官方网站怎么写
  • 半路出家去学计算机网站开发团购做的好的网站
  • 没有网站怎么做CPC模板网站一天建好
  • 淘客网站模版北京网站优化指导
  • 网站域名更改后怎么做映射石家庄新闻主持人
  • 网站报404错误怎么解决办法禹城市建设局网站
  • asp网站建设运用的技术哪里有做商城的网站
  • 沈阳的网站制作公司哪家好七七鱼竞价托管
  • 网站如何做流量赚钱地推公司
  • 众筹网站建设需要多少资金知己图书网站建设策划书
  • 开源房产网站源码网站建设需要数学
  • 网站建设云技术公司推荐企业内部管理软件
  • 网站建设与维护案列北京梵客装饰
  • 网站建设电销话术海口h5建站
  • 网站建设怎么搭建服务器梧州本地网站
  • 佛山哪个做网站的好天津建设工程信息网怎么报名的
  • 专注扬中网站建设无锡免费建设网站
  • 中国建设银行门户网站企业wordpress如何禁止注册