監控存在的緣由
●站點出了問題,沒有人知道,等用戶發現了,才提醒供應商;對公司影響很大php
●常見開源監控軟件html
○cacti、nagios、zabbix、smokeping、open-falcon等等 //主流 nagios、zabbix ○ cacti、smokeping偏向於基礎監控,成圖很是漂亮 //比較適合監控網絡設備
●cacti、nagios、zabbix服務端監控中心,須要php環境支持,其中zabbix和cacti都須要mysql做爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖python
●由於zabbix配置簡單,優點明顯,早起使用nagios的企業,慢慢的轉向使用zabbixmysql
●nagios,須要更改配置文件,並不支持web界面一鍵執行,nagios和zabbix相比,nagios 更注重的是某一個監控的狀態,不關注歷史;zabbix,則是把每一次監控的數值反饋出來,方便後期數據圖去分析監控整個狀態;nagios不支持mysql,須要安裝插件之後才支持web界面;zabbix 支持mysql,能夠成圖,能夠記錄歷史數據linux
●zabbix 在web界面下管理得很是完全,能夠增長監控節點,報警預知等等ios
●open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,監控的思想和結構值得研究
●後續以介紹zabbix爲主nginx
●C/S架構,基於C++開發,監控中心支持web界面配置和管理
●單server節點能夠支持上萬臺客戶端
●最新版本3.4 ,官網文檔https://www.zabbix.com/manuals
●5個組件
○zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操做數據
○數據存儲 存放數據,好比mysql
○web界面 也叫web UI ,在web界面下操做配置是zabbix簡單易用的主要緣由
○zabbix-proxy 可選組件,它能夠代替zabbix-server的功能,減輕server的壓力
○zabbix-agent 客戶端軟件,負責採集各個監控服務或項目的數據,並上報
web
官網下載地址:https://www.zabbix.com/download, 最新版爲3.4sql
準備兩臺機器作演示:一臺服務端192.168.66.131 一臺客戶端192.168.66.132
默認yum安裝的zabbix版本是2.2的太舊,因此選擇安裝官方提供的repo源,服務端和客戶端都須要安裝一下,進入官網後選擇對應版本,官網有安裝教程能夠參考,這裏我選擇的是centos7,zabbix3.4,數據庫爲mysql的版本,安裝對應版本的yum源shell
rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
安裝完成後在/etc/yumrepo.d/目錄能夠看到zabbix.repo的yum源
服務端192.168.66.131
[root@server yum.repos.d]# cd /etc/yum.repos.d/ [root@server yum.repos.d]# ll 總用量 44 -rw-r--r-- 1 root root 1664 5月 13 18:18 CentOS-Base.repo -rw-r--r-- 1 root root 1664 5月 11 14:46 CentOS-Base.repo.bak -rw-r--r-- 1 root root 410 8月 28 2017 zabbix.repo
客戶端192.168.66.132
[root@client ~]# cd /etc/yum.repos.d/ [root@client yum.repos.d]# ll 總用量 40 -rw-r--r--. 1 root root 1664 8月 30 2017 CentOS-Base.repo -rw-r--r--. 1 root root 1309 8月 30 2017 CentOS-CR.repo -rw-r--r-- 1 root root 410 8月 28 2017 zabbix.repo
1、服務端安裝zabbix
一、安裝完yum源,在服務端192.168.66.131上使用yum安裝zabbix,須要安裝以下的包
[root@server ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
●注:該過程會連帶安裝PHP和httpd
○zabbix-agent:客戶端程序 ○zabbix-get:服務端上命令行獲取客戶端檢測項目的工具 ○zabbix-server-mysql:zabbix-server MySQL版 ○zabbix-web:web界面 ○zabbix-web-mysql:web界面MySQL相關
由於zabbix須要保存數據,因此要用到mysql
若是mysql以前沒有安裝的話,須要根據lamp那一章的mysql安裝方法安裝mysql,也能夠直接yum安裝mysql
由於咱們以前已經安裝過mysql,這裏就省略了
先看下mysql有沒有啓動起來
[root@server ~]# ps aux |grep mysqld root 1248 0.0 0.1 113304 1620 pts/0 S 16:01 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/ --pid-file=/data/mysql//localhost.localdomain.pid mysql 1461 0.0 45.6 1296372 456352 pts/0 Sl 16:01 0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/data/mysql//localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306 root 1876 0.0 0.0 112720 968 pts/0 R+ 16:33 0:00 grep --color=auto mysqld
二、接下來還須要編輯下mysql的配置文件,設定一個默認的字符集
vim /etc/my.cnf //須要增長一行配置
character_set_server = utf8
若是不設置中文的話,到時候web界面中文顯示就會有問題
[root@server ~]# cat /etc/my.cnf [mysqld] port = 3306 basedir=/usr/local/mysql datadir=/data/mysql/ socket=/tmp/mysql.sock user=mysql default-time-zone=system default-storage-engine=InnoDB log-error=/var/log/mysqld.log sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES character_set_server = utf8 #增長這一行,#設置默認字符集--目的是輔助web界面中文顯示
三、重啓mysql服務,讓剛纔的配置生效
[root@server mysql]# /etc/init.d/mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL. SUCCESS!
四、登錄mysql,建立zabbix數據庫,建立用戶並受權
mysql> create database zabbix character set utf8; Query OK, 1 row affected (0.00 sec) mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456'; Query OK, 0 rows affected (0.02 sec)
五、向建立的zabbix數據庫中導入原始數據:
默認數據放在/usr/share/doc/zabbix-server-mysql-3.4.11/create.sql.gz這個壓縮包,注意,版本不一樣可能目錄有所不一樣
[root@server mysql]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/ [root@server zabbix-server-mysql-3.4.11]# ll 總用量 2104 -rw-r--r-- 1 root root 98 6月 25 16:57 AUTHORS -rw-r--r-- 1 root root 848475 6月 25 16:57 ChangeLog -rw-r--r-- 1 root root 17990 6月 25 16:57 COPYING -rw-r--r-- 1 root root 1267039 6月 25 17:01 create.sql.gz -rw-r--r-- 1 root root 52 6月 25 16:57 NEWS -rw-r--r-- 1 root root 188 6月 25 16:57 README [root@server zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz #解壓這個包 [root@server zabbix-server-mysql-3.4.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README #導入數據 [root@server zabbix-server-mysql-3.4.11]# mysql -uroot -p123456 zabbix < /usr/share/doc/zabbix-server-mysql-3.4.11/create.sql Warning: Using a password on the command line interface can be insecure. #可能數據量比較大,須要等待
六、啓動zabbix-server服務:
[root@server zabbix-server-mysql-3.4.11]# systemctl start zabbix-server [root@server zabbix-server-mysql-3.4.11]# ps aux |grep zabbix zabbix 4103 0.0 0.3 259448 3372 ? S 17:00 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf root 4106 0.0 0.0 112720 968 pts/0 R+ 17:00 0:00 grep --color=auto zabbix
查看監聽的端口,默認服務端監聽的端口爲10051,客戶端爲10050
[root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep zabbix
發現服務啓動了,並無監聽端口,說明不正常,查看zabbix日誌,默認在/var/log/zabbix/zabbix_server.log
[root@server zabbix-server-mysql-3.4.11]# tail /var/log/zabbix/zabbix_server.log 4103:20180726:171112.474 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
發現錯誤提示,連不上mysql,是由於咱們並無在zabbix指定mysql的一些參數,修改zabbix的服務端配置文件<br/>
七、指定數據庫的位置(搜索關鍵字DBHost並修改)剛纔在mysql中建立的zabbix數據庫(搜索關鍵字DBName並修改),受權的用戶(搜索關鍵字DBUser並修改)和密碼(搜索關鍵字DBPassword並修改)
[root@server zabbix-server-mysql-3.4.11]# vi /etc/zabbix/zabbix_server.conf #根據在mysql受權的信息修改如下關鍵字的內容 DBHost=127.0.0.1 DBUser=zabbix DBPassword=123456
注意:由於mysql和zabbix裝在同一臺機器上,這裏能夠寫localhost或者127.0.0.1;若是是在生產環境上,有時候爲了提高zabbix的性能,可能會把MySQL裝在其餘機器上,這是的DBHost,就須要寫上mysql的ip<br/>
八、再查看進程和監聽的端口
[root@server zabbix-server-mysql-3.4.11]# ps aux |grep zabbix zabbix 4222 0.1 0.4 259552 4216 ? S 17:26 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf zabbix 4225 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes] zabbix 4226 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: alerter #1 started zabbix 4227 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: alerter #2 started zabbix 4228 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: alerter #3 started zabbix 4229 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes] zabbix 4230 0.0 0.2 259552 2744 ? S 17:26 0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000000 sec, 0 maintenances in 0.000000 sec, idle 19 sec] zabbix 4231 0.0 0.2 259552 2936 ? S 17:26 0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000410 sec, idle 5 sec] zabbix 4232 0.0 0.5 363908 5136 ? S 17:26 0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000385 sec, idle 60 sec] zabbix 4233 0.0 0.2 259552 2916 ? S 17:26 0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4234 0.0 0.2 259552 2916 ? S 17:26 0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4235 0.0 0.2 259552 2916 ? S 17:26 0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4236 0.0 0.2 259552 2916 ? S 17:26 0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4237 0.0 0.3 259552 3880 ? S 17:26 0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.000560 sec, idle 3 sec] zabbix 4238 0.0 0.3 259552 3868 ? S 17:26 0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000001 sec, idle 5 sec] zabbix 4239 0.0 0.2 259552 2684 ? S 17:26 0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000004 sec, idle 1 sec] zabbix 4240 0.0 0.2 259552 2920 ? S 17:26 0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000391 sec, idle 5 sec] zabbix 4241 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 4242 0.1 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000001 sec, idle 5 sec] zabbix 4243 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000001 sec, idle 5 sec] zabbix 4244 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000001 sec, idle 5 sec] zabbix 4245 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000001 sec, idle 5 sec] zabbix 4246 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 4247 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection] zabbix 4248 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection] zabbix 4249 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection] zabbix 4250 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection] zabbix 4251 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection] zabbix 4252 0.0 0.2 262160 2716 ? S 17:26 0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 4253 0.0 0.3 259552 3284 ? S 17:26 0:00 /usr/sbin/zabbix_server: alert manager #1 [sent 0, failed 0 alerts, idle 5.009257 sec during 5.009258 sec] zabbix 4254 0.0 0.3 259552 3036 ? S 17:26 0:00 /usr/sbin/zabbix_server: preprocessing manager #1 [queued 0, processed 0 values, idle 5.002193 sec during 5.002195 sec] zabbix 4255 0.0 0.2 259552 2592 ? S 17:26 0:00 /usr/sbin/zabbix_server: preprocessing worker #1 started zabbix 4256 0.0 0.2 259552 2592 ? S 17:26 0:00 /usr/sbin/zabbix_server: preprocessing worker #2 started zabbix 4257 0.0 0.2 259552 2592 ? S 17:26 0:00 /usr/sbin/zabbix_server: preprocessing worker #3 started root 4280 0.0 0.0 112720 972 pts/0 R+ 17:26 0:00 grep --color=auto zabbix [root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 4222/zabbix_server tcp6 0 0 :::10051 :::* LISTEN 4222/zabbix_server unix 2 [ ACC ] STREAM LISTENING 35160 4254/zabbix_server: /var/run/zabbix/zabbix_server_preprocessing.sock unix 2 [ ACC ] STREAM LISTENING 35176 4253/zabbix_server: /var/run/zabbix/zabbix_server_alerter.sock
說明服務已經正常<br/>
九、啓動httpd服務,安裝zabbix會順帶把httpd服務安裝上,由於一會要在web界面下去安裝和配置zabbix,若是以前有啓動過web服務,如:nginx須要關掉,不然80會被佔用
[root@server zabbix-server-mysql-3.4.11]# systemctl start httpd [root@server zabbix-server-mysql-3.4.11]# ps aux |grep httpd root 4125 1.6 1.5 398912 15568 ? Ss 17:03 0:00 /usr/sbin/httpd -DFOREGROUND apache 4127 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND apache 4128 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND apache 4129 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND apache 4130 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND apache 4131 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND root 4133 0.0 0.0 112720 972 pts/0 R+ 17:03 0:00 grep --color=auto httpd [root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep httpd tcp6 0 0 :::80 :::* LISTEN 4125/httpd
十、能夠把httpd和zabbix-server服務設置爲開機啓動
[root@server zabbix-server-mysql-3.4.11]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@server zabbix-server-mysql-3.4.11]# systemctl enable zabbix-server Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
十一、在web界面配置zabbix
打開瀏覽器,輸入服務端的ip加目錄打開zabbix的web界面,若是不能打開,檢查防火牆配置和selinux
個人地址爲192.168.66.131/zabbix,進入到zabbix安裝歡迎頁面
點擊next step
這裏有個fail提示,是由於沒有在php的配置文件裏定義時區,修改php配置文件php.ini,並重啓httpd服務
[root@server ~]# vi /etc/php.ini date.timezone = Asia/Shanghai #設置這一行 [root@server ~]# systemctl restart httpd
刷新剛纔的頁面,能夠看到已經顯示ok
點擊next step,填寫數據庫相關的信息,(剛纔在mysql中受權的)
點擊next step,填寫詳細信息
點擊next step,讓你確認信息
點擊next step,會提示配置完成
點擊finish到 登陸界面,默認的用戶名 admin 密碼 zabbix,登錄完成後到zabbix的控制檯頁面
更改admin的登錄密碼,並把語言設置成中文
點擊Administration-user-選擇須要更改的用戶admin
點擊admin-change password-輸入修改的密碼-Language選擇chinese
點擊upadte-並刷新頁面讓其顯示中文
這時候能夠退出用修改的密碼從新登錄下,至此服務端安裝完成<br/>
2、客戶端安裝
安裝端只須要安裝zabbix-agent,用來採集和上報數據給服務端,由於以前已經安裝過zabbix的yum源
一、直接yum 安裝zabbix-agent
[root@client ~]# yum install -y zabbix-agent
二、安裝完成後修改zabbix-agent配置文件
[root@client ~]# vim /etc/zabbix/zabbix_agentd.conf //修改以下字段 Server=192.168.66.131 #指定服務端主機IP(設置客戶端的監控主機白名單) ServerActive=192.168.66.131 #該參數決定監控的主動/被動模式 #若是隻改參數Server,則只能採用被動模式(只能等待服務端來採集信息) #主動模式:客戶端主動向服務端發送信息 Hostname=testclient #該參數用於設定客戶端主機的名字,用於服務端添加監控服務 #若是服務端所監控的機器和其Hostname不一致,服務端將沒法識別該機器 #由於zabbix是經過IP進行監控的,該參數不會對監控形成太大影響 #加上該參數有利於更好的辨別服務端監控是哪臺主機的狀態
三、啓動zabbix-agent服務並查看進程和端口(默認10050)
[root@client ~]# systemctl start zabbix-agent [root@client ~]# ps aux |grep zabbix zabbix 1446 0.0 0.1 82780 1276 ? S 18:20 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf zabbix 1447 0.0 0.1 82780 1320 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 1448 0.0 0.1 82780 1844 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 1449 0.0 0.1 82780 1844 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 1450 0.0 0.1 82780 1844 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 1451 0.0 0.2 82908 2224 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 1453 0.0 0.0 112720 968 pts/0 R+ 18:20 0:00 grep --color=auto zabbix [root@client ~]# netstat -lnp |grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1446/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 1446/zabbix_agentd
至此,客戶端安裝完成
有時候咱們會忘記zabbix頁面的admin密碼,由於zabbix數據都是保存在數據庫中,因此能夠在數據庫中會修改
步驟:
○登錄mysql
○進入zabbix數據庫 use zabbix;
○修改users表中Admin用戶的密碼,格式以下,括號裏面是密碼
update users set passwd=md5('123456') where alias='Admin';
mysql> use zabbix; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> update users set passwd=md5('123456') where alias='Admin'; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
更改完成後,用更改的新密碼登錄server端的web頁面
•主動或者被動是相對客戶端來說的
• 被動模式,服務端會主動鏈接客戶端獲取監控項目數據,客戶端被動地接受鏈接,並把監控信息傳遞給服務端
• 主動模式,客戶端會主動把監控數據彙報給服務端,服務端只負責接收便可。
• 當客戶端數量很是多時,建議使用主動模式,這樣能夠下降服務端的壓力。
• 服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式
主動模式和被動模式所針對的對象是客戶端,意思是客戶端主動向服務端上報數據和由服務端到客戶端採集數據。數據的提交時間在監控中心設置。
配置建議
採用主動模式能夠減輕服務器的壓力。
當服務端有公網IP,客戶端只有內網IP可是能夠鏈接外網(使用iptables的nat表規則實現),這種場景適合使用主動模式
該配置在服務端的web界面監控中心進行。先添加主機羣組,再添加主機
點擊配置-主機羣組-建立主機羣組
填寫組名-並點擊添加
這樣就能夠在主機羣組裏面看到剛建立的主機羣組luo
點擊配置-主機-建立主機
填寫主機名稱-可見的名稱-ip地址
客戶端主機名稱(在客戶端zabbix配置文件:/etc/zabbix/zabbix_agentd.conf中的Hostname參數),該名稱要和客戶端配置文件中的名稱一致;指定主機羣組;指定客戶端IP,若是該IP有對應的域名,則須要添加到「DNS名稱」中,若是沒有能夠不填。有須要的話還能夠進行模板、IPMI、宏等配置,配置完成後點擊「添加」,跳轉到主機列表:
●參數解析:
○應用集:監控項目的組集合
○監控項:全部的監控項目
○觸發器:監控規則(不填規則顏色不一樣,會體如今首頁主機狀態中)
○圖形:根據監控歷史數據繪製的圖標
○自動發現規則:zabbix自動監控的文件系統的信息、網卡信息(該部分自定義比較繁瑣,因此使用本身動發現規則)
○Web場景:在此可設置對主機上的某個站點進行監控
這裏由於新添加的主機還沒設置,因此都是空的
zabbix自帶了不少監控模板,咱們能夠點擊某個模板而後克隆給別的模板,也能夠點擊詳細的監控項複製給某個模板
在「模板」中建立一個新模板,自定義監控規則,而後應用到監控主機中,方便個性化管理。後續有監控主機加進來,能夠直接應用模板
添加模板的思路:建立模板——指定其所屬模板組(也能夠連接到其餘模板)
點擊配置-模板-建立模板
填寫模板的名字,可見名稱,這裏咱們選擇Templates羣組
添加完成後,點擊剛纔建立的模板aaa-連接的模板
連接指示器點擊選擇-選中Template OS Linux(對應系統的版本)
點擊添加把剛纔選擇的加入到連接的模板中-點擊更新
更新完後,要模板aaa裏面能夠看到多了不少項目
點擊新建立的aaa模板-連接的模板-取消連接-更新,方便後續自定義規則
更新後能夠看到aaa後面連接的模板已經沒有了,可是應用集那些還保留着
能夠刪除模板中一些沒必要要監控項-點擊aaa模板的監控項-勾選不須要的監控項-點擊刪除
應用集裏面包含的是監控項目的集合,刪除後監控項有些應用集已經空了,也能夠刪除掉
點擊應用集-勾選監控項後面沒有數據的-點擊刪除
到此這個模板已經弄好了,並且這個模板沒有鏈接任何的模板
接下來的操做就是去把剛剛建的主機和這個模板連接起來,作進一步的細化,好比監控項,觸發器在作些挑戰
將自定義模板應用到監控主機testclient中:
點擊配置——主機——選擇要添加的主機——模板——選擇——添加—更新
設置完成後查看監控主機-圖形——預覽,發現圖形界面下有亂碼:
這種有規律的顯示框框其實不算亂碼,只是缺乏字庫文件引發的,解決辦法是上傳一個支持中文的字庫文件到服務端,更改zabbix的默認連接字庫,讓其連接到新的字庫文件,
#zabbix的默認字庫文件是在/usr/share/zabbix/fonts/下, #這個路徑是在zabbix的/usr/share/zabbix/include/defines.inc.php配置文件中定義的 [root@server ~]# ls /usr/share/zabbix/fonts/ graphfont.ttf
咱們用xsftp上傳一個windowns中的支持中文字庫文件到服務端,路徑在C:\Windows\Fonts下,把字庫文件複製到桌面而後上傳到服務端的zabbix字體文件目錄/usr/share/zabbix/fonts/,上傳過程省略
[root@server ~]# cd /usr/share/zabbix/fonts/ [root@server fonts]# ls graphfont.ttf simhei.ttf [root@server fonts]# mv graphfont.ttf graphfont.ttf.bak [root@server fonts]# ln -s STXINGKA.TTF graphfont.ttf [root@server fonts]# ll 總用量 9528 lrwxrwxrwx 1 root root 10 7月 26 20:30 graphfont.ttf -> simhei.ttf lrwxrwxrwx 1 root root 33 7月 26 15:52 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font -rw-r--r-- 1 root root 9753388 7月 26 20:30 simhei.ttf
這樣新的字庫文件已經連接到默認的字庫文件上了
刷新頁面,看是否正常顯示
能夠看到已經正常顯示中文,有綠色的線,說明已經有數據產生
更改網卡的自動發現規則監控時間間隔:
點擊更新
爲了讓它儘快生效,重啓服務端和客戶端的zabbix服務
●z服務端
[root@server ~]# systemctl restart zabbix-server
●客戶端
[root@server ~]# systemctl restart zabbix-server
查看監控效果
在實際應用中時間間隔不要設置過短,一面增長服務器壓力。
更改圖形界面顏色
在模板——自發現規則——圖形原型中更改<br/>
zabbix能夠利用discovery模塊,實現自動發現主機、自動將主機添加到主機組、自動加載模版、自動建立項目、自動建立監控圖像。具體操做以下:
(1)依次選擇:配置-->自動發現-->建立發現規則。建立客戶端發現規則。以下圖所示:
參數解釋:
Name(名稱):規則名稱,自定義名稱 Discovery by proxy(由agent代理髮現):經過代理搜索 IP range(ip範圍):zabbix_server搜索區域的IP範圍 Update interval(更新間隔):更新的間隔 Checks(檢查):檢測方式,若是用ping方式去發現主機,則zabbix_server須要安裝fping。此處使用agent方式發現。使用zabbix agentd方式的時候,要使用key,這裏key爲:system.uname。也能夠在zabbix_agentd配置文件中自定義key。 Device uniqueness criteria(設備惟一性標準):以IP地址做爲被發現主機的標識
設置好檢查以後,點」添加「,檢查添加完成後,勾選」已啓用「,最後點底部的「添加」
自定義key(鍵值)
在全部的agentd端編輯zabbix_agentd.conf文件,定義key
定義key語法: UserParameter=<key>,<shell command> 好比: UserParameter=get.os.type,head /etc/redhat-release
(2)客戶端都須要安裝zabbix-agent,修改zabbix-agent配置文件,修改Server和ServerActive的字段 的IP爲服務端的IP
(3)建立發現Action
zabbix發現規則建立後,被發現的IP主機不會自動添加至zabbix監控列表,必須添加發現動做。設置以下:
依次選擇:配置-->動做-->事件源(自動發現)-->建立動做。以下圖:
設置好新的觸發條件主機ip後,點擊」添加「,而後點擊」操做「:
根據實際須要添加」操做「,上圖中添加了兩個操做。最後點擊」添加「便可,設置完成以下圖:
需求:監控某臺web的80端口鏈接數,並出圖
一、首先被監控主機上要安裝zabbix-agent,
yum install -y zabbix-agent
二、在被監控的主機上編寫腳本,名稱假設爲:estab.sh
好比,被監控的主機是:192.168.66.132(testclient)已開啓80端口,腳本內容以下:
[root@client ~]# mkdir /myscript [root@client ~]# chmod -R 777 /myscript [root@client ~]# cd /myscript/ [root@client myscript]# vim estab.sh #添加以下內容 #!/bin/bash # #獲取80端口的併發鏈接數 netstat -ant | grep ':80' | grep -ci established :wq保存退出 [root@client myscript]# chmod +x !$ chmod +x estab.sh [root@lnmp-server myscript]# ll 總用量 4 -rwxr-xr-x 1 root root 97 7月 26 21:51 estab.sh
編輯zabbix agent配置文件,添加如下內容:
UnsafeUserParameters=1 :1表示自定義腳本,0爲不使用自定義腳本 UserParameter=my.estab.count[*],/myscript/estab.sh :自定義監控項的key爲:my.estab.count,後面的[*]裏面寫腳本的參數,若是沒有參數則能夠省略,腳本:/myscript/estab.sh,用絕對路徑。
在agent配置文件中添加上面兩行內容:
[root@client myscript]# vim /etc/zabbix/zabbix_agentd.conf #在最後面添加下面兩行,使用上面自定義的腳本 ... UnsafeUserParameters=1 UserParameter=my.estab.count[*],/myscript/estab.sh ...
重啓zabbix_agentd服務:
[root@client myscript]# systemctl restart zabbix-agent
到服務端用命令行方式驗證一下自定義的key和腳本是否可用:
[root@localhost ~]# zabbix_get -s 192.168.66.132 -p 10050 -k 'my.estab.count' 0
結果是0,由於沒有機器訪問80端口
參數解釋:
-s:被監控的ip -p:端口,agentd服務的默認端口是10050 -k:自定義的key
三、針對該項目以圖形展示
zabbix服務端添加該監控項目,由於是監控的主機爲testclient,因此點擊testclient的監控項:
點擊建立監控項
進入監控項設置:
添加名稱和鍵值,其餘保持默認便可。點擊添加,選擇自定義監控的項目
四、建立自定義監控項圖形:
點擊testclient主機-圖形-建立圖形
名稱:自定義
監控項:點擊」添加「,選擇監控項「監控80端口併發鏈接數」,點擊「選擇」
點擊添加後,預覽一下:
沒有訪問80端口,因此圖形沒數據
五、建立觸發器
點擊主機-觸發器-建立觸發器
名稱:自定義,選擇警告,點擊添加:
監控項選擇自定義 的監控項,配置告警的閥值和間隔,點擊插入,表達式會自動加上
最後點擊添加便可
一、使用163或QQ郵箱發告警郵件。這裏使用163郵箱。登錄163郵箱,開啓POP三、IMAP、SMTP服務,開啓並設置受權碼。
二、到zabbix監控中心(web界面)設置報警媒介
管理-報警媒介類型
默認有3個報警媒介。咱們這裏新建一個,點擊建立「媒介類型」:
名稱:自定義
類型:選擇」腳本「
腳本名稱:mail.py,自定義
參數:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}
點擊:添加」便可
三、在服務端定義腳本
腳本的路徑是在zabbix的服務端配置文件中定義的
[root@localhost ~]# vi /etc/zabbix/zabbix_server.conf #搜索關鍵字AlertScriptsPath
咱們在這個目錄建立mail.py的腳本
[root@localhost ~]# cd /usr/lib/zabbix/alertscripts [root@localhost alertscripts]# vi mail.py [root@localhost alertscripts]# chmod 755 !$ chmod 755 mail.py
mail.py腳本內容以下, 根據你本身郵箱修改
#!/usr/bin/env python #-*- coding: UTF-8 -*- import os,sys reload(sys) sys.setdefaultencoding('utf8') import getopt import smtplib from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from subprocess import * def sendqqmail(username,password,mailfrom,mailto,subject,content): gserver = 'smtp.qq.com' gport = 25 try: msg = MIMEText(unicode(content).encode('utf-8')) msg['from'] = mailfrom msg['to'] = mailto msg['Reply-To'] = mailfrom msg['Subject'] = subject smtp = smtplib.SMTP(gserver, gport) smtp.set_debuglevel(0) smtp.ehlo() smtp.login(username,password) smtp.sendmail(mailfrom, mailto, msg.as_string()) smtp.close() except Exception,err: print "Send mail failed. Error: %s" % err def main(): to=sys.argv[1] subject=sys.argv[2] content=sys.argv[3] ##定義QQ郵箱的帳號和密碼,你須要修改爲你本身的帳號和密碼(請不要把真實的用戶名和密碼放到網上公開,不然你會死的很慘) sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content) if __name__ == "__main__": main()
測試腳本是否可用
[root@server alertscripts]# python mail.py xxxxxx@163.com "13434343" "dfdfdf"
發送成功說明腳本沒問題
四、配置用戶
在監控中心(web端)建立一個接收告警郵件的「用戶」,在建立用戶前須要先建立一個「用戶組」,在此使用一個已經存在的用戶組。「管理」——「用戶」——「建立用戶」:
點擊報警媒介,添加剛纔新建的報警媒介
點擊權限,確保羣組對全部有讀寫權限
注意,若是權限不是讀寫,顯示無,須要修改用戶所在羣組的權限,管理——用戶羣組——權限
配置完後添加即建立了新的用戶,用來發送郵件
五、配置動做
設置觸發器被觸發後所要執行的的操做!
點出配置——動做——建立動做
進去後
消息內容能夠更換爲這個
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID} ID:{EVENT.ID}
點擊觸發器下面的添加後,條件裏面就會顯示添加的條件
點擊操做
點擊恢復操做(這一步是配置告警恢復後要作的動做)
點擊確認操做(這一步是配置確認事件後作的動做)
檢查都配置完成後,點擊下面的添加,即完成了建立動做,在配置——動做——能夠看到剛纔添加的動做——狀態爲已啓用
配置完上面的用戶和動做後,來測試來告警是否會自動發送郵件
將監控項目改爲故障項目。
「配置」——「主機」——「觸發器」——「建立觸發器」
注: 該觸發器只用於測試,完成測試後要刪除!
點出添加能夠增長表達式,咱們故意把系統1分鐘負載改爲小於,讓其報警
等待一會後,在監控中心,監測 中——儀表盤——問題面板裏面能夠看到問題已經發生
同時,郵箱也收到了郵件,說明告警自動發送郵件配置成功
擴展:
Prometheus入門 https://www.hi-linux.com/posts/25047.html