1. 程式人生 > 實用技巧 >zabbix基於ansible推送自定義key--zabbix自動發現--zabbix自動註冊-zabbix自動拉取

zabbix基於ansible推送自定義key--zabbix自動發現--zabbix自動註冊-zabbix自動拉取

zabbix基於ansible推送自定義key--zabbix自動發現--zabbix自動註冊--zabbix自動拉取

介紹:

Zaibbix客戶端安裝的確很方便步驟也很少,但是在線上一臺一臺配置還是不現實的,我們是有ansible配置客戶端和推送自定義key給客戶端,在zabbix網頁上就是要自動發現或者自動註冊,達到一旦發現有主機上線就把主機新增進來的效果。


步驟:

1、配置ansible安裝zabbix客戶端和推送自定義key

2、配置zabbix郵件告警

3、zabbix自動發現

4、zabbix自動註冊

5、zabbix自動拉取

1、配置ansible安裝zabbix客戶端和推送自定義key

##設定ansible到各個主機的免金鑰通訊:

[[email protected] ansible]# cat /etc/hosts

192.168.5.101 cml1 mfsmaster

192.168.5.102 cml2

192.168.5.104 cml3

192.168.5.105 cml4

[[email protected]ansible]#ssh-keygen
[[email protected]ansible]#ssh-copy-idcml2
[[email protected]ansible]#ssh-copy-idcml3
[[email protected]ansible]#ssh-copy-idcml4

##定義一個主機組:

[[email protected]ansible]#vimhosts
[zabbixagent]
192.168.5.102
192.168.5.104
192.168.5.105

##建立自定義的key:

[[email protected]ansible]#cat/usr/local/zabbix/etc/zabbix_agentd.conf.d/tcp_status.conf
UserParameter=netstat[*],netstat-an|awk'/^tcp/{s[$NF]++}END{for(iins)printi,s[i]}'|grep$1|awk'{print$$2}'
[
[email protected]
ansible]#cat/usr/local/zabbix/etc/zabbix_agentd.conf.d/web.conf UserParameter=web,ps-ef|pgrephttpd|wc-l

##寫一個jinjia的ansible-playbook:

[[email protected]ansible]#catjinjia_zabbx.yaml
-hosts:zabbixagent
tasks:
-name:installzabbixpackage
yum:name={{item}}state=latest
with_items:
-make
-gcc
-curl-devel
-curl
-name:copypacktoclient
tags:copy_pack
copy:src=/usr/local/src/zabbix-3.4.3.tar.gzdest=/usr/local/src/zabbix-3.4.3.tar.gz
-name:tarzabbix
tags:tar
shell:cd/usr/local/src/;tar-xfzabbix-3.4.3.tar.gz
-name:copycreate_users.sh
tags:copy_users
copy:src=/etc/ansible/create_users.shdest=/usr/local/src/create_users.sh
-name:createusers_zabbix
tags:users
shell:/bin/bash/usr/local/src/create_users.sh
-name:configurezabbix
tags:config
shell:cd/usr/local/src/zabbix-3.4.3;./configure--with-net-snmp--with-libcurl--enable-agent--prefix=/usr/local/zabbix
-name:makemakeinstall
tags:make
shell:cd/usr/local/src/zabbix-3.4.3;make&&makeinstall
-name:changeagented
tags:change
shell:cp/usr/local/src/zabbix-3.4.3/misc/init.d/fedora/core5/zabbix_agentd/etc/init.d/;chmod700/etc/init.d/zabbix_agentd
-name:copyzabbix_agented
tags:copy_agented
copy:src=/etc/init.d/zabbix_agentddest=/etc/init.d/zabbix_agentd
-name:copyzabbix_agented,conf
tags:copy_conf
copy:src=/usr/local/zabbix/etc/zabbix_agentd.confdest=/usr/local/zabbix/etc/zabbix_agentd.conf
-name:startzabbix_agented
tags:startzabbix_agented
shell:/etc/init.d/zabbix_agentdstart
-name:copytcp_status
tags:cml
copy:src=/usr/local/zabbix/etc/zabbix_agentd.conf.d/{{zabbix_moban}}.confdest=/usr/local/zabbix/etc/zabbix_agentd.conf.d/{{zabbix_moban}}.conf
-name:copyweb_status
tags:web_sh
copy:src=/tmp/web_start.shdest=/tmp/web_start.sh
handlers:
-name:restartzabbix_agent
tags:restart
shell:/etc/init.d/zabbix_agentdrestart

##執行安裝zabbix_agentd:

[[email protected]ansible]#ansible-playbook-ezabbix_moban=webjinjia_zabbx.yaml
[[email protected]ansible]#ansible-playbook-tcml-ezabbix_moban=tcp_statusjinjia_zabbx.yaml

2、配置zabbix郵件告警

##先在zabbix_server.conf配置檔案中去掉註釋

[[email protected]~]#vim/usr/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/alertscripts

##然後寫入一個python的傳送郵件檔案

[[email protected]~]#cd/usr/local/zabbix/alertscripts/
[[email protected]alertscripts]#ls
zabbix_mail.py
[[email protected]alertscripts]#catzabbix_mail.py
#!/usr/bin/python
#coding:utf-8
importsmtplib
importsys
fromemail.mime.textimportMIMEText
_user="40***[email protected]"
_pwd="授權碼"
#_to="139****[email protected]"

defsend_mail(to,subject,contain):
msg=MIMEText(contain)
msg["Subject"]=subject
msg["From"]=_user
msg["To"]=to

try:
s=smtplib.SMTP_SSL("smtp.qq.com",465)

s.login(_user,_pwd)
s.sendmail(_user,to,msg.as_string())
s.quit()
withopen('/tmp/zabbix.log','w')asf:
f.write("%s\n%s\n%s\n"%(to,subject,contain))
#print"Success!"
exceptsmtplib.SMTPException,e:
print"Falied,%s"%e
if__name__=="__main__":
send_mail(sys.argv[1],sys.argv[2],sys.argv[3])

##也可是使用shell指令碼:

[[email protected]alertscripts]#catzabbix_mail.sh
#!/bin/bashto=$1subject=$2body=$3cat<<EOF|mail-s"$subject""$to"$bodyEOF


##在qq郵箱裡面生成一個授權碼作為給指令碼授權幫你發郵件使用

0b0a3a722c079522e79de2baf43c2653.png

##在zabbix配置 管理-->報警媒介型別-->建立報警媒介型別(型別需要選擇指令碼,指令碼名稱與編寫的指令碼名字一樣,下面三個引數代表傳送給那個郵件、標題是什麼、內容是什麼。)

bf0ab3048937e9e56e96f9fdb623f277.png

##在使用者配置報警媒介需要填寫收件人的郵箱和型別

971b2177907f5c2671e7a955d2631152.png

3cc57a0d54dbf3a010f5a235242121ed.png

##然後配置-->動作-->建立動作--操作-->恢復操作

302495c0aa2297e30d5d0b2d31af5615.png950a0513cc20d2d300ccb8437e27d1ee.png8a08fee1e267c513d51ef22ca8d9d1dd.png8f2837d11c9413729180a6502679a0cc.pngc15cc9aef63e0b819b7de31f49d24c80.pngd0f1d517a785fe6863c563bed631fab6.png

9673344abd083dc19447b6152dfc0bc6.png

##重啟服務端和客戶端:

[[email protected]~]#/etc/init.d/zabbix_serverrestart
Restartingzabbix_server(viasystemctl):[OK]
[[email protected]~]#/etc/init.d/zabbix_agentdrestart
Restartingzabbix_agentd(viasystemctl):[OK]

67548484f0661fe346d7f0c206d6f7b0.png

3、zabbix自動發現

##在以上步驟已經安裝好了zabbix的客戶端和模板了,zabbix的自動發現可以直接把發現的主機新增

##在配置à自動發現à建立發現規則:

(選擇自己伺服器的一個網段,設定多久發現一次,檢查可以基於ping值也可以基於uptime(個人喜歡但一定要選擇通用的),一定要選擇zabbix客戶端,不要勾選IP地址,我就在這地方出現過錯誤)

910ede8e68ad1276de09bde59277164c.pngb62cd76ea877b9bd039a669bd2b7d385.png

##接下來建立動作 配置à動作à勾選自動選擇à建立動作

8390805dbc0680d772191346c3516bbb.png

##需要建立三個觸發條件第一條是基於之前建立的自動發現規則、第二條是基於10050埠、第三條是基於zabbix客戶端

479f07706e58607bc2675eabdfec5f1c.png

##接下來是操作配置我這裡就只做了新增主機和為主機加入模板的操作

026d9457363f1dafa8cfc80471633efc.png

##測試發現主機已經添加了模板和監控項

b263fba93e66a46a5fc1fe8ef217ce18.png

4、zabbix自動註冊

##先在各個客戶端配置檔案上修改兩個引數(可以使用ansible來推送定義的配置檔案)

[[email protected]~]#vim/usr/local/zabbix/etc/zabbix_agentd.conf
ServerActive=192.168.5.101##改成指向伺服器地址。
Hostname=cml2##改成自己的主機名
[[email protected]~]#vim/usr/local/zabbix/etc/zabbix_agentd.conf
ServerActive=192.168.5.101
Hostname=cml3
[[email protected]~]#vim/usr/local/zabbix/etc/zabbix_agentd.conf
ServerActive=192.168.5.101。
Hostname=cml4


##重啟zabbix客戶端:

[[email protected]~]#/etc/init.d/zabbix_agentdrestart

##在zabbix網頁上配置自動註冊:配置à動作à勾選自動註冊à建立動作

3cf4ab5db09cee73bb2777cb279d5506.png

fc4f491a7ecf94f1af291f9018e1598b.png

##在配置操作時我只加了三個操作:1、新增主機,2、把主機新增到主機組,3、把模板關聯到主機上。

6e70be7d38ccdb9c42835699e8e0a9ba.png

5、zabbix自動拉取

##自己定義一個監控web服務的key

[[email protected]~]#cat/usr/local/zabbix/etc/zabbix_agentd.conf.d/web.conf
UserParameter=web_check,ps-ef|pgrephttpd|wc-l

##修改客戶端配置檔案開啟允許遠端命令

[[email protected]~]#vim/usr/local/zabbix/etc/zabbix_agentd.conf
EnableRemoteCommands=1##允許遠端命令
LogRemoteCommands=1##遠端命令日誌(可以不需要這步驟)


##重啟客戶端:

[[email protected]~]#/etc/init.d/zabbix_agentdrestart
Restartingzabbix_agentd(viasystemctl):[OK]


##在cml2主機上先新增監控項和觸發器配置à主機à建立監控項

456ddced8e271cf09f9c0cb37fb56bbb.png

b02699e1f04ebbf32198435027396fbc.png

##表示式表示最新的值等於0就觸發警告

031785b007ea0609f853fec27edfb830.png

##然後新增動作:

b96de731520aa3deeaf305ce4a29cab2.png

9766a85784cccc5f8d1f80f18051414f.png

9d33eddd4d109cf83492ea6ec69d5f74.png

##在客戶端設定zabbix使用者的許可權和建立指令碼:

[[email protected]tmp]#vim/etc/passwd
zabbix:x:1002:1002::/home/zabbix:/bin/bash
[[email protected]tmp]#visudo
zabbixALL=(root)NOPASSWD:/usr/bin/bash

[[email protected]tmp]#cat/tmp/start.sh
#!/bin/bash
echo"123">/tmp/b.txt##寫一個日誌測試指令碼是否執行成功
systemctlstarthttpd

##測試關閉httpd服務,zabbix是否把服務識別重新啟動

[[email protected]tmp]#systemctlstophttpd

2ba6856bc8ae87ec851142bbd074dc13.png

##在zabbix的動作日誌上看見已經執行成功了

##在客戶端看狀態和日誌檢測是否成功:

[[email protected] tmp]# systemctl status httpd

httpd.service- The Apache HTTP Server

Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendorpreset: disabled)

Active: active (running) since Wed2017-11-01 21:44:45 CST; 1min 48s ago

Docs: man:httpd(8)

man:apachectl(8)

Process: 18300 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)

MainPID: 32455 (httpd)

Status: "Total requests: 0; Current requests/sec: 0; Currenttraffic: 0 B/sec"

CGroup: /system.slice/httpd.service

├─32455 /usr/sbin/httpd -DFOREGROUND

├─32457 (wsgi:cobbler_w -DFOREGROUND

├─32458 /usr/sbin/httpd -DFOREGROUND

├─32459 /usr/sbin/httpd -DFOREGROUND

├─32460 /usr/sbin/httpd -DFOREGROUND

├─32461 /usr/sbin/httpd -DFOREGROUND

└─32462 /usr/sbin/httpd -DFOREGROUND

Nov 01 21:44:45 cml2 systemd[1]: StartingThe Apache HTTP Server...

Nov 01 21:44:45 cml2 httpd[32455]: AH00558:httpd: Could not reliably determine the...age

Nov 01 21:44:45 cml2 systemd[1]: StartedThe Apache HTTP Server.

Hint: Some lines were ellipsized, use -l toshow in full.

[[email protected] ~]# cat /tmp/b.txt

123


轉載於:https://blog.51cto.com/legehappy/1978231