LibreNMS 各服務的 Agent 服務

BUBU 我用的系統是 CentOS 7 版本,這個服務安裝還滿簡單的,只要照著官方的手冊下去安裝可以很順利的安裝完成

設定流程


Check_MK 安裝
  • 安裝 librenms-agent 服務
cd /opt/
git clone https://github.com/librenms/librenms-agent.git
cd librenms-agent
  • check_mk_agent 相關服務複製到 /usr/bin
cp check_mk_agent /usr/bin/check_mk_agent

設定可以執行服務
chmod +x /usr/bin/check_mk_agent
  • 設定系統啟動服務
cp [email protected] check_mk.socket /etc/systemd/system
  • 建立 check_mk_agent 目錄
mkdir -p /usr/lib/check_mk_agent/plugins /usr/lib/check_mk_agent/local
  • 將 agent-local 目錄下的檔案都複製到 /usr/lib/check_mk_agent/local
cp -P agent-local/* /usr/lib/check_mk_agent/local/

讓此目錄下的檔案都能執行
chmod +x /usr/lib/check_mk_agent/local/$script

啟用 check_mk 服務
systemctl enable check_mk.socket && systemctl start check_mk.socket
Nginx 設定
  • 先在 .conf 設定檔下新增加下面的指令
location /nginx-status {
        stub_status on;
        access_log off;
        allow 123.123.123.123; # 允許看到的 IP
        allow 127.0.0.1;
        deny all;
    }

or

location /nginx-status {
        stub_status on;
        access_log off;
#        allow 123.123.123.123; # 允許看到的 IP
#        allow 127.0.0.1;
#        deny all;
    }
  • 如何檢測是否有設定成功,請輸入下的指令
curl http://localhost/nginx_status
  • 成功的話出現下面的畫面才對
Active connections: 816
server accepts handled requests
 39600484 39600484 24795538
Reading: 0 Writing: 4 Waiting: 794
  • nginx status 詳解

    • active connections – 活動連接數量
    • server accepts handled requests — 總共處理了11989個連接 ,成功創建11989次握手,總共處理了11991個請求
    • reading — 讀取客戶端的連接數
    • writing — 響應數據到客戶端的數量
    • waiting — 開啟 keep-alive 的情況下,這個值等於 active – (reading+writing), 意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留連接
  • 下載 SNMP 套件

wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/nginx -O /etc/snmp/nginx

讓此套件能夠執行
chmod +x /etc/snmp/nginx
  • 到 SNMP 下新增 Nginx 套件服務
vim /etc/snmp/snmpd.conf

extend nginx /etc/snmp/nginx

重啟 SNMP 服務
systemctl restart snmpd

MySQL 設定
  • 必須要先有兩個 php 套件 php-cli php-mysql ,因 php 每個版本指令不一定一樣,所以要查一下版本的指令
yum install php-cli php-mysql
  • 下載 SNMP 套件
wget https://github.com/librenms/librenms-agent/raw/master/snmp/mysql -O /etc/snmp/mysql

設定可執行
chmod +x /etc/snmp/mysql
  • 要在 /etc/snmp 目錄下新增 mysql.cnf
vim /etc/snmp/mysql.cnf

<?php
$mysql_user = 'root';
$mysql_pass = 'toor';
$mysql_host = 'localhost';
$mysql_port = 3306;
  • 到 SNMP 下新增 Mysql 套件服務
vim /etc/snmp/snmpd.conf

extend mysql /etc/snmp/mysql

重啟 SNMP 服務
systecmctl restart snmpd
PHP-FPM 設定
  • 下載 SNMP 套件
wget https://github.com/librenms/librenms-agent/raw/master/snmp/phpfpmsp -O /etc/snmp/phpfpmsp

設定可執行
chmod +x /etc/snmp/phpfpmsp
  • 到 SNMP 下新增 PHP-FPM 套件服務
vim /etc/snmp/snmpd.conf

extend phpfpmsp /etc/snmp/phpfpmsp

重啟 SNMP 服務
systecmctl restart snmpd
  • 啟用 PHP-FPM 即時監控功能 PHP-FPM 這個功能預設是沒有啟用的,需先手動設定 PHP-FPM 裡的設定檔
vim /etc/php-fpm.d/www.conf

pm.status_path 修改成自己想要命名的名稱
pm.status_path = /status or /php_fpm_status

ping.path 修改成自己想要命名的名稱
ping.path = /ping or /php_fpm_status

ping 回應內容
ping.response = pong or hello

:wq
存檔後重啟 php-fpm 服務
systemctl restart php-fpm
  • Nginx 設定檔
location ~ ^/(status|php_fpm_ping)$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        #如果是端口请用 fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

啟重 nginx
systemctl restart nginx or systemctl nginx relaod
  • 用網址連線看是否成功

http://ip/status
http://ip/php_fpm_ping

  • 如果設定成功畫面會如下 status

php-fpm-status.png

  • ping 成功畫面,會回傳剛剛在 php-fpm 設定檔裡面的值

php-fpm-ping.png

  • php-fpm status 詳解
訊息 說明
pool pool 名稱,通常是 www
process manager staticdynamicondemand
start time FPM 啟動的時間點。若重新載入(reload)也會改變這個時間
start since FPM 啟動後所經過的秒數。
accepted conn 已接收到的連線數量。
listen queue 目前正在等待處理的連線數量,若這個值不是 0,就代表 FPM 的行程數量可能不夠,要考慮增加行程數量。
max listen queue FPM 啟動後,等待處理連線數量的最大紀錄。
listen queue len 等待處理連線佇列的長度。
idle processes 閒置的 FPM 行程數量。
active processes 工作中的 FPM 行程數量。
total processes 所有的 FPM 行程數量。
max active processes FPM 啟動後,工作中 FPM 行程數量的最大紀錄。
max children reached FPM 啟動後,FPM 行程達到上限值的次數,若這個值不是 0,代表 PHP-FPM 的上限值設定太低,要考慮增加上限值。
slow requests 處理過慢的連線數,若這個值不是 0,代表某些 PHP 程式的處理速度太慢,最常見的因素就是 MySQL 資料庫查詢過慢。
  • full 詳解
訊息 說明
pid FPM 的行程 ID。
state 行程狀態,Idle 代表閒置,Running 代表工作中。
start time 行程啟動的時間點。
start since 行程啟動後所經過的秒數。
requests 處理過的連線數。
request duration 連線時間(µs)。
request method 連線方式(GETPOST 等)。
request URI 連線的網址。
content length POST 的資料長度。
user 認證的使用者名稱(PHP_AUTH_USER)。
script 主要執行的 PHP 指令稿。
last request cpu 上一個連線所耗費的 CPU 百分比(只有閒置的行程才會顯示)。
last request memory 上一個連線所耗費的最大記憶體(只有閒置的行程才會顯示)。

建議在設定完每個 Agent 服務的,最好先到 /etc/snmp/ 下手動運行一次服務的 Agent 看是否有正確回報數值




參考相關網頁