设为首页 收藏本站
查看: 1778|回复: 2

[经验分享] zabbix基于ansible推送自定义key--zabbix自动发现--zabbix自动注...

[复制链接]

尚未签到

发表于 2017-11-3 15:49:44 | 显示全部楼层 |阅读模式
                        zabbix基于ansible推送自定义key--zabbix自动发现--zabbix自动注册-zabbix自动拉取
介绍:
Zaibbix客户端安装的确很方便步骤也很少,但是在线上一台一台配置还是不现实的,我们是有ansible配置客户端和推送自定义key给客户端,在zabbix网页上就是要自动发现或者自动注册,达到一旦发现有主机上线就把主机添加进来的效果。

步骤:1、配置ansible安装zabbix客户端和推送自定义key2、配置zabbix邮件告警3、zabbix自动发现4、zabbix自动注册5、zabbix自动拉取


1、配置ansible安装zabbix客户端和推送自定义key##设置ansible到各个主机的免密钥通讯:[iyunv@cml1 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

1
2
3
4
[iyunv@cml1 ansible]# ssh-keygen
[iyunv@cml1 ansible]# ssh-copy-id cml2
[iyunv@cml1 ansible]# ssh-copy-id cml3
[iyunv@cml1 ansible]# ssh-copy-id cml4



##定义一个主机组:
1
2
3
4
5
[iyunv@cml1 ansible]# vim hosts
[zabbixagent]
192.168.5.102
192.168.5.104
192.168.5.105




##创建自定义的key:
1
2
3
4
[iyunv@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}'  | grep $1 | awk '{print $$2}'
    [iyunv@cml1 ansible]# cat/usr/local/zabbix/etc/zabbix_agentd.conf.d/web.conf
    UserParameter=web,ps -ef | pgrep httpd | wc-l




  • ##写一个jinjia的ansible-playbook:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    [iyunv@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:
    1
    2
    [iyunv@cml1 ansible]# ansible-playbook -ezabbix_moban=web jinjia_zabbx.yaml
    [iyunv@cml1 ansible]# ansible-playbook -tcml -e zabbix_moban=tcp_status jinjia_zabbx.yaml



    2、配置zabbix邮件告警##先在zabbix_server.conf配置文件中去掉注释
    1
    2
    [iyunv@cml1 ~]# vim/usr/local/zabbix/etc/zabbix_server.conf
    AlertScriptsPath=/usr/local/zabbix/alertscripts




    ##然后写入一个python的发送邮件文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    [iyunv@cml1 ~]# cd/usr/local/zabbix/alertscripts/
    [iyunv@cml1 alertscripts]# ls
    zabbix_mail.py
    [iyunv@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脚本:
    1
    2
    [iyunv@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.png 950a0513cc20d2d300ccb8437e27d1ee.png 8a08fee1e267c513d51ef22ca8d9d1dd.png d0f1d517a785fe6863c563bed631fab6.png




    9673344abd083dc19447b6152dfc0bc6.png
    ##重启服务端和客户端:
    1
    2
    3
    4
    [iyunv@cml1 ~]# /etc/init.d/zabbix_serverrestart
    Restarting zabbix_server (viasystemctl):                  [ OK  ]
    [iyunv@cml1 ~]# /etc/init.d/zabbix_agentdrestart
    Restarting zabbix_agentd (viasystemctl):                  [  OK  ]




    67548484f0661fe346d7f0c206d6f7b0.png
    3、zabbix自动发现##在以上步骤已经安装好了zabbix的客户端和模板了,zabbix的自动发现可以直接把发现的主机添加

    ##在配置à自动发现à创建发现规则:
    (选择自己服务器的一个网段,设定多久发现一次,检查可以基于ping值也可以基于uptime(个人喜欢但一定要选择通用的),一定要选择zabbix客户端,不要勾选IP地址,我就在这地方出现过错误)
    910ede8e68ad1276de09bde59277164c.png b62cd76ea877b9bd039a669bd2b7d385.png
    ##接下来创建动作 配置à动作à勾选自动选择à创建动作
    8390805dbc0680d772191346c3516bbb.png

    ##需要创建三个触发条件第一条是基于之前创建的自动发现规则、第二条是基于10050端口、第三条是基于zabbix客户端
    479f07706e58607bc2675eabdfec5f1c.png

    ##接下来是操作配置我这里就只做了添加主机和为主机加入模板的操作
    026d9457363f1dafa8cfc80471633efc.png
    ##测试发现主机已经添加了模板和监控项
    b263fba93e66a46a5fc1fe8ef217ce18.png
    4、zabbix自动注册##先在各个客户端配置文件上修改两个参数(可以使用ansible来推送定义的配置文件)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [iyunv@cml2 ~]# vim/usr/local/zabbix/etc/zabbix_agentd.conf
    ServerActive=192.168.5.101  ##改成指向服务器地址。
    Hostname=cml2   ##改成自己的主机名
    [iyunv@cml3 ~]# vim/usr/local/zabbix/etc/zabbix_agentd.conf
    ServerActive=192.168.5.101
    Hostname=cml3  
    [iyunv@cml4 ~]# vim/usr/local/zabbix/etc/zabbix_agentd.conf
    ServerActive=192.168.5.101  。
    Hostname=cml4





    ##重启zabbix客户端:
    1
    [iyunv@cml2 ~]# /etc/init.d/zabbix_agentd restart




    ##在zabbix网页上配置自动注册:配置à动作à勾选自动注册à创建动作
    3cf4ab5db09cee73bb2777cb279d5506.png
    fc4f491a7ecf94f1af291f9018e1598b.png

    ##在配置操作时我只加了三个操作:1、添加主机,2、把主机添加到主机组,3、把模板关联到主机上。
    6e70be7d38ccdb9c42835699e8e0a9ba.png

    5、zabbix自动拉取##自己定义一个监控web服务的key
    1
    2
    [iyunv@cml2 ~]# cat/usr/local/zabbix/etc/zabbix_agentd.conf.d/web.conf
    UserParameter=web_check,ps -ef | pgrephttpd | wc -l



    ##修改客户端配置文件开启允许远程命令
    1
    2
    3
    [iyunv@cml2 ~]# vim/usr/local/zabbix/etc/zabbix_agentd.conf
    EnableRemoteCommands=1   ##允许远程命令
    LogRemoteCommands=1   ##远程命令日志(可以不需要这步骤)





    ##重启客户端:
    1
    2
    [iyunv@cml2 ~]#/etc/init.d/zabbix_agentd restart
    Restarting zabbix_agentd (viasystemctl):                  [  OK  ]






    ##在cml2主机上先添加监控项和触发器配置à主机à创建监控项

    456ddced8e271cf09f9c0cb37fb56bbb.png
    ##表达式表示最新的值等于0就触发警告
    b02699e1f04ebbf32198435027396fbc.png

    ##然后添加动作:
    b96de731520aa3deeaf305ce4a29cab2.png
    9766a85784cccc5f8d1f80f18051414f.png
    9d33eddd4d109cf83492ea6ec69d5f74.png

    ##在客户端设置zabbix用户的权限和创建脚本:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [iyunv@cml2 tmp]# vim /etc/passwd
    zabbix:x:1002:1002::/home/zabbix:/bin/bash
    [iyunv@cml2 tmp]# visudo
    zabbix ALL=(root)   NOPASSWD: /usr/bin/bash
      
    [iyunv@cml2 tmp]# cat /tmp/start.sh
    #!/bin/bash
    echo "123" > /tmp/b.txt    ##写一个日志测试脚本是否执行成功
    systemctl start httpd




    ##测试关闭httpd服务,zabbix是否把服务识别重新启动
    1
    [iyunv@cml2 tmp]# systemctl stop httpd




    2ba6856bc8ae87ec851142bbd074dc13.png
    ##在zabbix的动作日志上看见已经执行成功了

    ##在客户端看状态和日志检测是否成功:
    [iyunv@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.

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

    031785b007ea0609f853fec27edfb830.png
    c15cc9aef63e0b819b7de31f49d24c80.png
    8f2837d11c9413729180a6502679a0cc.png

    评分

    参与人数 1金币 +20 收起 理由
    枫狐狸 + 20 赞一个!

    查看全部评分


    运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-406532-1-1.html 上篇帖子: 分布式监控系统Zabbix-3.0.3-lnmp安装记录 下篇帖子: Zabbix从入门到精通
    累计签到:1 天
    连续签到:1 天
    发表于 2017-11-6 09:27:52 | 显示全部楼层
    ddddddddddddddddd

    运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表