zoukankan      html  css  js  c++  java
  • ansible一键安装zabbix agent

    文件目录结构:

    [root@szwpldb1081 zabbix]# tree
    .
    ├── common
    │   ├── config_zabbix_agent_systemd.yaml
    │   ├── export_path.yaml
    │   ├── install_dependences.yaml
    │   ├── install_zabbix_agent.yaml
    ├── install_zabbix_agent.yaml
    ├── templates
    │   ├── mysql_basic_monitor_templates.xml
    │   ├── userparameter_percona_mysql.conf
    │   ├── zabbix_agentd.conf
    │   ├── zabbix-agent.service
    └── vars
        └── zabbix.yaml
    
    3 directories, 17 files

    agent安装比较简单,配置也比较简单,主要是写好开机启动服务:

    [root@szwpldb1081 zabbix]# cat templates/zabbix-agent.service 
    [Unit]
    Description=Zabbix Agent
    After=syslog.target
    After=network.target
    
    [Service]
    Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf"
    EnvironmentFile=-/etc/sysconfig/zabbix-agent
    Type=forking
    Restart=on-failure
    PIDFile=/run/zabbix/zabbix_agentd.pid
    KillMode=control-group
    ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target

    把开机启动服务文件放到操作系统指定目录:

    [root@szwpldb1081 zabbix]# cat common/config_zabbix_agent_systemd.yaml 
    ---
      - name: config zabbix-agent systemd
        template:
          src: ../templates/zabbix-agent.service
          dest: /usr/lib/systemd/system/zabbix-agent.service
    
      - name: start zabbix-aget 
        systemd:
          name: zabbix-agent
          state: started
          daemon_reload: yes
    
      - name: config zabbix-agent start up on boot
        systemd:
          name: zabbix-agent
          enabled: yes
          daemon_reload: yes

    设置zabbix客户端环境变量:

    [root@szwpldb1081 zabbix]# cat common/export_path.yaml 
    ---
      - name: /etc/profile
        lineinfile:
          path: /etc/profile
          line: "export PATH=/usr/local/zabbix/bin/:$PATH"
          insertafter: EOF
          state: present

    最主要是这个文件:

    [root@szwpldb1081 zabbix]# cat common/install_zabbix_agent.yaml 
    ---
      - name: "create zabbix user"
        user:
          name: "zabbix"
    
      - name: "transfer {{zabbix_version}} to target host(s)."
        copy:
          src: "../../../sps/zabbix/{{zabbix_version}}"
          dest: /tmp/zabbix-4.2.1/
      
      - name: "transfer auto_install_agent.sh to target host(s)."
        copy:
          src: "../../../sps/zabbix/{{zabbix_version}}/auto_install_agent.sh"
          dest: "/tmp/{{zabbix_version}}/auto_install_agent.sh"
      
      - name: "install zabbix agent"
        shell: "bash /tmp/{{zabbix_version}}/auto_install_agent.sh"
    
      - name: "config zabbix-agent.conf"
        template:
          src: "../templates/zabbix_agentd.conf"
          dest: "/etc/zabbix/"
    
      - name: "config percona_item"
        template:
          src: "../templates/userparameter_percona_mysql.conf"
          dest: "/etc/zabbix/zabbix_agentd.conf.d/"
    
      - name: "remove temp files"
        file:
          path: "/tmp/{{zabbix_version}}"
          state: absent

    其中自己用到的2个脚本 auto_install_agent.sh 与 userparameter_percona_mysql.conf 可以根据自己的实际情况来写,我的比较简单,因为zabbix自带的监控mysql比较简单,因此使用了pmm的一个插件,

    不过官方现在已经好久没有维护了,不过现在还可以使用最新的也是到1.18版本没有再更新了,我用来监控mysql8,没有问题,可以根据自己的情况来增加,都是php写的,看配置自己增添都很简单。

    [root@szwpldb1081 zabbix]# cat /usr/local/mysqltools/sps/zabbix/zabbix-4.2.1/auto_install_agent.sh 
    #!/bin/bash
    cd /tmp/zabbix-4.2.1/zabbix-4.2.1/
    rpm -ivh zabbix-agent-4.2.1-1.el7.x86_64.rpm
    rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
    mv ss_get_mysql_stats.php /var/lib/zabbix/percona/scripts
    chown zabbix.zabbix -R /var/lib/zabbix

    我的每类的客户端都放一个目录,比如zabbix:

    [root@szwpldb1081 zabbix]# ll /usr/local/mysqltools/sps/zabbix/zabbix-4.2.1
    总用量 496
    -rw-r--r--. 1 root root    243 12月 21 10:32 auto_install_agent.sh
    -rwxr-xr-x. 1 root root   1308 12月 21 10:28 get_mysql_stats_wrapper.sh
    -rw-r--r--. 1 root root  28296 1月  10 2018 percona-zabbix-templates-1.1.8-1.noarch.rpm
    -rwxr-xr-x. 1 root root  60693 12月 21 10:28 ss_get_mysql_stats.php
    -rw-r--r--. 1 root root 408336 4月  18 2019 zabbix-agent-4.2.1-1.el7.x86_64.rpm

    我的看起来比较乱,可以把传输的单独写一个yaml文件,也可以分开写,我的的揉在一起了,看起来不那么好看,也可以所有的全部写一个脚本,然后yaml文件调脚本执行,看自己的需求。

    要说一下,如果监控的mysql不是默认端口3306,需要修改

    vim /usr/local/mysqltools/sps/zabbix/zabbix-4.2.1/ss_get_mysql_stats.php  
    265    $cache_file = "$cache_dir/$sanitized_host-mysql_cacti_stats.txt" . ($port != 33601 ? ":$port" : '');

    第265行的端口,比如我的是33601,我就改成了33601,要不然这默认是3306。

    [root@szwpldb1081 zabbix]# cat vars/zabbix.yaml 
    zabbix_version: "zabbix-4.2.1"
    zabbix_server_ip: "x.x.x.x"
    mysql_zabbix_password: "xxxx"

    一般建议写一个文件,专门配变量,类似参数之类的,然后其他yaml文件读这个文件传到目标机器根据实际情况识别参数,这样比较灵活。

    [root@szwpldb1081 zabbix]# cat common/install_dependences.yaml 
    ---
      - name: install gcc
        yum:
          name: gcc
          state: present
    
      - name: install gcc-c++
        yum:
          name: gcc-c++
          state: present
    
      - name: install libxml2-devel
        yum:
          name: libxml2-devel
          state: present
    
      - name: install curl-devel
        yum:
          name: curl-devel
          state: present
    
      - name: install unixODBC-devel 
        yum:
          name: unixODBC-devel 
          state: present
    
      - name: install net-snmp-devel
        yum:
          name: net-snmp-devel
          state: present
    
      - name: install OpenIPMI-devel
        yum:
          name: OpenIPMI-devel
          state: present

    这是一些安装依赖,有的再安装操作系统配置的时候都装好了,我喜欢还是把一些常用的依赖表单独弄一个文件,避免安装报错。

    最后修改主调用文件里面的hosts:

    [root@szwpldb1081 zabbix]# cat install_zabbix_agent.yaml 
    ---
      - hosts: tmphost
        remote_user: root
        become_user: root
        become: yes
        vars_files:
          - ../../config.yaml
          - ../../ansible/mysql/vars/mysql.yaml
          - vars/zabbix.yaml
        tasks:
          - name: install dependences
            import_tasks: common/install_dependences.yaml
    
          - name: install zabbix_agent
            import_tasks: common/install_zabbix_agent.yaml

    然后执行:

    [root@szwpldb1081 zabbix]# ansible-playbook install_zabbix_agent.yaml 

    就可以把指定机器组,全部安装好zabbix agent,pmm zabbix插件在:PMM zabbix地址,使用这个插件需要先配置php环境,php配置另一篇我直接一个脚本完成,就不配置这么多yaml文件了。

  • 相关阅读:
    Javascript之让图片固定在一个位置
    Android之AIDL实现Demo
    android listview 上下边缘的模糊去掉
    Android中Application设置全局变量以及传值
    Android之在Bitmap上涂鸦效果
    Android之TabHost重定义
    Android数据库升级实例,已更新
    Android之更新ListView,位置置顶的问题
    Android之Parcelable使用
    Asp.Net 2.0 防盗下载文件·············
  • 原文地址:https://www.cnblogs.com/5sdba-notes/p/12830614.html
Copyright © 2011-2022 走看看