265 lines
7.1 KiB
Markdown
265 lines
7.1 KiB
Markdown
# 浅谈企业运营中的监控系统
|
||
|
||
[TOC]
|
||
|
||
## 监控级别
|
||
|
||
- 系统级监控
|
||
|
||
> 系统级监控面向服务器、操作系统、硬件设备的监控维度,如CPU、内存、IO、网络、磁盘等
|
||
|
||
- 应用级监控
|
||
|
||
> 应用监控更关注于服务、应用、业务、数据等维度,如中间件状态、队列状态、JVM状态、应用服务状态、业务量、交易成功率、交易耗时等
|
||
|
||
|
||
## 监控目的
|
||
|
||
- 管理
|
||
|
||
> 针对经营管理活动中产生的岗位权限、指标、业务等数据信息,建立起相应的监控体系,实现多角度、多层次、全方位的在线监控
|
||
|
||
- 实时监控
|
||
|
||
> 对企业各类业务活动开展动态、实时监控,自动形成监控结果,并以邮件、短信、桌面预警等多种方式实现智能预警,帮助企业及时掌控风险
|
||
|
||
- 跟踪
|
||
|
||
> 对已确认的业务异常,自动触发业务整改,及时终止、更正违规业务;对有时限要求的事项,可全程跟踪异常整改与事务办理情况,提高风险管理能力
|
||
|
||
- 数据分析
|
||
|
||
> 提供多种监控分析与结果展示功能,帮助决策层掌握企业运营中的风险动态,为决策分析提供有力支持。
|
||
|
||
|
||
## 监控模型图
|
||
|
||

|
||
|
||
## 监控数据来源
|
||
|
||
- 探针
|
||
|
||
> 监控系统(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
|
||
- ...(太多太多了)
|
||
|
||
|
||
## 监控维度
|
||
|
||
### 系统级监控
|
||
|
||
|
||
#### 服务器监控
|
||
|
||
|
||
- 检索条件
|
||
|
||

|
||
|
||
- 全局视图
|
||
|
||

|
||
|
||
- 硬件性能
|
||
|
||

|
||
|
||
- 磁盘空间
|
||
|
||

|
||
|
||
#### 网络监控
|
||
|
||
- 线路状态
|
||
|
||

|
||
|
||
- 网卡流量
|
||
|
||

|
||
|
||
- 服务请求量
|
||
|
||

|
||
|
||
### 应用级监控
|
||
|
||
#### 业务监控
|
||
|
||
- 交易统计类
|
||
|
||

|
||
|
||
- 排榜统计类
|
||
|
||

|
||
|
||
- 线程数统计类
|
||
|
||

|
||
|
||
<left> <img src="http://o6fhqh1oe.bkt.clouddn.com/20180820153475157410804.png" width="300px"/> </left>
|
||
|
||
|
||
- 耗时统计类
|
||
|
||

|
||
|
||
<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>
|
||
|
||
- 汇总统计类
|
||
|
||

|
||
|
||
#### 数据库监控
|
||
|
||
|
||
- Load
|
||
|
||

|
||
|
||
- Session
|
||
|
||

|
||
|
||
- CPU
|
||
|
||

|
||
|
||
- SQL
|
||
|
||

|
||
|
||
#### 平台监控
|
||
|
||
- JBoss
|
||
|
||

|
||
|
||
- JVM
|
||
|
||

|
||
|
||
- Load
|
||
|
||

|
||
|
||
|
||
## 基于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'
|
||
```
|
||
|
||
## 监控常见的问题分析
|
||
|
||
- 接入服务&接出服务线程数同时飙升
|
||
|
||
> 这种情况多由于上游通道系统异常、网络异常导致的
|
||
|