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郵箱裡面生成一個授權碼作為給指令碼授權幫你發郵件使用
##在zabbix配置 管理-->報警媒介型別-->建立報警媒介型別(型別需要選擇指令碼,指令碼名稱與編寫的指令碼名字一樣,下面三個引數代表傳送給那個郵件、標題是什麼、內容是什麼。)
##在使用者配置報警媒介需要填寫收件人的郵箱和型別
##然後配置-->動作-->建立動作--操作-->恢復操作
##重啟服務端和客戶端:
[[email protected]~]#/etc/init.d/zabbix_serverrestart Restartingzabbix_server(viasystemctl):[OK] [[email protected]~]#/etc/init.d/zabbix_agentdrestart Restartingzabbix_agentd(viasystemctl):[OK]
3、zabbix自動發現
##在以上步驟已經安裝好了zabbix的客戶端和模板了,zabbix的自動發現可以直接把發現的主機新增
##在配置à自動發現à建立發現規則:
(選擇自己伺服器的一個網段,設定多久發現一次,檢查可以基於ping值也可以基於uptime(個人喜歡但一定要選擇通用的),一定要選擇zabbix客戶端,不要勾選IP地址,我就在這地方出現過錯誤)
##接下來建立動作 配置à動作à勾選自動選擇à建立動作
##需要建立三個觸發條件第一條是基於之前建立的自動發現規則、第二條是基於10050埠、第三條是基於zabbix客戶端
##接下來是操作配置我這裡就只做了新增主機和為主機加入模板的操作
##測試發現主機已經添加了模板和監控項
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網頁上配置自動註冊:配置à動作à勾選自動註冊à建立動作
##在配置操作時我只加了三個操作:1、新增主機,2、把主機新增到主機組,3、把模板關聯到主機上。
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主機上先新增監控項和觸發器配置à主機à建立監控項
##表示式表示最新的值等於0就觸發警告
##然後新增動作:
##在客戶端設定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
##在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