两年前我已经发过帖子了
[
谁可能感兴趣
如果您在小团队中工作或单独工作,您可能会对这一点感兴趣。 您没有监控,并且不确定是否真的需要它。 要么你尝试了一些流行的严肃监控“为大男孩”,但它不知何故“没有起飞”为你,或者它在几乎默认的配置下工作,并没有改变你的生活太多。 而且 - 如果您绝对不打算分配整个员工(甚至一个部门)每天至少几个小时来监控监控仪表板或对其进行配置。
为什么 oker 不同寻常
接下来我将展示 okerra 的有趣功能,这些功能将其与其他一些监控系统区分开来。
Okerr 是一种混合监控
在内部监控期间,“代理”在受监控的计算机上运行,它将数据传输到监控服务器(例如,可用磁盘空间)。 在外部时,服务器通过网络执行检查(例如 ping 或网站可用性)。 每种方法都有其局限性。 Okerr 使用这两个选项。 服务器内部的检查是由非常轻量级(30Kb)的代理或您自己的脚本和应用程序执行的,网络检查是通过不同国家的 okerr 传感器执行的。
okerr不仅仅是软件,更是服务
任何监控的服务器部分都庞大且复杂,安装和配置困难,并且需要资源。 使用 okerr,您可以安装自己的监控服务器(免费且开源),也可以仅使用客户端部分并使用我们服务器的服务。 也是免费的。
如果监控允许您弥补和掩盖服务器和应用程序可靠性的不足,那么就会出现一个哲学问题 - 谁是守卫? 如果问题本身由于某种原因单独或与其他资源一起“失效”(例如,通往数据中心的通道中断),那么监控将如何告诉我们问题? 当使用外部服务 oker 时 - 这个问题已经解决 - 即使整个数据中心及其服务器断电或受到僵尸攻击,您也会收到警报。
当然,存在 okerr 服务器本身不可用的风险,这是事实(如您所知,90% 的可靠性总是通过简单且“免费”获得,99% 只需付出最少的努力,接下来的每 99.9 个都是难度成倍增加)。 但是,首先,发生这种情况的可能性较低,其次,只有当问题与我们服务器上的问题同时发生时,该问题才可能被忽视。 如果我们的可靠性为 99.9%,而您的可靠性为 0.1%(数字不是太高),则未检测到故障的几率为 0.1% of 0.0001% = XNUMX%。 几乎不费吹灰之力、无需成本即可为您的可靠性增加三个九,这非常好!
监控即服务的另一个优点是托管提供商或网络工作室可以安装 okerr 服务器并以付费或免费附加服务的形式向客户端提供访问权限。 您的竞争对手只有托管和网站,但您拥有带监控功能的可靠托管。
Okerr 是关于指标的
指示器是一个“灯泡”。 它有两种主要状态 - 绿色(OK)或红色(ERR)。 该项目包含许多分组(例如按服务器)的指标。 在项目的主页上,您立即看到所有内容要么都是绿色的(您可以将其关闭),要么某些内容呈红色亮起并且需要更正。 在这些状态之间转换时,会发送警报。 当您进行设置时,每天都会发送一次项目摘要。
每个 okerr 指标都有内置条件,通过这些条件可以改变状态(在 Zabbix 中这称为触发器)。 例如,平均负载不应超过2(当然,这是可配置的)。 对于每个内部检查(平均负载、磁盘空闲等),都有一个看门狗。 如果由于某种原因我们没有在指定时间收到成功确认,则会记录错误并发送警报。
我们通常的工作模式是早上检查电子邮件,然后在其他信件中查看摘要(我们将其安排在工作开始时)。 如果一切正常,我们会做其他重要的事情(但为了安全起见,我们可以快速查看 okerra 仪表板并确保此时一切都是绿色的)。 如果警报到来,我们会做出反应。
当然,可以简单地保留“信息”指标(从监控中看到网络图片),但一切都是为了简单、轻松、快速地创建专门用于自动监控和发送警报的指标。
您设置 okerr 的目的是在警报中,以便您可以在一分钟内创建一个指示器,它可以“休眠”一年,只接受更新,当一年后出现问题时,它会亮起并发送一个警报。 一旦您花在创建指标上的那一刻就得到了回报;您立即比其他人先了解了问题。 他们可能在有人注意到之前就修复了它。 快速升起的东西不算掉落!
安全
如果你为了提高可靠性而设置监控,结果却通过它受到网络攻击,那就太可惜了,而且不同的监控工具都存在相当多的网络漏洞(
代理(来自包中的 okerrmod
监控全覆盖
现在我们的规则是我们从oker那里了解所有的技术问题。 如果规则突然被违反(okerr 没有警告其即将发生(如果可能的话)或它已经发生) - 我们向 okerr 添加检查。
外部检查
很典型的一组:
- 平
- http状态
- 检查SSL证书的有效性和新鲜度(如果即将过期会发出警告)
- 打开 TCP 端口和横幅
- http grep(页面[不得]包含特定文本)
- sha1 哈希以捕获页面更改。
- DNS(DNS 记录必须具有特定值)
- WHOIS(如果域名即将变坏将发出警告)
- 反垃圾邮件 DNSBL(主机一次检查 50 多个反垃圾邮件黑名单)
内部检查
另外,这是一个相当标准的集合(但很容易扩展)。
- df(可用磁盘空间)
- 平均负载
- opentcp(打开 TCP 侦听套接字 - 如果某些内容启动或崩溃,将发出通知)
- 正常运行时间 - 只是服务器上的正常运行时间。 如果已更改(即服务器已超载),则会通知
- 客户端IP
- dirsize - 我们用它来跟踪我们的虚拟机 rootfs 何时超出允许的大小(不引入严格的限制)以及用户主目录的大小
- 空和非空 - 监视应该为空(或非空)的文件。 例如,okerr服务器本身的错误日志应该是空的,如果里面有一行,我就会收到通知并检查它。 但邮件服务器上的mail.log 不应为空(轮换后N 分钟)。 有时,系统更新后,当 logrotate 无法正确重新启动 rsyslog 时,它对我们来说是空的。
- linecount - 文件中的行数(如 wc -l)。 当错误日志仍然会增长但增长缓慢时(例如,Googlebot 会点击一些关闭的页面),我们将其用作空的更软的替代品。 2 分钟内仅限 20 行。 如果高于的话就会有警报
有趣的内部检查
如果到目前为止您一直在“对角”阅读,那么现在仔细阅读会更有趣。
备份
监视目录中的备份。 我们的备份文件的名称类似于“ServerName-20200530.tar.gz”。 对于 okerr 中的每个服务器,都会创建指标 ServerName-DATE.tar.gz(实际日期更改为“DATE”行)。 还监视新备份的存在及其大小(例如,它不能小于先前备份的 90%)。
在我们开始创建新备份并将其放入此目录后,需要做什么才能开始跟踪它? 没有什么! 当您需要“什么都不做”时,这是一种非常方便的方法,因为:
- “什么都不做”很快,可以节省时间
- 很难忘记“什么都不做”
- 如果犯了错误,就很难“不做任何错事”。 没有什么是最可靠的方法
如果突然停止出现新的备份文件,将会发出警报。 例如,如果您禁用了其中一台服务器,并且不应再有备份,则您将需要删除该指示器(通过 Web 界面或通过 API 从 shell 中)。
最大文件数
跟踪最大文件的大小(通常:/var/log/*)。 这使您可以捕获不可预测的问题,例如,暴力破解密码或通过服务器发送垃圾邮件。
运行状态/运行线
这是两个重要的代理模块,用于在服务器上运行其他程序。 Runstatus 向指示器报告程序退出代码。 例如,okerr 不需要(需要)一个模块来检查 systemd 服务是否正在运行。 这是通过 runstatus 完成的(见下文)。 Runline - 向服务器报告程序生成的行。 例如, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp"
在我们服务器上的 Runline 配置中创建一个带有处理器温度的指示器 servername:temp 。
SQL
对 MySQL 执行数值查询并将结果报告给指示器。 在简单的情况下,您可以执行“SELECT 1”等操作 - 这将检查整个 DBMS 是否正常工作。
但更有趣的应用程序是跟踪在线商店中的订单数量。 如果您知道每小时有 100 个或更多订单,您可以将最小限制设置为 100 或 80。然后,如果您的销售额突然下降,您将收到警报,您可以弄清楚。
请注意,发生这种情况的不可预测的原因并不重要:
- 服务器根本不可用(断电或没有网络),警报来自于指示器“腐烂”的事实。
- 服务器负载过重,运行缓慢或丢包,给用户带来不便,不购买就离开
- 该服务器被列入垃圾邮件列表,不接受来自该服务器的邮件,用户无法注册
- 广告活动预算已经用完,横幅也不再旋转。
原因可能有很多,而且所有这些原因都无法提前预见,而且在技术上也很难追踪。 但您可以方便地监视最终参数(订单),并从中确定情况可疑并值得处理。
逻辑指标
允许通过模块使用布尔表达式(Python 语法)
您可以创建两个指标:白天和夜间。 将两者设为“静音”(它们不会发送警报)。 并且创建一个逻辑指标,要求20:00之前白天指标OK,20:00之后夜间指标OK就可以了。
使用逻辑指示器的另一个例子是 升级。 例如,项目经理取消订阅警报(他没有必要这样做,管理员应该对正常问题做出响应),但订阅了一个逻辑指示器,如果项目中的任何指示器在分配的时间内未得到纠正,该指示器就会变成红色。
此外,还可以设置允许工作的时间,例如凌晨 3 点到 5 点。 我们不关心服务器和网站在此期间是否崩溃。 但5:00他们就得上班了。 如果它们在其他时间不工作——请警惕。 逻辑指示器还允许您考虑服务器冗余。 如果您有 5 台 Web 服务器,那么管理员可以随时关闭 1-2 台服务器。 但如果3个服务器中少于5个服务器在战斗,就会出现警报。
上面的例子不是oker功能,不是一些需要激活和配置的功能。 Okerra 不具备所有这些功能,但有一个逻辑模块可以让您实现此功能(类似于编程语言 - 如果我们有算术运算符,那么我们不需要计算 20% 增值税的特殊函数从语言来看,您始终可以自己制作以满足您的需要)。
逻辑指标可能是 okerr 中为数不多的相对复杂的主题之一,但好消息是,除非需要,否则您不必掌握它。 但与此同时,它们极大地扩展了功能,同时保持系统本身相当简单。
添加您自己的支票
我真的很想传达这样的想法:okerr 并不是一组适用于所有场合的数千个现成的检查,而是相反 - 首先 - 一个简单的引擎,具有创建自己的检查的简单能力。 在 okerr 中创建自己的检查不是黑客、系统共同开发人员或至少是高级 okerr 用户的任务,但对于一个月前第一次安装 Linux 的任何管理员来说都是可行的任务。
通过该模块检查最低工资
配置中的这一行
true_OK=/bin/true
只有一行 - 我们已经到了一点点 扩大了 功能还可以。
即使这样的检查也已经有它的价值了:如果你的服务器突然崩溃了,okerr服务器上相应的指标不会及时更新,时间过去后就会出现警报。
此检查将通知 apache2 服务器已崩溃(好吧,你永远不知道......):
apache_OK="systemctl is-active --quiet apache2"
因此,如果您使用任何编程语言,并且至少可以编写 shell 脚本,那么您就可以添加自己的检查。
更困难的是 - 您可以(用任何语言)为 okerrmod 编写您自己的模块。 在最简单的情况下,它看起来像这样:
#!/usr/bin/python3
print("STATUS: OK")
是不是非常困难呢? 模块必须自行检查并将结果输出到 STDOUT。 例如,更复杂的模块给出:
$ okerrmod --dump df
NAME: pi:df-/
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 49.52%, 13.9G/28.2G used, 13.0G free
STATUS: 49.52
NAME: pi:df-/boot
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 84.32%, 53.1M/62.9M used, 9.9M free
STATUS: 84.32
它一次更新多个指标(用空行分隔),在必要时创建它们,指示验证详细信息和标签,通过该标签可以轻松在仪表板中找到必要的指标。
Telegram
有一个 Telegram 机器人
状态页
如今,状态页面几乎是任何拥有 IT、对可靠性负责任的态度并尊重客户/用户的企业的必备品。
想象一种情况 - 用户想要做某事、查看信息或下订单,但有些事情不起作用。 他不知道发生了什么事,问题是谁一方的,什么时候才能解决。 也许您的公司只是有一个无法正常运行的网站? 还是六个月前就坏了,两年后就修好了? 但你现在需要买一台冰箱,它已经在购物车里了……而当一个人看到你有问题时(至少很明显问题不在他这边),那是完全不同的事情了。问题已经被发现,你已经在努力解决它,甚至可能写下了纠正的大概时间。 用户可以订阅并在问题解决后收到电子邮件通知,并且他可以做他想做的事(购买冰箱)。
每个人都会遇到问题和停机。 但用户和合作伙伴更信任那些在解决问题上更加透明和负责任的人。
这里
故障转移
为了不让这篇文章变得更长,我再次参考我之前的文章——
系统要求低
对于 okerr 服务器,我们使用 RAM 为 2Gb 以上的机器。 对于网络传感器来说,甚至 512Mb 就足够了。 客户端部分一般几乎为零。 (塑料袋
考虑到这一点 - 好吧,可能 最自由 从可用的监控系统,因为即使使用其他免费的开源系统,如Zabbix或Nagios,你也需要为其分配资源(服务器),而这已经是钱了。 此外,还需要进行一些服务器维护。 使用oker,这部分可以被删除。 或者您不必删除它并使用您自己的服务器,具体取决于您最喜欢的。
API 和集成到专有软件中
简单且开放的架构。 oker 有一个非常简单的
#!/bin/sh
for indicator in `okerrclient --api-filter sslcert`
do
echo set location for $indicator
okerrclient --api-set location=ru retest=1 --name $indicator
done
您可以使用我们的客户端模块更新指标,即使没有它,只需通过curl即可。
# short and nice (using okerrupdate and config file)
$ okerrupdate MyIndicator OK
# only curl is enough!
$ curl -d 'textid=MyProject&name=MyIndicator&secret=MySecret&status=OK' https://bravo.okerr.com/
您可以直接从您的程序更新指标。 例如,发送心跳信号,以便 okerr 知道它正在运行,并在崩溃或死机时发出警报。 顺便说一句,okerr 组件就是这样做的 - okerr 自我监控,几乎所有模块中的问题都会被检测到并生成有关该问题的警报。 (在这种“几乎”的情况下 - 它们是从另一台服务器进行交叉检查的)
这是我们的电报机器人中的代码(简化):
from okerrupdate import OkerrProject, OkerrExc
op = OkerrProject()
uptimei = op.indicator("{}:telebot_uptime".format(hostname))
...
uptimei.update('OK', 'pid: {} Uptime: {} cmds: {}'.format(
os.getpid(), dhms(uptime), commands_cnt))
有一个用于更新 Python 程序指标的库
oker 如何帮助我们
奥克尔改变了我们的生活。 的确。 也许另一个监控系统也可以做同样的事情,但是使用 okerr 对我们来说非常简单,而且它具有我们需要的所有功能(我们添加了它没有的功能)。 顺便说一句,如果缺少某些功能,请询问,我会添加它们(我不保证,但我希望 okerr 成为中小型项目的最佳监控系统)。 或者更好的是,您自己添加它 - 这很容易。
我们设法遵循“从喀拉地区了解所有问题”的原则。 如果突然出现一个我们没有从 okerr 中了解到的问题,我们会向 okerr 添加检查。 (在这种情况下,“我们”是指我们作为系统的用户,而不是共同开发者)。 起初这种情况很常见,但现在已经变得非常罕见了。
监控
通过 okerr,我们监控所有服务器上的日志大小。 当然,不可能用眼睛深思熟虑地阅读日志的每一行,但仅仅监视增长率就已经给出了很多信息。 通过这一点,我们发现了垃圾邮件和暴力密码搜索,当某些应用程序“变得疯狂”时,某些东西对它们不起作用,它们会一次又一次地重复(每次都在日志中添加几行) )。
SSL 证书。 几乎在发布后立即 a2okerr.py
— 如果服务器上出现多个新站点,它们将自动出现在 oker 中。 如果由于某种原因突然没有更新证书,在证书过期前三周,我们就知道了,我们会弄清楚为什么不更新,这样的狗。 a2certbot.py
来自同一个包 - 它对此有很大帮助(它立即检查最可能的问题 - 并写下检查良好的内容以及最有可能出现问题的位置)。
我们监控所有域名的到期日期。 我们所有发送邮件的邮件服务器也会根据 50 多个不同的黑名单进行检查。 (有时他们也会陷入其中)。 顺便问一下,您知道 Google 邮件服务器也被列入黑名单吗? 只是为了自测,我们将mail-wr1-f54.google.com添加到受监控的服务器中,它仍然在SORBS黑名单中! (这就是“反垃圾邮件发送者”的价值)
备份 - 我已经在上面写过使用 okerr 监控它们是多么容易。 但我们会监控服务器上的最新备份以及(使用使用 okerr 的单独实用程序)上传到 Amazon Glacier 的备份。 而且,是的,问题时常发生。 难怪他们都在看。
我们使用升级指示器。 它表明某个问题是否很长时间没有得到解决。 而我自己,当我解决一些问题时,有时我会忘记它们。 即使您正在监控自己,升级也是一个很好的提醒。
总的来说,我相信我们的工作质量提高了一个数量级。 几乎没有停机时间(或者客户没有时间注意到它。嘘!),同时工作量变得更小,工作条件变得更平静。 我们已经从用胶带修补漏洞的紧急工作转向冷静和谨慎的工作,许多问题可以提前预测,并且有时间预防。 即使已经发生的问题也变得更容易修复:首先,我们在客户惊慌之前发现了问题,其次,经常会发生问题与最近的工作有关(当我在做一件事时,我破坏了另一件事) -所以热痕迹更容易处理。
但还有另外一个案例...
您是否知道在流行的 Debian 9 (Stretch) 中,像 phpmyadmin 这样流行的软件包仍然(好几个月!)处于易受攻击的状态? (
还有一次类似的情况:SSH 出现漏洞后,需要更新所有服务器。 当你设定任务时,你需要控制执行。 (下属容易误解、忘记、困惑和犯错误)。 因此,我们首先在所有服务器上向 okerr 添加了 SSH 版本检查,并通过 okerr 确保在所有服务器上推出更新。 (方便!我选择了这种类型的指标,你可以立即看到哪个服务器有哪个版本)。 当我们确定所有服务器上的任务都已完成时,我们删除了指示器。
有几次,出现了某个问题,然后又自行消失。 (想必大家都很熟悉吧?)。 当您注意到时,当您检查时(无需检查任何内容),一切都已经运行良好。 但随后它又破裂了。 例如,我们上传到亚马逊商城 (MWS) 的产品就发生过这种情况。 在某些时候,加载的库存不正确(货物数量错误和价格错误)。 我们想通了。 但为了解决这个问题,立即找出问题所在很重要。 不幸的是,像所有亚马逊服务一样,MWS 有点慢,所以总是有延迟,但我们仍然能够至少粗略地掌握问题和导致问题的脚本之间的联系(我们做了检查,卡住了)将其发送给 oker,并在收到警报后立即进行检查)。
最近,一家大型且昂贵的欧洲托管商添加了一个有趣的案例,我们的客户正在使用该案例。 突然,我们所有的服务器都从雷达上消失了! 首先,客户本人(比 okerra 更快!)注意到他正在使用的网站无法打开,并就此发出了一张罚单。 但不仅仅是一个网站瘫痪了,而是所有网站都瘫痪了! (娜塔莎,我们放弃了一切!)。 在这里,奥克尔开始寄出长长的脚套,上面有所有为他点亮的指示灯。 恐慌,恐慌,我们原地打转(我们还能做什么?)。 然后一切都上涨了。 事实证明,数据中心进行了例行维护(每多年一次),当然,我们应该得到警告。 但他们发生了一些问题,他们没有警告我们。 好吧,更多的心脏病发作,更少的心脏病发作。 但一切恢复后,你需要仔细检查一切! 我无法想象我会如何用我的双手做到这一点。 Okerr 在几分钟内测试了所有内容。 事实证明,大多数服务器只是暂时不可用,但它们可以工作。 有些人超负荷了,但也站了起来。 在所有损失中,我们丢失了两个备份,根据官方说法,这些备份应该是在这个完整的香蕉发生时创建和加载的。 我什至没有费心去创建它们,仅仅一天后就收到警报,一切正常,备份已经出现。 我真的很喜欢这个例子,因为事实证明 okerr 在我们事先没有想到的情况下非常有用,但这就是监控的目的 - 抵御不可预测的情况。
对于 Okerr 传感器,我们使用最便宜的托管(其中质量和可靠性并不重要,它们相互保证)。 所以,我们最近找到了一个非常好的托管服务,而且超级便宜,基准测试非常棒。 但是...有时,虚拟机的传出连接是从另一个(相邻)IP 建立的。 奇迹。 client_ip 模块与
好吧,还有一件事——既然我们谈论的是 VPS 托管——我们总是使用便宜的(hetzner、ovh、scaleway)。 我真的很喜欢它的基准和稳定性。 我们还为其他项目使用更昂贵的 Amazon EC2。 因此,感谢 oker,我们有了自己的明智意见。 他们都倒下了。 我不会说,经过我们长期的观察,像 Hetzner 这样的廉价主机明显不如 EC2 稳定。 因此,如果您不依赖亚马逊的其他功能,为什么要支付更多费用呢? 🙂
接下来是什么?
如果在这个阶段我还没有把你从 Okerr 吓跑,那就试试吧! 您可以直接访问此链接
注册后,您将被要求接受培训(执行一些不太困难的培训任务)。 初始限制非常小,但对于训练或一台服务器来说它们就足够了。 完成训练后,限制(例如指标的最大数量)将会增加。
从文档中 - 首先
如果您认真使用它并且这些增加的限制还不够,请写信给支持,我们将增加它(免费)。
您想在您的服务器上安装 oker 服务器吗? 这里
我们希望这个项目能够成功,让世界因为我们而变得更加可靠。 得益于免费软件和服务,世界变得更加友好,并且发展更加活跃。 源代码可以存储在免费的 github 中,对于邮件,您可以使用免费的 gmail。 我们免费使用
来源: habr.com