easy-monitor-3-接入
    
    
        发布于:2021-11-23 15:34:01  
        
        
        访问: 
 
    
    
        Doc 
pre 
服务部署 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 61 62 63 64 65 66 67 68 69 wget https:// repo.mysql.com//my sql80-community-release-el8-1 .noarch.rpm mysql: yum -y install nodejs npm install -g n yum install git -y git clone https://gi thub.com/X-Profiler/ xprofiler-console git clone https://gi thub.com/X-Profiler/ xtransit-manager git clone https://gi thub.com/X-Profiler/ xtransit-server wget https:// repo.mysql.com//my sql80-community-release-el8-1 .noarch.rpm rpm -ivh mysql80-community-release-el8-1 .noarch.rpm yum install mysql-server https:// dev.mysql.com/doc/ refman/8.0/ en/linux-installation-yum-repo.html service mysqld restart grep 'temporary password'  /var/ log/mysqld.log mysql -uroot -p alter user 'root' @'localhost'  identified by 'xxxxxxxxx' ; 根据centos是7 还是8 安装对应的mysql,如80 的安装在centos7上面就会出现问题 mysql -h localhost -u root -p > create database xprofiler_logs; > create database xprofiler_console; cd xtrainsit-console/db mysql -uroot -pxxxxxxxxx; -h127.0.0 .1  -D 'xprofiler_console'  < ./init.sql cd xtrainsit-manager/db mysql -uroot -pxxxxxxxxx -h127.0.0 .1  -D 'xprofiler_logs'  < ./init.sql mysql -uroot -pxxxxxxxxx -h127.0.0 .1  -D 'xprofiler_logs'  < ./date.sql redis wget http:// download.redis.io/releases/ redis-5.0 .8 .tar.gz tar -xvf redis-5.0 .8 .tar.gz mv redis-5.0 .8  /usr/ local cd /usr/ local/redis-5.0.8/  yum list gcc yum list tcl yum install gcc  yum install tcl  make MALLOC=libc make test cd src && make install vim redis.conf  ./src/ redis-server ./redis.conf nginx 增加域名 emconsole.xxx.cn 172.111 .111.111  emconsole.xxx.cn/usr/ local/tengine/ sbin/nginx -s reload/usr/ local/tengine/ sbin/nginx -t 进入到gitlab各个项目下面,npm start 
 
prometheus 
我们这边机器的监控是运维团队基于prometheus做的 
目前Prometheus是按照k8s集群部署的, 每一个K8s集群都由独立的Prometheus来监控, (Prometheus部署在当前集群中) 
https://prometheus.io/docs/introduction/overview/  
各个node运行node_exporter供prometheus采集数据,运行consul客户端注册节点信息向consul服务端,prometheus server从consul服务端获取所有的node节点,通过prometheus-es-adapter将数据持久化到es。配置alertmanager告警规则触发告警,监控指标图表通过grafana来查看 
jdk    | go |node-exporter | prometheus-es-adapter    |prometheus | alertmanager| consul |elasticsearch | kibana |grafana     
基于Prometheus 和 thanos 进一步增加了异常检测机制.  基于机器学习对阈值进行动态检测 
 
转储 1 connect  ECONNREFUSED 127.0.0.1:8443 , POST http://127.0.0.1:8443 /xapi/upload_from_xtransit?fileId=4 &fileType=heapsnapshot&nonce=74904800742 ×tamp=1646389590491 &signature=a331 a7 a4 fe28 cdd275 bfa0 df3 d937 d9 e4 ca40 c6 a -1  (connected: false, keepalive socket: false, socketHandledRequests: 1 , socketHandledResponses: 0 ) headers: {}
 
config.xprofilerConsole = ‘xxx’; 
这部分会提供给应用端,在调用转储的时候,应用端上传文件时候会请求 1 const  url  = `${server} /xapi/upload_from_xtransit?${qs.stringify({ fileId, fileType, nonce, timestamp, signature } )}` ;
 
这个里面的server,就从xprofilerConsole来,所以正式环境部署的时候,要给到能连通的url 
分析策略,看给的各个应用服务的流程图,分析原因 
 
log_dir 性能分析文件会比较大,尽量不要放在会太影响memory的位置
一次内存泄漏问题排查 
基于puppeteer的一个转svg的node服务 
做压力测的时候,间隔时间gc,gc之后内存会往上涨 
借助easy-monitor3, 堆快照,发现TCP -> Socket -> WebSocket 是泄漏点 
Search具体的,发现是WS 
在package-lock里面搜ws ,发现被puppeteer依赖 
这个时候查处理puppeteer部分的代码,发现有代码处理逻辑上,会错误的建立connect(对API使用有问题) 
让处理了下这部分代码,解决问题 
 
docker + k8s 
        
            
    
        赞赏 
    
    
         
         感谢鼓励