ansible-playbook安裝zabbix_server,agent監控

来源:https://www.cnblogs.com/only-me/archive/2019/10/29/11761015.html
-Advertisement-
Play Games

主要完成通過playbook自動生成zabbix_server,agent,這裡沒有完全實現自動化,這裡機器的獲取還是需要人為手工填寫,如果感興趣想通過自動獲取需要部署的機器可以通過namp掃描工具awk命令截取,這裡不過多描述。我用兩台機器做的測試,老版本的模塊用法會有差異,如果無法執行可以通過官 ...


主要完成通過playbook自動生成zabbix_server,agent,這裡沒有完全實現自動化,這裡機器的獲取還是需要人為手工填寫,如果感興趣想通過自動獲取需要部署的機器可以通過namp掃描工具awk命令截取,這裡不過多描述。我用兩台機器做的測試,老版本的模塊用法會有差異,如果無法執行可以通過官網去查看https://ansible-tran.readthedocs.io/en/latest/,參考文檔https://www.cnblogs.com/LyShark/p/10886486.html

ansible 2.4.2
zabbix 3.4.15

  • 安裝nmap掃描工具

    yum install nmap -y
    #通過ping探測172.16.9.0網段中存活機器
    nmap -sP 172.16.9.0/24

完成機器間的免密登錄

  • 生成公鑰對

    ssh-keygen -t rsa
  • 設置ansible hosts配置

    [test]
    172.16.9.141 ansible_ssh_user="root" ansible_ssh_pass="root"
    172.16.9.142 ansible_ssh_user="root" ansible_ssh_pass="root"
    
    [zabbix_server]
    172.16.9.141
    [zabbix_client]
    172.16.9.142
  • 批量推送公鑰到集群節點

    - hosts: test
      user: root
      tasks:
      - name: ssh-copy
        authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
        tags:
        - sshkey

    報錯:

    FAILED! => {"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."}

    解決:

    /etc/ansible/ansible.cfg

    修改host_key_checking(預設是check的)

  • playbook構建zabbix_server(官方建議一個play寫一個獨立的任務,測試不過多計較了)

    # 初始化,關閉防火牆和SELINUX
    - hosts: zabbix_server
      tasks:
        - name: off selinux
          shell: setenforce 0
        - name: seline modify enforcing
          lineinfile:
            dest: /etc/selinux/config
            regexp: '^SELINUX='
            line: 'SELINUX=disabled'
        - name: seline firealld
          shell: systemctl stop firewalld && systemctl disable firewalld
    # 安裝部署LAMP環境,通過YUM模塊快速安裝
    - hosts: zabbix_server
      tasks:
      - name: install LAMP
        yum: name={{item}} state=installed
        with_items:
          - httpd
          - httpd-devel
          - mariadb
          - mariadb-server
          - php
          - php-mysql
      - name: start httpd
        shell: systemctl restart httpd
      - name: start mariadb
        shell: systemctl restart mariadb
    # 下載YUM源,更新EOEL源,安裝Zabbix
    - hosts: zabbix_server
      tasks:
        - name: clear YUM
          shell: rm -rf /etc/yum.repos.d/*
        - name: install YUM EPEL
          get_url: 'url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/etc/yum.repos.d/CentOS-Base.repo'
        - name: yum install EPEL -y
          yum: name=epel-release state=installed
        - name: install zabbix.repo
          shell: rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
        - name: install zabbix
          yum: name={{item}} state=installed
          with_items:
            - zabbix-server-mysql
            - zabbix-web-mysql
            - zabbix-agent
        - name: start zabbix-server
          shell: systemctl restart zabbix-server
        - name: start zabbix-agent
          shell: systemctl restart zabbix-agent
    # 安裝配置資料庫許可權,導入zabbix資料庫
    - hosts: zabbix_server
      tasks:
        - name: set mariadb password
          shell: mysqladmin -u root password 'ansible'
        - name: create zabbix master databases
          shell: mysql -uroot -pansible -e 'create database zabbix character set utf8 collate utf8_bin;'
        - name: set zabbix master databases grant
          shell: mysql -uroot -pansible -e 'grant all privileges on zabbix.* to zabbix@localhost identified by "zabbix";'
        - name: import zabbix initial data SQL shell
          shell: zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
    # 修改並拷貝配置文件,給予許可權
    - hosts: zabbix_server
      tasks:
        - name: edit zabbix dbhost
          lineinfile:
            dest: /etc/zabbix/zabbix_server.conf
            regexp: '# DBHost=localhost'
            line: 'DBHost=localhost'
        - name: edit zabbix dbpasswd
          lineinfile:
            dest: /etc/zabbix/zabbix_server.conf
            regexp: '# DBPassword='
            line: 'DBPassword=zabbix'
        - name: cp zabbix web
          shell: cp -a /usr/share/zabbix/* /var/www/html/
        - name: chmod web
          shell: chmod 755 -R /var/www/html/*
        - name: chown web
          shell: chown apache.apache -R /var/www/html/*
    
        - name: set php
          shell: echo "date.timezone = Asia/Shanghai" >> /etc/php.ini
        - name: set php
          shell: echo "max_execution_time = 300" >> /etc/php.ini
        - name: set php
          shell: echo "max_input_time = 300" >> /etc/php.ini
        - name: set php
          shell: echo "post_max_size = 32M" >> /etc/php.ini
        - name: set php
          shell: echo "memory_limit = 128M" >> /etc/php.ini
        - name: set php
          shell: echo "mbstring.func_overload = 0" >> /etc/php.ini
    
        - name: start http mysql zabbix
          shell: systemctl restart httpd ; systemctl restart mariadb
        - name: start http mysql zabbix
          shell: systemctl restart zabbix-server ; systemctl restart zabbix-agent
        - name: enabled http mysql zabbix
          shell: systemctl enable httpd ; systemctl enable mariadb
        - name: start http mysql zabbix
          shell: systemctl enable zabbix-server ; systemctl enable zabbix-agent
    • playbook構建zabbixclient
    ---
    # 初始化,關閉防火牆和SELINUX
    - hosts: zabbix_client
      tasks:
        - name: off selinux
          shell: setenforce 0
        - name: seline modify enforcing
          lineinfile:
            dest: /etc/selinux/config
            regexp: '^SELINUX='
            line: 'SELINUX=disabled'
        - name: seline firealld
          shell: systemctl stop firewalld && systemctl disable firewalld
    # 安裝zabbix_client
    - hosts: zabbix_client
      vars: 
        zabbix_server_ip: 172.16.9.141
        zabbix_agent_ip: 172.16.9.142
    
      tasks:
        - name: install zabbix_client
          shell: rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.15-1.el7.x86_64.rpm  
        - name: Install zabbix agent
          shell: yum -y install zabbix-agent
        - name: modify zabbix server ip address
          shell: sed -i 's#Server=127.0.0.1#Server='{{zabbix_server_ip}}'#g' /etc/zabbix/zabbix_agentd.conf
        - name: modify zabbix server active ip addr
          shell: sed -i 's/ServerActive=127.0.0.1/ServerActive='{{zabbix_server_ip}}'/g' /etc/zabbix/zabbix_agentd.conf
        - name: Enable remote command execution
          shell: sed -i 's/# EnableRemoteCommands=0/EnableRemoteCommands=1'/g /etc/zabbix/zabbix_agentd.conf
        - name: Enable remote command logs
          shell: sed -i 's/# LogRemoteCommands=0/LogRemoteCommands=1'/g /etc/zabbix/zabbix_agentd.conf
        - name: modify zabbix agent hostname
          shell: sed -i 's/Hostname=Zabbix server/Hostname='{{zabbix_agent_ip}}'/g' /etc/zabbix/zabbix_agentd.conf
        - name: enable zabbix-agent
          shell: systemctl start zabbix-agent ;systemctl enable zabbix-agent

再來幾個檢查語法結構,主機是否生效的命令

ansible-playbook install_zabbix_server.yaml --syntax-check
ansible-playbook install_zabbix_server.yaml --list-task
ansible-playbook install_zabbix_server.yaml --list-hosts

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • China .NET Conf 2019中國 .NET 開發者峰會即將在上海召開,這次大會是一屆完全由社區組織舉辦的中國.NET 開發者盛會,我們籌備大會之初就定下了大會的主題是“開源、共用、創新”。 這次完全由中國.NET社區自發組織的大會,我們希望通過這次大會匯聚中國.NET社區的能量,.NET ...
  • 場景 C#窗體應用中使用ZedGraph曲線插件繪製圖表: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99716066 Winforn中設置ZedGraph曲線圖的屬性、坐標軸屬性、刻度屬性: https://blog.csd ...
  • 一、命令的一般格式 command [option]... [argument]... command [options] [arguments] 具體說明: 1、command: 表示命令的名稱,如 ls 2、option:定義命令的執行特性,可以有長短兩種選項: 長選項:用 -- 引導,後面跟完 ...
  • Linux最常用命令 一、linux的目錄結構 / 下級目錄結構 bin (binaries)存放二進位可執行文件 sbin (super user binaries)存放二進位可執行文件,只有root才能訪問 etc (etcetera)存放系統配置文件 usr (unix shared reso ...
  • 排序 堆排序 一:定義 作為選擇排序的改進版,堆排序可以把每一趟元素的比較結果保存下來,以便我們在選擇最小/大元素時對已經比較過的元素做出相應的調整。 二:堆排序演算法 作為選擇排序的改進版,堆排序可以把每一趟元素的比較結果保存下來,以便我們在選擇最小/大元素時對已經比較過的元素做出相應的調整。 堆排 ...
  • 本篇blog將講述sshd服務提供的兩種安全驗證的方法,並且通過這兩種方法進行兩台Linux虛擬機之間的遠程登陸。 準備工作: (1) 準備兩台安裝有Linux系統的虛擬機,虛擬機軟體採用VMware; (2) 將兩台虛擬機設置在同一網段下,互相之間可以ping通,可以採用nmtui命令進行設置; ...
  • 1、第一種情況 首先ifconfig,可以看到沒有正在工作的網卡,只有localhost 然後ifconfig -a,可以看到eth0這塊網卡並沒有離家出走,只是罷工了而已 接下來是關鍵步驟 起初是沒有最下麵兩行的,加上,格式是仿造倒數第三和第四這兩行來寫的 最後,在terminal里執行 重啟網路 ...
  • 在新買的聯想ideapad-330C筆記本上,安裝Ubuntu 18.04後,悲催的發現,沒有無線網路,幸好有線還能用,然後網上搜一波,發現不少人遇到這種問題,也有人給出解決方案 參考的鏈接: Thinkpad E470C(集成網卡rlt8111/8618/8411系列) 無線網卡rtl8821CE ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...