#easy-monitor性能监控和分析工具 Easy-Monitor 3.0 https://blog.csdn.net/qq_36791889/article/details/115420116
#git地址:https://github.com/1981430140/easy-monitor-docker-compose.git
一、easy-monitor 服务器端安装(docker-compose)
yum install git wget -y
git clone https://github.com/1981430140/easy-monitor-docker-compose.git
cd easy-monitor-docker-compose
docker-compose up -d
http://192.168.11.100:8443
帐号:admin@admin.com 密码:admin
登录后创建新应用
二、安装nodejs
cd ..
wget https://nodejs.org/download/release/v8.11.4/node-v8.11.4-linux-x64.tar.gz
tar zxvf node-v8.11.4-linux-x64.tar.gz
mkdir /data
mv node-v8.11.4-linux-x64 /data/nodejs
ln -s /data/nodejs/bin/* /usr/bin/
echo "PATH=$PATH:/data/nodejs/bin" >> /etc/profile
source /etc/profile
node -v
三、demo 接入
3.1 安装demo
git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
cd nodejs-docs-hello-world
3.2、安装xprofiler客户端
cd nodejs-docs-hello-world
#npm i xprofiler@1.4.0 --unsafe-perm --save --xprofiler_binary_host_mirror=https://npm.taobao.org/mirrors/xprofiler
npm install -g npm@8.19.3
npm i xprofiler --unsafe-perm --save --xprofiler_binary_host_mirror=https://npm.taobao.org/mirrors/xprofiler
配置xprofiler
require('xprofiler').start();
3.3 安装xtransit
3.3.1)全局安装
npm install xtransit -g
3.3.2)本项目安装()
npm install xtransit --save
配置xtransit
const xtransit = require('xtransit');
const config = {server: `ws://127.0.0.1:9090`, // 填写前一节中部署的 xtransit-server 地址appId: 1, // 创建应用得到的应用 IDappSecret: '7f2741850877c7edff7c9c9daabd000e', // 创建应用得到的应用 Secret
};
xtransit.start(config);
cat > start.sh << 'EOF'
kill `ps aux|grep "node index.js"|awk '{print $2}'`
nohup node index.js &
EOF
bash start.sh
四、验证
进行控制台
xprofiler@1.4.0有兼容问题
xprofiler@2.3.0正常
—分界线—
xprofiler的日志默认在/tmp目录下
easy-monitory 日志入库ES的grok配置规则
日志格式
#heap日志
[2022-11-07 15:42:23.396565] [info] [heap] [20836] rss: 43163648, heap_used: 10963528, heap_available: 2187569960, heap_total: 14667776, heap_limit: 2197815296, heap_executeable: 1048576, total_physical_size: 13818304, malloced_memory: 270408, amount_of_external_allocated_memory: 3316804, new_space_size: 1048576, new_space_used: 273368, new_space_available: 757704, new_space_committed: 262480, old_space_size: 10190848, old_space_used: 7656248, old_space_available: 2353184, old_space_committed: 10190632, code_space_size: 892928, code_space_used: 814624, code_space_available: 12768, code_space_committed: 840448, map_space_size: 794624, map_space_used: 509400, map_space_available: 267712, map_space_committed: 783944, lo_space_size: 1564672, lo_space_used: 1538944, lo_space_available: 0, lo_space_committed: 1564672, read_only_space_size: 176128, read_only_space_used: 170944, read_only_space_available: 0, read_only_space_committed: 176128, new_lo_space_size: 0, new_lo_space_used: 0, new_lo_space_available: 1031072, new_lo_space_committed: 0, code_lo_space_size: 0, code_lo_space_used: 0, code_lo_space_available: 0, code_lo_space_committed: 0,
\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:logevel}\] \[%{DATA:logtype}\] \[%{POSINT:pid}\] rss: %{NUMBER:rss}, heap_used: %{NUMBER:heap_used}, heap_available: %{NUMBER:heap_available}, heap_total: %{NUMBER:heap_total}, heap_limit: %{NUMBER:heap_limit}, heap_executeable: %{NUMBER:heap_executeable}, total_physical_size: %{NUMBER:total_physical_size}, malloced_memory: %{NUMBER:malloced_memory}, amount_of_external_allocated_memory: %{NUMBER:amount_of_external_allocated_memory}, new_space_size: %{NUMBER:new_space_size}, new_space_used: %{NUMBER:new_space_used}, new_space_available: %{NUMBER:new_space_available}, new_space_committed: %{NUMBER:new_space_committed}, old_space_size: %{NUMBER:old_space_size}, old_space_used: %{NUMBER:old_space_used}, old_space_available: %{NUMBER:old_space_available}, old_space_committed: %{NUMBER:old_space_committed}, code_space_size: %{NUMBER:code_space_size}, code_space_used: %{NUMBER:code_space_used}, code_space_available: %{NUMBER:code_space_available}, code_space_committed: %{NUMBER:code_space_committed}, map_space_size: %{NUMBER:map_space_size}, map_space_used: %{NUMBER:map_space_used}, map_space_available: %{NUMBER:map_space_available}, map_space_committed: %{NUMBER:map_space_committed}, lo_space_size: %{NUMBER:lo_space_size}, lo_space_used: %{NUMBER:lo_space_used}, lo_space_available: %{NUMBER:lo_space_available}, lo_space_committed: %{NUMBER:lo_space_committed}, read_only_space_size: %{NUMBER:read_only_space_size}, read_only_space_used: %{NUMBER:read_only_space_used}, read_only_space_available: %{NUMBER:read_only_space_available}, read_only_space_committed: %{NUMBER:read_only_space_committed}, new_lo_space_size: %{NUMBER:new_lo_space_size}, new_lo_space_used: %{NUMBER:new_lo_space_used}, new_lo_space_available: %{NUMBER:new_lo_space_available}, new_lo_space_committed: %{NUMBER:new_lo_space_committed}, code_lo_space_size: %{NUMBER:code_lo_space_size}, code_lo_space_used: %{NUMBER:code_lo_space_used}, code_lo_space_available: %{NUMBER:code_lo_space_available}, code_lo_space_committed: %{NUMBER:code_lo_space_committed},
结果
{"amount_of_external_allocated_memory": "3316804","new_space_committed": "262480","code_lo_space_committed": "0","heap_limit": "2197815296","pid": "20836","read_only_space_used": "170944","logtype": "heap","code_space_committed": "840448","code_space_size": "892928","lo_space_available": "0","old_space_committed": "10190632","lo_space_committed": "1564672","new_space_size": "1048576","heap_available": "2187569960","map_space_available": "267712","heap_total": "14667776","new_lo_space_used": "0","old_space_used": "7656248","map_space_used": "509400","code_lo_space_available": "0","old_space_available": "2353184","code_lo_space_size": "0","read_only_space_committed": "176128","read_only_space_available": "0","code_space_available": "12768","logevel": "info","new_space_available": "757704","heap_used": "10963528","heap_executeable": "1048576","read_only_space_size": "176128","new_space_used": "273368","lo_space_used": "1538944","rss": "43163648","code_space_used": "814624","new_lo_space_available": "1031072","timestamp": "2022-11-07 15:42:23.396565","malloced_memory": "270408","new_lo_space_size": "0","map_space_size": "794624","new_lo_space_committed": "0","lo_space_size": "1564672","total_physical_size": "13818304","code_lo_space_used": "0","map_space_committed": "783944","old_space_size": "10190848"
}
#gc日志
[2022-11-09 14:50:02.959052] [info] [gc] [8236] gc_time_during_last_min: 0, total: 36, scavange_duration: 0, marksweep_duration: 0
\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:logevel}\] \[%{DATA:logtype}\] \[%{POSINT:pid}\] gc_time_during_last_min: %{INT:gc_time_during_last_min}, total: %{INT:total}, scavange_duration: %{INT:scavange_duration}, marksweep_duration: %{INT:marksweep_duration}
结果
{"logtype": "gc","total": "36","scavange_duration": "0","gc_time_during_last_min": "0","logevel": "info","pid": "8236","marksweep_duration": "0","timestamp": "2022-11-09 14:50:02.959052"
}
#http日志
[2022-11-09 14:50:02.959103] [info] [http] [8236] live_http_request: 0, http_request_handled: 0, http_response_sent: 0, http_rt: 0.000000
\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:logevel}\] \[%{DATA:logtype}\] \[%{POSINT:pid}\] live_http_request: %{INT:live_http_request}, http_request_handled: %{INT:http_request_handled}, http_response_sent: %{INT:http_response_sent}, http_rt: %{INT:http_rt}
结果
{"logtype": "http","http_request_handled": "0","live_http_request": "0","http_rt": "0","logevel": "info","pid": "8236","http_response_sent": "0","timestamp": "2022-11-09 14:50:02.959103"
}
#timer日志
[2022-11-09 14:50:02.959076] [info] [timer] [8236] total_timer: 1, active_handles: 3
\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:logevel}\] \[%{DATA:logtype}\] \[%{POSINT:pid}\] total_timer: %{INT:total_timer}, active_handles: %{INT:active_handles}
结果
{"logtype": "timer","total_timer": "1","active_handles": "3","logevel": "info","pid": "8236","timestamp": "2022-11-09 14:50:02.959076"
}
#cpu日志
[2022-11-07 14:49:31.280173] [info] [other] [20836] cpu_usage(%) now: 0.000000, cpu_15: 0.133333, cpu_30: 0.066667, cpu_60: 0.050000, cpu_180: 0.044444, cpu_300: 0.086667, cpu_600: 0.085809
\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:logevel}\] \[%{DATA:logtype}\] \[%{POSINT:pid}\] cpu_usage\(%\) now: %{NUMBER:now}, cpu_15: %{NUMBER:cpu_15}, cpu_30: %{NUMBER:cpu_30}, cpu_60: %{NUMBER:cpu_60}, cpu_180: %{NUMBER:cpu_180}, cpu_300: %{NUMBER:cpu_300}, cpu_600: %{NUMBER:cpu_60}
结果
{"cpu_60": "0.050000","cpu_30": "0.066667","pid": "20836","cpu_15": "0.133333","logtype": "other","cpu_180": "0.044444","now": "0.000000","cpu_300": "0.086667","logevel": "info","timestamp": "2022-11-07 14:49:31.280173"
}