jolokia
DevOps是当今最热门的话题之一。 并且围绕它的广泛主题使您很难真正找到完整的描述或涵盖体面粒度的所有内容。 可以肯定的一件事是:最重要的部分之一是提供正确的度量标准和信息以监视应用程序。
Java EE和JMX
监视Java EE服务器的标准方法是JMX。 使用JConsole,VisualVM或Oracle Mission-Control Suite等工具可以实现此目的。 这种方法有很多优点,并且大多数操作团队实际上在过去经常使用这种方法。 但这并不完全适用于DevOps方式。 这是一个单独的工具,在没有安装所有工具和操作系统(Nagios等)的情况下,DevOps团队没有一种好的方法来实际编写脚本。 如今,使用http端点公开配置和运行时信息感觉更加自然,而且使用起来也更加容易。
Jolokia –使用JSON的JMX到HTTP
对于JMX,最方便的方法是使用Jolokia 。 Jolokia是一个JMX-HTTP桥,可替代JSR-160连接器。 这是一种基于代理的方法,支持许多平台。 除了基本的JMX操作外,它还通过独特的功能(例如批量请求和细粒度的安全策略)增强了JMX远程处理功能。 最近,它与许多JBoss项目捆绑在一起(例如WIldFly-Camel子系统),并且可以轻松地在自己的应用程序中使用。
装有Jolokia的简单Java EE 7应用
只需创建一个简单的Java EE 7项目(也许使用Adam Bien的maven工件 )并向其中添加一个依赖项即可:
<dependency><groupId>org.jolokia</groupId><artifactId>jolokia-core</artifactId><version>1.3.1</version></dependency>
下一步是在web.xml中配置Jolokia AgentServlet并将其映射到适合您需求的模式:
<servlet><servlet-name>jolokia-agent</servlet-name><servlet-class>org.jolokia.http.AgentServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>jolokia-agent</servlet-name><url-pattern>/metrics/*</url-pattern></servlet-mapping>
照常构建您的应用程序,并根据需要访问相关指标。 完整的。 Jolokia参考资料解释了不同的操作和类型 。
将您的应用程序部署到WildFly 9
将WildFly 9下载并解压缩到您选择的文件夹中。 使用bin / standalone.xml启动。
指标示例
虽然您可以访问服务器中定义的每个JMX MBean,但这里是一系列指标,它们可能会帮助您立即使用。
堆内存使用情况:
- http:// localhost:8080 / javaee-devops / metrics / read / java.lang:type = Memory / HeapMemoryUsage
{"request": {"mbean": "java.lang:type=Memory","attribute": "HeapMemoryUsage","type": "read"},"value": {"init": 67108864,"committed": 241696768,"max": 477626368,"used": 141716336},"timestamp": 1437392335,"status": 200
}
服务器环境概述:
- http:// localhost:8080 / javaee-devops / metrics / read / jboss.as:core-service = server-environment
您不仅可以读取JMX属性,还可以执行操作,例如访问server.log文件的最新10行:
- http:// localhost:8080 / javaee-devops / metrics / exec / jboss.as.expr:subsystem = logging / readLogFile / server.log / UTF-8 / 10/0 / true
保护端点
如您所料,可以像访问应用程序一样访问AgentServlet。 为了防止这种情况,您必须对其进行保护。 好消息是,使用WildFly中的基本身份验证和应用程序领域,这是可能的。 第一步是将用户添加到应用程序领域。 这可以通过bin / add-user.sh | bat脚本来完成。 确保添加角色“ SuperUser”。 现在将以下内容添加到您的web.xml中:
<security-constraint><display-name>Metrics Pages</display-name><web-resource-collection><web-resource-name>Protected Metrics Site</web-resource-name><description>Protected Metrics Site</description><url-pattern>/metrics/*</url-pattern></web-resource-collection><auth-constraint><description/><role-name>SuperUser</role-name></auth-constraint><user-data-constraint><transport-guarantee>NONE</transport-guarantee></user-data-constraint></security-constraint><login-config><auth-method>BASIC</auth-method><realm-name>ApplicationRealm</realm-name></login-config><security-role> <role-name>SuperUser</role-name> </security-role>
最后要做的就是将一个文件添加到WEB-INF /中,名为jboss-web.xml。 这将仅包含三行:
<jboss-web><security-domain>other</security-domain>
</jboss-web>
现在,无论何时尝试访问度量标准终结点,服务器都会向您发出基本身份验证请求。
寻找更多?
这只是基于WildFly公开的标准JMX指标的一个简单示例。 您可以肯定地注册自己的MBean或通过将单个调用聚合为一个来扩展它。 另一个选择是,将hawt.io用作即用型可扩展UI,该UI已经为WildFly和许多其他子系统提供了各种指标。 但这是非常简单的方法。 Jolokia的下一个主要版本可能会提供更多功能,使DevOps的使用更加方便。
翻译自: https://www.javacodegeeks.com/2015/07/monitoring-devops-style-with-wildfly-9-and-jolokia.html
jolokia