Zabbix部署和常用配置手册

简介

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

安装zabbix

master-client架构

环境

Centos7
Httpd
MariaDB
PHP

安装过程

  1. 下载rpm包安装
# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
# yum clean all
  1. 安装Zabbix server,Web前端,agent
# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent httpd
  1. 创建初始数据库
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> quit;
  1. 导入初始架构和数据,系统将提示您输入新创建的密码。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
  1. 为Zabbix server配置数据
# vim /etc/zabbix/zabbix_server.conf
# 设置数据库密码
DBPassword=password
  1. 为Zabbix前端配置PHP
# vim /etc/httpd/conf.d/zabbix.conf
# 设置php_value的值为 date.timezone Asia/Shanghai
  1. 启动Zabbix server和agent进程并为它们设置开机自启:
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm

现在您的Zabbix server已经安装完成并开始运行

  1. 配置Zabbix前端
    连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix
    根据Zabbix文件里步骤操作: 安装前端

开始使用Zabbix!

一键安装脚本

rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum -y install zabbix-server-mysql
yum -y install zabbix-proxy-mysql
yum -y install zabbix-web-mysql
yum -y install mariadb-server
systemctl start mariadb
mysql -uroot -e "create database zabbix"
sed  's/DBUser=zabbix/DBUser=root/g' -i /etc/zabbix/zabbix_server.conf 
zcat /usr/share/doc/zabbix-server-mysql-3.4.8/create.sql.gz | mysql -uroot zabbix
setenforce 0
systemctl start zabbix-server

问题排障

  1. 前端配置页面红色错误,一般更改php.ini的配置即可
  2. 检查selinux是否开启
  3. 检查firewalld端口是否放行,zabbix-agent默认10050端口
  4. 检查zabbix的错误日志
  5. 前端打不开检查httpd或者nginx的错误日志

监控Nginx状态

nginx编译安装的时候开启http_stub_status_module模块。
增加如下的配置文件,访问http://server_ip_or_name/nginx_status的时候就会返回nginx的状态值

location /nginx_status {
	stub_status  on;
	access_log    off;
	}
	

Shell脚本

#!/bin/bash
HOST="server_ip_or_name"
PORT="80"

function ping {
    /sbin/pidof nginx | wc -l
}
function active {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1

监控JMX

监控JMX需要插件Zabbix Java Gateway

# yum insttall -y zabbix-java-gateway java-1.8.0
# 配置文件位置
# /etc/zabbix/zabbix_java_gateway.conf
# 自己按需修改

数据库优化

使用脚本定期删除数据库中30天之前的文件,一般非核心、不重要的数据保留30天即可。
经过生产环境的实践经验,100台以下的agent端运行半年的数据量大概是70个G。

User="xxx"
Passwd="xxx"
Date=`date -d $(date -d "-30 day" +%Y%m%d) +%s`
mysql -u${User} -p${Passwd} 2> /dev/null -e "
use zabbix;
DELETE FROM history WHERE 'clock' < $Date;
optimize local table history;
DELETE FROM history_uint WHERE 'clock' < $Date;
optimize local table history_uint;
DELETE FROM history_text WHERE 'clock' < $Date;
optimeze local table history_text;"
# 添加定时任务,每周日凌晨两点执行清理脚本
[root@localhost ~]# crontab -e
0  2 * * 0 /root/mysql_clear/clear_his.sh

拓展阅读

官方最新中文文档:
https://www.zabbix.com/cn/manuals

zabbix从入门到放弃系列
http://www.zsythink.net/archives/tag/zabbix/

猜你喜欢

转载自blog.csdn.net/qq_36641456/article/details/89044236