• 常見開源監控軟件有cacti、nagios、zabbix、smokeping、open-falcon等等php
• cacti、smokeping偏向於基礎監控,成圖很是漂亮mysql
• cacti、nagios、zabbix服務端監控中心,須要php環境支持,其中zabbix和cacti都須要mysql做爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖linux
• open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究ios
• C/S架構,基於C++開發,監控中心支持web界面配置和管理nginx
• 單server節點能夠支持上萬臺客戶端,雖然支持上萬臺,但監控的項目過多,採集數據的量太大,仍是會致使zabbix效率下降;因此,當服務器大到必定規模的時候,就須要對zabbix進行優化。針對該問題,能夠增長一些代理點,這些代理點充當server,替代server去採集數據,最終獲得分析結果再彙報給主服務端serverweb
• 最新版本3.4,官方文檔https://www.zabbix.com/manualssql
• 5個組件數據庫
一、zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操做數據vim
二、數據存儲 存放數據,好比mysql瀏覽器
三、web界面 也叫web UI,在web界面下操做配置是zabbix簡單易用的主要緣由
四、zabbix-proxy 可選組件,它能夠代替zabbix-server的功能,減輕server的壓力。有時候,服務器分佈在多個機房裏,每一個機房的服務器之間都是一個單獨的內網,這時候就能夠在某一個局域網裏搭建一個 zabbix-proxy ,用這臺 proxy 去監控局域網裏的機器
五、zabbix-agent 客戶端軟件,負責採集各個監控服務或項目的數據,並上報
zabbix監控流程圖
準備兩臺機器,一臺做爲服務端(監控中心),另一臺做爲它的客戶端。
zabbix能夠直接yum安裝,但須要安裝epel擴展源,在epel擴展源裏面安裝的zabbix的版本,最高是2.2版本,比較舊,因此使用官方提供的repo源,實驗中使用的zabbix3.2版本
首先訪問官方下載地址,選擇對應的版本,並提供對應的發行版,下圖所示,複製該連接
兩臺機器均須要下載
wget https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
實際上安裝rpm包至關於安裝了一個yum源倉庫
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
查看/etc/yum.repos.d/目錄下面會看到增長了一個zabbix.repo
[root@linux-5 ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel-testing.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel.repo zabbix.repo
服務端與客戶端安裝的內容不一樣,在服務端是須要安裝這些全部的包,而在客戶端僅僅須要安裝 zabbix-agent 包便可
服務端 yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql 客戶端 yum install -y zabbix-agent
zabbix-agent 客戶端軟件;
zabbix-get 服務端用的一個工具,這個工具能夠經過命令行的形式得到客戶端某些監控項目的數據;
zabbix-server-mysql 這個是服務端跟mysql打交道相關的組件;
zabbix-web webUI ,web界面;
zabbix-web-mysql web和mysql相關組件;
zabbix 是基於php環境的,也就是說用的是php 的代碼編寫的web界面,也就說這個zabbix 至關於一個站點;
安裝mysql,若是mysql以前沒有安裝的話,可根據lamp那一章的mysql安裝方法安裝mysql
vim /etc/my.cnf 在[mysqld]下增長字符集 character_set_server = utf8
若是不設置字符集,那麼zabbix的web界面,設置成中文的話,可能就會出現亂碼
修改完mysql的配置文件後,重啓mysql服務
/etc/init.d/mysqld restart
create database zabbix character set utf8; //建立庫同時指定字符集爲utf-8
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456';
這個用戶是須要讓web(php)代碼鏈接mysql的,監控中心zabbix mysql服務,啓動的前提就是要鏈接mysql;客戶端採集了數據,須要把這些數據傳遞給服務端,那麼服務端怎麼把這些數據寫入到MySQL去,這時就涉及到了mysql 的用戶,涉及到了mysql 的數據庫;用哪個用戶,去寫入那一個庫。
退出mysql的命令行後,導入原始的數據,若缺乏這些數據,zabbix就沒有辦法工做,就沒有辦法在web界面下展示給咱們
[root@linux-5 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/ [root@linux-5 zabbix-server-mysql-3.2.11]#
在/usr/share/doc/zabbix-server-mysql-3.2.11/目錄下有一個create.sql.gz壓縮包,將它解壓,解壓以後生成一個.sql的文件
[root@linux-5 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql.gz NEWS README [root@linux-5 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz [root@linux-5 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README
將create.sql文件,導入到zabbix庫裏面去
[root@linux-5 zabbix-server-mysql-3.2.11]# mysql -uroot zabbix < create.sql
systemctl start zabbix-server
在啓動http服務以前,先查看nginx服務是否啓動,若啓動了nginx,就監聽了80端口,就須要去停掉nginx服務,再去啓動httpd服務
[root@linux-5 zabbix-server-mysql-3.2.11]# ps aux|grep nginx root 3276 0.0 0.1 120752 2096 ? Ss 17:21 0:00 nginx: master process /usr/sbin/nginx nginx 3277 0.0 0.1 121136 3584 ? S 17:21 0:00 nginx: worker process root 4811 0.0 0.0 112676 984 pts/0 R+ 23:50 0:00 grep --color=auto nginx [root@linux-5 zabbix-server-mysql-3.2.11]# systemctl stop nginx [root@linux-5 zabbix-server-mysql-3.2.11]# ps aux|grep nginx root 4822 0.0 0.0 112676 984 pts/0 R+ 23:50 0:00 grep --color=auto nginx [root@linux-5 zabbix-server-mysql-3.2.11]# systemctl start httpd [root@linux-5 zabbix-server-mysql-3.2.11]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::80 :::* LISTEN 4829/httpd
若須要開機啓動httpd服務和zabbix服務,則須要將它加入到服務的列表中去,同時須要取消開機啓動Nginx服務
[root@linux-5 zabbix-server-mysql-3.2.11]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@linux-5 zabbix-server-mysql-3.2.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. [root@linux-5 zabbix-server-mysql-3.2.11]# systemctl disable nginx [root@linux-5 zabbix-server-mysql-3.2.11]# chkconfig nginx off 注意:正在將請求轉發到「systemctl disable nginx.service」。
[root@linux-5 zabbix-server-mysql-3.2.11]# ps aux|grep zabbix zabbix 4802 0.0 0.1 254588 3488 ? S 7月09 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf root 4965 0.0 0.0 112676 984 pts/0 R+ 00:00 0:00 grep --color=auto zabbix
[root@linux-5 zabbix-server-mysql-3.2.11]# netstat -lntp 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:111 0.0.0.0:* LISTEN 564/rpcbind tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 857/rpc.mountd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 811/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1226/master tcp 0 0 0.0.0.0:33914 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:54120 0.0.0.0:* LISTEN 821/rpc.statd tcp6 0 0 :::111 :::* LISTEN 564/rpcbind tcp6 0 0 :::80 :::* LISTEN 4829/httpd tcp6 0 0 :::20048 :::* LISTEN 857/rpc.mountd tcp6 0 0 :::22 :::* LISTEN 811/sshd tcp6 0 0 :::40951 :::* LISTEN 821/rpc.statd tcp6 0 0 ::1:25 :::* LISTEN 1226/master tcp6 0 0 :::44352 :::* LISTEN - tcp6 0 0 :::2049 :::* LISTEN - tcp6 0 0 :::3306 :::* LISTEN 4700/mysqld
經過檢查結果能夠發現,雖然服務啓動了,但並無zabbix監聽的端口,所以須要查看錯誤日誌排查問題所在
[root@linux-5 zabbix-server-mysql-3.2.11]# tail /var/log/zabbix/zabbix_server.log 4802:20180710:000249.473 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000249.476 database is down: reconnecting in 10 seconds 4802:20180710:000259.479 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000259.479 database is down: reconnecting in 10 seconds 4802:20180710:000309.480 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000309.480 database is down: reconnecting in 10 seconds 4802:20180710:000319.480 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000319.480 database is down: reconnecting in 10 seconds 4802:20180710:000329.483 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000329.483 database is down: reconnecting in 10 seconds
雖然zabbix服務有進程,但沒有完全的起來,說明不可以鏈接mysql,因此還須要更改zabbix的配置文件。
vim /etc/zabbix/zabbix_server.conf 搜索/DBHost 在DBName=zabbix上面增長 DBHost=127.0.0.1 在DBuser下面增長 DBPassword=123456
由於mysql和zabbix裝在同一臺機器上,這裏的 DBHost能夠寫localhost 或者127.0.0.1;若是是在生產環境上,有時候爲了提高zabbix的性能,可能會把MySQL裝在其餘機器上,這時的DBHost,就須要寫mysql的ip,建立的用戶的來源IP也須要寫mysql的ip
systemctl restart zabbix-server.service
[root@linux-5 zabbix-server-mysql-3.2.11]# ps aux|grep zabbix zabbix 5089 0.1 0.2 254768 4172 ? S 00:19 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf zabbix 5092 0.0 0.1 254768 2516 ? S 00:19 0:00 /usr/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes] zabbix 5093 0.0 0.1 254768 2728 ? S 00:19 0:00 /usr/sbin/zabbix_server: db watchdog [synced alerts config in 0.028233 sec, idle 60 sec] zabbix 5094 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5095 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 5096 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5097 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5098 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5099 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000004 sec, idle 5 sec] zabbix 5100 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection] zabbix 5101 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection] zabbix 5102 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection] zabbix 5103 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection] zabbix 5104 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection] zabbix 5108 0.0 0.1 257340 2656 ? S 00:19 0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5109 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: alerter [sent alerts: 0 success, 0 fail in 0.000335 sec, idle 30 sec] zabbix 5111 0.0 0.1 254768 2512 ? S 00:19 0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes] zabbix 5112 0.0 0.1 254844 2968 ? S 00:19 0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000156 sec, 0 maintenances in 0.000000 sec, idle 30 sec] zabbix 5113 0.0 0.1 254768 2872 ? S 00:19 0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000488 sec, idle 5 sec] zabbix 5116 0.0 0.2 359128 5088 ? S 00:19 0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.001294 sec, idle 60 sec] zabbix 5117 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 5118 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000010 sec, idle 1 sec] zabbix 5119 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 5120 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000000 sec, idle 1 sec] zabbix 5125 0.0 0.2 254768 3804 ? S 00:19 0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.000417 sec, idle 3 sec] zabbix 5126 0.0 0.2 254768 3804 ? S 00:19 0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000002 sec, idle 5 sec] zabbix 5134 0.0 0.1 254768 2628 ? S 00:19 0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000004 sec, idle 1 sec] zabbix 5135 0.0 0.1 254768 2848 ? S 00:19 0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000292 sec, idle 5 sec] root 5146 0.0 0.0 112676 984 pts/0 R+ 00:20 0:00 grep --color=auto zabbix
[root@linux-5 zabbix-server-mysql-3.2.11]# netstat -lntp|grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 5089/zabbix_server tcp6 0 0 :::10051 :::* LISTEN 5089/zabbix_server
檢查能夠發現,正常啓動的zabbix有許多子進程,監聽端口爲10051端口
在瀏覽器輸入IP地址(即監控中心的IP地址),http://192.168.88.5/zabbix/去訪問
點擊next
此時安裝嚮導提示設置PHP的時區,須要修改PHP默認配置文件
vim /etc/php.ini 搜索timezone 改成date.timezone = Asia/Shanghai
修改完成後須要重啓Apache服務
systemctl restart httpd
重啓後刷新web界面,發現時區已成功定義
繼續點擊next,填寫相應信息
最終完成安裝
點擊finish後,會彈出zabbix監控中心後臺登陸界面
默認用戶名爲:Admin,默認密碼:zabbix
修改密碼
進入後,首先修改密碼,避免泄露
修改完成後,刷新瀏覽器,發現界面已變爲中文
yum install -y zabbix-agent
由於是客戶端,因此只須要安裝一個包
客戶端與服務端通訊是經過白名單IP的形式,所以須要在客戶端上配置監控中心的IP
vim /etc/zabbix/zabbix_agentd.conf Server=192.168.88.5 //監控中心IP # 定義服務端的ip(被動模式) ServerActive=192.168.88.5 //監控中心IP #定義服務端的ip(主動模式) #這個涉及到一個主動和被動模式;若是這裏不填寫服務中心的IP,那麼就只能使用被動模式;這個IP是主動模式時候用的 Hostname=Zabbix server修改成Hostname=lem-02 #這是自定義的主機名,一會還須要在web界面下添加監控客戶端時須要設置一樣的主機名
systemctl start zabbix-agent.service
[root@linux-10 ~]# ps aux|grep zabbix zabbix 1510 0.0 0.0 80704 1280 ? S 11:12 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf zabbix 1511 0.0 0.0 80704 1348 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 1512 0.0 0.0 80704 1844 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 1513 0.0 0.0 80704 1844 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 1514 0.0 0.0 80704 1844 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 1515 0.0 0.1 80836 2204 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 1523 0.0 0.0 112720 968 pts/0 R+ 11:15 0:00 grep --color=auto zabbix [root@linux-10 ~]# netstat -lntp|grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1510/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 1510/zabbix_agentd
從檢查結果能夠發現zabbix服務端監聽的是10051端口,客戶端監聽的端口是10050
重置zabbix密碼,就是直接更改數據庫裏的數據便可
[root@linux-5 ~]# mysql -uroot
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
show tables;
之後服務器監控的主機越多,那麼這些表會愈來愈大,因此須要去指定合適的監控策略。例如:數據量須要保存多長時間,那麼在定義這個監控項目的時候就該想到,要保留1個月仍是1年,仍是其餘時間;或者,監控的站點服務量很大的話,一天就要漲好幾個G,那麼你的服務器磁盤能支持保存多長時間。
zabbix用戶的密碼,默認存放的表是users裏面
desc users;
須要修改的是passwd表
update users set passwd=md5(‘123456’) where alias=‘Admin’;
修改後就可使用新密碼登陸zabbix了。