文件目錄結構:php
[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安裝比較簡單,配置也比較簡單,主要是寫好開機啓動服務:html
[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
把開機啓動服務文件放到操做系統指定目錄:mysql
[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客戶端環境變量:c++
[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
最主要是這個文件:sql
[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的一個插件,shell
不過官方如今已經很久沒有維護了,不過如今還可使用最新的也是到1.18版本沒有再更新了,我用來監控mysql8,沒有問題,能夠根據本身的狀況來增長,都是php寫的,看配置本身增添都很簡單。vim
[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:bash
[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文件調腳本執行,看本身的需求。app
要說一下,若是監控的mysql不是默認端口3306,須要修改curl
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文件了。