设为首页 收藏本站
查看: 1395|回复: 0

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

[复制链接]

尚未签到

发表于 2018-7-29 09:39:27 | 显示全部楼层 |阅读模式
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到各个主机的免密钥通讯:
  [root@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
[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:
[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}'  | 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:
    [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:
    [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
    2、配置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邮箱里面生成一个授权码作为给脚本授权帮你发邮件使用
    DSC0000.png

      ##在zabbix配置  管理-->报警媒介类型-->创建报警媒介类型(类型需要选择脚本,脚本名称与编写的脚本名字一样,下面三个参数代表发送给那个邮件、标题是什么、内容是什么。)
    DSC0001.png

      ##在用户配置报警媒介 需要填写收件人的邮箱和类型
    DSC0002.png

    DSC0003.png

      ##然后配置-->动作-->创建动作--操作-->恢复操作
    DSC0004.png DSC0005.png DSC0006.png DSC0007.png DSC0008.png DSC0009.png

    DSC00010.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  ]
    DSC00011.png

    3、zabbix自动发现
      ##在以上步骤已经安装好了zabbix的客户端和模板了,zabbix的自动发现可以直接把发现的主机添加
      ##在配置à自动发现à创建发现规则:
      (选择自己服务器的一个网段,设定多久发现一次,检查可以基于ping值也可以基于uptime(个人喜欢但一定要选择通用的),一定要选择zabbix客户端,不要勾选IP地址,我就在这地方出现过错误)
    DSC00012.png DSC00013.png

      ##接下来创建动作 配置à动作à勾选自动选择à创建动作
    DSC00014.png

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

      ##接下来是操作配置我这里就只做了添加主机和为主机加入模板的操作
    DSC00016.png

      ##测试发现主机已经添加了模板和监控项
    DSC00017.png

    4、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网页上配置自动注册:配置à动作à勾选自动注册à创建动作
    DSC00018.png

    DSC00019.png

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

    5、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主机上先添加监控项和触发器配置à主机à创建监控项
    DSC00021.png

    DSC00022.png

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

      ##然后添加动作:
    DSC00024.png

    DSC00025.png

    DSC00026.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
    DSC00027.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>  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

  • 运维网声明 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-542856-1-1.html 上篇帖子: ansible推送zabbix自定义key值 下篇帖子: Ansible之Playbooks
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

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

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

    扫描微信二维码查看详情

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


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


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


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



    合作伙伴: 青云cloud

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