Files
2018-09-04 15:43:59 +08:00

265 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 浅谈企业运营中的监控系统
[TOC]
## 监控级别
- 系统级监控
> 系统级监控面向服务器、操作系统、硬件设备的监控维度,如CPU、内存、IO、网络、磁盘等
- 应用级监控
> 应用监控更关注于服务、应用、业务、数据等维度,如中间件状态、队列状态、JVM状态、应用服务状态、业务量、交易成功率、交易耗时等
## 监控目的
- 管理
> 针对经营管理活动中产生的岗位权限、指标、业务等数据信息,建立起相应的监控体系,实现多角度、多层次、全方位的在线监控
- 实时监控
> 对企业各类业务活动开展动态、实时监控,自动形成监控结果,并以邮件、短信、桌面预警等多种方式实现智能预警,帮助企业及时掌控风险
- 跟踪
> 对已确认的业务异常,自动触发业务整改,及时终止、更正违规业务;对有时限要求的事项,可全程跟踪异常整改与事务办理情况,提高风险管理能力
- 数据分析
> 提供多种监控分析与结果展示功能,帮助决策层掌握企业运营中的风险动态,为决策分析提供有力支持。
## 监控模型图
![20180820153473715390908.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153473715390908.png)
## 监控数据来源
- 探针
> 监控系统(Zabbix)、定时脚本、系统命令等
- 数据库
> 根据具体业务的统计维度编写SQL(通常只查询简单的数据、杜绝性能低下的查询、切勿在主库上查询)
- 中间件自带监控
> 如Jvm监控API、Durid监控API、JBoss监控API等
- 日志文件
> 业务平台产生的日志文件;可通过脚本、系统命令抽取
## 常见的开源监控方案
- 数据采集(探针)
- Python
- Perl
- Linux Shell
- Windows Powershell
- Zabbix
- Druid
- 各种云自带
- StatsD
- Longstash
- Open-Falcon
- ...(太多太多了)
- 数据处理
- InfluxDB
- Graphite
- ElasticSearch
- Zabbix
- Open-Falcon
- ...(太多太多了)
- 数据视图
- Grafana
- Kibana
- Zabbix UI
- LongView
- Open-Falcon UI
- OWL
- ...(太多太多了)
## 监控维度
### 系统级监控
#### 服务器监控
- 检索条件
![20180819153468066358047.png](http://o6fhqh1oe.bkt.clouddn.com/20180819153468066358047.png)
- 全局视图
![20180820153474773069349.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153474773069349.png)
- 硬件性能
![20180820153474749589917.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153474749589917.png)
- 磁盘空间
![20180820153474678580833.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153474678580833.png)
#### 网络监控
- 线路状态
![20180820153474702479468.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153474702479468.png)
- 网卡流量
![20180820153474724335212.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153474724335212.png)
- 服务请求量
![20180820153474714945089.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153474714945089.png)
### 应用级监控
#### 业务监控
- 交易统计类
![20180820153475118693280.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475118693280.png)
- 排榜统计类
![20180820153474733635029.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153474733635029.png)
- 线程数统计类
![20180820153475128612047.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475128612047.png)
<left> <img src="http://o6fhqh1oe.bkt.clouddn.com/20180820153475157410804.png" width="300px"/> </left>
- 耗时统计类
![2018082015347513093401.png](http://o6fhqh1oe.bkt.clouddn.com/2018082015347513093401.png)
<left> <img src="http://o6fhqh1oe.bkt.clouddn.com/20180820153475207239476.png" width="300px"/> </left>
<left> <img src="http://o6fhqh1oe.bkt.clouddn.com/20180820153475203373819.png" width="300px"/> </left>
- 失败原因统计
<left> <img src="http://o6fhqh1oe.bkt.clouddn.com/20180820153475145971502.png" width="300px"/> </left>
- 汇总统计类
![20180820153475261853088.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475261853088.png)
#### 数据库监控
- Load
![20180820153475217849592.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475217849592.png)
- Session
![20180820153475138862574.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475138862574.png)
- CPU
![20180820153475225034781.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475225034781.png)
- SQL
![20180820153475255016161.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475255016161.png)
#### 平台监控
- JBoss
![20180820153475234811131.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475234811131.png)
- JVM
![20180820153475238971348.png](http://o6fhqh1oe.bkt.clouddn.com/20180820153475238971348.png)
- Load
![2018082015347524628016.png](http://o6fhqh1oe.bkt.clouddn.com/2018082015347524628016.png)
## 基于ECP日志监控脚本范例
- POS交易线程数统计
```shell
tail -n 80 ehpspos2_pos.trc | grep -a active | tail -n 1 | awk '{print $6}' | grep -o '[0-9]*'
```
- 交易明细分组求和(txn_xxx.lst)
> 最后1000笔按服务名&&交易码分组,统计数量、最大时间、平均时间
```shell
tail -n 1000 txn_pos.lst | awk -F '|' '{print $3"."$4" "$5}' | awk '{max[$1]=max[$1]>$2?max[$1]:$2;number[$1]++;sum[$1]+=$2}END{for (i in max) printf "%s \t%s\t%.0f\t%s \n",i,number[i],sum[i]/number[i],max[i]}' OFS="\t"
```
- 通道平均响应时间
```shell
tail -n 1000 muniefsb_pos.trc | grep -a connector | awk -F '|' '{print $5}' | awk '{sum+=$1} END {printf "%.0f\n",sum/NR}'
```
- POS扫码消费平均响应时间
```shell
tail -n 1000 txn_*.lst | grep -a -E "4433001|4433002|4433011" | tail -n 30 | awk -F '|' '{print $5}' | awk '{sum+=$1} END {printf "%.0f\n",sum/NR}'
```
- 时间大于20秒的交易
```shell
cat tpospay1_pos*.trc* | grep connector | awk -F '|' '$5 > 20000 {print $1,$5}'
```
- 平均汇总
```shell
tail -n 1000 $TRC/muniefsb_${NODE}.trc |grep -a connector | tail -n 30 | awk -F '|' '{print $5}' | awk '{sum+=$1} END {printf "%.0f\n",sum/NR}'
```
- 查询次数统计
```shell
cat txntrc_pos*.lst |grep -a '08:45' |grep -a -E '4433003|5533003|5533008' | awk -F '|' '{sum[$13]+=1}END{for (i in sum)print i,sum[i]}' | sort -n -k 2 -r
```
- 安全中心服务线程数监控
```shell
tail -n 1000 tsafpub1_*.trc | grep connector | tail -n 30 | awk -F '|' '{print $5}' | awk '{sum+=$1} END {printf "%.0f\n",sum/NR}'
```
- 按机构汇总统计交易笔数(前10)
```shell
grep -E "ehpspos[0-9].*2010020|ehpspos[0-9].*2010021|ehpspos[0-9].*2010060|ehpspos[0-9].*4433001|ehpspos[0-9].*4433011|ehpspos[0-9].*5533001|ehpspos[0-9].*5533001|ehpspos[0-9].*5533006" txntrc_*.lst* | awk -F '|' '{sum[$13]+=1}END{for (i in sum)print i,sum[i]}' | sort -r -n -k 2 | sed -n '1,10p'
```
## 监控常见的问题分析
- 接入服务&接出服务线程数同时飙升
> 这种情况多由于上游通道系统异常、网络异常导致的