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
赞赏
感谢鼓励