zabbix監控的快速部署

前言

在日常的運維工作中,監控是一個很重要的部分,它基本上對於運維來說時時時需要用到的工具。所以我們對於它的應用掌握應十分熟練。
普羅米修斯更適合容器的監控
cpu計量單位:豪核m
200m==0.2個cpu

zabbix介紹

Zabbix 分佈式開源監控解決方案。
能夠監控衆多網絡參數和服務器的健康度、完整性。
它使用靈活的告警機制,允許用戶爲幾乎任何事件配置基於郵件的告警。使用戶可以快速響應服務器問題。
Zabbix 基於存儲的數據提供出色的報表和數據可視化功能。
Zabbix 支持主動輪詢(polling)和被動捕獲(trapping)。Zabbix所有的報表、統計數據和配置參數都可以通過基於 Web 的前端頁面進行訪問。基於 Web 的前端頁面確保可以在任何地方訪問您監控的網絡狀態和服務器健康狀況。

zabbix組成部分

Server: Zabbix server 是 Zabbix軟件的核心組件,agent 向其報告可用性、系統完整性信息和統計信息。server也是存儲所有配置信息、統計信息和操作信息的核心存儲庫。
數據庫: 所有配置信息以及 Zabbix 採集到的數據都被存儲在數據庫中。
Web 界面: 爲了從任何地方和任何平臺輕鬆訪問 Zabbix ,提供了基於 web 的界面。該界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 運行在同一臺物理機器上。
Proxy: Zabbix proxy 可以代替 Zabbix server採集性能和可用性數據。Zabbix proxy在Zabbix的部署是可選部分;但是proxy的部署可以很好的分擔單個Zabbix server的負載。
Agent: Zabbix agents 部署在被監控目標上,用於主動監控本地資源和應用程序,並將收集的數據發送給 Zabbix server。

zabbix功能

數據採集: 可用性和性能檢查;支持 SNMP(包括主動輪詢和被動捕獲)、IPMI、JMX、VMware 監控;自定義檢查;自定義的時間間隔採集需要的數據; 通過 Server/Proxy 和 Agents 來執行數據採集。
靈活的閾值定義: 後端數據庫定義非常靈活的告警閾值,即觸發器
高度可配置化的告警: 可以根據遞增計劃、接收者、媒介類型自定義發送告警通知;使用宏變量可以使告警通知變得更加高效有用;自動操作包含遠程執行命令。
實時圖形: 使用內置圖形功能可以將監控項實時繪製成圖形。
Web 監控功能: zabbix可以追蹤模擬鼠標在 Web 網站上的點擊操作,來檢查 Web 網站的功能和響應時間。
豐富的可視化選項: 可以組合多個監控項到單個視圖中,創建自定義圖表; 網絡拓撲圖; 以儀表盤樣式展示自定義聚合圖形和幻燈片演示;報表;監控資源的更高層次展示視圖(業務視圖)。
歷史數據存儲: 存儲在數據庫中的數據; 歷史配置; 內置數據管理機制(housekeeping)。
配置簡單: 將被監控設備添加爲主機; 主機一旦添加到數據庫中,就會採集數據用於監控; 將模板用於監控設備。
使用模板: 模板中分組檢查;模板可以關聯模板,繼承已關聯模板的屬性。
網絡發現: 自動發現網絡設備;Zabbix Agent 發現設備後自動註冊;自動發現文件系統、網絡接口和 SNMP OIDs 值。
**快捷的 Web 界面:**基於 PHP 的 Web 前端;可以從任何地方訪問;您可以定製自己的操作方式;您可以通過審計日誌來查看你的操作。
Zabbix API: Zabbix API 爲 Zabbix 提供可編程接口,用於批量操作、第三方軟件集成和其他用途。
權限管理系統: 安全的用戶身份驗證;指定的用戶只能查看指定的權限範圍內的視圖。
功能強大且易於擴展的 Zabbix Agent: 部署於被監控對象上;支持 Linux 和 Windows ;
二進制守護進程: 爲了更好的性能和更少的內存佔用,採用 C 語言編寫; 便於移植。
適應更復雜的環境: 使用 Zabbix Proxy 代理,可以輕鬆實現分佈式遠程監控。

zabbix配置

環境:
1.rhel7.6:192.168.1.11
2.一個搭建好了的lnmp平臺
3.下載相應的包
在這裏插入圖片描述MySQL已經安裝過了,所以不用再安裝

登錄數據庫,創建zabbix庫,用戶,和授權:

[root@server1 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.30 Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
創建庫:
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.01 sec)
創建用戶:
mysql> create user zabbix@localhost identified by 'zabbix';  ##密碼自己設置的密碼
Query OK, 0 rows affected (0.01 sec)
授權:
mysql> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.01 sec)

導入初始架構和數據:

[root@server1 ~]# zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: 

在這裏插入圖片描述

給zabbix server配置數據庫

[root@server1 zabbix]# vim /etc/zabbix/zabbix_server.conf 
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

給zabbix前端配置PHP

[root@server1 zabbix]# vim /etc/httpd/conf.d/zabbix.conf 
......
php_value date.timezone Asia/Shanghai
......

啓動Zabbix server和agent進程

關閉火牆和selinux

systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd

查看端口:

[root@server1 zabbix]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      10631/mysqld        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      8041/X              
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      8268/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7819/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      7820/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      8215/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      11021/zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      12594/zabbix_server 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::80                   :::*                    LISTEN      11019/httpd         
tcp6       0      0 :::6000                 :::*                    LISTEN      8041/X              
tcp6       0      0 :::22                   :::*                    LISTEN      7819/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      7820/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      8215/master         

訪問zabbix

在這裏插入圖片描述這裏填服務器名稱

在這裏插入圖片描述登錄,同戶名爲Admin,密碼爲zabbix
在這裏插入圖片描述界面如下:
在這裏插入圖片描述本機不僅時server,還是agent,所以作爲agent可以看到
在這裏插入圖片描述

zabbix監控功能的實現

手動添加主機到監控羣

環境:
首先,先起兩個agent:
agent1:192.168.1.12
agent2:192.168.1.13

1.安裝zabbix-agent

[root@agent1 /]# yum install -y zabbix-agent-4.4.1-1.el7.x86_64.rpm
[root@agent2 /]# yum install -y zabbix-agent-4.4.1-1.el7.x86_64.rpm

2.創建主機
在這裏插入圖片描述可以看到,已經添加成功!但是還沒有啓用成功。
在這裏插入圖片描述3.添加監控模板
在這裏插入圖片描述4.配置zabbix agent

[root@agent1 /]# vim /etc/zabbix/zabbix_agentd.conf 
Server=192.168.1.11  ##被動模式
ServerActive=192.168.1.11   ##主動模式
Hostname=agent1  ##主機名

5.開啓agent

[root@agent1 /]# systemctl start zabbix-agent.service 

在這裏插入圖片描述

zabbix配置自動發現

先刪除前面的主機
配置自動發現動作:

在這裏插入圖片描述配置動作:
在這裏插入圖片描述配置自動發現:
在這裏插入圖片描述配置自動發現規則:
在這裏插入圖片描述重啓zabbix server:

[root@server1 zabbix]# systemctl restart zabbix-server

刷新後,頁面自動添加!
在這裏插入圖片描述

zabbix配置自動註冊

自動發現server端主動掃描網段中的所有符合條件的主機
自動註冊是客戶端自己與server端通信加入集羣
實驗:
再添加一個agent2:192.168.1.13

1.禁用自動發現:
在這裏插入圖片描述
在這裏插入圖片描述2.給agent2安裝zabbix agent

3.配置並啓動zabbix agent

Server=192.168.1.11  ##被動模式
ServerActive=192.168.1.11   ##主動模式
Hostname=agent1  ##主機名

4.創建自動註冊的動作
在這裏插入圖片描述5.配置自動註冊的動作和操作
在這裏插入圖片描述
在這裏插入圖片描述6.重啓zabbix

[root@server1 zabbix]# systemctl restart zabbix-server
(這裏可能得等一些時間才能可用)

在這裏插入圖片描述

zabbix API

Zabbix API允許你以編程方式檢索和修改Zabbix的配置,並提供對歷史數據的訪問。它廣泛用於:創建新的應用程序以使用Zabbix; 將Zabbix與第三方軟件集成;自動執行常規任務。
Zabbix API是基於Web的API,作爲Web前端的一部分。
該API包含一組獨立的方法;客戶端和API之間的請求和響應使用JSON格式進行編碼。
大多數API至少包含四種方法: get, create, update 和 delete ,分別是檢索,創建,更新和刪除數據。
當完成了前端的安裝配置後,你就可以使用遠程HTTP請求來調用API。

驗證API請求

在訪問Zabbix中的任何數據之前,你需要登錄並獲取身份驗證令牌。這可以使用該 user.login 方法完成。
在zabbixserver端:

[root@server1 /]# cat zabbix-api 
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

運行:

[root@server1 /]# ./zabbix-api
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "e56583644f8fa50d2d44026d5ddc1ba5"
}

API檢索主機

我們現在有一個有效的用戶身份驗證令牌,可以用來訪問Zabbix中的數據。

curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "e56583644f8fa50d2d44026d5ddc1ba5"
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

運行結果:

[root@server1 /]# ./zabbix-api 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": [
        {
            "host": "Zabbix server",
            "hostid": "10084",
            "interfaces": [
                {
                    "interfaceid": "1",
                    "ip": "127.0.0.1"
                }
            ]
        },
        {
            "host": "agent1",
            "hostid": "10306",
            "interfaces": [
                {
                    "interfaceid": "3",
                    "ip": "192.168.1.12"
                }
            ]
        },
        {
            "host": "agent2",
            "hostid": "10307",
            "interfaces": [
                {
                    "interfaceid": "4",
                    "ip": "192.168.1.13"
                }
            ]
        }
    ]
}

API刪除主機

curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10307"
    ],
    "id": 2,
    "auth": "e56583644f8fa50d2d44026d5ddc1ba5"
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

執行前:
在這裏插入圖片描述執行後:

[root@server1 /]# ./zabbix-api 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10307"
        ]
    }
}

在這裏插入圖片描述

API創建主機到監控項

[root@server1 /]# cat zabbix-api 
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "agent2",   ##被創建的主機名
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "192.168.1.13",   ##主機ip
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"    ##主機羣組
            }
        ],
        "templates": [
            {
                "templateid": "10001"   ##模板id
            }
        ]
    },
    "id": 2,
    "auth": "e56583644f8fa50d2d44026d5ddc1ba5"   ## 身份驗證牌
}' http://192.168.1.11/zabbix/api_jsonrpc.php | python -m json.tool

執行後:

[root@server1 /]# ./zabbix-api 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10315"
        ]
    }
}

如圖,主機已經被創建到監控項:
在這裏插入圖片描述在這裏插入圖片描述

zabbix配置監控項

1.獲得狀態信息

實驗環境:
在agent1中添加監控模板
在這裏插入圖片描述在agent2中配置nginx:

[root@agent2 /]# yum install -y gcc zlib-devel pcre-devel  #安裝必要的二進制包
[root@agent2 /]# tar zxf nginx-1.18.0.tar.gz #解壓nginx包

關閉debug:

[root@agent2 /]# vim nginx-1.18.0/auto/cc/gcc
# debug
#CFLAGS="$CFLAGS -g"

預編譯,編譯安裝:

[root@agent2 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
[root@agent2 nginx-1.18.0]# make && make install 

修改配置:

vim /usr/local/nginx/conf/nginx.conf

location /status {
    stub_status	  on;   ##查看服務狀態的參數
    access_log    off;   ##關閉日誌
    allow         127.0.0.1;	##只允許監控本機
    deny	  all;
}

檢查語法:/usr/local/nginx/sbin/nginx -t

[root@agent2 conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

運行:/usr/local/nginx/sbin/nginx

[root@agent2 conf]# curl http://127.0.0.1/status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 

2.獲取活躍連接數

1.在agent2中的用戶的自定義配置目錄對其進行配置:

[root@agent2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active |awk '{print $3}'

2.重啓zabbix服務,獲取活躍連接數:

[root@agent2 ~]# systemctl restart zabbix-agent.service 
[root@server1 zabbix]# zabbix_get -s 192.168.1.113 -p 10050 -k "nginx.active"
1

3.在圖形界面配置agent2的監控項

在這裏插入圖片描述更改字體:

在下面的目錄裏面加入你想要顯示的字體:
[root@server1 mnt]# cd  /usr/share/zabbix/assets/fonts/
更改配置文件:
[root@server1 fonts]# vim /usr/share/zabbix/include/defines.inc.php 
define('ZBX_FONT_NAME', 'simkai');
define('ZBX_GRAPH_FONT_NAME',           'simkai'); // font file name

預覽:

在這裏插入圖片描述

3.獲取接收請求數

1.在agent2中的用戶自定義配置的目錄中配置:

[root@agent2 zabbix_agentd.d]# cat /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
UserParameter=nginx.accept,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'


[root@agent2 zabbix_agentd.d]# curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
75

2.在server中測試:

[root@server1 fonts]# zabbix_get -s 192.168.1.113 -p 10050 -k "nginx.accept"
102

3.去網頁配置監控項

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述我們來增加點訪問使圖形更加的直觀:

[root@server1 fonts]# ab -c 1 -n 1000 http://192.168.1.113/index.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.1.113 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/1.18.0
Server Hostname:        192.168.1.113
Server Port:            80

Document Path:          /index.html
Document Length:        612 bytes

Concurrency Level:      1
Time taken for tests:   3.332 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      845000 bytes
HTML transferred:       612000 bytes
Requests per second:    300.10 [#/sec] (mean)
Time per request:       3.332 [ms] (mean)
Time per request:       3.332 [ms] (mean, across all concurrent requests)
Transfer rate:          247.64 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.2      1      16
Processing:     0    2   1.6      2      19
Waiting:        0    1   1.4      1      19
Total:          1    3   2.1      3      20

Percentage of the requests served within a certain time (ms)
  50%      3
  66%      3
  75%      3
  80%      3
  90%      4
  95%      6
  98%     12
  99%     17
 100%     20 (longest request)

在這裏插入圖片描述

後記

到此爲止,我們就實現了zabbix的監控功能(手動監控,自動發現,自動註冊,API檢索,API刪除,API創建,以及自定義配置監控項等)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章