Zabbix概念、安裝以及快速入門


Zabbix是一個企業級的、開源的、分布式監控解決方案。[1]

  • Zabbix可以監控網絡和服務的監控狀況.
  • Zabbix利用靈活的告警機制,允許用戶對事件發送基於Email的告警. 這樣可以保證快速的對問題作出相應.
  • Zabbix是零成本的. 因為Zabbix編寫和發布基於GPL V2協議. 意味着源代碼是免費發布的.

Zabbix特性如下[2]:

  1. 數據收集
  2. 靈活的閥值定義
  3. 高級告警配置
  4. 實時繪圖
  5. 擴展的圖形化顯示
  6. 歷史數據存儲
  7. 配置簡單
  8. 模板使用
  9. 網絡自動發現
  10. 快速的web接口
  11. Zabbix API
  12. 權限系統
  13. 全特性、agent易擴展
  14. 二進制守護進程
  15. 具備應對復雜環境情況

可以總結為如下三個特點

1)靈活的通知機制:allows users to configure e-mail based alerts for virtually any event;

2)數據可視化;

3)所有報告、統計、參數配置都可通過web端完成;

所以zabbix很適合服務器集群管理員進行功能規划(capacity planning)

1 概覽

  • 架構
    • Server
    • database storage
    • web interface
    • proxy
    • agent
  • 數據流(data flow)

arch

其中,Zabbix Server為中心組件,用來獲取agent存活狀況及監控數據和統計. 所有的配置、統計、操作數據均通過Server進行存取.

Zabbix agent部署在被監控機器上用來監控本地資源和應用(如硬盤、內存、處理器統計等)

2 術語概念

2.1 server / client / proxy

Zabbix server的功能可以分為三部分:server、web前端和database。

Server執行polling和trapping來采集數據,評估是否觸發觸發器,發送報警給用戶

agent向其報告有效數據和統計。

database存儲所有configuration, statistical and operational data。

server和web前端都與database進行交互。

Zabbix server以守護(daemon)進程方式運行

2.2 命令行工具

Sender / Get

3 zabbix進程構成 [3]

默認情況下zabbix包含5個程序:
zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一個zabbix_java_gateway是可選

zabbix_agentd
客戶端守護進程,此進程收集客戶端數據,例如cpu負載、內存、硬盤使用情況等

zabbix_get
zabbix工具,單獨使用的命令,通常在server或者proxy端執行獲取遠程客戶端信息的命令。
通常用戶排錯。例如在server端獲取不到客戶端的內存數據,我們可以使用zabbix_get獲取客戶端的內容的方式來做故障排查。

zabbix_sender
zabbix工具,用於發送數據給server或者proxy,通常用於耗時比較長的檢查。
很多檢查非常耗時間,導致zabbix超時。於是我們在腳本執行完畢之后,使用sender主動提交數據。

zabbix_server
zabbix服務端守護進程。
zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的數據最終都是提交到server
備注:當然不是數據都是主動提交給zabbix_server,也有的是server主動去取數據。

zabbix_proxy
zabbix代理守護進程。功能類似server,
唯一不同的是它只是一個中轉站,它需要把收集到的數據提交/被提交到server里。

zabbix_java_gateway
zabbix2.0之后引入的一個功能。顧名思義:Java網關,類似agentd,但是只用於Java方面。
需要特別注意的是,它只能主動去獲取數據,而不能被動獲取數據。它的數據最終會給到server或者proxy。

4 安裝zabbix

首先安裝MariaDB數據庫。Linux發行版,使用repository configuration tool,選擇自己合適的安裝步驟。

  • 卸載mysql

如果已經安裝了mysql,需要先卸載mysql,否則安裝過程中會出現沖突。

  • 本機選擇10.1stable for centos7 x86_64
//添加源
shell> cat /etc/yum.repos.d/mariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

shell> yum install MariaDB-server MariaDB-client mariadb

//服務管理,使用如下命令start/stop MariaDB:
shell> sudo systemctl start mariadb.service #直接用mariadb也行
shell> sudo systemctl stop mariadb.service
shell> sudo systemctl enable mariadb.service #開機自啟動

從10.1起,Galera Cluster(同步MariaDB數據庫的多master集群的工具)默認包含在MariaDB中。

see also Installing MariaDB with yum.

4.1 zabbix sever [4]

安裝

shell> rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.el7.noarch.rpm
//for Zabbix server and web frontend with mysql database
shell> yum install zabbix-server-mysql zabbix-web-mysql
//可以將server與agent安裝在同一台機器
shell> yum install zabbix-agent

創建zabbix數據庫以及遠程用戶

[user@host ~]# mysql -uroot -p

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'your_password';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'172.16.%.%' identified by 'your_password';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> select host,user from mysql.user;
+-----------------------+--------+
| host                  | user   |
+-----------------------+--------+
| 127.0.0.1             | root   |
| 172.16.%.%            | zabbix |
| ::1                   | root   |
| localhost             |        |
| localhost             | fsj    |
| localhost             | root   |
| localhost             | zabbix |
| localhost.localdomain |        |
+-----------------------+--------+
  • 導入初始化schema和data
shell> cd /usr/share/doc/zabbix-server-mysql-2.2.15/create
shell> mysql -uroot -p  zabbix < schema.sql
shell> mysql -uroot -p  zabbix < images.sql
shell> mysql -uroot -p  zabbix < data.sql
  • Edit database configuration in zabbix_server.conf
shell> vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
  • 開啟zabbix-server服務:systemctl start zabbix-server

  • Editing PHP configuration for Zabbix frontend

    • 修改timezone:php_value date.timezone Asia/Shanghai
    • 重啟httpd服務:service httpd restart

或者通過sed調整php配置[6]

shell> sed -i 's/^.*date.timezone =.*$/date.timezone = Asia\/Shanghai/g' /etc/php.ini
shell> sed -i 's/^.*post_max_size =.*$/post_max_size = 16M/g' /etc/php.ini
shell> sed -i 's/^.*max_execution_time =.*$/max_execution_time = 300/g' /etc/php.ini
shell> sed -i 's/^.*max_input_time =.*$/max_input_time = 300/g' /etc/php.ini
shell> sed -i 's/^.* memory_limit =.*$/memory_limit = 128M/g'  /etc/php.ini
shell> service httpd restart
  • 配置服務開機啟動
shell> chkconfig zabbix-server on
shell> chkconfig zabbix-agent on
shell> chkconfig httpd on

訪問 http://your-zabbix-server-ip/zabbix

默認username/password 是Admin/zabbix.

  • 如果出現錯誤:zabbix server is not running

解決辦法:設置SELinux 成為permissive模式 shell> setenforce 0

  • 如果出現防火牆相關問題,打開agent的端口
查看zabbix監聽端口:
shell> netstat -nlop | grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      23904/zabbix_server  off (0.00/0/0)
tcp6       0      0 :::10051                :::*                    LISTEN      23904/zabbix_server  off (0.00/0/0)
打開防火牆該端口:
shell> iptables -I INPUT -p tcp --dport 10051 -m state --state NEW,ESTABLISHED -j ACCEPT
shell> iptables -I OUTPUT -p tcp --sport 10051 -m state --state ESTABLISHED -j ACCEPT

也可以批量修改其他端口:

shell> iptables-save > firewalls.txt
shell> vim firewalls.txt 
shell> iptables-restore <firewalls.txt 

或者直接關閉防火牆:# systemctl stop firewalld

see also Linux防火牆配置(iptables, firewalld)

4.2 zabbix agent

shell> sudo rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.el7.noarch.rpm
shell> sudo yum install zabbix-agent zabbix-sender -y
shell> grep -Ev '(^$|^#)' /etc/zabbix/zabbix_agentd.conf  #修改server地址
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.16.44.5
Hostname=Zabbix server fsj
Include=/etc/zabbix/zabbix_agentd.d/

shell> sudo service zabbix-agent start
shell> sudo systemctl enable zabbix-agent

5 用戶管理

user list

user groups list

權限管理並不是直接設置一個user對應於一個host的什么權限,而是設置user groups對應與host groups的權限。

切換到permissions選項卡

6 開始監控

6.1 添加Zabbix agent(局域網其他機器)以及其item

新建host
new host

其中,最好有一個Host name項和/etc/zabbix/zabbix_agentd.conf中Hostname保持一致。

如果不存在host與配置文件中的Hostname相同,那么運行之后log文件會報錯host xxx(Hostname值) not found,但是前端host條目依然可以獲取到數據。

修改conf文件后要重啟服務才能生效

新建item
new item

其中key表示要監測的的信息。

  1. 詳細:https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/zabbix_agent
  2. Items supported by platform

在configuration->hosts頁面可看到剛剛添加的host,如果available項為綠色Z表示一切正常。

host list

有可能出現如下錯誤

Received empty response from Zabbix Agent at [x.x.x.x]. Assuming that agent dropped connection because of access permission

到Monitoring -> Latest data頁面查看監控到的實時數據

latest data

點擊graph可以查看cpu load的折線圖。

6.2 觸發器

一個觸發器包括一個定義了數據閾值的表達式

格式為{<server>:<key>.<function>(<parameter>)}<operator><constant>
其中:

  1. key: 該server定義的item
  2. function: https://www.zabbix.com/documentation/2.2/manual/appendix/triggers/functions
  3. parameter: 數字n表示n秒,#n表示最近n個值,n[m|h|d]表示n[分鍾|小時|天]

輸入數據如果高於該閾值,觸發器就會報警。

6.2.1 創建觸發器

new trigger

激活觸發器 shell> cat /dev/urandom | md5sum

latest data graph of cpu load

monitoring-triggers

更多觸發器示例:

  1. {www.zabbix.com:system.cpu.load[all,avg1].last()}>5
  2. {www.zabbix.com:system.cpu.load[all,avg1].last()}>5|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
  3. {www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}=1

6.2.2 通知

Administration -> Media type 設置 email(需要有email軟件支持)

新建action

查看發送情況

administration audit

這里沒有設email相關,所以發送失敗

7 使用模版

點擊host,切換到templates選項卡可以關聯想要的模版。

我們也可以通過 Configuration → Templates 可以創建空模版。然后把現有的item、trigger等拷貝到該模版,方便以后批量應用。

References

  1. https://www.zabbix.com/documentation/2.2/manual
  2. http://zabbix-manual-in-chinese.readthedocs.io/en/latest/index.html
  3. http://www.ttlsa.com/zabbix/zabbix-section-3-of-chapter-1/
  4. https://www.zabbix.com/documentation/2.2/manual/quickstart
  5. 跟着ttlsa一起學zabbix監控
  6. 監控 Zabbix
  7. http://zabbix.org.cn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM