我决定分享我的故事。 也许甚至有人会发现此预算解决方案对一个众所周知的问题很有用。
当我又年轻又热又不知道该把精力放在哪里时,我决定做些自由职业。 我设法迅速获得了评级,并且找到了一些固定客户,他们要求我持续维护服务器。
我想到的第一件事是需要监视。 我决定以聪明的人的身份来做,而不是重新发明轮子,而是研究现成的选择,例如Munin或Zabbix。 但是,立即发现Web版本需要良好的Internet连接,特别是如果您首先从手机中打开它的话。 如果您在远离城市的自然环境中放松身心,则很难获得稳定的联系。 因此,选择了控制台监视选项。
Atop和日志读取器atopsar在控制台监视方面给了我很多帮助。 他们已经在哈勃尔峰
上被提及过,
甚至在上面被拆开 ,但是关于阿托普萨尔几乎什么也没说。
安装方式
安装非常简单,只有三个团队。
#Centos
yum install atop
#Debian / Ubuntu
apt-get install atop
接下来,您可以自己配置监视操作或使用默认设置。
#Debian / Ubuntu / Centos
/etc/default/atop
标准文件:
#cat /etc/default/atop INTERVAL=60 #, , 10 LOGPATH="/var/log/atop" # OUTFILE="$LOGPATH/daily.log" #
添加到自动运行
#Debian / Ubuntu / Centos
systemctl enable atop
作为守护程序运行
#Debian / Ubuntu / Centos
systemctl start atop
懒散地聚集在一个团队中
#Centos
yum install atop && systemctl enable atop && systemctl start atop
#Debian / Ubuntu
apt-get install atop && systemctl enable atop && systemctl start atop
阿托普萨
除了atop之外,还安装了atopsar,它是由atop守护程序运行的二进制日志的便捷控制台分析器。 当然,您可以自己读取日志,但是如果要捕获较大的时间间隔,则这样做并不方便。
关于阿托普萨尔工作的小型教育计划。
当atopsar在没有密钥的情况下启动时,它将打开今天的日志,并分别显示每个内核的负载以及所有内核的idl字符串。
我使用的键是:
-A =打印日志中的所有信息
-c =显示有关处理器核心负载的信息,默认键
-m = RAM和交换负载
-d =磁盘活动
-O =前3个CPU加载进程
-G =前3个RAM加载过程
-D =前3个磁盘加载过程
-N =前3个网络加载过程
-r =如果要查看过去几天的负载,请指定要读取的日志的路径
-b =开始输出的时间
-e =完成输出的时间
-M =在末尾创建一个附加列,其中标记了该行的关键程度(+有负载,*-关键负载)
通过监视,我们可以随时了解服务器行为不正确的原因。
通知事项
因此,可以监视负载,但是仍然无法快速发现并解决问题。 我们需要有关该问题的通知。
我是一个人监视服务器,所以我需要通知我始终可以看到它的位置,并且至少以某种方式对其做出反应。
最初有SMS-快速,可靠,免费。 但是随后,移动运营商通过其网关掩盖了免费的SMS分发。
邮件-长期以来,可能存在传递问题。
Messenger-必须放在电话上,必须创建漫游器。
搜索的结果是,选择Telegram Messenger是因为它在手机和台式机上的简单性和便捷性。
使用
botfather创建了他的机器人。
我在服务器上放置了一些脚本来跟踪服务器上的负载(IDL,smartct等.l)之后,出现了诸如“ oom killer”之类的错误,创建备份时出现的错误以及其他需要控制的操作。
这些脚本非常简单,用bash编写,例如,检查LA并通知Load Averadge已超过服务器上的内核数。
if [ ${LA[0]} -gt 2000 ] || [ ${LA[1]} -gt 3000 ] || [ ${LA[2]} -gt 4000 ] then wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= $ip LA $LAd" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=`top -b -n 1 | grep Cpu`" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= 5 `top -b -n 1 | grep -A 5 'PID USER' | tail -5`" fi
语法的简单性提供了许多用例(并且至少知道一点编程语言的任何人都可以编写/添加)。
唯一需要注意的是-如果服务器位于俄罗斯(并且服务器上没有IPv6),则需要使用代理。 为此,在脚本的开头,必须将连接字符串注册到代理:
export https_proxy=http://:@IP.:
这还没有结束
您在后面背着背包的情况下从山上平静地走过,从文明中休憩,然后电话意外抓住了连接,并发出有关服务器出现问题的通知。 怎么办 平静的心情被风吹散了。 打电话给我的妻子并命令命令? 哈哈
迫切需要找到一种方法来快速解决问题,而又无法获得良好的互联网。 在这里,我又被使者(#telegrammivi)救了。 我教我的机器人仅与我交流,而忽略其他所有人。 现在,随着问题的通知,我得到了更多的数据,据此我可以了解问题的根源是谁,并且我可以尝试远程解决问题。 只需向机器人写一条消息,将手机扔得更高,这样该消息就消失了,瞧-机器人去做您的工作就足够了。 因此,例如,我可以杀死一些不需要的进程,重新启动守护程序,阻止IP等。
在这里,我还转发了将来来自客户端的必要请求,例如,向用户紧急重置密码(因为“啊,我们无法进入服务器,我们损失了数百万美元!”),搜索有权访问所需文件夹的用户,打开和关闭网站以及其他。 当然,我会不断修改Bot的功能,因为有时客户的想像力会突然弹出,而不是我的要求。 但是基本的满意。
VK也有一个版本,但是以某种方式没有扎根。
现在,我从容地旅行并探索这个世界,而不必担心会有什么东西破裂,而且我将无法发现或修复它。