首页 文章 精选 留言 我的

精选列表

搜索[monitoring],共704篇文章
优秀的个人博客,低调大师

第 34 章 smartd - SMART Disk Monitoring Daemon

配置表示smartd以静默状态工作,当SMART中报告PASSED的时候不理睬一旦出现Failure,立刻用邮件通知用户指定的邮箱 vi /etc/smartd.conf /dev/sdb -H -m neo@domain.com 修改配置后重启服务: /etc/init.d/smartd start Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a>comments powered by Disqus 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

图解JanusGraph系列 - JanusGraph指标监控报警(Monitoring JanusGraph

大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 地址:https://liyangyang.blog.csdn.net/article/details/111031257 源码分析相关可查看github(码文不易,求个star~): https://github.com/YYDreamer/janusgraph 转载文章请保留以下声明: 作者:洋仔聊编程、微信公众号:匠心Java、原文地址:https://my.oschina.net/jiangxinJava 正文 JanusGraph框架提供了一些可监控的指标,用于我们在使用janus图数据库时可以对一些指标进行监控,下面我们看下如何配置使用Janusgraph监控! 本文主要讲解了3部分: 监控的指标类型和配置 监控指标数据展示存储的位置(Reporter) 实战应用案例,并对打印出的指标进行了分析 最后给出一个监控设计的架构图 一:监控的底层实现 JanusGraph通过支持Metrics来实现指标数据收集,什么是Metrics? Metrics是框架Dropwizard提供的一个lib包,主要用于项目指标的收集作用,JanusGraph就是基于Metrics这个组件开发的指标收集模块; Dropwizard是一个Java框架,用于开发对操作友好的高性能RESTful Web服务,将来自Java生态系统的稳定,成熟的库汇集到一个简单的程序包中,使我们可以专注于完成工作。 Dropwizard对复杂的配置,应用程序指标,日志记录,操作工具等提供了开箱即用的支持; 二:JanusGraph中的指标 JanusGraph可以收集以下指标: begin,commit和 roll back的事务数 每种存储后端操作类型的 请求次数 和 失败次数 每种存储后端操作类型的响应时间分布 2.1 配置指标收集 要启用指标标准收集,需要在JanusGraph的属性文件中设置以下内容: # Required to enable Metrics in JanusGraph metrics.enabled = true 此设置使JanusGraph在运行时使用计时器、计数器、直方图等Metrics类记录测量结果。 自定义默认指标名称 默认情况下,JanusGraph为所有度量标准名称添加“ org.janusgraph”前缀。可以通过metrics.prefix配置属性设置此前缀。例如,将默认的“ org.janusgraph”前缀缩短为“ janusgraph”: # Optional metrics.prefix = janusgraph 特定事务指标名称 每个JanusGraph事务都可以选择指定其自己的指标名称前缀,从而覆盖默认的指标名称前缀和 metrics.prefix配置属性。例如,可以将前缀更改为打开JanusGraph事务的前端应用程序的名称。 请注意,Metrics在内存中维护度量标准名称及其相关对象的ConcurrentHashMap,因此,保持不同度量标准前缀的数量较小可能是个好主意。 下面使用案例: JanusGraph graph = ...; // 获取图实例连接 TransactionBuilder tbuilder = graph.buildTransaction(); // 开启一个事务构建器 JanusGraphTransaction tx = tbuilder.groupName("foobar").start(); // 开启一个事务,并开启指标收集,Metrics前缀为foobar 下面为groupName的方法定义: * Sets the name prefix used for Metrics recorded by this transaction. If * metrics is enabled via {@link GraphDatabaseConfiguration#BASIC_METRICS}, * this string will be prepended to all JanusGraph metric names. * * @param name Metric name prefix for this transaction * @return Object containing transaction prefix name property */ TransactionBuilder groupName(String name); 分开指标统计 JanusGraph在默认情况下组合了其各种内部存储后端句柄的指标,也就是说:会将所有的操作统一收集为一种类型指标; 存储后端交互的所有指标标准都遵循“ <prefix> .stores.<opname>”模式,无论它们是否是idStore,edgeStore的操作等; 如果想要分开每种操作类型收集的指标,配置以下参数: metrics.merge-basic-metrics = false metrics.merge-basic-metrics = false在JanusGraph的属性文件中进行设置时,指标标准名称“stores”将被替换为对应“ idStore”,“ edgeStore”,“ vertexIndexStore”或“ edgeIndexStore”,如下述: <prefix>.idStore.<opname> <prefix>.edgeStore.<opname> <prefix>.vertexIndexStore.<opname> <prefix>.edgeIndexStore.<opname> 2.2 配置指标报告 要访问这些收集好的指标值,必须配置一个或多个Metrics的Reporting; 也就是说配置一个或多个指标的输出存储的位置; JanusGraph 支持下述的这7种 Metrics reporters: Console CSV Ganglia Graphite JMX Slf4j User-provided/Custom 每种reporter类型独立于其他reporter,并且可以共存。 例如,可以将Ganglia、JMX和Slf4j Metrics报告器配置为同时运行,只需在janusgraph.properties中设置它们各自的配置键即可(并启用metrics.enabled = true) Console Reporter 配置键 是否必须? 值 默认 metrics.console.interval 是 将指标转储到控制台之间需要等待的毫秒数 空值 示例janusgraph.properties片段,每分钟将指标输出到控制台一次: metrics.enabled = true # Required; specify logging interval in milliseconds metrics.console.interval = 60000 CSV文件 Reporter 配置键 是否必须? 值 默认 metrics.csv.interval 是 写入CSV行之间需要等待的毫秒数 空值 metrics.csv.directory 是 写入CSV文件的目录(如果不存在则将创建) 空值 示例janusgraph.properties片段,每分钟将CSV文件写入一次到目录./foo/bar/(相对于进程的工作目录): metrics.enabled = true # Required; specify logging interval in milliseconds metrics.csv.interval = 60000 metrics.csv.directory = foo/bar Ganglia Reporter 注意 由于Ganglia的LGPL许可与JanusGraph的Apache 2.0许可冲突,因此配置Ganglia需要一个附加的库,该库未与JanusGraph一起打包。要使用Ganglia监视运行,请org.acplt:oncrpc从此处下载 jar 并将其复制到JanusGraph/lib目录,然后再启动服务器。 配置键 是否必须? 值 默认 metrics.ganglia.hostname 是 将指标发送到的单播主机或多播组 空值 metrics.ganglia.interval 是 发送数据报之间等待的毫秒数 空值 metrics.ganglia.port 否 我们向其发送指标数据报的UDP端口 8649 metrics.ganglia.addressing-mode 否 必须为“unicast”或“multicast” unicast metrics.ganglia.ttl 否 组播数据报TTL; 忽略单播 1个 metrics.ganglia.protocol-31 否 布尔值 使用Ganglia协议3.1为true,使用3.0为false true metrics.ganglia.uuid 否 要报告而不是IP:主机名的主机UUID 空值 metrics.ganglia.spoof 否 覆盖IP:向Ganglia报告的主机名 空值 示例janusgraph.properties片段,每30秒发送一次单播UDP数据报到默认端口上的localhost: metrics.enabled = true # Required; IP or hostname string metrics.ganglia.hostname = 127.0.0.1 # Required; specify logging interval in milliseconds metrics.ganglia.interval = 30000 示例janusgraph.properties片段,将单播UDP数据报发送到非默认目标端口,并且还配置报告给Ganglia的IP和主机名: metrics.enabled = true # Required; IP or hostname string metrics.ganglia.hostname = 1.2.3.4 # Required; specify logging interval in milliseconds metrics.ganglia.interval = 60000 # Optional metrics.ganglia.port = 6789 metrics.ganglia.spoof = 10.0.0.1:zombo.com Graphite Reporter 配置键 是否必须? 值 默认 metrics.graphite.hostname 是 将Graphite纯文本协议数据发送到的IP地址或主机名 空值 metrics.graphite.interval 是 将数据推送到Graphite之间需要等待的毫秒数 空值 metrics.graphite.port 否 Graphite纯文本协议报告发送到的端口 2003 metrics.graphite.prefix 否 发送到Graphite的所有度量标准名称前都带有任意字符串 空值 每分钟将指标发送到192.168.0.1上的Graphite服务器的示例janusgraph.properties片段: metrics.enabled = true # Required; IP or hostname string metrics.graphite.hostname = 192.168.0.1 # Required; specify logging interval in milliseconds metrics.graphite.interval = 60000 JMX Reporter 配置键 是否必须? 值 默认 metrics.jmx.enabled 是 布尔型 false metrics.jmx.domain 否 指标将显示在此JMX域中 Metrics’s own default metrics.jmx.agentid 否 指标将使用此JMX代理ID报告 Metrics’s own default janusgraph.properties示例片段: metrics.enabled = true # Required metrics.jmx.enabled = true # Optional; if omitted, then Metrics uses its default values metrics.jmx.domain = foo metrics.jmx.agentid = baz Slf4j Reporter 配置键 是否必须? 值 默认 metrics.slf4j.interval 是 将指标转储到记录器之间需要等待的毫秒数 空值 metrics.slf4j.logger 否 要使用的Slf4j记录器名称 "metrics" 示例janusgraph.properties片段每分钟将一次指标记录到名为的记录器中foo: metrics.enabled = true # Required; specify logging interval in milliseconds metrics.slf4j.interval = 60000 # Optional; uses Metrics default when unset metrics.slf4j.logger = foo 用户自定义 Reporter 如果上面列出的Metrics报告程序配置选项不足以支持我们当前的业务,JanusGraph提供了一个实用方法来访问单个MetricRegistry实例,该实例保存了它的所有度量; 使用方法如下: com.codahale.metrics.MetricRegistry janusgraphRegistry = org.janusgraph.util.stats.MetricManager.INSTANCE.getRegistry(); 以这种方式访问janusgraphRegistry的代码可以将非标准报告类型或具有外来配置的标准报告类型附加到janusgraphRegistry。 如果周围的应用程序已经有了度量报告器配置的框架,或者如果应用程序需要JanusGraph支持的报告器类型的多个不同配置的实例,这种方法也很有用。 例如,可以使用这种方法来设置多个Graphite Reporter,而JanusGraph的属性配置仅限于一个Graphite Reporter。 三:实际应用 配置如下: 开启指标收集 使用Console Reporter,配置指标打印在Console中,时间间隔为1分钟 关闭指标收集merge操作 配置指标收集前缀由默认的org.janusgraph修改为myprefix 完整具体文件配置如下: # 其他配置 gremlin.graph=org.janusgraph.core.JanusGraphFactory storage.backend=hbase storage.hostname=127.0.0.1 storage.port=2184 storage.hbase.table=testGraph cache.db-cache=true cache.db-cache-clean-wait=20 cache.db-cache-time=180000 cache.db-cache-size=0.5 index.search.backend=elasticsearch index.search.hostname=127.0.0.1 index.search.index-name=search index.search.port=9200 index.search.elasticsearch.http.auth.type=basic index.search.elasticsearch.http.auth.basic.username=test index.search.elasticsearch.http.auth.basic.password=test query.batch=true query.batch-property-prefetch=true # janusgraph监控相关配置 metrics.enabled = true metrics.prefix = myprefix metrics.console.interval = 60000 metrics.merge-basic-metrics = false 我们在服务器使用gremlin.sh脚本启动gremlin console,并创建图实例: ./gremlin.sh graph=JanusGraphFactory.open('/opt/soft/janusgraph-0.5.1-test/conf/janusgraph-hbase-es.properties') 我们就会发现,每隔一分钟就会在控制台打印出对应指标信息,因为指标信息很多,为了便于文章阅读,下述只展示出主要部分: 12/23/20 10:37:28 AM =========================================================== -- Counters -------------------------------------------------------------------- global.storeManager.openDatabase.calls count = 20 global.storeManager.startTransaction.calls count = 461 myprefix.caches.misses count = 5 // 此处省略部分统计 myprefix.tx.begin count = 12 myprefix.tx.commit count = 3 myprefix.tx.rollback count = 9 org.janusgraph.caches.misses count = 3 org.janusgraph.caches.retrievals count = 3 // 此处省略部分统计 org.janusgraph.sys.stores.getSlice.calls count = 286 org.janusgraph.sys.stores.getSlice.entries-returned count = 231 org.janusgraph.sys.stores.mutate.calls count = 7 org.janusgraph.tx.begin count = 1 -- Histograms ------------------------------------------------------------------ myprefix.stores.getSlice.entries-histogram count = 7 min = 0 max = 8 mean = 1.57 stddev = 2.88 median = 1.00 75% <= 1.00 95% <= 8.00 98% <= 8.00 99% <= 8.00 99.9% <= 8.00 org.janusgraph.stores.getSlice.entries-histogram // 具体指标统计省略 org.janusgraph.sys.schema.stores.getSlice.entries-histogram // 具体指标统计省略 org.janusgraph.sys.stores.getSlice.entries-histogram // 具体指标统计省略 -- Timers ---------------------------------------------------------------------- myprefix.query.graph.execute.time count = 2 mean rate = 0.01 calls/second 1-minute rate = 0.01 calls/second 5-minute rate = 0.07 calls/second 15-minute rate = 0.14 calls/second min = 1.19 milliseconds max = 2.25 milliseconds mean = 1.72 milliseconds stddev = 0.75 milliseconds median = 1.72 milliseconds 75% <= 2.25 milliseconds 95% <= 2.25 milliseconds 98% <= 2.25 milliseconds 99% <= 2.25 milliseconds 99.9% <= 2.25 milliseconds myprefix.query.graph.getNew.time // 具体指标统计省略 myprefix.query.graph.hasDeletions.time // 具体指标统计省略 myprefix.query.vertex.execute.time // 具体指标统计省略 myprefix.query.vertex.getNew.time // 具体指标统计省略 myprefix.query.vertex.hasDeletions.time // 具体指标统计省略 myprefix.storeManager.mutate.time // 具体指标统计省略 myprefix.stores.getSlice.time // 具体指标统计省略 myprefix.stores.mutate.time // 具体指标统计省略 org.janusgraph.query.graph.execute.time count = 2 mean rate = 0.00 calls/second 1-minute rate = 0.00 calls/second 5-minute rate = 0.02 calls/second 15-minute rate = 0.09 calls/second min = 2.52 milliseconds max = 221.12 milliseconds mean = 111.82 milliseconds stddev = 154.57 milliseconds median = 111.82 milliseconds 75% <= 221.12 milliseconds 95% <= 221.12 milliseconds 98% <= 221.12 milliseconds 99% <= 221.12 milliseconds 99.9% <= 221.12 milliseconds org.janusgraph.query.graph.getNew.time // 具体指标统计省略 org.janusgraph.query.graph.hasDeletions.time // 具体指标统计省略 org.janusgraph.stores.getKeys.iterator.hasNext.time // 具体指标统计省略 org.janusgraph.stores.getKeys.iterator.next.time // 具体指标统计省略 org.janusgraph.stores.getKeys.time // 具体指标统计省略 // 具体指标统计省略 org.janusgraph.stores.getSlice.time // 具体指标统计省略 org.janusgraph.sys.schema.query.graph.execute.time // 具体指标统计省略 org.janusgraph.sys.schema.query.graph.getNew.time // 具体指标统计省略 org.janusgraph.sys.schema.query.graph.hasDeletions.time // 具体指标统计省略 org.janusgraph.sys.schema.stores.getSlice.time // 具体指标统计省略 org.janusgraph.sys.storeManager.mutate.time // 具体指标统计省略 org.janusgraph.sys.stores.getSlice.time // 具体指标统计省略 org.janusgraph.sys.stores.mutate.time // 具体指标统计省略 观察上述指标统计数据,我们可以发现,主要分为4大部分: 当前统计指标时间,年月日,时间精确到秒 统计所有不同操作的数量Counters 统计数据直方图的表示Histograms 统计所有操作的执行时间Timers 第一部分:当前统计指标时间,年月日,时间精确到秒 可以作为janusgraph指标监控的横向维度和时间维度 第二部分:统计所有不同操作的数量Counters 这一部分主要用于收集所有操作的总数量,包含事务相关统计、缓存命中相关统计、数据的CURD统计、后端存储不同操作调用统计等48个维度! 具体可以自行尝试; 第三部分:统计数据直方图的表示Histograms 首先,什么是直方图? 直方图,形状类似柱状图却有着与柱状图完全不同的含义。直方图牵涉统计学的概念,首先要对数据进行分组,然后统计每个分组内数据元的数量。 在平面直角坐标系中,横轴标出每个组的端点,纵轴表示频数,每个矩形的高代表对应的频数,称这样的统计图为频数分布直方图 此部分主要涉及对后端存储的统计; 第四部分:统计所有操作的执行时间Timers 这一部分主要收集统计数据CURD操作和数据插入等操作的时间统计包含23种维度! 时间维度包含平均值、最大值、最小值、时间分布等14个时间维度; 四:监控架构图 整体分为: 收集指标 --> 解析指标数据 --> 格式化存储 --> 监控组件|报警组件 有任何问题,欢迎交流沟通 参考:JanusGraph官网

优秀的个人博客,低调大师

16.4. jstat - Java Virtual Machine Statistics Monitoring Tool

# jstat -class 15888 1000 10 Loaded Bytes Unloaded Bytes Time 17409 34782.5 231 339.0 13.21 17409 34782.5 231 339.0 13.21 17409 34782.5 231 339.0 13.21 17409 34782.5 231 339.0 13.21 17409 34782.5 231 339.0 13.21 17409 34782.5 231 339.0 13.21 # jstat -gc 15888 1000 10 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 13824.0 13824.0 1204.1 0.0 2766848.0 2327059.3 349696.0 318073.6 229888.0 101912.6 288 4.895 2 1.055 5.949 13824.0 13824.0 1204.1 0.0 2766848.0 2327059.3 349696.0 318073.6 229888.0 101912.6 288 4.895 2 1.055 5.949 13824.0 13824.0 1204.1 0.0 2766848.0 2327059.3 349696.0 318073.6 229888.0 101912.6 288 4.895 2 1.055 5.949 13824.0 13824.0 1204.1 0.0 2766848.0 2327059.3 349696.0 318073.6 229888.0 101912.6 288 4.895 2 1.055 5.949 # jstat -gcutil 15888 S0 S1 E O P YGC YGCT FGC FGCT GCT 8.71 0.00 84.12 90.96 44.33 288 4.895 2 1.055 5.949 # jstat -compiler 15888 Compiled Failed Invalid Time FailedType FailedMethod 2987 0 0 59.55 0 # jstat -gccapacity 15888 NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC 175104.0 2796544.0 2794496.0 13824.0 13824.0 2766848.0 349696.0 5592064.0 349696.0 349696.0 65536.0 524288.0 229888.0 229888.0 288 2 # jstat -gcnew 15888 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 13824.0 13824.0 1204.1 0.0 1 15 13824.0 2766848.0 2327429.8 288 4.895 # jstat -gcnewcapacity 15888 NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC 175104.0 2796544.0 2794496.0 931840.0 13824.0 931840.0 13824.0 2795520.0 2766848.0 288 2 # jstat -gcold 15888 PC PU OC OU YGC FGC FGCT GCT 229888.0 101912.6 349696.0 318073.6 288 2 1.055 5.949 # jstat -gcoldcapacity 15888 OGCMN OGCMX OGC OC YGC FGC FGCT GCT 349696.0 5592064.0 349696.0 349696.0 288 2 1.055 5.949 每 1000 毫秒打印一次,一共打印 5 次,还可以加上 -h3 每三行显示一下标题。 # jstat -printcompilation -h3 15888 Compiled Size Type Method 2987 91 1 org/apache/catalina/connector/Request isAlpha 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册