zabbix server+agent+proxy搭建性能監控平臺

這是新找到了配置文件配置方法但何嘗試php

每一個模塊工做職責:html

Zabbix Server:負責接收agent發送的報告信息的核心組件,全部配置,統計數據及操做數據均由其組織進行;前端

Database Storage:用戶存儲全部配置信息,以及存儲由Zabbix Server收集到的數據;mysql

Web Interface: Zabbix的GUI接口,一般與Server運行在同一臺主機上;linux

Zabbix Proxy:經常使用於分佈監控環境中,代理Server收集部分被監控的監控數據並統一發往Server端;(一般大於500臺主機須要使用)web

Zabbix Agent:部署在被監控主機上,負責收集本地數據發往Server端或Proxy端;sql

Zabbix監控原理:
Agentd安裝在被監控的主機上,Agent負責按期收集客戶端本地各項數據,併發送至Zabbix Server端,Zabbix Server收到數據,將數據存儲到數據庫中,用戶基於Zabbix WEB能夠看到數據在前端展示圖像。當Zabbix監控某個具體的項目,改項目會設置一個觸發器閾值,當被監控的指標超過該觸發器設定的閾值,會進行一些必要的動做,動做包括:發送信息(郵件、微信、短信)、發送命令(SHELL 命令、Reboot、Restart、Install等)docker

原文地址數據庫

常見架構:apache

Server/Agent模式:

zabbix-agent模式
Proxy代理模式:

你有可能須要
docker安裝zabbix-server
官方安裝指導
linux中編譯安裝Apache、PHP、MySQL
Linux下完全卸載一個軟件
Mysql 忘記root密碼決方法
配置文件詳解
linux安裝gcc:yum install gcc
給zabbix用戶添加zabbix_proxy庫權限

GRANT ALL PRIVILEGES ON zabbix_proxy.* TO zabbix IDENTIFIED BY 'zabbix';

一.環境準備

本次使用
OS:CentOS 7.4 x86_64
Zabbix版本:3.4
MySQL版本:5.6

預計安裝

  • 一臺zabbix-server + agent(收集數據發給server )
  • 多臺zabbix-proxy + agent(多臺agent發送數據給proxy再給server)
  • 多臺zabbix-agent(收集數據發給server )

我有嘗試安裝最新版,只須要把獲取的包版本更換就行。均可執行

一、關閉防火牆等

[root@VM_0_13_centos web]# systemctl disable firewalld && systemctl stop firewalld
[root@VM_0_13_centos web]# setenforce 0 #零時關閉selinux 無需重啓 可將這個命令和下面這個一塊兒執行 下次也不用管了
[root@VM_0_13_centos web]# vi /etc/selinux/config SELINUXTYPE=targeted 改爲 SELINUX=disabled #永久關閉selinux狀態 須要重啓

[root@VM_0_13_centos web]# chkconfig iptables off #永久關閉iptables狀態centos7的我沒找到這個
[root@VM_0_13_centos web]# systemctl disable firewalld.service #禁止firewall開機啓動centos7的我執行了這個命令

其實不關閉也能夠只是會遇到不少問題,好比要單獨去開放用到的一些端口,那樣用起來很麻煩。

防火牆關閉參考文章:
iptables開啓和關閉
SELinux開啓和關閉
CentOS 6和CentOS 7防火牆的關閉

二、安裝zabbix-server

192.168.1.1

一、下載zabbix的rpm倉庫包

[root@VM_0_13_centos]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm #能夠去去連接找更新的包

二、安裝相關套件zabbix-server-mysql和web-mysql

[root@VM_0_13_centos]# yum install zabbix-server-mysql zabbix-web-mysql

三、安裝而且啓動mysql5.6及初始化數據庫信息

[root@VM_0_13_centos]# rpm -ivh http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm
[root@VM_0_13_centos]# yum install -y mysql-community-server
[root@VM_0_13_centos]# systemctl start mysqld
[root@VM_0_13_centos]# /sbin/chkconfig mysqld on #開機啓動
[root@VM_0_13_centos]# mysql_secure_installation #初始化數據庫信息,直接回車會讓設置root密碼,根據提示一步一步完成,最後一步y就行了。

你可能須要Mysql 忘記root密碼決方法

四、建立zabbix數據庫,建立zabbix帳號

[root@VM_0_13_centos]# mysql -h127.0.0.1 -uroot -p
....#直接回車原始不須要密碼,如已有忘記了看頂部的重置密碼教程
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> flush privileges; #從新加載權限表
Query OK, 0 rows affected (0.01 sec)

mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye

五、導入默認的zabbix數據庫信息

[root@VM_0_13_centos]# zcat /usr/share/doc/zabbix-server-mysql-3.4.10/create.sql.gz | mysql zabbix -uzabbix -pzabbix #zabbix-server-mysql-4.0.0/create.sql.gz須要進這個路徑查看一下是否是不必定同樣 cd /usr/share/doc/

上面的命令必定要等到他自動執行完

六、修改zabbix_server.conf的配置文件

[root@VM_0_13_centos]# grep ^DB /etc/zabbix/zabbix_server.conf
DBHost=localhost #若是不是本機就填寫目標ip,前提你也須要在目標主機執行第4步、建立zabbix數據庫
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

上面若是沒出現這麼多條進路徑中改配置vim /etc/zabbix/zabbix_server.conf有兩個默認被註釋了

七、修改配置文件/etc/httpd/conf.d/zabbix.conf,時區改爲 Asia/Shanghai

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

八、啓動apache/zabbix-server服務並設置爲開機啓動

[root@VM_0_13_centos]# systemctl start httpd
[root@VM_0_13_centos]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@VM_0_13_centos]# netstat -an |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0     52 172.17.0.13:22          183.192.94.180:10928    ESTABLISHED
[root@VM_0_13_centos]# systemctl start zabbix-server
[root@VM_0_13_centos]# 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.

訪問:localhost/zabbix/

按步提示執行便可,HostName配置成 Zabbix server 端口10051

完成登陸,默認用戶:Admin ,密碼:zabbix

若是之後須要更改配置就在這裏/etc/zabbix/web/zabbix.conf.php

ps:第二次安裝 Database host填寫 localhost 未遇到如下兩個錯誤。

可能遇到的錯誤一

鏈接mysql遇到沒法鏈接,使用navicat 進行鏈接報錯 1130鏈接被拒絕,最後瞭解到出現這種狀況是由於mysql服務器出於安全考慮,默認只容許本地登陸數據庫服務器,解決辦法參考

可能遇到的錯誤二

拒絕zabbix 用戶訪問zabbix 庫,可鏈接mysql執行GRANT ALL PRIVILEGES ON zabbix.* TO zabbix IDENTIFIED BY 'zabbix';,添加訪問權限。原文地址

設置中文方法

官方安裝指導
參考一
參考二
參考三

ps:不知道是哪裏操做不對,仍是官方省略了一些簡單步驟,我按照官方的步驟執行到建立初始數據庫就不能繼續了

常見問題:
當使用的DB 並不安裝在本機內
修改/etc/zabbix/zabbix_server.conf

:
DBHost=**192.168.11.xxx**
DBUser=zabbix
DBPassword=**zabbix_password**
#DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
:

web數據庫配置
修改/usr/share/zabbix/conf/zabbix.conf.php

:
$DB["TYPE"] = 'MYSQL';
$DB["SERVER"] = '**192.168.11.xxx**';
$DB["PORT"] = '3306';
$DB["DATABASE"] = 'zabbix';
$DB["USER"] = 'zabbix';
$DB["PASSWORD"] = '**zabbix_password**';
:

鏈接mysql報錯

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

解決辦法:執行/etc/init.d/mysqld start,啓動mysql

一、關閉防火牆等

[root@VM_0_13_centos web]# systemctl disable firewalld && systemctl stop firewalld
[root@VM_0_13_centos web]# setenforce 0 #零時關閉selinux 無需重啓 可將這個命令和下面這個一塊兒執行 下次也不用管了
[root@VM_0_13_centos web]# vi /etc/selinux/config SELINUXTYPE=targeted 改爲 SELINUX=disabled #永久關閉selinux狀態 須要重啓

[root@VM_0_13_centos web]# chkconfig iptables off #永久關閉iptables狀態centos7的我沒找到這個
[root@VM_0_13_centos web]# systemctl disable firewalld.service #禁止firewall開機啓動centos7的我執行了這個命令

其實不關閉也能夠只是會遇到不少問題,好比要單獨去開放用到的一些端口,那樣用起來很麻煩。

防火牆關閉參考文章:
iptables開啓和關閉
SELinux開啓和關閉
CentOS 6和CentOS 7防火牆的關閉

二、Proxy 安裝程序

192.168.1.2

原文參考

一、安裝mariadb
首先須要安裝mariadb-server

[root@VM_0_13_centos web]# yum install -y mariadb-server

啓動服務

[root@VM_0_13_centos web]# systemctl start mariadb.service

添加到開機啓動

[root@VM_0_13_centos web]# systemctl enable mariadb.service

二、獲取/zabbix-proxy安裝包

[root@VM_0_13_centos web]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-proxy-mysql-3.4.1-1.el7.x86_64.rpm

原文做者說 由於存在一些依賴關係,不能直接rpm -ivh,全部必須用yum rpm包的形式進行安裝,那咱們就照作

三、使用yum安裝zabbix-proxy

[root@VM_0_13_centos web]# yum install zabbix-proxy-mysql-3.4.1-1.el7.x86_64.rpm

部分主機遇到如下報錯

Error: Package: zabbix-proxy-mysql-4.0.0-1.alpha1.el7.x86_64 (/zabbix-proxy-mysql-4.0.0-1.alpha1.el7.x86_64)
           Requires: fping
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

提示缺乏 fping,解決辦法:

[root@VM_0_13_centos web]# rpm -ivh https://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@VM_0_13_centos web]# yum install -y fping

原文地址

四、建立數據庫

[root@VM_0_13_centos web]# mysql
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin; #建立zabbix_proxy庫
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix'; #建立zabbix_proxy用戶並把zabbix_proxy庫的全部權限給他密碼是zabbix
MariaDB [(none)]> flush privileges; #從新加載權限表
MariaDB [(none)]> quit #退出

某些服務器遇到了報錯:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

解決辦法:再次啓動服務systemctl start mariadb.service

五、導入zabbix-proxy默認數據

[root@VM_0_13_centos web]# zcat /usr/share/doc/zabbix-proxy-mysql-3.4.1/schema.sql.gz | mysql zabbix_proxy -uzabbix -pzabbix

六、配置zabbix_proxy

[root@VM_0_13_centos web]# vim /etc/zabbix/zabbix_proxy.conf
改如下配置:

Server=192.168.1.1 #同步指向的server端的IP,非本地IP。能夠是server端的主機域名,但要確保proxy端解析server的域名,而且網絡可達
Hostname=Zabbix proxy #proxy本地的名稱,此名稱須要與未來在server端的WEB頁面上的代理程序名稱一致,名稱自定義
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy #與上面mysql配置對應
DBUser=zabbix #與上面mysql配置對應
DBPassword=zabbix #與上面mysql配置對應
DBPort=3306 #與上面mysql配置對應
ConfigFrequency=120  #主動去server端去拉去配置更新的頻率120秒一次
DataSenderFrequency=60  #發送採集的監控數據到服務器端,默認是1秒,咱們一分鐘發送一次
#roxyLocalBuffer=0 #代理配置文件中的ProxyLocalBuffer和ProxyOfflineBuffer參數控制數據在本地保存多長時間。
StartTrappers=10
StartSNMPTrapper=1 
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log #默認沒有這個路徑可建立或註釋
Timeout=4 
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

七、啓動zabbix-proxy

[root@VM_0_13_centos web]# service zabbix-proxy start
[root@VM_0_13_centos web]# chkconfig zabbix-proxy on

若是你出現如下報錯,那是你沒執行關閉防火牆的步驟,沒關selinux

Job for zabbix-proxy.service failed because a configured resource limit was exceeded. See "systemctl status zabbix-proxy.service" and "journalctl -xe" for details.

驗證日誌中出現報錯:cannot set resource limit: [13] Permission denied

八、驗證日誌

[root@VM_0_13_centos web]# tailf /var/log/zabbix/zabbix_proxy.log

遺留問題以:上日誌 報錯failed to update local proxy configuration copy: unexpected field "hosts.available"致使server不能監控到本機代理

一、關閉防火牆等

[root@VM_0_13_centos web]# systemctl disable firewalld && systemctl stop firewalld
[root@VM_0_13_centos web]# setenforce 0 #零時關閉selinux 無需重啓 可將這個命令和下面這個一塊兒執行 下次也不用管了
[root@VM_0_13_centos web]# vi /etc/selinux/config SELINUXTYPE=targeted 改爲 SELINUX=disabled #永久關閉selinux狀態 須要重啓

[root@VM_0_13_centos web]# chkconfig iptables off #永久關閉iptables狀態centos7的我沒找到這個
[root@VM_0_13_centos web]# systemctl disable firewalld.service #禁止firewall開機啓動centos7的我執行了這個命令

其實不關閉也能夠只是會遇到不少問題,好比要單獨去開放用到的一些端口,那樣用起來很麻煩。

防火牆關閉參考文章:
iptables開啓和關閉
SELinux開啓和關閉
CentOS 6和CentOS 7防火牆的關閉

二、安裝zabbix_agent

192.168.1.3

一、獲取zabbix_agent安裝包

[root@VM_0_13_centos web]# wget http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-agent-4.0.0-1.alpha1.el7.x86_64.rpm

二、開始安裝

[root@VM_0_13_centos web]# rpm -ivh zabbix-agent-4.0.0-1.alpha1.el7.x86_64.rpm

三、配置agentd.conf

[root@VM_0_13_centos web]# vi /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.2 #zabbix-server地址
ServerActive=192.168.1.2 #zabbix-proxy地址
Hostname=Zabbix proxy #對應Zabbix proxy 
RefreshActiveChecks=60 
MaxLinesPerSecond=800 
EnableRemoteCommands=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
UserParameter=get_txt,bash /etc/zabbix/scripts/get_txt.sh

四、添加到services

[root@VM_0_13_centos web]# vi /etc/services 
在文件最後面添加以下的內容: 
zabbix-agent    10050/tcp                       # Zabbix Agent 
zabbix-agent    10050/udp                      # Zabbix Agent 
zabbix-trapper  10051/tcp                       # Zabbix Trapper 
zabbix-trapper  10051/udp                      # Zabbix Trapper

五、啓動zabbix-agent並添加開機自啓

[root@VM_0_13_centos web]# service zabbix-agent start
[root@VM_0_13_centos web]# chkconfig zabbix-agent on

原理:

zabbix_agent收集數據
zabbix-proxy獲取zabbix_agent的數據上發給zabbix_server
zabbix_server 獲取數據後展現
相關文章
相關標籤/搜索