溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nagios頁面監控腳本是怎么樣的

發布時間:2021-11-08 10:21:32 來源:億速云 閱讀:181 作者:小新 欄目:云計算
# Nagios頁面監控腳本是怎么樣的

## 引言

在企業級IT運維中,服務可用性監控是保障業務連續性的關鍵環節。Nagios作為開源監控系統的代表,其靈活的插件機制允許用戶通過自定義腳本擴展監控能力。本文將深入探討Nagios頁面監控腳本的實現原理、典型架構和實際應用場景。

## 一、Nagios監控腳本基礎概念

### 1.1 Nagios插件規范
Nagios腳本本質上遵循以下規范:
- 使用Bash/Python/Perl等腳本語言編寫
- 返回標準化的退出狀態碼:
  - 0:OK
  - 1:WARNING 
  - 2:CRITICAL
  - 3:UNKNOWN
- 輸出第一行作為簡短狀態信息(顯示在Dashboard)
- 可選的性能數據(用`|`分隔)

### 1.2 頁面監控的特殊性
相比常規服務監控,網頁監控需要處理:
- HTTP狀態碼驗證(200/404/500等)
- 響應時間閾值
- 頁面內容匹配(關鍵詞/正則表達式)
- SSL證書有效期檢查

## 二、典型腳本實現方案

### 2.1 Bash實現示例
```bash
#!/bin/bash

URL="https://example.com"
TIMEOUT=10
KEYWORD="Welcome"

response=$(curl -sSL --max-time $TIMEOUT -w "%{http_code}" -o /dev/null $URL)
code=$?

if [ $code -ne 0 ]; then
  echo "CRITICAL: Connection failed (curl error $code)"
  exit 2
elif [[ $response != 2* ]]; then
  echo "CRITICAL: HTTP $response"
  exit 2
else
  if ! curl -sSL $URL | grep -q "$KEYWORD"; then
    echo "WARNING: Keyword not found"
    exit 1
  fi
  echo "OK: Page loaded successfully | time=${response_time}s"
  exit 0
fi

2.2 Python增強版實現

#!/usr/bin/env python3
import requests
import sys
from urllib.parse import urlparse

def check_website(url, timeout=5, keyword=None):
    try:
        r = requests.get(url, timeout=timeout, verify=True)
        r.raise_for_status()
        
        if keyword and keyword not in r.text:
            return (1, f"WARNING: Keyword '{keyword}' not found")
            
        return (0, f"OK: {url} (HTTP {r.status_code}) | response_time={r.elapsed.total_seconds():.2f}s")
        
    except requests.exceptions.SSLError as e:
        return (2, f"CRITICAL: SSL Error - {str(e)}")
    except requests.exceptions.RequestException as e:
        return (2, f"CRITICAL: Connection failed - {str(e)}")

if __name__ == "__main__":
    url = sys.argv[1] if len(sys.argv) > 1 else "https://example.com"
    keyword = sys.argv[2] if len(sys.argv) > 2 else None
    
    code, msg = check_website(url, keyword=keyword)
    print(msg)
    sys.exit(code)

三、高級監控功能實現

3.1 多步驟事務監控

模擬用戶操作流程:

with requests.Session() as s:
    # 登錄檢查
    login = s.post(login_url, data=credentials)
    if "Login Failed" in login.text:
        return (2, "CRITICAL: Login failed")
    
    # 儀表盤檢查
    dashboard = s.get(dashboard_url)
    if dashboard.status_code != 200:
        return (2, f"CRITICAL: Dashboard {dashboard.status_code}")

    # 訂單提交檢查
    order = s.post(order_api, json=order_data)
    return (0, f"OK: Transaction completed in {order.elapsed.total_seconds():.2f}s")

3.2 性能數據采集

Nagios支持將性能數據附加到輸出:

OK: Page loaded | time=0.87s; size=245KB; uptime=99.98%

在Python中可通過:

perf_data = f"time={elapsed:.2f}s; size={len(content)/1024:.2f}KB"
print(f"OK: Status normal | {perf_data}")

四、與Nagios集成實踐

4.1 腳本部署步驟

  1. 將腳本保存到/usr/local/nagios/libexec/
  2. 設置可執行權限:
    
    chmod +x /usr/local/nagios/libexec/check_website.py
    chown nagios:nagios /usr/local/nagios/libexec/check_website.py
    
  3. 在commands.cfg中添加命令定義:
    
    define command {
       command_name    check_website
       command_line    $USER1$/check_website.py $ARG1$ $ARG2$
    }
    

4.2 服務配置示例

define service {
    use                  generic-service
    host_name            web-server
    service_description  Website Availability
    check_command        check_website!https://example.com!"Welcome"
    normal_check_interval 5
    retry_check_interval 1
}

五、異常處理最佳實踐

5.1 常見故障場景處理

故障類型 處理方案
連接超時 設置合理的timeout值
SSL證書過期 提前30天告警
內容篡改 校驗頁面哈?;蜿P鍵元素
流量突增 監控響應時間百分位數

5.2 調試技巧

  • 使用NRPE模式測試:
    
    /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_website
    
  • 啟用debug日志:
    
    import logging
    logging.basicConfig(level=logging.DEBUG)
    

六、擴展方案

6.1 與Prometheus集成

通過textfile exporter暴露指標:

from prometheus_client import write_to_textfile

METRICS_FILE = '/var/lib/node_exporter/website.prom'
write_to_textfile(METRICS_FILE, 
    Gauge('website_response_seconds', 'HTTP response time').set(elapsed))

6.2 自動化部署方案

使用Ansible批量部署監控腳本:

- name: Deploy website monitor
  template:
    src: check_website.j2
    dest: /usr/local/nagios/libexec/check_website.py
    mode: 0755
    owner: nagios
    group: nagios

結語

一個健壯的Nagios頁面監控腳本需要兼顧準確性、性能和可維護性。通過合理設計狀態判斷邏輯、完善的異常處理以及標準化的輸出格式,可以構建出適應復雜業務場景的監控解決方案。隨著云原生技術的發展,建議結合Prometheus等現代監控工具形成立體化監控體系。

本文示例代碼已托管至GitHub倉庫:https://github.com/example/nagios-web-monitoring “`

注:實際文章約1650字,包含: - 6個主要章節 - 4個完整代碼示例 - 2個配置示例 - 1個對比表格 - 標準Markdown格式(代碼塊、表格、標題等)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女