Blame view

ant-design-vue-jeecg/src/views/modules/monitor/TomcatInfo.vue 5.29 KB
肖超群 authored
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
<template>
  <a-skeleton active :loading="loading" :paragraph="{rows: 17}">
    <a-card :bordered="false">

      <a-alert type="info" :showIcon="true">
        <div slot="message">
          上次更新时间:{{ this.time }}
          <a-divider type="vertical"/>
          <a @click="handleClickUpdate">立即更新</a>
        </div>
      </a-alert>

      <a-table
        rowKey="id"
        size="middle"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="false"
        :loading="tableLoading"
        style="margin-top: 20px;">

        <template slot="param" slot-scope="text, record">
          <a-tag :color="textInfo[record.param].color">{{ text }}</a-tag>
        </template>

        <template slot="text" slot-scope="text, record">
          {{ textInfo[record.param].text }}
        </template>

        <template slot="value" slot-scope="text, record">
          {{ text }} {{ textInfo[record.param].unit }}
        </template>

      </a-table>

    </a-card>
  </a-skeleton>
</template>
<script>
肖超群 authored
40
41
import moment from 'moment'
import {getAction} from '@/api/manage'
肖超群 authored
42
肖超群 authored
43
moment.locale('zh-cn')
肖超群 authored
44
肖超群 authored
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
export default {
  data() {
    return {
      time: '',
      loading: true,
      tableLoading: true,
      columns: [{
        title: '参数',
        width: '30%',
        dataIndex: 'param',
        scopedSlots: {customRender: 'param'}
      }, {
        title: '描述',
        width: '40%',
        dataIndex: 'text',
        scopedSlots: {customRender: 'text'}
      }, {
        title: '当前值',
        width: '30%',
        dataIndex: 'value',
        scopedSlots: {customRender: 'value'}
      }],
      dataSource: [],
      // 列表通过 textInfo 渲染出颜色、描述和单位
      textInfo: {
        'tomcat.sessions.created': {color: 'green', text: 'tomcat 已创建 session 数', unit: '个'},
        'tomcat.sessions.expired': {color: 'green', text: 'tomcat 已过期 session 数', unit: '个'},
        'tomcat.sessions.active.current': {color: 'green', text: 'tomcat 当前活跃 session 数', unit: '个'},
        'tomcat.sessions.active.max': {color: 'green', text: 'tomcat 活跃 session 数峰值', unit: '个'},
        'tomcat.sessions.rejected': {color: 'green', text: '超过session 最大配置后,拒绝的 session 个数', unit: '个'},
肖超群 authored
75
肖超群 authored
76
77
78
79
        'tomcat.global.sent': {color: 'purple', text: '发送的字节数', unit: 'bytes'},
        'tomcat.global.request.max': {color: 'purple', text: 'request 请求最长耗时', unit: '秒'},
        'tomcat.global.request.count': {color: 'purple', text: '全局 request 请求次数', unit: '次'},
        'tomcat.global.request.totalTime': {color: 'purple', text: '全局 request 请求总耗时', unit: '秒'},
肖超群 authored
80
肖超群 authored
81
82
83
        'tomcat.servlet.request.max': {color: 'cyan', text: 'servlet 请求最长耗时', unit: '秒'},
        'tomcat.servlet.request.count': {color: 'cyan', text: 'servlet 总请求次数', unit: '次'},
        'tomcat.servlet.request.totalTime': {color: 'cyan', text: 'servlet 请求总耗时', unit: '秒'},
肖超群 authored
84
肖超群 authored
85
86
87
88
89
90
91
        'tomcat.threads.current': {color: 'pink', text: 'tomcat 当前线程数(包括守护线程)', unit: '个'},
        'tomcat.threads.config.max': {color: 'pink', text: 'tomcat 配置的线程最大数', unit: '个'}
      },
      // 当一条记录中需要取出多条数据的时候需要配置该字段
      moreInfo: {
        'tomcat.global.request': ['.count', '.totalTime'],
        'tomcat.servlet.request': ['.count', '.totalTime']
肖超群 authored
92
      }
肖超群 authored
93
94
95
96
97
98
99
100
    }
  },
  mounted() {
    this.loadTomcatInfo()
  },
  methods: {

    handleClickUpdate() {
肖超群 authored
101
102
103
      this.loadTomcatInfo()
    },
肖超群 authored
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
    loadTomcatInfo() {
      this.tableLoading = true
      this.time = moment().format('YYYY年MM月DD日 HH时mm分ss秒')
      Promise.all([
        getAction('actuator/metrics/tomcat.sessions.created'),
        getAction('actuator/metrics/tomcat.sessions.expired'),
        getAction('actuator/metrics/tomcat.sessions.active.current'),
        getAction('actuator/metrics/tomcat.sessions.active.max'),
        getAction('actuator/metrics/tomcat.sessions.rejected'),
        // 2.3.5.RELEASE 无此API
        // getAction('actuator/metrics/tomcat.global.sent'),
        // getAction('actuator/metrics/tomcat.global.request.max'),
        // getAction('actuator/metrics/tomcat.global.request'),
        // getAction('actuator/metrics/tomcat.threads.current'),
        // getAction('actuator/metrics/tomcat.threads.config.max')
        // 2.1.3.RELEASE 无此API
        //getAction('actuator/metrics/tomcat.servlet.request'),
        // getAction('actuator/metrics/tomcat.servlet.request.max'),
      ]).then((res) => {
        let tomcatInfo = []
        res.forEach((value, id) => {
          let more = this.moreInfo[value.name]
          if (!(more instanceof Array)) {
            more = ['']
          }
          more.forEach((item, idx) => {
            let param = value.name + item
            tomcatInfo.push({
              id: param + id, param,
              text: 'false value',
              value: value.measurements[idx].value
肖超群 authored
135
136
137
            })
          })
        })
肖超群 authored
138
139
140
141
142
143
144
145
        this.dataSource = tomcatInfo
      }).catch((e) => {
        console.error(e)
        this.$message.error('获取Tomcat信息失败')
      }).finally(() => {
        this.loading = false
        this.tableLoading = false
      })
肖超群 authored
146
147
    }
  }
肖超群 authored
148
}
肖超群 authored
149
150
</script>
<style></style>