解决方案:DreaMule(文件共享工具)与优采云 万能文章采集器下载评论软件详情对比
优采云 发布时间: 2022-11-27 19:42解决方案:DreaMule(文件共享工具)与优采云
万能文章采集器下载评论软件详情对比
优采云
软件出品的万能文章采集软件,只需输入关键词即可采集各种网页和新闻,也可采集指定列表页(栏目页)的文章。
注意:微信引擎有严格的限制,请将采集线程数设置为1,否则很容易生成验证码。
" />
特征:
1、依托优采云
软件独有的通用文字识别智能算法,可实现对任意网页文字的自动提取,准确率达95%以上。
2. 只需输入关键词即可采集
微信文章、今日头条、一点资讯、百度资讯及网页、搜狗资讯及网页、360资讯及网页、谷歌资讯及网页、必应资讯及网页、雅虎资讯新闻和网页;批量关键词可以自动采集
。
" />
3、可以有针对性的采集
指定网站(如百度经验、*敏*感*词*)栏目列表下的所有文章,智能匹配,无需编写复杂的规则。
4、文章翻译功能,可以将采集
的文章翻译成英文再翻译回中文,实现伪原创翻译,支持谷歌和有道翻译。
5.史上最简单最智能的文章采集
器,更*敏*感*词*一试即知!
解决方案:聊聊Spring Boot服务监控,健康检查,线程信息,JVM堆信息,指标收集
点击上面的“芋头源代码”,选择“”
她在乎前波还是后波?
会浪的浪才是好浪!
每天10:33更新文章,每天掉一亿头头发……
源码精品专栏
去年我们项目做了微服务1.0的架构改造,但是服务监控没跟上。不,最近我被分配了监控我们所有核心微服务应用程序的任务。我们的微服务应用都是SpringBoot应用,那么很自然的就会想到带有Spring Boot的Actuator模块。(如果你没吃过猪肉,你总能听到猪的叫声,看到猪的奔跑)。
这篇文章是我在完成本次工单后对Spring Boot Actuator模块的学习和应用的总结。在本文中,您可以了解到:
那我就介绍一下:
推荐自己的Spring Boot实战项目:
Spring Boot Actuator模块提供了生产级的特性,比如健康检查、审计、指标采集
、HTTP tracing等,帮助我们监控和管理Spring Boot应用。该模块是采集
应用程序内部信息并对外暴露的模块。可以通过 HTTP 和 JMX 访问以上功能。
由于暴露内部信息的性质,Actuator 还可以与一些外部应用程序监控系统(Prometheus、Graphite、DataDog、Influx、Wavefront、New Relic 等)集成。这些监控系统提供出色的仪表板、图表、分析和警报,可帮助您通过统一友好的界面监控和管理您的应用程序。
Actuator 使用 Micrometer 与这些外部应用程序监控系统集成。这使得以最少的配置集成外部监控系统变得容易。
Micrometer在Java平台上提供了通用的性能数据采集API,应用程序只需要使用Micrometer的通用API即可采集性能指标。Micrometer 将负责完成与不同监控系统的适配工作。这使得切换监控系统变得容易。
比较Slf4j在Java Logger中的定位。
推荐一下我自己做的Spring Cloud实战项目:
让我们先创建一个演示应用程序。
spring init -d=web,actuator -n=actuator-demo actuator-demo<br /><br />
图片.png
<br /> ...<br /> <br /> org.springframework.boot<br /> spring-boot-starter-actuator<br /> <br /> ...<br /><br /><br /><br />
dependencies {<br /> compile("org.springframework.boot:spring-boot-starter-actuator")<br />}<br /><br />
Spring Boot 提供了所谓的端点(以下翻译为端点),用于外部访问和与应用程序的交互。
例如,/health 端点提供有关应用程序健康状况的一些基本信息。指标端点提供了一些有用的应用程序指标(JVM 内存使用情况、系统 CPU 使用情况等)。
这些 Actuator 模块已经拥有的端点称为本机端点。根据端点的作用,我们可以大致分为三类:
关于native endpoints的详细介绍请参考官网,这里不再赘述,增加篇幅。
注意:
我们可以通过以下配置配置通过 JMX 和 HTTP 公开的端点。
属性默认值
management.endpoints.jmx.exposure.exclude
management.endpoints.jmx.exposure.include
*
management.endpoints.web.exposure.exclude
management.endpoints.web.exposure.include
资讯、健康
可开启所有监控点
management.endpoints.web.exposure.include=*<br /><br />
也可以选择打开部分,“*”表示暴露所有端点,如果指定多个端点,用“,”隔开
management.endpoints.web.exposure.exclude=beans,trace<br /><br />
Actuator默认所有监控点路径为/actuator/*,当然这个路径也支持根据需要自定义。
management.endpoints.web.base-path=/minitor<br /><br />
设置重启后,访问地址又会变成/minitor/*。
现在我们配置如下:
" />
# "*" 代表暴露所有的端点 如果指定多个端点,用","分开<br />management.endpoints.web.exposure.include=*<br /># 赋值规则同上<br />management.endpoints.web.exposure.exclude=<br /><br />
启动DEMO程序,访问:8080/actuator,查看暴露的端点:
图片.png
上面显示是因为chrome浏览器安装了json-handle插件,实际上返回了一大段json
下面,我将重点介绍几个更重要的端点。
/health 端点聚合应用程序的健康指标以检查应用程序的健康状况。端点公开的应用程序健康信息取决于:
management.endpoint.health.show-details=always<br /><br />
可以使用以下值之一配置此属性:
名称描述
绝不
不显示详细信息,up或down状态,默认配置
何时授权
详细信息将显示给经过身份验证的用户。授权角色可以通过management.endpoint.health.roles配置
总是
向所有用户公开详细信息
按照上面的配置,配置always之后,我们启动项目,访问:8080/actuator/health端口,可以看到如下信息:
图片.png
是不是感觉健康信息少了点?不用担心,这是因为我们创建了一个基本的 Demo 工程,没有依赖很多组件。
/health端点有很多自动配置的健康指标:redis、rabbitmq、db等组件。当你的项目依赖了相应的组件时,会自动组装这些健康指标,然后采集
相应的信息。比如上面的diskSpace节点信息就是DiskSpaceHealthIndicator在工作。
图片.png
以上截图摘自官方文档
这是我来自另一个项目的 /health 端点信息。
图片.png
当上述其中一个组件状态异常时,应用服务整体状态为down。我们也可以通过配置来关闭组件的健康监控。
management.health.mongo.enabled: false<br /><br />
或者禁用所有自动配置的健康指标:
management.health.defaults.enabled: false<br /><br />
当然你也可以自定义一个Health Indicator,只需要实现HealthIndicator接口或者继承AbstractHealthIndicator类即可。
/**<br /> * @author Richard_yyf<br /> * @version 1.0 2020/1/16<br /> */<br />@Component<br />public class CustomHealthIndicator extends AbstractHealthIndicator {<br /><br /> @Override<br /> protected void doHealthCheck(Health.Builder builder) throws Exception {<br /> // 使用 builder 来创建健康状态信息<br /> // 如果你throw 了一个 exception,那么status 就会被置为DOWN,异常信息会被记录下来<br /> builder.up()<br /> .withDetail("app", "这个项目很健康")<br /> .withDetail("error", "Nothing, I'm very good");<br /> }<br />}<br /><br />
最终效果:
图片.png
/metrics端点用于返回当前应用的各种重要指标,如:内存信息、线程信息、垃圾回收信息、tomcat、数据库连接池等。
{<br /> "names": [<br /> "tomcat.threads.busy",<br /> "jvm.threads.states",<br /> "jdbc.connections.active",<br /> "jvm.gc.memory.promoted",<br /> "http.server.requests",<br /> "hikaricp.connections.max",<br /> "hikaricp.connections.min",<br /> "jvm.memory.used",<br /> "jvm.gc.max.data.size",<br /> "jdbc.connections.max",<br /> ....<br /> ]<br />}<br /><br />
与1.x不同的是,Actuator在这个界面上看不到具体的指标信息,而只是展示了一个指标列表。为了获取某个指标的详细信息,我们可以请求具体的指标信息,像这样:
http://localhost:8080/actuator/metrics/{MetricName}<br /><br />
比如我访问/actuator/metrics/jvm.memory.max,返回的信息如下:
图片.png
您还可以使用查询参数来查看单个区域。例如,您可以访问/actuator/metrics/jvm.memory.max?tag=id:Metaspace。结果是:
图片.png
/loggers 端点公开有关我们程序中配置的所有记录器的信息。我们可以通过访问/actuator/loggers看到,
图片.png
" />
您还可以通过以下方式访问单个记录器,
http://localhost:8080/actuator/loggers/{name}<br /><br />
例如,如果我现在访问根记录器,:8080/actuator/loggers/root
{<br /> "configuredLevel": "INFO",<br /> "effectiveLevel": "INFO"<br />}<br /><br />
/loggers端点我最想说的就是这个功能,它可以动态修改你的日志级别。
例如,我们可以通过以下方式修改root logger的日志级别。我们只需要发起一个POST请求,URL为:8080/actuator/loggers/root,POST消息如下:
{<br /> "configuredLevel": "DEBUG"<br />}<br /><br />
图片.png
仔细想想,这个功能是不是很有用?如果在生产环境中,想让你的应用输出一些Debug信息,以便诊断一些异常情况,只需要按照上面的方法修改即可,不需要重启应用。
如果要重置为默认值,请将值更改为 null
/info 端点可用于显示有关您的程序的信息。我了解的是一些程序的基本信息。并且你可以根据自己的需要在配置文件application.properties中进行个性化配置(默认情况下,这个端点只会返回一个空的json内容。):
info.app.name=actuator-test-demo<br />info.app.encoding=UTF-8<br />info.app.java.source=1.8<br />info.app.java.target=1.8<br /># 在 maven 项目中你可以直接用下列方式引用 maven properties的值<br /># info.app.encoding=@project.build.sourceEncoding@<br /># info.app.java.source=@java.version@<br /># info.app.java.target=@java.version@<br /><br />
要启动项目,请访问:8080/actuator/info:
{<br /> "app": {<br /> "encoding": "UTF-8",<br /> "java": {<br /> "source": "1.8.0_131",<br /> "target": "1.8.0_131"<br /> },<br /> "name": "actuator-test-demo"<br /> }<br />}<br /><br />
/beans 端点将返回 Spring 容器中所有 bean 的别名、类型、单例和依赖项等信息。
访问:8080/actuator/beans,返回如下:
图片.png
访问::8080/actuator/heapdump 会自动生成一个Jvm堆文件heapdump。我们可以使用JDK自带的Jvm监控工具VisualVM打开这个文件查看内存快照。
图片.png
我个人觉得这个端点很好用,可以让我们每天定位问题的时候查看线程的状态。主要显示线程名称、线程ID、线程状态、是否等待锁资源、线程堆栈等信息,可能看起来不够直观。访问:8080/actuator/threaddump 返回如下:
图片.png
该端点属于操作控制类端点,可以优雅的关闭Spring Boot应用。要使用此功能,首先需要在配置文件中启用它:
management.endpoint.shutdown.enabled=true<br /><br />
由于shutdown接口默认只支持POST请求,所以我们启动Demo工程,向:8080/actuator/shutdown发起POST请求。返回信息:
{<br /> "message": "Shutting down, bye..."<br />}<br /><br />
然后关闭应用程序。
由于打开和关闭应用程序本身的操作是一件非常危险的事情,所以在实际在线使用时,我们需要为其添加一定的保护机制,例如:自定义Actuator的端点路径,集成Spring Security进行安全验证,等(如果不是特别需要,这个端点不需要打开)
由于端点信息和由此产生的交互非常敏感,因此必须防止未经授权的外部访问。如果您的应用程序依赖于 Spring Security,则默认情况下使用基于表单的 HTTP 身份验证来保护端点。
如果没有,只需添加相应的依赖项:
<br /> org.springframework.boot<br /> spring-boot-starter-security<br /><br /><br />
添加后,我们需要定义安全验证规则来覆盖Spring Security的默认配置。
这里我给出两个版本的模板配置:
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;<br />import org.springframework.boot.actuate.context.ShutdownEndpoint;<br />import org.springframework.boot.autoconfigure.security.servlet.PathRequest;<br />import org.springframework.context.annotation.Configuration;<br />import org.springframework.security.config.annotation.web.builders.HttpSecurity;<br />import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;<br /><br />/**<br /> * @author Richard_yyf<br /> */<br />@Configuration<br />public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {<br /><br /> /*<br /> * version1:<br /> * 1. 限制 '/shutdown'端点的访问,只允许ACTUATOR_ADMIN访问<br /> * 2. 允许外部访问其他的端点<br /> * 3. 允许外部访问静态资源<br /> * 4. 允许外部访问 '/'<br /> * 5. 其他的访问需要被校验<br /> * version2:<br /> * 1. 限制所有端点的访问,只允许ACTUATOR_ADMIN访问<br /> * 2. 允许外部访问静态资源<br /> * 3. 允许外部访问 '/'<br /> * 4. 其他的访问需要被校验<br /> */<br /><br /> @Override<br /> protected void configure(HttpSecurity http) throws Exception {<br /> // version1<br />// http<br />// .authorizeRequests()<br />// .requestMatchers(EndpointRequest.to(ShutdownEndpoint.class))<br />// .hasRole("ACTUATOR_ADMIN")<br />// .requestMatchers(EndpointRequest.toAnyEndpoint())<br />// .permitAll()<br />// .requestMatchers(PathRequest.toStaticResources().atCommonLocations())<br />// .permitAll()<br />// .antMatchers("/")<br />// .permitAll()<br />// .antMatchers("/**")<br />// .authenticated()<br />// .and()<br />// .httpBasic();<br /><br /> // version2<br /> http<br /> .authorizeRequests()<br /> .requestMatchers(EndpointRequest.toAnyEndpoint())<br /> .hasRole("ACTUATOR_ADMIN")<br /> .requestMatchers(PathRequest.toStaticResources().atCommonLocations())<br /> .permitAll()<br /> .antMatchers("/")<br /> .permitAll()<br /> .antMatchers("/**")<br /> .authenticated()<br /> .and()<br /> .httpBasic();<br /> }<br />}<br /><br />
application.properties的相关配置如下:
# Spring Security Default user name and password<br />spring.security.user.name=actuator<br />spring.security.user.password=actuator<br />spring.security.user.roles=ACTUATOR_ADMIN<br />
-结尾-
欢迎加入我的知识星球,一起探讨架构,交流源码。要加入,请按住下面的二维码:
知识星球上已更新源码,分析如下:
最近更新的系列《太郎SpringBoot 2.X入门》101多篇,涵盖MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo 、RabbitMQ、RocketMQ、Kafka、性能测试等。
提供了一个近3W行代码的SpringBoot实例,以及一个4W多行代码的电商微服务项目。