インベントリの値を利用したメール送信について
お世話になります。
ホストインベントリに「連絡先」と「ハードウェアメンテナンス終了日」という項目がありますが、
1.ハードウェアメンテナンス終了日の数日前になったら
2.連絡先に記載したアドレスに対して
3.zabbix-serverから決められたフォーマットのメールを送信する
という動作をさせたいと考えております。
具体的には下記の動作を実行したいと考えています。
・連絡先とハードウェアメンテナンス終了日は手動入力
・毎日自動で、zabbix-server上で全ホストに対して、今日の日付と「ハードウェアメンテナンス終了日」の比較を行う
・比較結果が指定日数以下の日数差だった場合、そのホストのインベントリ「連絡先」に記載してあるメールアドレスに対し、定型の文章を自動送信する
・定型の文章内ではホスト名などの記載も行いたい
現在の環境は以下の通りです。
・CentOS6.5
・zabbix2.0.12
・agent側はLinuxやWindowsなどさまざまですが、今回はサーバー側の設定しだいだと予想しているため、割愛いたします。
標準の機能では実現できそうに無いので、PhpZabbixApiを用いてPHPによる実現をしようと試みましたが、インベントリ情報まで抜き出す方法がわかりませんでした。
何か良いアイディアがあれば、お知恵をお借りしたく。
よろしくお願いいたします。
TNK - 投稿数: 4769
Zabbix 2.2系であれば、APIを利用してインベントリ情報の取得が
できます。
2.0系だと、他の方法を検討する必要がありそうです。
ご参考:
https://support.zabbix.com/browse/ZBX-7420
https://www.zabbix.com/documentation/2.2/manual/api/reference/host/get
例:
----- ここから -----
{"jsonrpc":"2.0",
"method":"host.get",
"params":{
"output":"extend",
"selectInventory":"extend",
"filter":{"host":"Zabbix server"}},
"auth":"認証キー","id":1}
----- ここまで -----
enola - 投稿数: 19
ご回答いただきありがとうございます。
ご教示いただいたURLを参考にcurlコマンドを打ってみたのですが、どうやら取得はできるようでした。
"contact"でアドレスが、"date_hw_expiry"でハードウェアメンテナンス終了日が取得できそうなので、
これを元にメール送信までこぎつけようと思います。
参考になりました!ありがとうございます。
ご参考までにコマンドと取得結果を載せます。
※一部文字列を隠しております。
$ curl -i -X POST -H 'Content-type:application/json' -d '{"jsonrpc":"2.0","method":"host.get","params":{"output":"extend","selectInventory":"extend","filter":{"host":"hostname"}},"auth":"key","id":1}' http://localhost/zabbix/api_jsonrpc.php
Content-Type: application/json
{
"jsonrpc":"2.0",
"result":[{
"inventory":{
"hostid":"XXXXX",
"inventory_mode":"1",
"type":"",
"type_full":"",
"name":"hostname",
"alias":"",
"os":"Linux hostname.fqdn 2.6.32-431.el6.x86_64 XXXXXXXXXX",
"os_full":"",
"os_short":"",
"serialno_a":"",
"serialno_b":"",
"tag":"",
"asset_tag":"",
"macaddress_a":"",
"macaddress_b":"",
"hardware":"",
"hardware_full":"",
"software":"",
"software_full":"",
"software_app_a":"",
"software_app_b":"",
"software_app_c":"",
"software_app_d":"",
"software_app_e":"",
"contact":"test@test.com",
"location":"",
"location_lat":"",
"location_lon":"",
"notes":"",
"chassis":"",
"model":"",
"hw_arch":"",
"vendor":"",
"contract_number":"",
"installer_name":"",
"deployment_status":"",
"url_a":"",
"url_b":"",
"url_c":"",
"host_networks":"",
"host_netmask":"",
"host_router":"",
"oob_ip":"",
"oob_netmask":"",
"oob_router":"",
"date_hw_purchase":"",
"date_hw_install":"",
"date_hw_expiry":"2014\/5\/29",
"date_hw_decomm":"",
"site_address_a":"",
"site_address_b":"",
"site_address_c":"",
"site_city":"",
"site_state":"",
"site_country":"",
"site_zip":"",
"site_rack":"",
"site_notes":"",
"poc_1_name":"",
"poc_1_email":"",
"poc_1_phone_a":"",
"poc_1_phone_b":"",
"poc_1_cell":"",
"poc_1_screen":"",
"poc_1_notes":"",
"poc_2_name":"",
"poc_2_email":"",
"poc_2_phone_a":"",
"poc_2_phone_b":"",
"poc_2_cell":"",
"poc_2_screen":"",
"poc_2_notes":""
},
"maintenances":[],
"hostid":"XXXXX",
"proxy_hostid":"0",
"host":"xxx.xxx.xxx.xxx",
"status":"0",
"disable_until":"0",
"error":"",
"available":"1",
"errors_from":"0",
"lastaccess":"0",
"ipmi_authtype":"0",
"ipmi_privilege":"2",
"ipmi_username":"",
"ipmi_password":"",
"ipmi_disable_until":"0",
"ipmi_available":"0",
"snmp_disable_until":"0",
"snmp_available":"0",
"maintenanceid":"0",
"maintenance_status":"0",
"maintenance_type":"0",
"maintenance_from":"0",
"ipmi_errors_from":"0",
"snmp_errors_from":"0",
"ipmi_error":"",
"snmp_error":"",
"jmx_disable_until":"0",
"jmx_available":"0",
"jmx_errors_from":"0",
"jmx_error":"",
"name":"xxx.xxx.xxx.xxx"
}],
"id":1
}