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

用網址連線看是否成功

<網址>/status
<網址>/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 看是否有正確回報數值

參考相關網頁: