一、环境配置信息
本次安装zabbix,采用LNMP(Linux+Nginx+Mysql+PHP)方式安装,相应版本要求如下:
序号 | 名称 | 内容 |
1 | 操作系统版本 | Red Hat Enterprise Linux Server release 6.6 (Santiago) |
2 | 操作系统内核版本 | 2.6.32-504.el6.x86_64 |
3 | 操作系统安装方式 | 最小化安装 |
4 | Zabbix 版本 | zabbix_server (Zabbix) 3.4.7 |
5 | MySql 版本 | Ver 14.14 Distrib 5.7.16 |
6 | PHP 版本 | PHP 5.6.35 (fpm-fcgi) (built: Apr 10 2018 16:03:57) |
7 | Nginx 版本 | nginx/1.13.11 |
注意:生产环境直接使用模板机或者初始化之后的模板机即可。
Zabbix工作示意图如下:
二、安装步骤
1) Linux安装
具体安装初始化流程参考文档Liunx系统安装。
安装依赖环境:
$ cd /tmp && wget ftp://x.x.x.x/pub/zabbix/zabbix-repo.tar.gz 【主机房】 $ cd /tmp && wget http://x.x.x.x/pub/zabbix/zabbix-repo.tar.gz 【备机房】 $ cd /tmp && tar zxf zabbix-repo.tar.gz $ cd /etc/yum.repos.d/ && sudo wget ftp://x.x.x.x/pub/zabbix/zabbix.repo 【主机房】 $ cd /etc/yum.repos.d/ && sudo wget http:// x.x.x.x/pub/zabbix/zabbix.repo 【备机房】 $ sudo yum clean all && sudo yum makecache |
安装源初始化完成后,运行以下命令初始化安装环境:
$ sudo yum install gcc gcc-c++ pcre-devel openssl-devel libxml2-devel GeoIP-devel bzip2-devel \ ibmcrypt-devel libXpm-devel ncurses-devel libxslt-devel net-snmp-devel mcrypt mhash-devel \ libevent-devellibxml2-devel libcurl-devel openssl-devel openldap-devel net-snmp-devel net-snmp fping \ libcurl-devel gd libpng libpng-devel freetype freetype-devel autoconf net-snmp-utils libaio-devel \ perl-ExtUtils-Embed perl-devel unixODBC-devel urw-fonts zlib-devel zlib libaio* libcurl-devel \ libjpeg-turbo-devel --skip-broken |
2) MySQL安装
MySQL安装针对使用方式有多种不同的配置方式,在此仅涉及本地安装单实例MySQL方式,其他方式配置请参考其他文档。
数据库关键路径默认设置;
序号 | 名称(Key) | 内容(Vaule) |
1 | basedir | /usr/local/mysql |
2 | datadir | /opt/mysql/data |
3 | port | 3306 |
4 | socket | /tmp/mysql.sock |
5 | tmpdir | /opt/mysql/tmp |
6 | log-bin | /opt/mysql/logs/mysql-bin |
具体安装步骤:
下载配置文件或者编辑/etc/my.cnf 配置文件,按照需求更改上表配置信息;下载地址如下,下载之前请先删除本地/etc/my.cnf文件:
序号 | 机房 | 下载路径 |
1 | 主机房 | ftp://x.x.x.x/pub/zabbix/my.cnf |
2 | 备机房 | http://x.x.x.x/pub/zabbix/my.cnf |
编辑内容如下:
[client] port = 3306 socket = /var/lib/mysql/mysql.sock
[mysql] prompt="\\u@\\h [\\d]>" #pager="less -i -n -S" #tee=/opt/mysql/logs/query.log no-auto-rehash
[mysqld] #misc user = mysql basedir = /usr/local/mysql datadir = /opt/mysql/data event_scheduler = ON explicit_defaults_for_timestamp = true port = 3306 socket = /var/lib/mysql/mysql.sock
tmpdir = /opt/mysql/tmp #timeout interactive_timeout =86400 net_read_timeout = 28800 net_write_timeout = 28800 wait_timeout =86400
#character set character-set-server = utf8
max_connections = 5000 max_connect_errors = 100000 open_files_limit = 131070 optimizer_switch = index_condition_pushdown=off skip-external-locking
max_allowed_packet = 256M myisam-recover-options = BACKUP key_buffer_size = 128M thread_stack = 192K thread_cache_size = 16 #lower_case_table_names =1 #logs log_warnings = 1 log-output = file log-error = error.log long_query_time = 1 slow_query_log = 1 slow_query_log_file = slow.log pid-file = mysql.pid
#log-slow-admin-statements = 1 #log-queries-not-using-indexes = 1 log-slow-slave-statements = 1
#binlog #binlog_format = STATEMENT # binlog_format = row # server-id = 23306 # log-bin = /opt/mysql/logs/mysql-bin # binlog_cache_size = 4M # max_binlog_size = 256M # max_binlog_cache_size = 1024M # sync_binlog = 0 # expire_logs_days = 10 #procedure # log_bin_trust_function_creators=1
# gtid-mode = 0
#relay log max_relay_log_size = 128M relay_log_purge = 1 relay_log_recovery = 1 relay-log=relay-bin relay-log-index=relay-bin.index log_slave_updates skip_slave_start = 1 #slave-skip-errors=1032,1053,1062 #skip-grant-tables skip-ssl
#buffers & cache bulk_insert_buffer_size = 64M key_buffer_size = 8M join_buffer_size = 128K max_heap_table_size = 128M master-info-repository = TABLE performance_schema = ON query_cache_size = 64M query_cache_type = 0 query_cache_limit = 10M query_cache_min_res_unit = 512 sort_buffer_size = 128K symbolic-links=0 transaction_isolation = READ-COMMITTED table_open_cache_instances = 16 table_definition_cache = 8192 table_open_cache = 4096 thread_cache_size = 200 thread_stack = 192K tmp_table_size = 96M read_buffer_size = 128M read_rnd_buffer_size = 64M relay-log-info-repository = TABLE
#myisam myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1
#innodb innodb_lru_scan_depth = 256 innodb_autoextend_increment = 256 innodb_buffer_pool_dump_at_shutdown=1 innodb_buffer_pool_load_at_startup=1 innodb_buffer_pool_instances = 12 innodb_buffer_pool_size = 256M innodb_buffer_pool_instances = 1 innodb_checksum_algorithm = crc32 innodb_change_buffer_max_size=50 innodb_checksums = 0 innodb_data_file_path = ibdata1:100M:autoextend innodb_doublewrite = 0 innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_flush_neighbors = 0 innodb_file_per_table = 1 innodb_io_capacity = 4000 innodb_log_buffer_size = 8M innodb_log_file_size = 128M innodb_log_files_in_group = 3 innodb_monitor_enable = '%' innodb_max_dirty_pages_pct = 50 innodb_old_blocks_time = 1000 innodb_open_files = 4096 innodb_stats_on_metadata = OFF innodb_sync_array_size = 16 innodb_status_file = 1 innodb_support_xa = 0 innodb_read_io_threads = 64 innodb_write_io_threads = 64
[mysqld_safe] open_files_limit=131070 |
安装MySQL:
$ cd /tmp && wget ftp://x.x.x.x/pub/zabbix/mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz【主机房】 $ cd /tmp && wget http://x.x.x.x/pub/zabbix/mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz【备机房】 $ sudo tar zxf /tmp/mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ $ sudo ln -s /usr/local/mysql-5.7.16-linux-glibc2.5-x86_64 /usr/local/mysql $ sudo useradd -u 4000 mysql $ sudo mkdir -p /opt/mysql && cd /opt/mysql $ sudo mkdir -p tmp logs data && sudo chown mysql:mysql -R /opt/mysql $ cd /usr/local/mysql/bin && sudo ./mysqld --initialize --user=mysql \ --datadir=/opt/mysql/data --basedir=/usr/local/mysql |
以上过程如果遇到报错,请检查datadir路径下是否清楚干净,配置文件是否修改如上,是否缺少需要的库。
如果获取MySQL登陆密码:
$ sudo grep password /opt/mysql/data/error.log |
制作MySQL启动服务:
$ sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld $ sudo chmod +x /etc/init.d/mysqld |
添加MySQL环境变量,添加内容要在文件最后:
$ sudo vi /etc/profile export PATH=$PATH:/usr/local/mysql/bin export PATH $ source /etc/profile |
启动以及MySQL库,[password]为获取的MySQL登陆密码:
$ sudo /sbin/chkconfig --add mysqld $ sudo /sbin/chkconfig mysqld on $ sudo service mysqld start $ mysql -uroot -p[password] |
修改MySQL密码,使用前面找到的密码登陆MySQL,使用以下命令将数据库密码改为mysql:
> alter user user() identified by 'mysql'; |
创建zabbix数据环境:
> create database zabbix character set utf8 collate utf8_bin; > grant all privileges on zabbix.* to zabbix@127.0.0.1 identified by 'zabbixpassword'; > grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbixpassword'; > grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbixpassword' with grant option; > grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbixpassword' with grant option; > flush privileges; |
至此数据库安装完成,另外Zabbix数据库导入会在Zabbix安装步骤内说明。
3) PHP安装
按照以下步骤,创建账户并编译安装:
$ sudo useradd -u 4001 www $ cd /tmp && wget ftp://10.10.10.28/pub/zabbix/php-5.6.35.tar.gz 【主机房】 $ cd /tmp && wget http://10.10.16.31/pub/zabbix/php-5.6.35.tar.gz 【备机房】 $ tar zxf /tmp/php-5.6.35.tar.gz && sudo mkdir -p /usr/local/php5 && cd /tmp/php-5.6.35 $ sudo ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc \ --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mbstring \ --with-freetype-dir --with-jpeg-dir --with-png-dir --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml \ --enable-pdo --with-snmp --with-xsl --enable-xml --disable-rpath --enable-bcmath --enable-shmop \ --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --with-gd \ --with-mcrypt --enable-mbstring --enable-gd-native-ttf --with-openssl --with-mhash --enable-sockets \ --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-pcntl \ --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --disable-debug --disable-ipv6 \ --enable-opcache --with-gettext $ sudo make -j 4 && sudo make install $ sudo cp /tmp/php-5.6.35/php.ini-production /usr/local/php5/etc/php.ini $ sudo cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf |
此处遇到报错大多和环境变量有关,因之前已安装完环境变量,此处如有问题,请验证之前环境安装是否正常。
配置修改:
按照以下内容配置/usr/local/php5/etc/php-fpm.conf:
listen = /tmp/php-cgi.sock #以socke的方式访问.注视掉.ip端口的方式. user = www group = www listen.owner = www listen.group = www listen.mode = 0660 php_admin_value[memory_limit] = 128M php_admin_value[post_max_size] = 16M php_admin_value[upload_max_filesize] = 2M php_admin_value[max_execution_time] = 300 php_admin_value[max_input_time] = 300 php_admin_value[session.auto_start] = 0 php_admin_value[mbstring.func_overload] = 0 php_admin_value[always_populate_raw_post_data] = -1 php_admin_value[date.timezone] = asia/shanghai |
启动方式:
$ sudo /usr/local/php5/sbin/php-fpm & |
至此已完成PHP的安装。
4) Nginx 安装
按照以下步骤完成Nginx安装:
$ cd /tmp && wget ftp://x.x.x.x/pub/zabbix/nginx-1.13.11.tar.gz 【主机房】 $ cd /tmp && wget http://x.x.x.x/pub/zabbix/nginx-1.13.11.tar.gz 【备机房】 $ sudo mkdir -p /usr/local/nginx && tar zxf /tmp/nginx-1.13.11.tar.gz -C /tmp $ cd /tmp/nginx-1.13.11 && sudo ./configure --prefix=/usr/local/nginx --with-threads \ --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-pcre \ --with-http_gunzip_module --with-http_gzip_static_module --with-http_perl_module --with-debug $ sudo make -j 2 && sudo make install |
修改配置文件/usr/local/nginx/conf/nginx.conf内容,注意:注释此项”location / {“:
user www; server { listen 80; server_name localhost; index index.php; root /var/www/html; location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 30d; } location ~ \.php$ { root /var/www/html; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
启动方式:
$ sudo /usr/local/nginx/sbin/nginx & |
至此Nginx安装完成。
5) Zabbix安装
请按照以下步骤初始化安装Zabbix:
$ cd /tmp && wget ftp://x.x.x.x/pub/zabbix/zabbix-3.2.11.tar.gz 【主机房】 $ cd /tmp && wget http://x.x.x.x/pub/zabbix/zabbix-3.2.11.tar.gz 【备机房】 $ wget ftp://x.x.x.x/pub/zabbix/OpenIPMI-2.0.24.tar.gz && tar xf OpenIPMI-2.0.24.tar.gz 【主机房】 $ wget http://x.x.x.x/pub/zabbix/OpenIPMI-2.0.24.tar.gz && tar xf OpenIPMI-2.0.24.tar.gz 【备机房】 $ cd OpenIPMI-2.0.24 && sudo ./configure $ sudo mkdir -p /usr/local/zabbix && tar zxf /tmp/zabbix-3.2.11.tar.gz -C /tmp $ sudo useradd -u 4002 zabbix && cd /tmp/zabbix-3.2.11/ $ sudo rpm -ivh ftp://x.x.x.x/scripts/rpm/jdk-7u79-linux-x64.rpm 【主机房】 $ sudo rpm -ivh http://x.x.x.x/scripts/rpm/jdk-7u79-linux-x64.rpm 【备机房】 $ sudo ./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent \ --enable-java --with-libcurl --with-mysql=/usr/local/mysql/bin/mysql_config --with-libxml2 \ --with-unixodbc --with-net-snmp --with-libevent --with-openssl --with-ldap --with-iconv \ --with-openipmi=/tmp/OpenIPMI-2.0.24/ $ sudo make install |
修改(/usr/local/zabbix/etc/zabbix_server.conf)配置文件,具体修改内容如下:
$ sudo cp /usr/local/zabbix/etc/zabbix_server.conf{,_bak} $ sudo vi /usr/local/zabbix/etc/zabbix_server.conf LogFile=/tmp/zabbix_server.log DBHost=127.0.0.1 DBName=zabbix DBUser=zabbix DBPassword=zabbixpassword DBSocket=/tmp/mysql.sock StartPollers=20 StartTrappers=50 StartPingers=15 StartDiscoverers=15 StartHTTPPollers=5 CacheSize=2048M #EXSI部分 StartVMwareCollectors=5 VMwareFrequency=60 VMwarePerfFrequency=60 VMwareCacheSize=80M Timeout=30 AlertScriptsPath=/usr/local/share/zabbix/alertscripts ExternalScripts=/usr/local/share/zabbix/externalscripts FpingLocation=/usr/sbin/fping LogSlowQueries=3000 |
添加启动服务,复制zabbix_server和zabbix_agentd到init.d下,修改文件内ZABBIX_BIN路径:
$ sudo cp /tmp/zabbix-3.2.11/misc/init.d/fedora/core5/zabbix_server /etc/init.d/ $ sudo cp /tmp/zabbix-3.2.11/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ $ sudo sed -i \ 's/^ZABBIX_BIN=.*/ZABBIX_BIN=\"\/usr\/local\/zabbix\/sbin\/zabbix_server\"/g' /etc/init.d/zabbix_server $ sudo sed -i \ 's/^ZABBIX_BIN=.*/ZABBIX_BIN=\"\/usr\/local\/zabbix\/sbin\/zabbix_agentd\"/g' /etc/init.d/zabbix_agentd |
复制前段控制台文件文件至nginx配置的工作目录(已修改至/var/www/html/):
$ sudo mkdir -p /var/www/html/zabbix $ sudo cp -r /tmp/zabbix-3.2.11/frontends/php /var/www/html/zabbix $ sudo chown www:www /var/www/html/zabbix -R |
修改字体:
$ cd /var/www/html/zabbix/fonts $ sudo mv DejaVuSans.ttf{,_bak} $ sudo wget ftp://x.x.x.x/pub/zabbix/DejaVuSans.ttf 【主机房】 $ sudo wget http://x.x.x.x/pub/zabbix/DejaVuSans.ttf 【备机房】 |
导入数据库:
$ mysql -u zabbix -p zabbix < /tmp/zabbix-3.2.11/database/mysql/schema.sql $ mysql -u zabbix -p zabbix < /tmp/zabbix-3.2.11/database/mysql/images.sql $ mysql -u zabbix -p zabbix < /tmp/zabbix-3.2.11/database/mysql/data.sql |
启动方式:
服务端: $ sudo /etc/init.d/zabbix_server start 客户端: $ sudo /usr/local/zabbix/sbin/zabbix_agentd 添加启动项,并设置开机启动 $ sudo /sbin/chkconfig --add zabbix_agentd $ sudo /sbin/chkconfig --add zabbix_server $ sudo /sbin/chkconfig zabbix_agentd on $ sudo /sbin/chkconfig zabbix_server on |
页面配置,登陆zabbix页面:
点击下一步,检查php选项是否全部通过;
填写数据库相关信息;
添加服务端详细信息;点击下一步,确认信息无误;安装完成;Zabbix默认账户:Admin;默认密码:zabbix;默认URL:http://X.X.X.X/zabbix。登陆界面后,点击右上角小人,如下图:
点击Language下拉菜单,选择Chinses(zh_CN),确认即可,如下图:
至此Zabbix安装完成。
6) Grafana安装
此展示工具有RPM安装包,直接安装即可:
$ sudo rpm -ivh ftp://10.10.10.28/pub/zabbix/grafana-5.0.4-1.x86_64.rpm 【主机房】 $ sudo rpm -ivh http://10.10.16.31/pub/zabbix/grafana-5.0.4-1.x86_64.rpm 【备机房】 |
添加开机启动项:
$ sudo /sbin/chkconfig --add grafana-server $ sudo /sbin/chkconfig grafana-server on $ sudo service grafana-server start |
安装zabbix-app插件:
$ cd /var/lib/grafana/plugins $ sudo wget\ ftp://10.10.10.28/pub/zabbix/alexanderzobnin-grafana-zabbix-v3.9.0-0.zip $ sudo unzip alexanderzobnin-grafana-zabbix-v3.9.0-0.zip $ sudo rm /var/lib/grafana/plugins/alexanderzobnin-grafana-zabbix-v3.9.0-0.zip $ sudo service grafana-server restart |
Grafana默认账户:admin;默认密码:admin;默认URL:http://X.X.X.X:3000。
连接zabbix配置步骤:
登陆Grafana,启用zabbix-app插件,配置zabbix-app;此处有两种连接方式:一、直连数据库;二、通过API连接。我们使用直连数据方式。
首先,新增数据库连接:其次,新建zabbix-app源:
然后,点击Save&Test,保存。以上完成对Grafana的配置。
7) Zabbix-Proxy 安装
为了减轻Zabbix-Server的压力有时候会增加一个或者几个Zabbix-Proxy节点分担其压力,安装步骤如下:
在Zabbix-Server的web段添加Proxy:创建zabbix代理:
此处创建代理依照代理的模式来决定是否添加代理IP,主动方式为默认使用方式,不需要添加代理IP;被动方式则需要添加IP。
新建Proxy数据库以及账户:
> create database zabbix_proxy character set utf8; #数据名可以跟server端名称不同 > GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix-proxy'; > GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix-proxy'; > set GLOBAL max_connections=10000; > flush privileges; |
安装zabbix-proxy客户端:
$ cd /tmp && wget ftp://10.10.10.28/pub/zabbix/zabbix-3.2.11.tar.gz 【主机房】 $ cd /tmp && wget http://10.10.16.31/pub/zabbix/zabbix-3.2.11.tar.gz 【备机房】 $ wget ftp://10.10.10.28/pub/zabbix/OpenIPMI-2.0.24.tar.gz \ && tar xf OpenIPMI-2.0.24.tar.gz 【主机房】 $ wget http://10.10.16.31/pub/zabbix/OpenIPMI-2.0.24.tar.gz \ && tar xf OpenIPMI-2.0.24.tar.gz 【备机房】 $ cd OpenIPMI-2.0.24 && ./configure $ make && sudo make install $ cd /usr/lib64/ && sudo ln -s /usr/local/lib/libOpenIPMI.so.0 $ sudo mkdir -p /usr/local/Zabbix_proxy && tar zxf /tmp/zabbix-3.2.11.tar.gz -C /tmp $ sudo useradd -u 4002 zabbix && cd /tmp/zabbix-3.2.11/ $ ./configure --prefix=/usr/local/zabbix_proxy --enable-proxy --enable-agent \ --with-openipmi=/tmp/OpenIPMI-2.0.24/ \ --with-mysql --with-net-snmp --with-libcurl $ sudo make install $ |
修改zabbix-agent配置文件:
LogFile=/tmp/zabbix_agentd.log Server=[Zabbix-ProxyIP] ServerActive=[Zabbix-ProxyIP] Hostname=[Zabbix-ProxyIP] HostMetadataItem=system.uname Timeout=30 Include=/usr/local/zabbix_proxy/etc/zabbix_agentd.conf.d/*.conf UnsafeUserParameters=1 |
修改zabbix-proxy配置文件:
Server=[Zabbix-ServerIP] #zabbix服务端IP Hostname=Zabbix proxy #必须和WEB页面添加代理时设置的名称一致 LogFile=/tmp/zabbix_proxy.log DBHost=localhost #数据库IP DBName=zabbix_proxy #数据库名 DBUser=Zabbix #数据库用户名 DBPassword=[Zabbix_Password] #数据库密码 DBSocket=/tmp/mysql.sock #连接数据库方式 #以下配置项和Server端同一个意思,具体查找Zabbix_Server配置项解析 StartPollers=100 StartIPMIPollers=5 StartTrappers=5 StartPingers=10 Timeout=4 LogSlowQueries=3000 |
导入Zabbix_Proxy数据结构:
$ cd /tmp/zabbix-3.2.11/database/mysql $ mysql -uroot -p[Password] zabbix_proxy < schema.sql #proxy端只需要导入这个文件 |
启动Zabbix_agent 和 Zabbix_Proxy服务
$ sudo /etc/init.d/zabbix_agentd start $ sudo /usr/local/zabbix_proxy/sbin/zabbix_proxy & |
完成后,需要在Zabbix-ServerWeb上添加主机是,在最下行选择代理程序监测是选择刚才创建的代理即可。
三、客户端安装
客户端安装时,因为服务端获取数据的方式不同,分主动模式和被动模式,服务端主动采集数据的方式为被动模式,服务端被动接受采集数据的方式为主动模式。因zabbix模板默认添加方式为被动模式,如发现服务端出现以下情况:
1、图像断层;
2、Web操作比较卡顿,页面容易出现502;
3、开启进程过多;
则,说明zabbix监控服务器性能消耗比较严重,此时可以考虑增加Proxy节点或者修改agentd为主动模式,降低zabbix 服务器的性能。实际生产中大多修改agentd端为被动模式比较常见。注意,部分监控方式没有办法更改,如SNMP设备、IPMI监控等。
主动模式:
需要修改agentd端配置文件,将Server=[IP]注释,修改StartAgents值为0,如下:
重启zabbix-agent,将模板完整克隆后,修改监控项模式为Active模式,如图:此种方法,实施时要长时间验证,因时间问题,验证时发现网卡数值没有取值,待后期完善。
被动模式:
需要修改agentd配置文件中的ServerActive的IP,为server的IP,此模式为,zabbix默认模式。按照文档正常安装方式即可正常部署完成。
1) Windows下客户端安装
按照以下步骤完成安装Windows客户端,首先需要依照系统和机房位置选择下载客户端:
选择客户端: zabbix-agent-slave-win64.exe【备机房-Win64】 zabbix-agent-slave-win32.exe【备机房-Win32】 zabbix-agent-master-win64.exe【主机房-Win64】 zabbix-agent-master-win32.exe【主机房-Win32】 ftp://10.10.10.28/pub/zabbix/ 【主机房路径】 http://10.10.16.31/pub/zabbix/ 【备机房路径】 |
下载后管理员权限直接运行,弹出如下提示框
选择【d】,安装+运行,即可。Windows客户端安装完成。
2) Linnx系统下客户端安装
因,生产环境都大多为rhel系统,可以使用RPM包安装,方法如下:
$ rpm -i ftp://10.10.10.28/pub/zabbix/zabbix-agent-3.2.11.el6.x86_64.rpm 【主机房】 $ rpm -i http://10.10.16.31/pub/zabbix/zabbix-agent-3.2.11.el6.x86_64.rpm 【备机房】 |
修改配置文件:
AllowRoot=1 Include=/etc/zabbix/zabbix_agentd.d/ |
依照不同机房,对应修改[ServerIP]的值:
$ sed -i 's/^Server=.*/Server=[ServerIP]/g' /etc/zabbix/zabbix_agentd.conf $ sed -i s#^Hostname=.*#Hostname=[LocalHostIP]#g /etc/zabbix/zabbix_agentd.conf $ sed -i 's/^ServerActive=.*/ServerActive=[ServerIP]/g' /etc/zabbix/zabbix_agentd.conf |
启动客户端并加入开机启动:
$ service zabbix-agent start $ /sbin/chkconfig zabbix-agent on |
3) Oracle数据库客户端安装
Oracle数据库的监控可以通过使用orabbix插件来实现,依照实际生产环境每个数据库上部署一个orabbix客户端,创建zabbix用户,并授予其只读权限,用来收集数据。工作示意图如下:
先参照Linux系统客户端安装方法安装客户端;
修改配置文件/etc/zabbix/zabbix.conf内以下配置:
安装JDK环境;
$ sudo rpm -i ftp://10.10.10.28/pub/zabbix/jdk-7u79-linux-x64.rpm 【主机房】 $ sudo rpm -i http://10.10.16.31/pub/zabbix/jdk-7u79-linux-x64.rpm 【备机房】 |
安装orabbix插件;
$ cd /tmp/ && wget ftp://10.10.10.28/pub/zabbix/orabbix-1.2.3.tar.gz 【主机房】 $ cd /tmp/ && wget http://10.10.16.31/pub/zabbix/orabbix-1.2.3.tar.gz 【备机房】 #开始安装 $ sudo tar -zcvf /tmp/orabbix-1.2.3.tar.gz -C /opt/ $ sudo cp /opt/orabbix/init.d/orabbix /etc/init.d/orabbix $ sudo chmod +x /etc/init.d/orabbix $ echo ‘/etc/init.d/orabbix start’ >> /etc/rc.local |
修改配置文件,使用前请对应修改中括号值(去掉中括号),如示例;
$ sudo cat > /opt/orabbix/confconfig.props << EOF ZabbixServerList=ZabbixServer1 # ZabbixServer1.Address=10.10.1.1 ZabbixServer1.Address=[zabbixServerIP] #ZabbixServer1.Port=10051 ZabbixServer1.Port=[zabbixServerPort]
OrabbixDaemon.PidFile=./logs/orabbix.pid OrabbixDaemon.Sleep=60 OrabbixDaemon.MaxThreadNumber=200
#DatabaseList=172.10.1.22 #必须和zabbix控制台页面上的主机名称保持一样 DatabaseList=[DBIP] DatabaseList.MaxActive=20 DatabaseList.MaxWait=200 DatabaseList.MaxIdle=1
[DBIP].Url=监听数据库的连接(JDBC瘦连接)【eg:jdbc:oracle:thin:@172.10.1.22:1521/EXDB】 [DBIP].User=数据库只读用户名 [DBIP].Password=数据库只读用户密码 [DBIP].MaxActive=20 [DBIP].MaxWait=200 [DBIP].MaxIdle=1 #SQL执行脚本存放点 [DBIP].QueryListFile=./conf/query.props |
启动和停止:
$ /etc/init.d/orabbix start $ /etc/init.d/orabbix stop |
自定义监控语句添加,修改/opt/orabbix/conf/query.props文件即可,如:
QueryList=监控键值1,监控键值2 # 监控键值1.Query=SQL语句 maxsession.Query=select value "maxsess" from v$parameter where name ='sessions' |
以上自定义监控,需要在Zabbix控制台上添加自定义监控,类型选择Zabbix采集器;键值填写query.props内新加的监控键值,内容如下:
将/opt/orabbix/template/Orabbix_export_full.xml 通过Zabbix模板导入监控模板。
如果查看没有数据获取到,请查看日志/opt/orabbix/logs/orabbix.log 检查相应问题。
4) SNMP设备监控数据采集
网络设备以及使用SNMPv2c方式监控的设备,需要修改设备团体名,在Zabbix控制台,添加主机时宏选项内添加相应的设置:
测试方式,在zabbix服务器上输入以下命令,如果有返回值,则可以排除端口以及命令方面的问题,[snmp_community]为SNMP团体名,[IP]为需要测试的客户端IP;
$ snmptrapd -v2c -c [snmp_community] [IP] . |
5) 自定义监控
添加自定义监控是建议做成模板,方便统一管理。
新建模板;
新建监控项; 添加触发器:
添加图形:
以上,完成简单的自定义监控添加。
6) 自定义监控脚本
自定义监控可以完成部分既定方式的监控(比如:端口监听,ping,CPU状态等),但是如果想自己完全自定义监控项目,则需要配合扩展客户端自定义脚本来进行。
注意事项:
1、自定义脚本需要统一管理存放,方便更换监控主机时方便重新部署。
2、监控结果需要在Zabbix控制台上手动添加监控项、触发器和图形(参考上一节)。
UserParameter=key[*],command |
例如:
Java.oc为监控项,后面的脚本是可以单独运行返回结果。
客户端:
格式注意事项:
1、命令行内如果用到类似变量$2,要使用两个$,例如awk ‘{ print $$2 }’ 监控项自带参数除外;
2、 zabbix禁止使用一些不安全的参数,如下:
\ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @ |
3、如要启用第2项内特殊字符,需要修改客户端配置文件【/etc/zabbix/zabbix_agentd.conf】内以下值:
UnsafeUserParameters=1 |
以上,完成自定义监控项的添加。
四、优化设置
1) Zabbix_Server配置项解析
StartPollers:此项为主动收集数据进程数,需要依照主被模式决定。
StartTrappers:此项为处理Agentd推送过来的数据进程数。
AlertScriptsPath:告警脚本存放位置。
CacheSize:配置缓存,用于存储host,item,trigger数据。根据数量多少进行配置,一般2G左右即可。
CacheUpdateFrequency:配置缓存更新时间,一般默认,不做变动。
DBHost:数据库地址【IP】,按照实际情况填写。
DBName:数据库表明,一般为zabbix。
DBPassword:访问数据库zabbix的密码,填写新建zabbix表时的密码。
DBPort:如果是服务端和数据库分离的话,需要按照实际情况填写端口号。
DBSchema:数据库Schema名称,一般常用于Orcale,DB2数据库。
DBSocket:数据库和服务端在同一台服务器上的话建议启用此项,通过unix socket方式连接数据库。
ExternalScripts:外部扩展脚本存放路径,用于添加zabbix扩展。
FpingLocation:fping绝对路径,zabbix使用简单监控监控存活时会用到fping,因此此项为必填项。
StartPingers:服务端简单检测中ping的初始进程,如果需要检测存活状态的主机很多或者,自定义监控存活频率过高的话,可适当调大此值。
ProxyConfigFrequency:Proxy被动模式下,服务端多少秒同步配置文件到proxy。
ProxyDataFrequency:服务端间隔多少秒向Proxy请求历史数据。
SenderFrequency:发送报警失败后,重试时间间隔(秒)。
StartDiscoverers:自动发现进程数,对服务器资源有消耗,可适当调大(0-250)。
StartHTTPPollers:用于设置WEB监控进程数。
StartIPMIPollers:服务器IPMI硬件监控进程数,因为IPMI获取服务器硬件为主机被动方式,因此如果启用需要适当调整此数值。
TrapperTimeout:处理Trapper数据超时时间。
UnavailableDelay:主机不可用后再次检测时间间隔,【默认:60】。
UnreachableDelay:主机不可达后再次检测时间间隔,【默认:15】。
UnreachablePeriod:主机不可用后,置不可用时间间隔,【默认:45】。
StartVMwareCollectors:用于监控VMWARE Esxi主机实例的进程数量,为0则不启用,若要监控ESXI主机,此值最少为1。
VMwareFrequency:服务端连接获取更新vmware集群结构的最小间隔时间,【默认:60】。
VMwareCacheSize:内存中维护vmware集群结构的空间大小,一般建议为80M。
VMwarePerfFrequency:服务端连接获取更新vmware性能数据最小间隔时间,【默认:60】。
2) Zabbix_Agentd配置项解析
EnableRemoteCommands:说明:是否允许在本地执行远程命令,建议设置为“允许”。
LogRemoteCommands:是否开启本地执行远程命令日志。
Server:和主被模式有关,主动模式需要注释此选项;如果有Proxy的情况下,此处填写Proxy的IP。
StartAgents:被动模式采集数据进程数,如果服务器采集频繁,可适当调大此值。
ServerActive:被动模式此项为必填项目,填写服务器或者ProxyIP。
Hostname:主机名,可以自定义,最好为主机IP,网上建议禁用此项,启用HostnameItem。
HostnameItem:自动获取主机名,次参数可自动获取主机名,如果和Host那么一起启用,则已Hostname为准。
AllowRoot:是否用于使用root运行脚本,0:不允许;1:允许。如果外带脚本需要使用root权限运行时,需要打开次选项。
UnsafeUserParameters:是否启用安全模式,执行用户脚本,0:不启用;1启用。此处安全模式,是指脚本中包含“\ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @”字符。
UserParameter:用户自定义脚本,格式:UserParameter=key,command。
此处列出主要参数多为常用项,偏僻参数未列出。
五、问题与解决
1) Nginx权限报错
查看nginx的error.log日志,发现有:如下报错:
主要报错内容为:
connect() to unix:/tmp/php-cgi.sock failed (13: Permission denied) while connecting to upstream |
解决方法:
Nginx启动账户和php启动账户不一致造成,请检查nginx和php启动账户。
2) Zabbi_Server启动时报错
报错形式:
*.so.*文件找不到。
解决方法:
使用find命令找出后以下操作:
以上,即可。
3) Too many connections报错
报错如下:
修改数据库my.cnf中【max_connections】属性:
修改后重启mysql即可。
4) Zabbix-proxy 数据清理
zabix-proxy 中,proxy-histroy存储数据大小主要根据server端的管家,或者自定义的时间来存储的。因此,如果数据表proxy-history太大时,需要手动删除。以下为手动删除步骤:
1、停止zabbix-proxy上的zabbix进程【zabbix-agent和zabbix-proxy】
2、登陆zabbix-proxy数据库;
3、use zabbix-proxy;
4、truncate table proxy_history; 根据数据量的大小,可能清除时间会比较长。
5、truncate table ids; 此表为记录上传server数据的位置表。
6、启动zabbix-proxy和zabbix-agent 进程。
5)
No Leanote account ? Sign up now.