Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Monitのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Monit
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:状態監視と通知]] [[en:Monit]] [https://mmonit.com/monit/ Monit] は AGPL3.0 ライセンスのシステム・プロセス監視ツールです ([https://mmonit.com/ M/Monit] とは関係ありません)。Monit を使うことで、クラッシュしたサービスを自動的に再起動したり、標準的なハードウェア (例えば [[lm_sensors]] や {{Pkg|smartmontools}} のハードドライブなど) から温度を表示することができます。何か問題が発生したり、繰り返し問題が発生したときにサービスアラートを送信します。コマンドラインから直接アクセスすることも、統合された HTTP(S) サーバーを使ってウェブアプリとして動作させることも可能です。特定のシステムの状態を素早く効率的に収集できます。 == インストール == {{Pkg|monit}} パッケージを[[インストール]]してください。また、任意で {{Pkg|lm_sensors}} や {{Pkg|smartmontools}} などのソフトウェアもインストールします。設定を完了したら、{{ic|monit}} サービスを[[起動]]・[[有効化]]してください。 == 設定 == Monit のメイン設定ファイルは {{ic|/etc/monitrc}} です。このファイルを編集することもできますが、(ハードドライブの温度や健康状態を取得するために) スクリプトを実行したい場合、{{ic|include /etc/monit.d/*}} の最後のディレクティブをアンコメントして {{ic|/etc/monitrc}} を保存、{{ic|/etc/monit.d/}} を作成してください。 {{Note|Monit を使うには {{ic|/etc/monitrc}} ファイル (と {{ic|/etc/monit.d}} に保存するファイル) のパーミッションを {{ic|0700}} にする必要があります。パーミッションが異なっていると Monit を起動できません。}} === 設定構文 === Monit で使用される設定構文は非常に読みやすいものになっています。{{ic|check WHAT}} の後に {{ic| if THING condition THEN action}} が続くのが基本です。設定ファイル内の {{ic|if}}, {{ic|and}}, {{ic|with(in)}}, {{ic|has}}, {{ic|<nowiki>us(ing|e)</nowiki>}}, {{ic|on(ly)}}, {{ic|then}}, {{ic|for}}, {{ic|of}} はあくまで人間が読みやすいように書いてあるだけで、Monit が読み込むときは全て無視されます。 == 設定サンプル == === メールサーバーの設定 === {{bc|set mailserver smtp.myserver.com port 587 username "MyUser" password "MyPassW0rd" using tlsv12}} === メール通知のフォーマット === {{bc|set mail-format { from: Monit@MyServer subject: $SERVICE $EVENT at $DATE message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION. } }} {{Note|上記の {{ic|$SERVICE}} などの変数は一般的に使われる変数ではありません。Monit がアラートの内容などに置き換える変数名になります。}} === CPU、メモリ、スワップの使用量 === {{bc|check system $HOST if loadavg (15min) > 15 for 5 times within 15 cycles then alert if memory usage > 80% for 4 cycles then alert if swap usage > 20% for 4 cycles then alert}} === ファイルシステムの使用量 === {{bc|check filesystem rootfs with path / if space usage > 90% then alert check filesystem NFS with path /mnt/nfs_share if space usage > 90% then alert}} === プロセスの監視 === {{bc|check process sshd with pidfile /var/run/sshd.pid start program "systemctl start sshd" stop program "systemctl stop sshd" if failed port 22 protocol ssh then restart}} {{bc|1=check process smbd with pidfile /run/samba/smbd.pid group samba start program = "/etc/init.d/samba start" stop program = "/etc/init.d/samba stop" if failed host 192.168.1.250 port 139 type TCP then restart depends on smbd_bin check file smbd_bin with path /usr/sbin/smbd group samba if failed permission 755 then unmonitor if failed uid root then unmonitor if failed gid root then unmonitor}} {{Note|上記の {{Pkg|samba}} の例では、最初のブロックにある {{ic|depends on smbd_bin}} によって、Samba の''テスト''に {{ic|smbd}} プロセスが必須になります。}} === スクリプトによるハードドライブの健康度と温度の監視 === ==== 温度 ==== {{ic|/etc/monit.d/scripts/hdtemp.sh}} ファイルを作成してください (必要であれば {{ic|/etc/monit.d/scripts}} フォルダも): {{hc|/etc/monit.d/scripts/hdtemp.sh|<nowiki> #!/bin/sh HDDTP=`/usr/sbin/smartctl -a /dev/sd${1} | grep Temp | awk -F " " '{printf "%d",$10}'` #echo $HDDTP # for debug only exit $HDDTP</nowiki>}} {{hc|monitrc or /etc/monit.d/*.monit file|check program SSD-A-Temp with path "/etc/monit.d/scripts/hdtemp.sh a" every 5 cycles if status > 40 then alert group health check program HDD-B-Temp with path "/etc/monit.d/scripts/hdtemp.sh b" every 5 cycles if status > 40 then alert group health}} 上記の例では、{{ic|/etc/monit.d/scripts/hdtemp.sh}} スクリプトで使用するドライブパスは {{ic|/dev/sdX}} となっており、{{ic|X}} は {{ic|check}} 宣言の最後の文字に置き換わります。同じことは次の例の SMART ヘルスステータスでもしています。 ==== SMART ヘルスステータス ==== {{hc|/etc/monit.d/scripts/hdhealth.sh|<nowiki> #!/bin/sh STATUS=`/usr/sbin/smartctl -H /dev/sd${1} | grep overall-health | awk 'match($0,"result:"){print substr($0,RSTART+8,6)}'` if [ "$STATUS" = "PASSED" ] then # 1 implies PASSED TP=1 else # 2 implies FAILED TP=2 fi #echo $TP # for debug only exit $TP</nowiki>}} {{hc|monitrc or /etc/monit.d/*.monit file|check program SSD-A-Health with path "/etc/monit.d/scripts/hdhealth.sh a" every 120 cycles if status <nowiki>!=</nowiki> 1 then alert group health check program HDD-B-Health with path "/etc/monit.d/scripts/hdhealth.sh b" every 120 cycles if status <nowiki>!=</nowiki> 1 then alert group health}} {{Tip|The {{ic|group}} declaration will cause Monit to display all assigned checks with the same group name (in this case samba) together.}} == アラートの受信者: グローバルとサブシステム == あらゆる {{ic|alert}} 状態で指定されたユーザー、メールアドレスにアラートが送信されるグローバルアラートと、各タイプによってアラートを設定できるサブシステムアラートがあります (例: ネットワークアラートは A に送って、プロセスアラートは B に送る)。複数の宣言を作成することで、グローバル・サブシステムアラートは好きなだけ設定できます。 === グローバルアラート === グローバルアラートはサブシステムのチェックの外側に設定します。読みやすいように、メールサーバーの設定と同じところで設定することを推奨します: SET ALERT email@domain === サブシステムアラート === サブシステムアラートは {{ic|SET}} フラグが存在しないことを除けばグローバルアラートとほぼ同じです: ALERT email@domain == 参照 == * [https://mmonit.com/monit/documentation/monit.html 公式ドキュメント] * [https://mmonit.com/wiki/Monit/ConfigurationExamples Monit Wiki サンプル設定]
このページで使用されているテンプレート:
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
Monit
に戻る。
検索
検索
Monitのソースを表示
話題を追加