1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45  | from flask import Flaskfrom flask import Response, request, abortimport urlparseimport requestsimport jsonapp = Flask(__name__)esUrl = "http://176.31.137.145:9200/"@app.route("/<app>", methods=["GET","POST"])def index(app):    params = "?format=json&pretty"    data = {}    error = ""    req = getattr(requests, request.method.lower())    if app == "es":        arg = request.args["api"]        if "search" in arg:            params = params + "&size=0"        url = urlparse.urljoin(esUrl, arg + params)        # print url        page = req(url) if request.method == "GET" else req(url, request.data)        if page.ok:            try:                ret =  page.json()            except Exception as e:                ret = page.content                error = str(e)        else:            ret = "The url:%s request faild" % url            error = "request faild"    elif app == "zab":        ret = [{"status":"ok"}]    else:        ret = ""        error = "incorrect url"    data["data"] = ret    data["error"] = error    resp = Response(json.dumps(data))    if error:        abort(500)    resp.headers["Content-Type"] = "application/json; charset=UTF-8"    resp.headers["access-control-allow-origin"] = "*"         return respif __name__ == "__main__":    app.run(port=80,debug=True,host="0.0.0.0") | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  |   <body ng-app="myops">    <ion-pane>      <ion-nav-bar class="bar-positive">      <ion-nav-back-button></ion-nav-back-button>      </ion-nav-bar>             <ion-tabs class="tabs-icon-top">        <ion-tab title="Home" icon="ion-home" href="#/home">          <ion-nav-view name="tab-home"></ion-nav-view>        </ion-tab>        <ion-tab title="es" icon="ion-ionic" href="#/es">          <ion-nav-view name="tab-es"></ion-nav-view>        </ion-tab>        <ion-tab title="zabbix" icon="ion-ionic" href="#/zabbix">          <ion-nav-view name="tab-zabbix"></ion-nav-view>        </ion-tab>      </ion-tabs>    </ion-pane>  </body> | 
1 2 3 4 5  | <ion-view view-title="{YOUR TITLE}">    <ion-content>{YOUR CONTENT}    </ion-content></ion-view> | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60  | app.config(function($stateProvider, $urlRouterProvider, $ionicConfigProvider) {  $ionicConfigProvider.tabs.position('bottom');  $stateProvider  .state("home", {    url:"/home",    views:{      "tab-home":{        controller:"homeCtrl",        templateUrl: "tpls/home.html"      }    }  });  $stateProvider  .state("detail", {    url:"/detail/:name",    views:{      "tab-es":{        controller:"detailCtrl",        templateUrl: "tpls/detail.html"      }    }  });  $stateProvider  .state("perf", {    url:"/perf/:name",    views:{      "tab-home":{        controller:"perfCtrl",        templateUrl: "tpls/perf.html"      }    }  });  $stateProvider  .state("es", {    url:"/es",    views:{      "tab-es":{        controller:"esCtrl",        templateUrl: "tpls/es.html"      }    }  });  $stateProvider  .state("zabbix", {    url:"/zabbix",    views:{      "tab-zabbix":{        controller:"zabbixCtrl",        templateUrl: "tpls/zabbix.html"      }    }  });  $urlRouterProvider.otherwise("/home");}) | 
1 2 3 4 5  |   $http.get(esUrl, {params:{api: "_cat/health"}}).then(function(resp){    $scope.data.status = resp.data.data[0].status;  }, function(resp) {    $scope.data.status = "something wrong";  }); | 
1 2 3 4 5 6 7 8 9 10 11  | <ion-view view-title="Performance for {{name | uppercase}}">    <ion-content>        <ion-list class="cards">            <ion-item>how many nodes: {{data.nodes}}</ion-item>            <ion-item>how many shards: {{data.shards}}</ion-item>            <ion-item>status:{{data.status}}</ion-item>            <ion-item>how many indices: {{data.indices}}</ion-item>            <ion-item>how many documnet:{{data.counts}}</ion-item>        </ion-list>    </ion-content></ion-view> | 
1  | bower install angular-chart.js | 
1 2  |     <script src="lib/chart.js/dist/Chart.min.js"></script>    <script src="lib/angular-chart.js/dist/angular-chart.min.js"></script> | 
1 2 3 4 5 6 7 8 9 10 11 12 13  | $http.post(esUrl, setData($scope.name), {params:{api:"_search"}}).then(function(resp) {    var ret = resp.data.data.aggregations.top_tags.buckets;    console.log(ret);    $scope.labels = [];    $scope.series = [$scope.name];    $scope.data = [];    for (var i=0;i<ret.length;i++){      $scope.labels.push(ret[i]["key"]);      $scope.data.push(ret[i]["doc_count"]);    }  },function(resp) {    // console.log(resp.config);  }) | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | <ion-view view-title="Detail for {{name}}">    <ion-content>        <ion-list >            <ion-item>                <canvas id="bar" class="chart chart-bar"                  chart-data="data" chart-labels="labels"> chart-series="series"                </canvas>            </ion-item>            <ion-item ng-repeat="label in labels">                <h2>{{label}}</h2>                <p>{{data[$index]}}</p>            </ion-item>        </ion-list>    </ion-content></ion-view> | 
本文出自 “又耳笔记” 博客
  












