Git Product home page Git Product logo

autohomecorp / frostmourne Goto Github PK

View Code? Open in Web Editor NEW
1.4K 1.4K 305.0 64.08 MB

Frostmourne(霜之哀伤监控平台)是基于Elasticsearch, Prometheus, SkyWalking, InfluxDB,Mysql/TiDB,ClickHouse, SqlServer, IoTDB数据的分布式监控报警系统. Monitor & alert & alarm for Elasticsearch,Prometheus data。主要使用springboot2 + vue-element-admin

Home Page: https://frostmourne-demo.github.io

License: MIT License

Java 71.79% HTML 0.04% JavaScript 11.98% Vue 15.16% Shell 0.22% SCSS 0.80%
alarm alert alertmanager clickhouse dingtalk-robot elastalert elasticsearch element-ui influxdb iotdb logging monitor mybatis mybatis-dynamic-sql prometheus skywalking springboot2 vue vue-element-admin wechat-message

frostmourne's Issues

docker部署,mysql监控,后台会报查询mysql出错。

从后台执行日志看,应该是执行查询时没有传递mysql的密码引起的。
我反复确认过多次,数据源肯定是定义了用户名和密码。我查看data_source表,proterties字段中保存了正确的用户名密码。
并且在新增告警时,页面中的“测试”按钮执行是能正确返回结果的。

"2021-01-30T00:34:39.210+08:00" "WARN" "com.autohome.frostmourne.monitor.service.core.execute.GenerateShortLinkService" "55" "-" "-" "error when generate short link. response: {""returncode"":0,""message"":""ok"",""result"":""""}" "com.autohome.frostmourne.monitor.service.core.execute.GenerateShortLinkService" "generate" "-" "-" "tech" "frostmourne" "frostmourne.monitor" "-" "394" "Thread-264" "-" "172.18.0.4" "-" "-" "-" "-" "-"
"2021-01-30T00:34:47.230+08:00" "ERROR" "com.alibaba.druid.pool.DruidDataSource" "53" "java.sql.SQLException" "Access denied for user 'xxxxxx'@'10.10.5.220' (using password: YES)" "create connection error, url: jdbc:mysql://10.10.5.27:3306/xxxxxxx" "com.alibaba.druid.support.logging.Log4j2Impl" "error" "-" "-" "tech" "frostmourne" "frostmourne.monitor" "-" "226" "Druid-ConnectionPool-Create-1187914410" "-" "172.18.0.4" "-" "-" "-" "-" "java.sql.SQLException: Access denied for user 'xxxxxx'@'10.10.5.220' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)
at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1888)

通过HTTP监控告警出现unknown exception

我想通过监控prometheus http api 来触发告警, 在后台配置好监控地址后, 浏览数据正常.
{
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"name": "kafka_cluster_partition_atminisr",
"instance": "localhost:9991",
"job": "ad-kafka",
"partition": "0",
"topic": "ad_station"
},
"value": [
1648002724.339,
"0"
]
}
]
},
"HTTP_STATUS": 200,
"EXPRESSION": "data.result[0].value[0] > 10",
"HTTP_COST": 2,
"status": "success"
}

然后在告警规则中判断表达式: data.result[0].value[0] > 10
最后保存的时候提示: unknown exception

请问我有哪里写的有问题吗?

用户问题

每次新增用户的时候需要重启spi服务,没法自助处理。

建议前期先增加用户管理功能方便用户自助维护,后期根据功能需要再对接第三方用户系统,比如sso,ldap之类的。

frostmoure如何配置AWS_ES作为数据源

java.lang.NumberFormatException: For input string: ""//vpc-oregon-elk-es.xxxxxxxxxxxxx.us-west-2.es.amazonaws.com"
1.配置ES数据源是否只能通过:地址+端口形式(127.0.0.1:91200),现在使用AWS_ES地址(服务地址:https//vpc-oregon-elk-es.xxxxxxxxxxxxx.us-west-2.es.amazonaws.com)配置数据源出现以上错误
2.使用地址+端口形式(vpc-oregon-elk-es.xxxxxxxxxxxxx.us-west-2.es.amazonaws.com:443)但由于AWS_ES服务现在原因出现400,AWS_ES服务不支持http请求请问如何
请教一下需要如何进行正确配置

监控编辑保存的问题

提交保存是失败,报如下异常

feign.FeignException: Unexpected character ('<' (code 60)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: (BufferedReader); line: 1, column: 2] reading POST http://192.168.1.109:8089/xxl-job-admin/jobinfo/add
at feign.FeignException.errorReading(FeignException.java:120) ~[feign-core-10.5.1.jar:?]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:157) ~[feign-core-10.5.1.jar:?]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:80) ~[feign-core-10.5.1.jar:?]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103) ~[feign-core-10.5.1.jar:?]
at com.sun.proxy.$Proxy95.addJob(Unknown Source) ~[?:?]
at com.autohome.frostmourne.monitor.service.admin.impl.ScheduleService.addJob(ScheduleService.java:33) ~[classes/:?]
at com.autohome.frostmourne.monitor.service.admin.impl.AlarmAdminService.saveJobSchedule(AlarmAdminService.java:406) ~[classes/:?]
at com.autohome.frostmourne.monitor.service.admin.impl.AlarmAdminService.save(AlarmAdminService.java:267) ~[classes/:?]
at com.autohome.frostmourne.monitor.service.admin.impl.AlarmAdminService.atomicSave(AlarmAdminService.java:110) ~[classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_91]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_91]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:205) ~[spring-aop-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at com.sun.proxy.$Proxy97.atomicSave(Unknown Source) ~[?:?]
at com.autohome.frostmourne.monitor.controller.AdminController.save(AdminController.java:29) ~[classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_91]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_91]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) [spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) [spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-embed-websocket-9.0.29.jar:9.0.29]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591) [tomcat-embed-core-9.0.29.jar:9.0.29]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.29.jar:9.0.29]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_91]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.29.jar:9.0.29]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: (BufferedReader); line: 1, column: 2]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1840) ~[jackson-core-2.10.1.jar:2.10.1]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:712) ~[jackson-core-2.10.1.jar:2.10.1]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:637) ~[jackson-core-2.10.1.jar:2.10.1]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1917) ~[jackson-core-2.10.1.jar:2.10.1]
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:773) ~[jackson-core-2.10.1.jar:2.10.1]
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4340) ~[jackson-databind-2.10.1.jar:2.10.1]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4189) ~[jackson-databind-2.10.1.jar:2.10.1]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3234) ~[jackson-databind-2.10.1.jar:2.10.1]
at feign.jackson.JacksonDecoder.decode(JacksonDecoder.java:61) ~[feign-jackson-10.4.0.jar:?]
at feign.SynchronousMethodHandler.decode(SynchronousMethodHandler.java:178) ~[feign-core-10.5.1.jar:?]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:142) ~[feign-core-10.5.1.jar:?]
... 65 more

建议调度配置后可以显示预期执行时间

[简述你的问题]
调度配置完成后,希望能提供一个按钮,查看接下来几次的执行时间。

使用版本

[请提供你使用的frostmourne版本]
0.1-RELEASE

具体表现[截图可能会更好些,最好能截全]

类似 Cron 为 0 0/40 * * * ? ,点击按钮显示如下:
2020-06-16 11:40:00
2020-06-16 12:00:00
2020-06-16 12:40:00
2020-06-16 13:00:00
2020-06-16 13:40:00

[注:] 完成后请关闭 issue

使用ldap登录,返回用户不存在

非常感谢此项目,目前在使用的时候,遇到一些问题,希望能白忙之中帮忙解答一下。
谢谢。

情况

开启了 ldap 认证之后,登录提示用户不存在(ldap中是存在登录的用户的,并且在 Jenkins 中配置 ldap 登录,同一用户也能登录 Jenkins)。

monitor 版本

部署使用的是 docker-compose ,镜像:

registry.cn-hangzhou.aliyuncs.com/kechangqing/frostmourne:0.4

ldap 配置

ldap_enabled: 'true'
spring_ldap_urls: ldap://example.com:10389
spring_ldap_username: cn=admin,dc=example,dc=com
spring_ldap_password: xxxxxx
spring_ldap_base: dc=example,dc=com
spring_ldap_auth_searchFilter: uid={0}

同样尝试了 spring_ldap_base 中指定 ou,也是提示用户不存在。

monitor 报错日志

"2021-02-23T11:06:48.684+08:00" "ERROR" "com.autohome.frostmourne.monitor.config.GlobalControllerAdvice"        "24"    "com.autohome.frostmourne.core.contract.ProtocolException"      "用户不存在"    "global catch exception"     "com.autohome.frostmourne.monitor.config.GlobalControllerAdvice"        "handleProtocolException"       "-"     "-"     "tech"  "frostmourne"   "frostmourne.monitor"   "-"     "217"   "http-nio-10054-exec-10"     "-"     "172.20.0.4"    "-"     "-"     "-"     "-"     "com.autohome.frostmourne.core.contract.ProtocolException: 用户不存在
        at com.autohome.frostmourne.monitor.controller.UserController.login(UserController.java:52)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
        at java.lang.reflect.Method.invoke(Method.java:508)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1160)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:822)

ldap 日志

发现 ldap 中收到了 2 次请求

60347148 conn=1473 fd=28 ACCEPT from IP=172.18.0.1:53676 (IP=0.0.0.0:389)
60347148 conn=1473 op=0 BIND dn="cn=admin,dc=example,dc=com" method=128
60347148 conn=1473 op=0 BIND dn="cn=admin,dc=example,dc=com" mech=SIMPLE ssf=0
60347148 conn=1473 op=0 RESULT tag=97 err=0 text=
60347148 conn=1473 op=1 SRCH base="dc=example,dc=com" scope=2 deref=3 filter="(uid=testuser)"
60347148 conn=1473 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
60347148 conn=1473 op=2 UNBIND
60347148 conn=1473 fd=28 closed
60347148 conn=1474 fd=28 ACCEPT from IP=172.18.0.1:53680 (IP=0.0.0.0:389)
60347148 conn=1474 op=0 BIND dn="uid=testuser,ou=People,dc=example,dc=com" method=128
60347148 conn=1474 op=0 BIND dn="uid=testuser,ou=People,dc=example,dc=com" mech=SIMPLE ssf=0
60347148 conn=1474 op=0 RESULT tag=97 err=0 text=
60347148 conn=1474 op=1 UNBIND
60347148 conn=1474 fd=28 closed

是否可以添加手动确认告警actived

是否可以添加手动确认告警actived, 比如告警连续在发生然后我们可以手动点击这个告警然后进行确认,一段时间内此告警就不会发生了。

连接https的Elasticsearch失败

"2021-03-22T17:33:52.008+08:00" "ERROR" "com.autohome.frostmourne.monitor.dao.elasticsearch.EsRestClientContainer" "102" "javax.net.ssl.SSLHandshakeException" "PKIX path building failed: com.ibm.security.cert.IBMCertPathBuilderException: unable to find valid certification path to requested target" "error when check cluster health" "com.autohome.frostmourne.monitor.dao.elasticsearch.EsRestClientContainer" "health" "-" "-" "tech" "frostmourne" "frostmourne.monitor" "-" "222" "http-nio-10054-exec-1" "-" "10.101.1.211" "-" "-" "-" "-" "javax.net.ssl.SSLHandshakeException: PKIX path building failed: com.ibm.security.cert.IBMCertPathBuilderException: unable to find valid certification path to requested target
at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:947)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:229)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1762)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1732)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1694)
at org.elasticsearch.client.ClusterClient.health(ClusterClient.java:146)
at com.autohome.frostmourne.monitor.dao.elasticsearch.EsRestClientContainer.health(EsRestClientContainer.java:100)
at com.autohome.frostmourne.monitor.dao.elasticsearch.ElasticsearchSourceManager.reloadEsRestClientContainer(ElasticsearchSourceManager.java:47)
at com.autohome.frostmourne.monitor.service.admin.impl.DataAdminService.saveDataSource(DataAdminService.java:74)
at com.autohome.frostmourne.monitor.controller.DataNameController.saveDataSource(DataNameController.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1160)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:822)
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: com.ibm.security.cert.IBMCertPathBuilderException: unable to find valid certification path to requested target
at com.ibm.jsse2.g.a(g.java:58)
at com.ibm.jsse2.ba.a(ba.java:38)
at com.ibm.jsse2.ba.a(ba.java:101)
at com.ibm.jsse2.ba.a(ba.java:62)
at com.ibm.jsse2.y$c.a(y$c.java:166)
at com.ibm.jsse2.y$c.a(y$c.java:10)
at com.ibm.jsse2.y$c.consume(y$c.java:6)
at com.ibm.jsse2.p.consume(p.java:43)
at com.ibm.jsse2.Z.a(Z.java:73)
at com.ibm.jsse2.bf$a$b.a(bf$a$b.java:2)
at com.ibm.jsse2.bf$a$b.run(bf$a$b.java:3)
at java.security.AccessController.doPrivileged(AccessController.java:774)
at com.ibm.jsse2.bf$a.run(bf$a.java:26)
at org.apache.http.nio.reactor.ssl.SSLIOSession.doRunTask(SSLIOSession.java:288)
at org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:356)
at org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:537)
at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:120)
at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)
... 1 more
Caused by: com.ibm.jsse2.util.j: PKIX path building failed: com.ibm.security.cert.IBMCertPathBuilderException: unable to find valid certification path to requested target
at com.ibm.jsse2.util.h.a(h.java:120)
at com.ibm.jsse2.util.h.b(h.java:5)
at com.ibm.jsse2.util.g.a(g.java:10)
at com.ibm.jsse2.bq.a(bq.java:32)
at com.ibm.jsse2.bq.a(bq.java:70)
at com.ibm.jsse2.bq.checkServerTrusted(bq.java:10)
at com.ibm.jsse2.y$c.a(y$c.java:99)
... 19 more
Caused by: com.ibm.security.cert.IBMCertPathBuilderException: unable to find valid certification path to requested target
at com.ibm.security.cert.SunCertPathBuilder.build(SunCertPathBuilder.java:139)
at com.ibm.security.cert.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:124)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:292)
at com.ibm.jsse2.util.h.a(h.java:124)
... 25 more

配置告警项提示问题

配置告警项的时候,没有任务提示或提示比较隐蔽,一眼看不出来配置的有没有问题

LDAP账号同步问题

这个只做了密码认证功能,每次来新人的时候需要手动创建用户信息,比较麻烦

当 [数据名] 未填写 [说明] 时,监控编辑中数据源选择显示为空白(可选取)

[简述你的问题]

当 [数据名] 未填写 [说明] 时,监控编辑中数据源选择显示为空白(可选取)

使用版本

[请提供你使用的frostmourne版本]
master:6452c52

具体表现[截图可能会更好些,最好能截全]

数据名

ID 名称 说明
1 dev dev_env
2 ops
3 prod

监控编辑——>数据配置——>数据,下拉框显示为

  • dev_env
  • 空白
  • 空白

其他

可以考虑下拉框显示 [数据名] 中的 [名称],鼠标悬停显示 [说明]

[注:] 完成后请关闭 issue

报警发送添加对用户组的支持并且可以自动发现供选取

[简述你的问题]
希望能通过所属团队查看监控列表,报警发送支持用户组的形式。
对已存在的用户组,在报警发送界面可以支持自动发现供选取。

使用版本
[请提供你使用的frostmourne版本]
0.1-RELEASE

具体表现[截图可能会更好些,最好能截全]
GroupA 对应 UserA,UserB,UserC
通过选择GroupA即可发送至UserA,UserB,UserC

其他
用户组中的用户可能属于不同部门,需要灵活调整。

[注:] 完成后请关闭 issue

提一条关于恢复告警的小建议

能否支持单独的查询项来确定告警是否恢复。因为有些服务的告警日志是重要且偶发的,服务日志可以定义相应的关键字来确定服务状态是否恢复。望采纳(●'◡'●)

当数据源为多层json时,[数据查询]中部分字段会显示为undefined

[简述你的问题]

当数据为多层json时,[数据查询]中部分字段会显示为undefined

使用版本

[请提供你使用的frostmourne版本]
master:6452c52

具体表现[截图可能会更好些,最好能截全]

数据查询——>当数据源为多层json格式
例如:

{
    "@timestamp": "2020-07-08T12:40:04.712Z",
    "architecture": "x86_64",
    "os": {
        "kernel": "6.1.7601.24545 (win7sp1_ldr_escrow.200102-1707)",
        "build": "7601.24544",
        "platform": "windows",
        "version": "6.1",
        "family": "windows",
        "name": "Windows Server 2008 R2 Enterprise"
    }
}

其中的 os 字段在表格中会显示为 undefined,数据展开后显示正常

@timestamp architecture os
2020-07-08T12:40:04.712Z x86_64 undefined

[注:] 完成后请关闭 issue

连接Microsoft LDAP异常

ldap_enabled=true
spring_ldap_urls=192.168.1.2
spring_ldap_username=tech
spring_ldap_password=abc@123
spring_ldap_base=ou=技术部,dc=sh,dc=energy-blockchain,dc=com
spring_ldap_auth_searchFilter=sAMAccountName={0}

"2020-11-30T10:53:56.281+08:00" "ERROR" "com.autohome.frostmourne.monitor.service.account.impl.LdapAuthService" "38" "org.springframework.ldap.UncategorizedLdapException" "Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: Cannot parse url: 192.168.1.2/ou=æ%C2%8A%C2%80æ%C2%9C¯é%C2%83¨,dc=sh,dc=energy-blockchain,dc=com [Root exception is java.net.MalformedURLException: Invalid URI: 192.168.1.2/ou=æ%C2%8A%C2%80æ%C2%9C¯é%C2%83¨,dc=sh,dc=energy-blockchain,dc=com]" "error when ldap authenticate user: bin.sun" "com.autohome.frostmourne.monitor.service.account.impl.LdapAuthService" "validate" "-" "-" "tech" "frostmourne" "frostmourne.monitor" "-" "25" "http-nio-10054-exec-3" "-" "192.168.1.166" "-" "-" "-" "-" "org.springframework.ldap.UncategorizedLdapException: Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: Cannot parse url: 192.168.1.2/ou=æ%C2%8A%C2%80æ%C2%9C¯é%C2%83¨,dc=sh,dc=energy-blockchain,dc=com [Root exception is java.net.MalformedURLException: Invalid URI: 192.168.1.2/ou=æ%C2%8A%C2%80æ%C2%9C¯é%C2%83¨,dc=sh,dc=energy-blockchain,dc=com]

不清LDAP这块的配置该如何配置的,报了一个如图的错误,用的是微软的AD Server,配置如图,Urls和base这两块配置找了下没有可供参考的。

数据查询页面不支持ES8

org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=x_content_parse_exception, reason=[1:792] [date_histogram] unknown field [interval] did you mean [fixed_interval]?]

希望支持按指定字段进行分组Count功能

现在监控的数据配置里,聚合类型指定为count时,就无法再指定聚合字段。(指定其他聚合类型时,就可以指定聚合字段)。
无法满足一次监控多个动态桶的聚合指标是否异常的需求。

希望修改一下,允许按指定聚合字段进行分组count,并进行指标判断和告警。

关于功能需求。

1、可以加入排班制度,不在班次的人不会被发送告警消息。 我们公司是白夜休休的值班制度,可以设置不值班的时间不会被企业微信机器人@,不被发送邮件等。。
2、希望相关的技术文档更多更详细一些。

提两个小建议

1、如果事件发生的时间是21点到早上6点,非紧急告警可以只做记录,而非直接推送。
2、获取到告警消息后 支持告警的分组处理,比如 获取到service.name,发给相关的负责人

聚合类型为count时可以按字段吗

各位大佬好,目前的平台在聚合类型为count时可以按字段统计吗,如下:
nginx的5xx按域名字段来统计数量并告警,比如单个域名5xx达到10次就告警
目前的count是不区分域名,统计的都是所有值

es数据分桶统计后如何按BUCKETS来告警

大佬好,又来提问了,es数据分桶统计后如何按BUCKETS来告警,返回的json串中有BUCKETS字段,可以循环输出在一个告警项中,或者按每个BUCKETS中的值分开告警吗?

火狐浏览器兼容问题

目前时间类型的字段在火狐浏览器里面会出现无法正常展示的问题,希望能够在后面的版本中进行修复

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.