Zabbix 監控 Nginx 狀態

来源:http://www.cnblogs.com/wangxiaoqiangs/archive/2016/04/20/5412111.html
-Advertisement-
Play Games

簡介: 如何使用 Zabbix 監控 Nginx 狀態 ? 1、獲取 Nginx 狀態( HTTP Stub Status ) ## 查看編譯時有沒有加入狀態監控模塊,如果沒有需要單獨載入 2、配置 nginx.conf ## 在虛擬主機 server {} 中加入上面配置,也可以單獨定義一個專門用 ...



簡介:

如何使用 Zabbix 監控 Nginx 狀態 ?

1、獲取 Nginx 狀態( HTTP Stub Status )

shell > /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module

## 查看編譯時有沒有加入狀態監控模塊,如果沒有需要單獨載入

2、配置 nginx.conf

shell > vim /usr/local/nginx/conf/nginx.conf

    location ~ /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    allow 121.142.111.210;
    deny all;
    }

## 在虛擬主機 server {} 中加入上面配置,也可以單獨定義一個專門用於監控的虛擬主機。
## deny all , 拒絕除 allow 中的主機之外所有主機訪問此 URL ,實現過程中如果遇到 403 ,有可能是你把自己測試的機器拒絕了!

3、Nginx 監控項解釋

shell > curl http://127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0

## Active connections: 對後端發起的活動連接數
## Server accepts handled requests: Nginx 總共處理了 1 個連接,成功創建了 1 次握手(沒有失敗次數),總共處理了 1 個請求
## Reading: Nginx 讀取到客戶端的 Header 信息數
## Writing: Nginx 返回給客戶端的 Header 信息數
## Waiting: 開啟 keep-alive 的情況下,這個值等於 active - ( reading + writing ), 意思是 Nginx 已經處理完成,正在等待下一次請求指令的駐留連接
## 在訪問效率很高,請求很快被處理完畢的情況下,Waiting 數比較多是正常的。如果 reading + writing 數較多,則說明併發訪問量很大,正在處理過程中

4、編寫腳本獲取上面的 key 值

shell > vim /script/nginx_status.sh

#!/bin/bash

case $1 in
    active)
        curl -s http://127.0.0.1/nginx_status | awk '/Active/ {print $3}' ;;
    accepts)
        curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $1}' ;;
    handled)
        curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $2}' ;;
    requests)
        curl -s http://127.0.0.1/nginx_status | awk 'NR==3 {print $3}' ;;
    reading)
        curl -s http://127.0.0.1/nginx_status | awk '/Reading/ {print $2}' ;;
    writing)
        curl -s http://127.0.0.1/nginx_status | awk '/Writing/ {print $4}' ;;
    waiting)
        curl -s http://127.0.0.1/nginx_status | awk '/Waiting/ {print $6}' ;;
    *)
        echo "Usage: $0 { active | accepts | handled | requests | reading | writing | waiting }" ;;
esac

## 腳本使用 curl 結合 awk 來獲取 key 的值。
## -s 靜默模式,如果不加 -s 參數,則獲取到的結果是不正確的。

shell > chmod a+x /script/nginx_status.sh

5、添加自定義 key 配置文件

shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_status.conf
## Nginx_status
UserParameter=nginx.active,/script/nginx_status.sh active
UserParameter=nginx.accepts,/script/nginx_status.sh accepts
UserParameter=nginx.handled,/script/nginx_status.sh handled
UserParameter=nginx.requests,/script/nginx_status.sh requests
UserParameter=nginx.reading,/script/nginx_status.sh reading
UserParameter=nginx.writing,/script/nginx_status.sh writing
UserParameter=nginx.waiting,/script/nginx_status.sh waiting

## 也可以直接加到 /usr/local/zabbix/etc/zabbix_agentd.conf 末尾

shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

UnsafeUserParameters=1 # 允許自定義 Key

## 添加上面配置

5、重啟 Zabbix_agentd

shell > service zabbix_agentd restart

## 註意,上面全部操作都是在被監控端

6、Zabbix 服務端測試能否拿到 Key

shell > /usr/local/zabbix/bin/zabbix_get -s 123.57.79.52 -k nginx.active
1

## 可以獲取到 key 的值,說明配置沒有問題了
## 被監控端記得要開啟 10050 埠

7、Zabbix 監控 Nginx 狀態

## 接下來就是在 web 界面,創建模板、添加監控項了

> 創建模板

## 一起跟著我點點點 Configuration -> Templates -> Create template

Template name : Template App Nginx Service

Groups In groups : Templates

Update

> 創建應用分組

## 現在又回到了模板頁,跟我一起點 Template App Nginx Service 模板後面的 Applications -> Create application

Name : Nginx status

Update

> 創建監控項

## 現在的位置是 Template App Nginx Service 模板中的 Applications 頁面,跟我一起點擊剛創建的 Nginx status 後面的 Items -> Create item

Name : nginx active     ## 監控項名稱

Type : Zabbix agent    ## 監控類型,預設被動模式

Key : nginx.active       ## 由於是自定義 Key ,所以要自己寫上去。如果使用自帶的 Key ,點擊 Select 選擇就可以了

Type of information : Numeric( unsiqned )     ## 數據在進行類型轉化之後存入資料庫

    Numeric( unsiqned ) : 64 位無符號整數
    Numeric( float ) : 浮點數類型
    Character :  字元串類型數據,限製為 255B
    Log : 日誌文件,必須使用的 Key 為 log[]
    Text : 文本,不限制大小

Data type : Decimal     ## 數據類型用於存儲 Items 中 Key 所獲取的數值值,存儲在不同的表中,如:history 、history_str 等表

    Boolean : 在數據存儲時將原本的值替換為 0 或 1,TRUE 存儲為 1 ,FALSE 存儲為 0 ,所有的值都區分大小寫( 任何非零都為 TRUE ,0 為 FALSE )
    Octal : 八進位數的數值格式
    Decimal : 十進位數的數值格式
    Hexadecimal : 十六進位數的數值格式

    ## Zabbix 自動執行數據類型的格式轉換

Units : 留空                                ## 單位符號,Zabbix 會自動處理接收到的數據,並且把數據轉換為需要顯示的格式

Use custom multiplier : 不勾選     ## 如果開啟,所接收到的數據會被乘以整數或浮點數。該選項用於單位換算,KB 、MBps 換為 B 、Bps 等

Update interval( in sec ) : 30      ## 間隔多長時間通過 Items 收集數據,單位 秒

    Flexible intervals :                 ## 用於設置不同時間段收集數據的間隔不同,如果設置,則此時間段按這個間隔,其餘的按上面參數的間隔

    New flexible interval Interval( in sec ) : 50 Period 1-7,00:00-24:00 Add :     ## 通過這裡來添加一個新的時間段

History storage period( in days ) : 90     ## 歷史數據保留時間

Trend storage period( in days ) : 365     ## 趨勢數據保留時間

Store value : As is     ## 數據存儲時的類型

    As is : 無預處理

    Delta( speed per second ) : 顯示每秒速率的值( 例如網卡流量 )

    Delta( simple change ) : 顯示本次數值與上次數值的差值

Show value : As is                  ## 無預處理( 數據顯示時的類型,值映射:將接收到的值映射為一個狀態,不改變原值,只改變顯示結果,例如將 1 映射為 Nginx service states )

New application : 留空             ## 創建一個新的應用分組

Applications : Nginx status     ## 選擇一個已有的應用分組

Populates host inventory field : None     ## 將此 Item 分配給某個資產管理組

Description : 留空                                ## 對 Item 的描述信息

Enabled : 勾選                                    ## 開啟此 Item

Add

## 分別定義 active | accepts | handled | requests | reading | writing | waiting 即可

8、將模板應用到主機

> 如果沒有主機,跟著我點點點 Configuration -> Hosts -> Create host

Host name : 123.121.211.52     ## 被監控端 IP( 這裡要寫被監控端 zabbix_agentd.conf 文件中 Hostname 的值 )

Visible name : Shuma_1           ## 定義一個別名( 要顯示的名字 )

Groups In groups : Shuma        ## 選擇加入到一個主機組中

New group : 留空                      ## 自定義一個主機分組

Agent interfaces :                    ## 介面協議

     IP address : 123.121.211.52    ## 被監控端的 IP 

    DNS name : 留空                      ## 監控主機能夠解析的名稱

    Connect to : IP                        ## 選擇什麼方式

    Port : 10050                           ## 被監控端要開放此埠

Description : 留空                    ## 對主機的描述信息

Monitored by proxy : no proxy  ## 不使用代理

Enabled : 勾選                        ## 開啟監控 ( Monitored 代表主機可用,已被監控中;Not monitored 代表主機不可用,不被監控 )

Add                                      ## 代表主機添加完成( 這裡先不點的啦,一併把模板鏈接上 )選擇當前頁面中的 Templates

> 現在的位置是主機頁中的模板選項卡中,跟著我點點點 Select

新頁面中選擇 Template App Nginx Service 之後又返回來了,點擊 Add 這樣就成功鏈接模板了

Add                                     ## 最後來一次就可以啦

9、看一下勞動成果咯

> 跟著我點點點 Configuration -> Hosts

## 你會看到剛添加的主機,它有一個 Applications ,7 個 Items ,看到鏈接了模板,狀態為 Enabled 。

> 跟著我點點點 Monitoring -> Latest data

Hosts : Select 一下剛創建的主機,註意:它在分組裡面,點擊 Filter

## 現在,你有沒有看到 7 個監控項,並且都獲取到了數據喲

10、給主機添加一個 Graph

> 跟著我點點點 Configuration -> Hosts 之後,點擊剛創建的主機後面的 Graphs 就可以創建圖表了

## 我臨時改變主意了,直接去模板里創建比較好,這樣就不用給每台主機創建了

> 跟著我點點點 Configuration -> Templates 之後,點擊剛創建的模板後面的 Graphs -> Create graph

Name : Nginx status     ## 圖表名稱

width : 900                 ## 寬度

height : 200                ## 高度

Graph type : Normal    ## 圖表類型

    Normal : 常規圖表,值用線條表示

    Stacked : 疊圖

    pie : 餅圖

    Exploded : 分解餅圖

Show legend : 勾選                    ## 顯示圖表說明

Show working time : 勾選           ## 非 "工作時間" 用灰色表示,不有用於餅圖跟分解餅圖。

Show triggers : 勾選                  ## 觸發達到閾值會用紅色線條顯示,不能用於餅圖跟分解餅圖,只有部分觸發器函數支持,如 min 、max

Percentile line( left ) : 不勾選      ## 左邊的 Y 軸用來顯示百分比,僅對常規圖表適用

Percentile line( right ) : 不勾選    ## 右邊的 Y 軸用來顯示百分比,僅對常規圖表適用

Y axix MIN value : Calculated     ## 自動計算 Y 軸最小值

Y axis MAX value : Calculated    ## 自動計算 Y 軸最大值

Items                                     ## 點擊 Add 將之前的 7 個 item 都添加到一張圖中

    Name : Item 的名稱顯示的數據

    Function : 當一個 Item 存在不止一個值時,顯示哪一個數據( all 全部 ,min 僅最小值 ,avg 僅平均值 ,max 僅最大值 )

    Draw style : Line                ## 僅對常規圖表適用,對疊圖填充區域適用

        Line :畫線條

        Filled region : 畫填充區域

        Bold line : 畫粗線

        Dot : 畫圓點

        Dashed line : 畫虛線

    Y axis side : Left                 ## Y 軸的左側分給元素

    Colour : 每種元素代表的顏色

Add                                       ## 完成 Graph 創建,如果在主機中,可以通過第二選項卡 Preview 查看

11、查看 Graph

## 由於之前已經引用了模板,所以現在主機中自動就有了此 Graph

> 跟著我點點點 Monitoring -> Graphs


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

-Advertisement-
Play Games
更多相關文章
  • DCL(Data Control Language)是資料庫控制語言。 是用來設置或更改資料庫用戶或角色許可權的語句,包括(grant,deny,revoke等)語句。 在預設狀態下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人員才有權力執行DCL ...
  • 1、MySQL基礎概念 mysql邏輯架構如下: 每個客戶端連接都會在伺服器中擁有一個線程,這個連接的查詢只會在這個單獨的線程中執行。 MySQL是分層的架構。上層是伺服器層的服務和查詢執行引擎,下層是存儲引擎。雖然有很多不同作用的插件API,但存儲引擎API還是最重要的。如果能理解MySQL在存儲 ...
  • 在本機遠程連接遠程Oracle服務的時候,寫瞭如下檢索語句 select * from sys_employee 結果集中出現了中文亂碼,但是遠程伺服器本身的PL/SQL檢索出來沒有問題 解決方案: 步驟一: select * from v$nls_parameters 獲取執行結果 步驟二:SEL ...
  • 上文介紹了Sphinx的工作原理,關於如何安裝的文章在網上有很多,筆者就不再覆述了,現在繼續講解Sphinx的配置文件,讓Sphinx工作起來。 數據源配置 先來看一份數據源的配置文件示例: 其中 source後面跟著的是數據源的名字,後面做索引的時候會用到; type:數據源類型,可以為MySQL ...
  • 第一天 SQL查詢語句 CMD——SQLPLUS 賬號 soctt 密碼 tiger,輸入完成後進入SQL資料庫,如圖顯示即連接成功。 連接成功後 ,我們首先設置一下基本界面, --設置 每列顯示的字元數 set LINES 1000;set pages 100; --清屏host cls SQL語 ...
  • 查看nginx編譯時參數的設定 使用nginx -V命令查看 可以使用nginx -h命令查看命令幫助 配置文件中將worker process綁定到cpu的特定內核上, vim /etc/nginx/nginx.conf 註意worker_cpu_affinity這個參數是對cpu多核的支持,上面 ...
  • 該過程一共分為四步: 1.下載內核:我下載的是3.13.11這個版本的內核! 2.解壓內核:我將其解壓/home/jello/Downloads/linux-3.13.11目錄下!下文將會基於此目錄編譯內核。 3.開始為編譯內核做準備: a.在terminal下麵進入目錄:cd /home/jell ...
  • 簡介: 單獨整理一下 Zabbix Agent 。 1、安裝包選擇 下載地址:http://www.zabbix.com/download.php 這裡有兩種源碼包,一種是安裝 Zabbix Server 的包,可以通過指定參數 --enable-agent 的方式安裝 Agent 一種是安裝 Za ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...