<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # zabbix模板的自動發現規則(ldd)實現被監控項自動發現 ## 自動發現規則(ldd)用途說明 在zabbix自帶的linux模板的自動發現規則中,有一個`Mounted filesystem discovery`自動發現規則,可以根據每個服務器磁盤梳理不同,自動生成相應的磁盤監控數據. 這就是自動注冊的用途,根據不同服務器上同一個監控項不同的數量,自動生成對應數量的監控 >例如5個服務器都分別啟動了tomcat多實例,但啟動的tomcat數量不相同,端口也不同,我想要監控這些端口是否down掉: 用普通的方式創建的監控模板,就得給每個服務器單獨創建,不能通用 而如果通過自動發現規則來創建,就可以只用一個模板,對應這些不同數量的tomcat進行端口檢查 ## 自動發現規則使用實例 以監控java端口的自動發現為例,進行操作說明 流程: 1. 命令行獲取結果 2. 編寫zabbix腳本,輸出json格式 3. 創建zabbix客戶端key 4. 服務端驗證結果 5. web頁添加模板規則 6. web頁主機綁定模板 7. 驗證結果 ### 1. 命令行獲取結果 首先在命令行,使用命令獲取想要的結果 ```sh [root@zhimai-api02 api]# ss -lntup|grep java|awk -F "[ |:]+" '{print $6}' 9090 9091 ``` ### 2. 編寫zabbix腳本,輸出json格式 zabbix的api需要的都是json格式的數據,這里也不例外,不管通過shell腳本還是python腳本,反正最終需要輸出json格式數據 shell腳本如下: `vim java_port_list.sh` ```sh #!/bin/bash #獲取所有java服務端口,并以json格式返回 string=`ss -lntup|grep java|awk -F "[ |:]+" '{print $6}'` count=`echo $string|wc -w` printf '{"data":[\n' for ((i=1;i<=$count;i++)) do proc_array=`echo $string |cut -d ' ' -f$i` #echo "proc"$proc_array printf "\t{\"{#PORT}\":\"${proc_array}\"},\n" done date=`date +%d%H%m%s` printf "\t{\"{#DATE}\":\"${date}\"}\n" printf "\t]\n" printf "}\n" ``` 腳本執行結果如下: ```sh [root@zhimai-api02 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/java_port_list.sh {"data":[ {"{#PORT}":"9090"}, {"{#PORT}":"9091"}, {"{#DATE}":"3117101572512518"} ] } # 最前面的data是標準語法要求的,必須要相同,后面的key可以自己定義 ``` ### 3. 創建zabbix客戶端key 在`zabbix_agentd.d`目錄下,創建兩個自定義key,一個key用來自動發現,一個key用來作為具體監控項 ```sh [root@zhimai-api02 ~]# cat /etc/zabbix/zabbix_agentd.d/java_api.conf # 獲取json列表傳遞給zabbix-server UserParameter=discovery.api.port,sh /etc/zabbix/zabbix_agentd.d/scripts/java_port_list.sh # 端口狀態監控key UserParameter=api.port.status[*],ss -lntup|grep "$1"|wc -l ``` 重啟zabbix客戶端,然后到服務端去測試驗證 ```sh systemctl restart zabbix-agent.service ``` ### 4. 服務端驗證結果 在zabbix服務使用zabbix-get命令驗證 ```sh [root@zq-zabbix ~]# zabbix_get -s 172.17.19.13 -k discovery.api.port {"data":[ {"{#DATE}":"3114101572502867"} ] } ``` 如上,沒有獲取到java端口信息,經查是`ss -lntup`命令中的`-p`參數,在普通用戶下是看不了其他用戶進程的,也就獲取不到數據,可以使用免密sudo方式,也可以給`ss`命令添加`s`權限,讓ss命令直接在root命令下運行 ```sh #客戶端上操作 chmod +s /usr/sbin/ss ``` 再次在服務端驗證: ```sh [root@zq-zabbix ~]# zabbix_get -s 172.17.19.13 -k discovery.api.port {"data":[ {"{#PORT}":"9090"}, {"{#PORT}":"9091"}, {"{#DATE}":"3117101572512494"} ] } ``` 再拿獲取的端口`9090`驗證端口存活狀態`key` ```sh [root@zq-zabbix ~]# zabbix_get -s 172.17.19.13 -k api.port.status[9090] 1 ``` >如上,已經能獲取端口列表,也能驗證改端口的狀態了,可以添加規則了 ### 5. web頁添加模板規則 **A 先創建模板的自動發現規則** 在web頁面創建模板,進入模板的`自動發現規則`頁,創建自動發現規則,主要注意`鍵值`和`過濾器`兩項設置 [![自動發現規則](https://s2.ax1x.com/2019/10/31/KIBuo6.md.png)](https://imgchr.com/i/KIBuo6) [![過濾器](https://s2.ax1x.com/2019/10/31/KIBjfO.md.png)](https://imgchr.com/i/KIBjfO) **B 繼續編寫自動發現規則的監控項原型和觸發器類型** [![監控項原型](https://s2.ax1x.com/2019/10/31/KIrBrj.md.png)](https://imgchr.com/i/KIrBrj) [![觸發器類型](https://s2.ax1x.com/2019/10/31/KIrvsH.md.png)](https://imgchr.com/i/KIrvsH) ### 6.web頁主機綁定模板 此操作過于簡單,略 ### 7. 驗證結果 [![自動發現結果](https://s2.ax1x.com/2019/10/31/KoFkyq.md.png)](https://imgchr.com/i/KoFkyq) ## 過程中遇到的問題: 1. json格式錯誤導致自動發現不了 問題:自動發現不了,zabbix-server端日志提示`became not supported` ```sh discovery rule "xxx:discovery.api.port" became not supported: Value should be a JSON object ``` 原因:這個問題經過檢查,是輸出的內容不是json格式導致的 2. 有多個端口/服務,但只能自動發現一個端口/服務 原因:也是由于json格式導致的 正確的應該每個key-value鍵值對都要用一堆大括號包起來 但輸出的json格式中,卻將所有的鍵值對只用了一個大括號包起來,如下 ```json #正確 {"data":[ {"{#PORT}":"9090"}, {"{#PORT}":"9091"} ] } #錯誤 {"data":[{ "{#PORT}":"9090", "{#PORT}":"9091" }] } ``` 3. 客戶端執行腳本正常,服務端用zabbix-get獲取數據不正確 是由于使用的命令,如`ss`,在普通用戶模式下,是沒有權限獲取如進程信息之類數據導致的 解決辦法:可以使用visudo給zabbix用戶授權某些命令免密碼執行,也可以給這些命令增加`s`權限,如 ```sh chmod +s /usr/sbin/ss #增加操作一定要慎重,個別可以修改數據的命令,一定不要添加s權限 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看