[
https://issues.apache.org/jira/browse/EAGLE-849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15797029#comment-15797029
]
ASF GitHub Bot commented on EAGLE-849:
--------------------------------------
Github user jhsenjaliya commented on a diff in the pull request:
https://github.com/apache/eagle/pull/763#discussion_r94525463
--- Diff: eagle-external/hadoop_jmx_collector/system_metric_collector.py ---
@@ -0,0 +1,300 @@
+# !/usr/bin/python
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+from metric_collector import MetricCollector, Runner
+import logging, socket, string, os, re, time
+
+
+class SystemMetricCollector(MetricCollector):
+ METRIC_PREFIX = "system"
+ METRIC_NAME_EXCLUDE = re.compile(r"[\(|\)]")
+
+ def run(self):
+ self.try_exec_func(
+ self.collect_cpu_metric,
+ self.collect_uptime_metric,
+ self.collect_memory_metric,
+ self.collect_loadavg_metric,
+ self.collect_ipmi_cpu_temp,
+ self.collect_nic_metric,
+ self.collect_smartdisk_metric,
+ self.collect_diskstat_metric
+ )
+
+ def try_exec_func(self, *funcs):
+ for func in funcs:
+ try:
+ logging.info("Executing: %s", func.__name__)
+ func()
+ except Exception as e:
+ logging.warn("Failed to execute: %s", func.__name__)
+ logging.exception(e)
+
+ # ====================================
+ # CPU Usage
+ # ====================================
+
+ def collect_cpu_metric(self):
+ cpu_metric = self.new_metric()
+ cpu_info = os.popen('cat /proc/stat').readlines()
+ demension = ["cpu", "user", "nice", "system", "idle", "wait",
"irq", "softirq", "steal", "guest"]
+
+ total_cpu = 0
+ total_cpu_usage = 0
+ cpu_stat_pre = None
+
+ data_dir = "/tmp/eagle_cpu_stat_previous"
+ if os.path.exists(data_dir):
+ fd = open(data_dir, "r")
+ cpu_stat_pre = fd.read()
+ fd.close()
+
+ for item in cpu_info:
+ if re.match(r'^cpu\d+', item) is None:
+ continue
+
+ items = re.split("\s+", item.strip())
+ demens = min(len(demension), len(items))
+ tuple = dict()
--- End diff --
since tuple is data structure in python, should you name this something
different ? like metric_info = dict() ?
> System metric collector python script
> -------------------------------------
>
> Key: EAGLE-849
> URL: https://issues.apache.org/jira/browse/EAGLE-849
> Project: Eagle
> Issue Type: Improvement
> Components: System Metric Monitor
> Affects Versions: v0.5.0
> Reporter: Hao Chen
> Assignee: Hao Chen
> Fix For: v0.5.0
>
>
> Refactor System metric collector python script following similar framework as
> existing jmx metric collector.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)