故障现象:
我的komari接入了20+台机器,但是问题在于其中三台机器,其中1C的机器会CPU直接100% 2C/4C的机器会占用30%~50%,使用htop看到agent进程在疯狂占用机器性能


排查思路:
先想一下为什么偏偏是这几台机器出问题,本人有强迫症,所有的机器都必须dd成一个模板,大家系统都是一样的,而这些机器全都是没有跑传统服务的,环境没有折腾过,全是纯docker服务,凭什么就你们三个有问题,后来通过find / -type f -name “komari*” 寻找有没有日志的时候发现这三台机器在扫描/proc目录的时候会卡很久,也就是说这三台机器的进程或者连接数是比较高的
通过查阅github上的开发文档得知,komari是存在扫描网络连接数的功能的,那么大概率问题就出在这
处理步骤:
让进程只能看到自己创建的连接,无法通过扫描 /proc 看到全局的连接数
mount -o remount,rw,nosuid,nodev,noexec,relatime,hidepid=invisible /proc
添加一个普通用户,给他自己的工作目录授予权限
useradd -M -s /usr/sbin/nologin komari_user
chown -R komari_user:komari_user /opt/komari/
编辑服务文件
nano /etc/systemd/system/komari-agent.service
[Unit]
Description=Komari Agent Service
After=network.target
[Service]
User=komari_user #设置用户
Group=komari_user #设置用户组
Type=simple
ExecStart=/opt/komari/agent -e https://xn--9kqp11i6bk.eu.org -t PTpFk1K8WUzWRQmE1t1WAA --disable-web-ssh
WorkingDirectory=/opt/komari
Restart=always
#这里要删掉原本的root用户
[Install]
WantedBy=multi-user.target
重启服务
systemctl daemon-reload
systemctl restart komari-agent
观察komari_user用户是否能正确读取/proc内容,如果很少或者为0就对了
runuser -u komari_user -- cat /proc/net/tcp

观察进程是否已经成功权限降级
ps aux | grep agent

观察进程是否已经不再占用CPU
htop

如果问题解决了,可以修改挂载目录永久生效
nano /etc/fstab
proc /proc proc defaults,hidepid=invisible 0 0

警告:如果你的机器上有必须要监控/proc目录的软件,请勿跟着我改,我的机器都是纯docker服务,所以没什么影响