日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

為什么要自定義監控項

通過上一章Docker下實戰zabbix三部曲之二:監控其他機器的實戰,我們知道了對機器的監控是通過在機器上安裝zabbix agent來完成的,zabbix agent連上zabbix server后,將自己所在機器的信息定時給到zabbix server,這樣就實現了機器的監控;

但是我們能監控到的只有cpu,磁盤這些基礎信息,對于一些業務信息例如訪問量,某個邏輯的執行成功失敗次數等信息,我們也想進行監控,這就需要我們去制作自定義監控項了,本章我們一起來實戰自定義監控項。

前文鏈接:

  1. Docker下實戰zabbix三部曲之一:極速體驗
  2. Docker下實戰zabbix三部曲之二:監控其他機器

機器部署情況一覽

總的來說,有四臺機器,各自的功能如下:

a. 假設有個機器在運行web應用,容器是Tomcat,這個應用有個接口http://localhost:8080/zabbixcustomitemdemo/count,可以返回最近一分鐘的某個業務量(例如網站訪問次數);

b. 有一臺機器安裝了zabbix agent,作為自定義監控項的載體;

c. 有一臺機器安裝了zabbix server;

d. 有一臺機器安裝了MySQL,作為zabbix系統的數據庫;

整體部署如下圖所示:

Docker下實戰zabbix三部曲之三:自定義監控項

 

運行web應用的server

這是個基于maven的JAVA web應用,里面有個spring mvc的controller,提供一個http服務,范圍某個業務每分鐘的業務量,代碼如下圖所示:

@Controller
public class CountController {
 @RequestMApping("/count")
 @ResponseBody
 public int count(String model, String type) {
 int base;
 int max;
 int min;
 if("a".equals(model)){
 base = 50000;
 }else{
 base =10000;
 }
 if("0".equals(type)){
 max = 9000;
 min = 1000;
 }else{
 max = 1000;
 min = 0;
 }
 return base + new Random().nextInt(max)%(max-min+1);
 }
}

從以上代碼我們可以看出,http服務會返回隨機數,此服務接受兩個參數model和type,當model等于”a”時返回的隨機數從50000開始,model不等于”a”時返回的隨機數從10000開始,當type等于”0”時,在base的基礎上增加的值是1000到9000之間,當type不等于”0”時,在base的基礎上增加的值是0到1000之間;

整個工程的代碼已經上傳到git上,地址是git@github.com:zq2599/blog_demos.git,這個目錄下由多個工程,本次實戰的工程是zabbixcustomitemdemo,如下圖:

Docker下實戰zabbix三部曲之三:自定義監控項

 

docker-compose.yml文件

上面我們已經把四臺機器的功能和關系梳理清楚了,現在就來制定docker-compose.yml文件吧:

version: '2'
services:
 zabbix-mysql-service: 
 image: daocloud.io/library/mysql:8
 container_name: zabbix-mysql-service
 environment:
 - MYSQL_ROOT_PASSword=888888
 restart: always
 zabbix-server-service:
 image: monitoringartist/zabbix-xxl:3.2.6
 links: 
 - zabbix-mysql-service:mysqlhost
 container_name: zabbix-server-service
 restart: always
 depends_on:
 - zabbix-mysql-service
 ports:
 - "8888:80"
 environment:
 - ZS_DBHost=mysqlhost
 - ZS_DBUser=root
 - ZS_DBPassword=888888
 zabbix-agent-a:
 image: zabbix/zabbix-agent:ubuntu-3.2.6
 links: 
 - zabbix-server-service:zabbixserverhost
 container_name: zabbix-agent-a
 restart: always
 depends_on:
 - zabbix-server-service
 environment:
 - ZBX_HOSTNAME=zabbix-agent-service-a
 - ZBX_SERVER_HOST=zabbixserverhost
 tomcat-server-service:
 image: bolingcavalry/bolingcavalrytomcat:0.0.1
 container_name: tomcat-server
 restart: always
 ports:
 - "8080:8080"

yml文件的內容如上所示,其中mysql、zabbix server,zabbix agent的配置和上一章Docker下實戰zabbix三部曲之二:監控其他機器是一樣的,新增的是一個tomcat的鏡像,這個鏡像是我在tomcat官方鏡像的基礎上做了點小改動,使得這個tomcat支持在線部署web應用(關于tomcat在線部署應用,請看文章http://blog.csdn.net/boling_cavalry/article/details/70184605)

準備好yml文件之后,打開終端,在yml文件所在目錄下執行docker-compose up -d可以將yml文件中所有的容器都啟動;

注意,如果您的電腦之前已經運行過上一章Docker下實戰zabbix三部曲之二:監控其他機器中的docker-compose.yml文件,那么本次執行docker-compose up -d會提示啟動失敗,已有同樣名稱的容器存在,這時候可以去上一章的docker-compose.yml文件所在目錄執行docker-compose down,也可以通過docker ps -a將所有容器列出,再通過docker stop命令依次停止所有容器,再執行docker-compose rm命令依次刪除;

部署web應用

打開終端,進入web工程zabbixcustomitemdemo的目錄下,執行命令mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy,即可將web工程部署到tomcat容器上,關于在線部署的細節請參照文章http://blog.csdn.net/boling_cavalry/article/details/70184605;

部署成功后,打開瀏覽器,訪問http://localhost:8080/zabbixcustomitemdemo/count,web server會返回一個數字,如下圖所示:

Docker下實戰zabbix三部曲之三:自定義監控項

 

接下來我們要在zabbix agent上做一個shell腳本,此腳本的功能時發起http請求http://localhost:8080/zabbixcustomitemdemo/count?model=a&type=0,就能得到web服務響應的數字,如果此腳本每分鐘被調用一次,就能得到完整的監控曲線圖了;

a. 首先,執行docker exec -it zabbix-agent-a /bin/bash登錄zabbix agent的容器;

b. 登錄后,執行apt-get update更新apt;

c. 先后執行apt-get install wgetapt-get install vim,安裝wget和vi工具;

d. 新建目錄/usr/work/,在此目錄下用vi創建一個shell文件biz_count.sh,內容如下:

#"!/bin/bash
wget -qO- http://tomcathost:8080/zabbixcustomitemdemo/count?model=$1&type=$2
echo ""

上面代碼的功能是訪問http服務獲取一個數字,其中model和type用的是shell的入參;

注意兩個細節:

第一個:最后一行代碼echo “”,實踐證明這一行是很有用的,有了這一行就會在輸出http返回的數字后進行換行,有了換行數據才能成功上報到zabbix server;

第二個:wget命令后面的url參數中,”&”符號前面要加轉義的斜杠””;

e. 執行chmod a+x biz_count.sh,給shell賦予可執行權限;

agent上添加監控項

繼續在zabbix agent容器上,我們要添加一個自定義監控項,這樣后面在zabbix server上就能使用該監控項了:

a. 在/etc/zabbix/zabbix_agentd.d目錄下,新增一個biz.conf文件,內容如下:

UserParameter=get_total_num[*],/usr/work/biz_count.sh $1 $2

以上代碼配置了一個自定義監控項,名稱是gettotalnum,可以接受兩個入參,該監控項會調用bizcount.sh這個腳本,并且把外部傳來的兩個入參直接傳遞給bizcount.sh;

b. 執行chmod a+r biz.conf使得該文件可讀;

在zabbix agent上測試

繼續在zabbix agent容器上,執行以下命令來測試剛剛新加的監控項:

/usr/sbin/zabbix_agentd -t get_total_num[a,0]

中括號中的a,0表示兩個入參分別是”a”和”0”,我們執行四次,入參分別用[a,0]、[b,0]、[a,1]、[b,1],得到的結果如下圖所示:

Docker下實戰zabbix三部曲之三:自定義監控項

 

四個返回值分別是54741、17097、50564、10919,結合前面的java代碼可以發現兩個參數都生效了,數字的大小范圍因入參而變化;

為了讓監控項生效,需要重啟zabbix agent,不過這里有個更快捷的方法可以試試:

a. 執行exit退出zabbix agent容器;

b. 執行docker restart zabbix-agent-a重啟zambia agent容器;

到了這里,自定義監控項已經準備好了,接下來在zabbix server上把它配置成功,我們就能看到監控數據和曲線圖了,不過在配置前,我們可以在zabbix server上測試一下能否成功調用zabbix agent上的監控項;

在zabbix server上測試agent機器的監控項

首先我們要搞清楚zabbix agent機器的ip,有兩種方法:

第一種,執行docker exec -it zabbix-agent-a /bin/bash登錄zabbix agent的容器,在容器中執行ip addr命令可以得到ip;

第二種,直接執行命令docker exec -it zabbix-agent-a ip addr得到ip;

不論哪種,都能得到zabbix-agent的ip是172.31.0.5;

現在我們登錄zabbix server容器,執行命令docker exec -it zabbix-server-service /bin/bash即可登錄,登錄后執行以下命令:

zabbix_get -s 172.31.0.5 -k get_total_num[a,0]

如下圖所示,測試成功,調用agent的監控項返回了符合預期的數據:

Docker下實戰zabbix三部曲之三:自定義監控項

 

還記得我們剛才在zabbix agent上配置好之后,需要重啟agent服務或者重啟zabbix agent容器,如果您忘了這一步,現在zabbix server上測試會得到如下錯誤提示:

Docker下實戰zabbix三部曲之三:自定義監控項

 

這時候去重啟一下,再回來測試就可以成功了。

在管理頁面上添加監控項

在瀏覽器上輸入”http://localhost:8888/“ 登錄管理頁面,先添加agent機器,如下圖:

Docker下實戰zabbix三部曲之三:自定義監控項

 

添加之后,點擊下圖紅框位置,進入監控項頁面:

Docker下實戰zabbix三部曲之三:自定義監控項

 

如下圖,點擊右上角的“Create item”即可開始添加監控項:

Docker下實戰zabbix三部曲之三:自定義監控項

 

新增的監控項,我們只要填寫Name,Key,Update interval(更新頻率)這幾個字段,其他的保持不變,每個要更新的字段的內容如下圖:

Docker下實戰zabbix三部曲之三:自定義監控項

 

填寫并保存后,我們可以在Monitoring -> Latest data中看到最新的監控項數據,如下圖:

Docker下實戰zabbix三部曲之三:自定義監控項

 

接下來我們添加一個監控圖形,操作如下圖所示,可以進入圖形管理頁面:

Docker下實戰zabbix三部曲之三:自定義監控項

 

如下圖,點擊右上角的“Create graph”創建一個圖形:

Docker下實戰zabbix三部曲之三:自定義監控項

 

新建圖形的時候,名稱隨意,只要Items選中剛剛創建的監控項即可,如下圖:

Docker下實戰zabbix三部曲之三:自定義監控項

 

創建成功,現在要看看效果了,操作如下圖所示:

Docker下實戰zabbix三部曲之三:自定義監控項

 

點擊”add”之后,在彈出的頁面上選擇剛剛我們新建的圖形選項,操作完畢后,點擊下圖紅框位置,就能看見曲線圖了:

Docker下實戰zabbix三部曲之三:自定義監控項

 

曲線圖如下:

Docker下實戰zabbix三部曲之三:自定義監控項

 

以上就是自定義監控項開發和設置的所有過程,基于監控項的操作,除了圖形還能添加tirgger用來告警,在添加action用來確定告警的動作,例如郵件短信的,有興趣的讀者可以實際操作實戰。

歡迎關注我的公眾號:程序員欣宸

分享到:
標簽:自定義 監控 Docker
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定