kra*_*r65 5 linux monitoring mysql mongodb
我正在运行一个简单的开发服务器 (Ubuntu),MySQL 和 MongoDB 有时会在该服务器上崩溃。我总是用sudo service mysql restart
.
尽管我知道我需要调查它们崩溃的原因——我会——但我目前正在寻找一种在它们崩溃后自动重启它们的方法。我想我需要某种守护进程来 ping 它们并在它们不再响应时重新启动它们,但我不确定如何执行此操作。
我读过像Nagios这样的工具,但我想这对我的情况来说有点矫枉过正。
有人知道我该如何开始吗?
Gia*_*968 12
我读过像Nagios这样的工具,但我想这对我的情况来说有点矫枉过正。
有人知道我该如何开始吗?
简单。研究使用Monit设置监控配置。这是一个轻量级且易于设置的系统监控工具,在您描述的场景中设置非常有用;服务关闭,重新启动它并提醒我。
我主要将它用于 Apache Web 服务器,但也有 很多示例说明可以为其他程序/软件(例如 MySQL 等)执行的操作。
我设置它的方式是line this。首先,像这样安装 Monit 程序本身:
sudo apt-get install monit
Run Code Online (Sandbox Code Playgroud)
安装后,然后在此处编辑配置;我更喜欢使用,nano
但可以随意使用您喜欢的任何文本编辑器:
sudo nano /etc/monit/monitrc
Run Code Online (Sandbox Code Playgroud)
调整默认守护程序值以每 60 秒检查一次服务,启动延迟为 120:
set daemon 60
with start delay 60
Run Code Online (Sandbox Code Playgroud)
然后找到的mailserver
面积monitrc
并添加以下行。Postfix 或 SMTP 需要处于活动状态才能工作。我通常在我的服务器上安装 Postfix,所以我使用以下设置:
set mailserver localhost
Run Code Online (Sandbox Code Playgroud)
然后我确保像这样设置 Monit 配置目录:
sudo mkdir -p /etc/monit/conf.d
Run Code Online (Sandbox Code Playgroud)
现在——就像我说的——我主要使用 Monit 进行 Apache 监控,所以这是一个我喜欢使用的简单配置,但基本概念与 MySQL、MongoDB 或其他东西类似。我会把它保存在这个文件中:
sudo nano /etc/monit/conf.d/apache2.conf
Run Code Online (Sandbox Code Playgroud)
这将是该文件的内容:
check process apache with pidfile /var/run/apache2.pid
start "/usr/sbin/service apache2 start"
stop "/usr/sbin/service apache2 stop"
if failed host 127.0.0.1 port 80
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
Run Code Online (Sandbox Code Playgroud)
语法是不言自明的,但基本上:
apache2.pid
; 请务必更改它以匹配您apache2.pid
或httpd.pid
您环境中的实际位置。start
和stop
。80
上的 Web 服务器的逻辑localhost
127.0.0.1
根据我上面链接的示例,我假设这样的配置适用于 MySQL。首先,创建一个这样的文件:
sudo nano /etc/monit/conf.d/mysql.conf
Run Code Online (Sandbox Code Playgroud)
我已经修改了这个例子,所以它 - 我会假设 - 行为类似于我为 Apache 设置的:
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/usr/sbin/service mysql start"
stop program = "/usr/sbin/service mysql stop"
if failed host 127.0.0.1 port 3306 protocol mysql
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
Run Code Online (Sandbox Code Playgroud)
当然,应该调整以匹配您的实际工作环境——例如调整 mysqld.pid
、电子邮件地址等——但过去它在想法/实施方面相当通用。
设置好后,重新启动monit
,一切都应该很好:
sudo service monit restart
Run Code Online (Sandbox Code Playgroud)
要创建 MongoDB 监控规则集,请创建如下文件:
sudo nano /etc/monit/conf.d/mongod.conf
Run Code Online (Sandbox Code Playgroud)
这是 MongoDB 监控规则;请注意,这与活动的 MongoDB 守护程序相匹配,而不是 PID(又名:),mongod.lock
因为它似乎不适用于:
check process mongod matching "/usr/bin/mongod"
start program = "/usr/sbin/service mongod start"
stop program = "/usr/sbin/service mongod stop"
if failed host 127.0.0.1 port 27017 protocol http
with timeout 15 seconds
then restart
alert email_address@example.com only on { timeout, nonexist }
Run Code Online (Sandbox Code Playgroud)
当然,应该调整以匹配您的实际工作环境 - 例如调整实际路径 /usr/bin/mongod
二进制文件、电子邮件地址等——但过去它在想法/实现方面相当通用。
设置好后,重新启动monit
,一切都应该很好:
sudo service monit restart
Run Code Online (Sandbox Code Playgroud)
您可以按照 Monit 日志查看它的运行情况:
sudo tail -f -n 200 /var/log/monit.log
Run Code Online (Sandbox Code Playgroud)
作为测试,您可以简单地停止 MySQL 或 MongoDB 服务器,然后查看该日志中显示的内容。如果一切顺利,您应该会看到整个监控过程并重新启动,包括向您在配置中设置的地址发送一封电子邮件。
归档时间: |
|
查看次数: |
4143 次 |
最近记录: |