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

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

 

介紹:

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


步驟:

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

二、配置zabbix郵件告警

三、zabbix自動發現

四、zabbix自動註冊

五、zabbix自動拉取

 

 

 

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

##設置ansible到各個主機的免密鑰通信:

[root@cml1 ansible]# cat /etc/hostsweb

192.168.5.101 cml1  mfsmastershell

192.168.5.102 cml2 apache

192.168.5.104 cml3 vim

192.168.5.105 cml4 bash

 

[root@cml1 ansible]# ssh-keygen
[root@cml1 ansible]# ssh-copy-id cml2
[root@cml1 ansible]# ssh-copy-id cml3
[root@cml1 ansible]# ssh-copy-id cml4

##定義一個主機組:服務器

[root@cml1 ansible]# vim hosts
[zabbixagent]
192.168.5.102
192.168.5.104
192.168.5.105

 

##建立自定義的key:ssh

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

 

##寫一個jinjia的ansible-playbook:curl

[root@cml1 ansible]# cat jinjia_zabbx.yaml
- hosts: zabbixagent
 tasks:
  -name: install zabbix package
   yum: name={{ item }} state=latest
   with_items:
    -make
    -gcc
    -curl-devel
    -curl
  -name: copy pack to client
   tags: copy_pack
   copy: src=/usr/local/src/zabbix-3.4.3.tar.gzdest=/usr/local/src/zabbix-3.4.3.tar.gz
  -name: tar zabbix
   tags: tar
   shell: cd /usr/local/src/;tar -xf zabbix-3.4.3.tar.gz
  -name: copy create_users.sh
   tags: copy_users
   copy: src=/etc/ansible/create_users.shdest=/usr/local/src/create_users.sh
  -name: create users_zabbix
   tags: users
   shell: /bin/bash /usr/local/src/create_users.sh
  -name: configure zabbix
   tags: config
   shell: cd /usr/local/src/zabbix-3.4.3;./configure --with-net-snmp--with-libcurl --enable-agent --prefix=/usr/local/zabbix
  -name: make make install
   tags: make
   shell: cd /usr/local/src/zabbix-3.4.3;make && make install
  -name: change agented
   tags: change
   shell: cp/usr/local/src/zabbix-3.4.3/misc/init.d/fedora/core5/zabbix_agentd/etc/init.d/;chmod 700 /etc/init.d/zabbix_agentd
  -name: copy zabbix_agented
   tags: copy_agented
   copy: src=/etc/init.d/zabbix_agentd dest=/etc/init.d/zabbix_agentd
  -name: copy zabbix_agented,conf
   tags: copy_conf
   copy: src=/usr/local/zabbix/etc/zabbix_agentd.confdest=/usr/local/zabbix/etc/zabbix_agentd.conf
  -name: start zabbix_agented
   tags: start zabbix_agented
    shell:/etc/init.d/zabbix_agentd start
  -name: copy tcp_status
   tags: cml
   copy: src=/usr/local/zabbix/etc/zabbix_agentd.conf.d/{{ zabbix_moban}}.conf dest=/usr/local/zabbix/etc/zabbix_agentd.conf.d/{{ zabbix_moban }}.conf
  -name: copy web_status
   tags: web_sh
   copy: src=/tmp/web_start.sh dest=/tmp/web_start.sh
 handlers:
  -name: restart zabbix_agent
   tags: restart
shell:/etc/init.d/zabbix_agentd restart

 

##執行安裝zabbix_agentd:tcp

[root@cml1 ansible]# ansible-playbook -ezabbix_moban=web jinjia_zabbx.yaml
[root@cml1 ansible]# ansible-playbook -tcml -e zabbix_moban=tcp_status jinjia_zabbx.yaml

二、配置zabbix郵件告警

##先在zabbix_server.conf配置文件中去掉註釋

[root@cml1 ~]# vim/usr/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/alertscripts

 

##而後寫入一個python的發送郵件文件

[root@cml1 ~]# cd/usr/local/zabbix/alertscripts/
[root@cml1 alertscripts]# ls
zabbix_mail.py
[root@cml1 alertscripts]# catzabbix_mail.py
#!/usr/bin/python
#coding: utf-8
import smtplib
import sys
from email.mime.text import MIMEText
_user = "40***27@qq.com"   
_pwd = "受權碼"     
#_to  = "139****782@163.com"
 
def send_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()
       with open('/tmp/zabbix.log', 'w') as f:
           f.write("%s\n%s\n%s\n"%(to,subject,contain))
#       print "Success!"
   except smtplib.SMTPException,e:
       print "Falied,%s"%e
if __name__ == "__main__":
send_mail(sys.argv[1],sys.argv[2], sys.argv[3])

 

##也但是使用shell腳本:

[root@cml1 alertscripts]# cat zabbix_mail.sh
#!/bin/bash to=$1subject=$2body=$3 cat <<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

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

[root@cml1 ~]# /etc/init.d/zabbix_serverrestart
Restarting zabbix_server (viasystemctl):                  [ OK  ]
[root@cml1 ~]# /etc/init.d/zabbix_agentdrestart
Restarting zabbix_agentd (viasystemctl):                  [  OK  ]

 

67548484f0661fe346d7f0c206d6f7b0.png

三、zabbix自動發現

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

 

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

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

910ede8e68ad1276de09bde59277164c.pngb62cd76ea877b9bd039a669bd2b7d385.png

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

8390805dbc0680d772191346c3516bbb.png

 

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

479f07706e58607bc2675eabdfec5f1c.png

 

##接下來是操做配置我這裏就只作了添加主機和爲主機加入模板的操做

026d9457363f1dafa8cfc80471633efc.png

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

b263fba93e66a46a5fc1fe8ef217ce18.png

四、zabbix自動註冊

##先在各個客戶端配置文件上修改兩個參數(可使用ansible來推送定義的配置文件)

[root@cml2 ~]# vim/usr/local/zabbix/etc/zabbix_agentd.conf
ServerActive=192.168.5.101  ##改爲指向服務器地址。
Hostname=cml2   ##改爲本身的主機名
[root@cml3 ~]# vim/usr/local/zabbix/etc/zabbix_agentd.conf
ServerActive=192.168.5.101 
Hostname=cml3  
[root@cml4 ~]# vim/usr/local/zabbix/etc/zabbix_agentd.conf
ServerActive=192.168.5.101  。
Hostname=cml4


##重啓zabbix客戶端:

[root@cml2 ~]# /etc/init.d/zabbix_agentd restart

 

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

3cf4ab5db09cee73bb2777cb279d5506.png

fc4f491a7ecf94f1af291f9018e1598b.png

 

##在配置操做時我只加了三個操做:一、添加主機,二、把主機添加到主機組,三、把模板關聯到主機上。

6e70be7d38ccdb9c42835699e8e0a9ba.png

 

五、zabbix自動拉取

##本身定義一個監控web服務的key

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

##修改客戶端配置文件開啓容許遠程命令

[root@cml2 ~]# vim/usr/local/zabbix/etc/zabbix_agentd.conf
EnableRemoteCommands=1   ##容許遠程命令
LogRemoteCommands=1   ##遠程命令日誌(能夠不須要這步驟)


##重啓客戶端:

[root@cml2 ~]#/etc/init.d/zabbix_agentd restart
Restarting zabbix_agentd (viasystemctl):                  [  OK  ]


 

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

456ddced8e271cf09f9c0cb37fb56bbb.png

b02699e1f04ebbf32198435027396fbc.png

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

031785b007ea0609f853fec27edfb830.png

 

##而後添加動做:

b96de731520aa3deeaf305ce4a29cab2.png

9766a85784cccc5f8d1f80f18051414f.png

9d33eddd4d109cf83492ea6ec69d5f74.png

 

##在客戶端設置zabbix用戶的權限和建立腳本:

[root@cml2 tmp]# vim /etc/passwd
zabbix:x:1002:1002::/home/zabbix:/bin/bash
[root@cml2 tmp]# visudo
zabbix ALL=(root)   NOPASSWD: /usr/bin/bash
 
[root@cml2 tmp]# cat /tmp/start.sh
#!/bin/bash
echo "123" > /tmp/b.txt    ##寫一個日誌測試腳本是否執行成功
systemctl start httpd

 

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

[root@cml2 tmp]# systemctl stop httpd

 

2ba6856bc8ae87ec851142bbd074dc13.png

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

 

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

[root@cml2 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.

 

[root@cml2 ~]# cat /tmp/b.txt

123

相關文章
相關標籤/搜索