云服务器下mongoDB导致带宽(流量)拉满排查解决思路

1 篇文章 0 订阅
1 篇文章 0 订阅

背景:

        aliyun服务器观察到测试环境带宽持续拉满,虽然对服务没有造成其他影响,但长期持续下去带宽费(按量)也会增加不少的开支,如下图:

 排查思路:

       使用iftop命令:

        iftop是实时流量监控工具,可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。

        常用参数 

-i 指定需要检测的网卡, 如果有多个网络接口,则需要注意网络接口的选择,如:# iftop -i eth1
-B 将输出以 byte 为单位显示网卡流量,默认是 bit
-n 将输出的主机信息都通过 IP 显示,不进行 DNS 解析 
-N 只显示连接端口号,不显示端口对应的服务名称
-F 显示特定网段的网卡进出流量  如: iftop -F 192.168.85.0/24
-h 帮助,显示参数信息
-p 以混杂模式运行 iftop,此时 iftop 可以用作网络嗅探器
-P 显示主机以及端口信息
-m 设置输出界面中最上面的流量刻度最大值,流量刻度分 5 个大段显示  如:# iftop -m 100M
-f 使用筛选码选择数据包来计数  如 iftop -f filter code
-b 不显示流量图形条
-c 指定可选的配置文件,如:iftop  -c config file
-t 使用不带 ncurses 的文本界面,
    以下两个是只和 -t 一起用的:
    -s num num 秒后打印一次文本输出然后退出,-t -s 60 组合使用,表示取 60 秒网络流量输出到终端
    -L num 打印的行数
-f 参数支持 tcpdump 的语法,可以使用各种过滤条件。

        安装iftop

yum install iftop -y


# 二进制安装
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
yum install gcc-c++ -y
./configure
make && make install

1.进入界面

iftop -i eth0 -nNB -m 10M
  • -i 指定网卡,
  • -n 代表主机通过ip显示不走DNS
  • -N 只显示连接端口号,不显示端口对应的服务名称(不加会显示如ssh这样的服务名称,不便于排查)
  • -B 指定显示单位为Kb,默认是bit,太小!
  • -m 设置输出界面中最上面的流量刻度最大值,流量刻度分5个大段显示

2.进入界面如图:

 3.按下 L 显示流量刻度 (注意大小写)
        L 参数直接显示进度条,方便阅读。

4.按下 T 显示总量(注意大小写)
        有个总数统计,看着方便。

 5.按下 t,发送和接受合成一行。(注意大小写)

        按下p,可以添加端口

 重点来了:

没错,图中的 172.21.64.148:27017 就是我们找到的流量用得最多的 IP和端口。

想到27017是MongoDB的默认端口,真是MongoDB公网裸奔(一时爽一时犹如火葬场。),结果被黑了,所有的测试数据都被备份了,还留下了一条留言:

All your data is a backed up. You must pay 0.05 BTC to 1K4DdqZ7sWUkhtfRqAGi7VcRck3itcNH17 48 hours for recover it. After 48 hours expiration we will sell all your data on dark markets and the database dump will be dropped from our server!You can buy bitcoin here, https://localbitcoins.com or https://buy.moonpay.io/ After paying write to us in the mail with your DB IP: rambler+14t2o@onionmail.org and you will receive a link to download your database dump. 

PS❤️:如果你的数据非常重要,而且没有备份的话,讲道理兄弟,你可能需要花费点大洋买比币了?(因为我之前允许所有来源0.0.0.0,或许可以尝试允许定向IP访问)

解决思路:

        准备工作

        因为之前是裸奔,所以先暂时把防火墙中的27017端口先关闭,防止在重新配置过程中再次被黑掉。

        删除之前的数据库

        因为我的MongoDB数据库是使用Docker进行安装的,所以先删除之前的MongoDB容器,所有数据都被黑了,也没有保留的必要了,害怕被插入后台运行脚本,所以干脆删除了吧!!!

# 查看所有运行的容器
> docker ps
# 停止及删除刚刚停止的MongoDB容器
> docker rm -f 容器id

        运行MongoDB容器

        因为我的docker中的MongoDB中的版本是4.2,所以兄弟们在运行MongoDB容器的时候要注意版本号,或者是重新拉取一个和我一样的版本也可以,貌似aliyun用就是4.2和6.0的版本比较稳定。

# 搜索mongodb4.2版本
> docker search mongo:4.2

# 拉取mongodb4.2版本
> docker pull mongo:4.2

# 启动mongodb4.2  --auth开启认证
> docker run -d --name mongoDB --restart=always -p 27017:27017 mongo:4.2 --auth

        最后导入备份数据,结束。

        以上内容就是我整理的MongoDB设置账户名和密码,因为是自己的个人总结,可能会有纰漏或不同的地方,有任何问题可以留言。加油!

(安全Tips❤️:服务之间用内网ip链接数据库,限制数据库ip访问、避免裸奔。设置强密码及认证等)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值