|  | #!/usr/bin/env bash | 
|  | # | 
|  | #  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. | 
|  | # | 
|  |  | 
|  | # | 
|  | # extracts information from the host environment that is useful for | 
|  | # troubleshooting Apache Metron deployments | 
|  | # | 
|  | CWD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | 
|  |  | 
|  | # extract metron version from the pom | 
|  | METRON_VERSION=`cat $CWD/../../pom.xml | grep "<version>" | head -1 | sed -ne '/version/{s/.*<version>\(.*\)<\/version>.*/\1/p;q;}'` | 
|  | echo "Metron $METRON_VERSION" | 
|  |  | 
|  | # is this a git repo? | 
|  | IS_GIT_REPO=`git rev-parse --is-inside-work-tree` | 
|  | if [ "$IS_GIT_REPO" == "true" ]; then | 
|  |  | 
|  | # current branch | 
|  | echo "--" | 
|  | git branch | grep "*" | 
|  |  | 
|  | # last commit | 
|  | echo "--" | 
|  | git --no-pager log -n 1 | 
|  |  | 
|  | # local changes since last commit | 
|  | echo "--" | 
|  | git --no-pager diff --stat | 
|  | fi | 
|  |  | 
|  | # ansible | 
|  | echo "--" | 
|  | ansible --version | 
|  |  | 
|  | # vagrant | 
|  | echo "--" | 
|  | vagrant --version | 
|  |  | 
|  | # python | 
|  | echo "--" | 
|  | python --version 2>&1 | 
|  |  | 
|  | # maven | 
|  | echo "--" | 
|  | mvn --version | 
|  |  | 
|  | # docker | 
|  | echo "--" | 
|  | docker --version | 
|  | if docker info 2>&1  | grep -q 'Cannot connect to the Docker daemon' | 
|  | then | 
|  | echo "WARNING: Docker daemon is not running" | 
|  | fi | 
|  |  | 
|  | # node | 
|  | echo "--" | 
|  | echo "node" | 
|  | node --version | 
|  |  | 
|  | # npm | 
|  | echo "--" | 
|  | echo "npm" | 
|  | npm --version | 
|  |  | 
|  | # C++ compiler | 
|  | echo "--" | 
|  | if [[ $(command -v g++) && $(g++ --version 2>/dev/null) ]]; then | 
|  | g++ --version | 
|  |  | 
|  | # check C++11 compliance | 
|  | echo "--" | 
|  | OBJFILE=/tmp/test | 
|  | CPPFILE=/tmp/test.cpp | 
|  | cat > $CPPFILE <<- EOM | 
|  | #include <iostream> | 
|  | using namespace std; | 
|  | int main() { | 
|  | cout << "Hello World!" << endl; | 
|  | return 0; | 
|  | } | 
|  | EOM | 
|  | g++ -std=c++11 $CPPFILE -o $OBJFILE &>/dev/null | 
|  | if [ $? -eq 0 ]; then | 
|  | echo "Compiler is C++11 compliant" | 
|  | else | 
|  | echo "Warning: Compiler is NOT C++11 compliant" | 
|  | fi | 
|  | rm -f $CPPFILE $OBJFILE | 
|  | elif [[ $(command -v g++) ]]; then | 
|  | echo "Warning: g++ not properly configured" | 
|  | else | 
|  | echo "Warning: g++ not found" | 
|  | fi | 
|  |  | 
|  | # operating system | 
|  | echo "--" | 
|  | uname -a | 
|  |  | 
|  | # system resources | 
|  | echo "--" | 
|  | case "${OSTYPE}" in | 
|  | linux*) | 
|  | cat /proc/meminfo  | grep -i MemTotal | awk '{print "Total System Memory = " $2/1024 " MB"}' | 
|  | cat /proc/cpuinfo | egrep 'model\ name' | uniq | cut -d: -f2 | awk '{print "Processor Model:" $0}' | 
|  | cat /proc/cpuinfo | egrep 'cpu\ MHz' | uniq | cut -d: -f2 | awk '{print "Processor Speed:" $0 " MHz"}' | 
|  | cat /proc/cpuinfo | grep -i '^processor' | wc -l | awk '{print "Total Physical Processors: " $0}' | 
|  | cat /proc/cpuinfo | grep -i cores | cut -d: -f2 | awk '{corecount+=$1} END {print "Total cores: " corecount}' | 
|  | echo "Disk information:" | 
|  | df -h | grep "^/" | 
|  | if [[ $(egrep '(vmx|svm)' /proc/cpuinfo) ]]; then | 
|  | echo "This CPU appears to support virtualization" | 
|  | else | 
|  | echo "This CPU may not support virtualization" | 
|  | fi | 
|  | ;; | 
|  | darwin*) | 
|  | sysctl hw.memsize | awk '{print "Total System Memory = " $2/1048576 " MB"}' | 
|  | sysctl machdep.cpu | grep 'machdep.cpu.brand_string' | cut -d: -f2 | cut -d\@ -f1 | awk '{print "Processor Model:" $0}' | 
|  | sysctl machdep.cpu | grep 'machdep.cpu.brand_string' | cut -d: -f2 | cut -d\@ -f2 | awk '{print "Processor Speed:" $0}' | 
|  | sysctl hw.physicalcpu | cut -d: -f2 | awk '{print "Total Physical Processors:" $0}' | 
|  | sysctl machdep.cpu | grep 'machdep.cpu.core_count' | cut -d: -f2 | cut -d\@ -f2 | awk '{print "Total cores:" $0}' | 
|  | echo "Disk information:" | 
|  | df -h | grep "^/" | 
|  | if [[ $(sysctl kern.hv_support | awk -F' ' '{print $2}') == "1" && $(sysctl -a | grep machdep.cpu.features | grep VMX) ]]; then | 
|  | echo "This CPU appears to support virtualization" | 
|  | else | 
|  | echo "This CPU may not support virtualization" | 
|  | fi | 
|  | ;; | 
|  | *) | 
|  | echo "Unable to detect system resources for ${OSTYPE}" | 
|  | ;; | 
|  | esac |