質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2350閲覧

ZabbixからDockerコンテナを再起動したい

tsugiju

総合スコア1

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/06/16 12:44

編集2021/06/17 01:49

前提・実現したいこと

Zabbixから、特定のトリガーにて稼働中のDockerコンテナを再起動する様にしたいと思っています。
出来上がっているつもりですが、うまく再起動せず、なぜ再起動しないのか原因が掴めずにおります。

  • Zabbix Server 5.4 Virtual Box上のCenOS7のDocker上にコンテナとして構築
  • Zabbix Agent 3.0  Ubuntu18上にインストール
  • DockerCE 19.03 Ubuntu18上で稼働しており、再起動したいコンテナが動いている

Zabbixのアクションにスクリプトを指定し、スクリプトは以下を指定しています。

docker restart {コンテナ名}

また、sudoコマンドを使用せずにdockerコマンドを実行するために、以下をエージェント側に設定しています。

sudo usermod --shell /bin/bash zabbix sudo gpasswd -a zabbix docker sudo chown root:docker /var/run/docker.sock

発生している問題・エラーメッセージ

現在、以下のエラーメッセージが出て、Dockerコンテナの再起動に至っていません。

Zabbix のwebUI上で出ているエラーメッセージ

Script does not have permission to be executed on the host

Zabbixサーバーのログに出ているエラーメッセージで、関係ありそうな部分

201:20210616:203725.847 In execute_commands() 201:20210616:203725.847 query [txnlev:0] [select groupid from opcommand_grp where operationid=19] 201:20210616:203725.847 query [txnlev:0] [select distinct h.hostid,h.proxy_hostid,h.host,s.type,s.scriptid,s.execute_on,s.port,s.authtype,s.username,s.password,s.publickey,s.privatekey,s.command,s.groupid,s.scope,s.timeout,s.name,h.tls_connect,h.ipmi_authtype,h.ipmi_privilege,h.ipmi_username,h.ipmi_password,h.tls_issuer,h.tls_subject,h.tls_psk_identity,h.tls_psk from opcommand o,opcommand_hst oh,hosts h,scripts s where o.operationid=oh.operationid and o.scriptid=s.scriptid and oh.hostid=h.hostid and o.operationid=19 and h.status=0 union select distinct 0,0,null,s.type,s.scriptid,s.execute_on,s.port,s.authtype,s.username,s.password,s.publickey,s.privatekey,s.command,s.groupid,s.scope,s.timeout,s.name,1,0,2,null,null,null,null,null,null from opcommand o,opcommand_hst oh,scripts s where o.operationid=oh.operationid and o.scriptid=s.scriptid and o.operationid=19 and oh.hostid is null] 201:20210616:203725.847 In zbx_check_script_permissions() groupid:19 hostid:0 201:20210616:203725.847 query [txnlev:0] [select hostid from hosts_groups where hostid=0 and groupid=19] 201:20210616:203725.848 End of zbx_check_script_permissions():FAIL 201:20210616:203725.848 In DCget_nextid() table:'alerts' num:1 201:20210616:203725.848 End of DCget_nextid() table:'alerts' [194:194] 201:20210616:203725.848 In add_command_alert() 201:20210616:203725.848 End of add_command_alert() 201:20210616:203725.848 query without transaction detected 201:20210616:203725.848 query [txnlev:0] [insert into alerts (alertid,actionid,eventid,clock,message,status,error,esc_step,alerttype,parameters) values (194,8,2394,1623843445,':docker restart motionview',2,'Script does not have permission to be executed on the host.',55,1,'');

Agent側のログファイルで関係ありそうな部分

201:20210616:202125.511 query [txnlev:0] [insert into alerts (alertid,actionid,eventid,clock,message,status,error,esc_step,alerttype,parameters) values (178,8,2394,1623842485,':docker restart motionview',2,'Script does not have permission to be executed on the host.',39,1,'');

試したこと

コマンド内容やユーザー権限の問題かどうか確認するために、同じコマンド、同じタイプ、同じユーザーで手動ホスト処理の設定をしてみたところ、想定通りにコンテナが再起動されました。
同じコマンドをアクション処理した場合にエラーが発生し、失敗します。

イメージ説明

アクション設定は何か別の権限が必要なのでしょうか。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

再起動したいコンテナはUbuntu18上にあるコンテナですか?
再起動スクリプトに実行権限ありますか?
あとAgentのバージョンが古い理由はありますか?

投稿2021/06/16 13:50

comefigo

総合スコア1051

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsugiju

2021/06/16 15:10

早速コメント頂き、ありがとうございます。 再起動したいコンテナはUbuntu18上にあります。 スクリプトは、写真にあるようにwebUI上で入力をします。(小さくてすみません)ファイルではなく、実行権限の確認はできませんでした。 Agentのバージョンは、最終的に処理を実装したい客先のAgentのバージョンに合わせております。客先のサーバーは閉じたネットワーク内にあり、インターネットには出れないようになっています。
comefigo

2021/06/17 06:35

ログを見た限りではzabbix agent側で権限不足のようなのでその辺を見直すしかないですね。 あとWeb UIのスクリプトではなく、スクリプトファイルで試してはいかがでしょうか?
tsugiju

2021/06/18 13:00

ありがとうございます。試してまた結果をアップいたします。
tsugiju

2021/06/19 13:55

すみません、回答に時間がかかってしまいました。 何回か再起動したり試行錯誤していたらいつの間にかできるようになりました。 何がトリガーになってできるようになったのかを調査していたのですが、つかめていません。 おそらく、ZabbixのWebUI上でコマンドなどの設定を変更した後、それが反映されるためにどういった操作をどういった順番で行えばいいのかがわかっていない所が解決を遅らせていた気がしました。 現段階では、スクリプトの設定変更した後、 1.Zabbix-Serverのdaemonを再起動 2.Zabbix-Agentの再起動 を行えばとりあえず反映されると理解しています。 結果的に、 〇Zabbix-Server5.4 =>Zabbix-Agent5.0 〇Zabbix-Server5.4 =>Zabbix-Agent3.0 が確認でき、今回はAgentバージョンが問題に関わってはいなかったと考えています。 スクリプトファイルについては、WebUIからコマンドを実行できるようになった時点でできるようになりました。 コマンドを実行するユーザーの権限やグループなども試行錯誤していました。 現在は、 コマンド実行ユーザーをDockerグループに入れた。 visudo で、/usr/bin/docker コマンドについてはsudoなしで実行できるようにした ユーザーは、ログイン可能なユーザーとした SSHの公開鍵は事前登録しておいた 要件ではないかと考えています。 ありがとうございました。
comefigo

2021/06/19 15:03

解決されてよかったです。 実行ユーザをDockerグループに追加されたなら、visudoで追加しなくてもsudoなしで実行できるはずですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問