Zabbix服务部署

1 简介

1.1 Zabbix

1.2 Agentd主动模式与被动模式

  • agent被动模式:
    server端连接agent抓取数据,但当server监控主机过多,造成server性能损耗过大,容易造成web卡顿,502情况,图层断裂不连续,开启pollar太多,占用服务器负载过大
  • 优化方式:
  1. proxy或者node模式做分布式监控
  2. 调整agentd为主动模式
    修改zabbix_agentd.conf配置文件:
    ServerActive=192.168.200.182:10051
    Hostname:192.168.200.182(或主机名,需要本地映射)
    StartAgents=1(取消注释)
    修改zabbix_server.conf配置文件:
    StartPollers=10(减少server主动收集数据进程)
    StartTrappers=200(增加负责处理agentd推送过来的数据的进程)
    修改web监控项:
    监控项类型由zabbix客户端改为zabbix客户端(主动式)

2 ZabbixServer的安装

linux版本:CentOS 7.5
内核版本:3.10.0-862.el7.x86_64

2.1 搭建自定义yum源从库安装支持包

#安装自定义yum相关命令
yum -y install createrepo

vim rpm.repo
#添加内容
[rpm]
name=rpm
baseurl=file:///root/rpm/
gpgcheck=0
enabled=1

#安装一系列安依赖包
yum -y install pcre pcre-devel zlib-devel libaio libaio-devel libxml2 libxml2-devel bzip2-devel openssl openssl-devel net-snmp-devel net-snmp curl-devel gd gcc gcc-c++ make libjpeg-devel libpng-devel libcurl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker mysql-devel net-snmp-utils

#若下面这步出现问题,关闭光盘源(centos 6.5的情况)
yum -y install libvpx-devel gd-devel

2.2 部署LNMP环境

2.2.1 安装nginx

useradd -M -s /sbin/nologin nginx
cd ~
tar xf nginx-1.10.2.tar.gz -C /usr/src/
cd /usr/src/nginx-1.10.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module && make && make install 
echo $?

ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
cd /usr/local/nginx/conf/
egrep -v “^$|#” nginx.conf.default > nginx.conf

vim nginx.conf
#内容为:
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include     mime.types;
    default_type     application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.php index.html index.htm;
            }
	    location = /nginx-status {
	        stub_status on;
	        access_log off;
            }
        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	        include	fastcgi_params;
	        } 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
            }
    }
}
    
#检查nginx配置文件无误
nginx -t

2.2.2 安装mysql

tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv mysql-5.5.32-linux2.6-x86_64/ mysql
cd mysql/
/bin/cp support-files/my-small.cnf /etc/my.cnf
useradd -M -s /sbin/nologin mysql
chown -R mysql.mysql data/
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig mysqld on
/etc/init.d/mysqld start
ln -s /usr/local/mysql/bin/* /usr/bin
ss -antup | grep mysql

2.2.3 安装libmcrypt

tar xf libmcrypt-2.5.8.tar.gz -C /usr/src/
cd /usr/src/libmcrypt-2.5.8/
./configure && make && make install
echo $?

2.2.4 安装GD

tar xf GD-2.18.tar.gz -C /usr/src/
cd /usr/src/GD-2.18/
perl Makefile.PL
echo $?
make && make install
echo $?

2.2.5 安装PHP

tar xf php-5.6.30.tar.gz -C /usr/src/
cd /usr/src/php-5.6.30/
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-bz2 --with-curl --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
    
echo $?
make && make install
echo $?

#创建php配置文件
cp php.ini-development /usr/local/php/etc/php.ini
#修改php配置文件,优化一些参数
vim /usr/local/php/etc/php.ini
372行 max_execution_time = 300
382  max_input_time = 300
393  memory_limit = 256M
660  post_max_size = 32M
702  always_populate_raw_post_data = -1
820  upload_max_filesize = 16M
936  date.timezone = Asia/Shanghai
    
#创建php-fpm配置文件,修改参数
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
148行 user = nginx
150 group = nginx
#用户需要和nginx程序用户相同

2.3 安装zabbix server端

2.3.1 编译安装zabbix server

useradd zabbix -s /sbin/nologin -M
tar xf zabbix-3.2.4.tar.gz -C /usr/src/
cd /usr/src/zabbix-3.2.4/
./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2
make && make install

ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
ln -s /usr/local/zabbix/bin/* /usr/local/bin/

2.3.2 配置zabbix的mysql环境

zabbix server用本机的mysql库就可以,需要对mysql进行一些操作

#创建zabbix相关库和管理用户
mysqladmin -uroot password '123123'
mysql -uroot -p123123 -e 'create database zabbix character set utf8;'
mysql -uroot -p123123 -e "grant all privileges on zabbix.* to zabbix@'localhost' identified by '123123';"
mysql -uroot -p123123 -e 'flush privileges;'

#导入zabbix相关数据,顺序不能错
mysql -uzabbix -p123123 zabbix < /usr/src/zabbix-3.2.4/database/mysql/schema.sql
mysql -uzabbix -p123123 zabbix < /usr/src/zabbix-3.2.4/database/mysql/images.sql 
mysql -uzabbix -p123123 zabbix < /usr/src/zabbix-3.2.4/database/mysql/data.sql

2.4 安装zabbix的web GUI

#复制zabbix web目录到nginx网页目录
cp -rp /usr/src/zabbix-3.2.4/frontends/php /usr/local/nginx/html/zabbix
cd /usr/local/nginx/html/
chown -R nginx.nginx zabbix

2.5 启动各服务,web端安装zabbix

#启动nginx
nginx
ss -antup | grep nginx

#启动php-fpm
/usr/local/php/sbin/php-fpm
ss -antup | grep php-fpm

该目录下,并没有zabbix.conf.php配置文件,经过web端交互安装zabbix后,自动生成
ls /usr/local/nginx/html/zabbix/conf

浏览器输入IP/zabbix进入zabbix安装界面

  1. zabbix对环境进行检测
  2. 输入数据库IP(本地是localhost),0代表使用mysql默认端口3306,之前创建的zabbix库和管理用户,密码
  3. localhost,10051,zabbixserver
  4. 安装完成,录入的信息会保存在/usr/local/nginx/html/zabbix/conf/zabbix.conf.php文件中
  5. 登录后,可以修改为中文界面,但此时server端还没开启,所以会报错

3 Zabbix server的配置

3.1 修改zabbix_server.conf配置文件

cd /usr/local/zabbix/etc/
vim zabbix_server.conf
#修改以下行的内容
12  ListenPort=10051
#zabbix server监听端口
38  LogFile=/tmp/zabbix_server.log     
#zabbix server日志路径
87  DBName=zabbix   
#zabbix server连接MySQL数据库的数据库名
103  DBUser=zabbix   
#zabbix server连接MySQL数据库的用户名
111  DBPassword=123123   
#zabbix server连接MySQL数据库的密码
118  DBSocket=/tmp/mysql.sock    
#MySQL的实例文件位置
136  StartPollers=5  
#用于设置zabbix server服务启动时启动Pollers(主动收集数据进程)的数量,数量越多,则服务端吞吐能力越强,同时对系统资源消耗越大
165  StartTrappers=10    
#用于设置zabbix server服务启动时启动Trappers(负责处理Agentd推送过来的数据的进程)的数量。Agentd为主动模式时,zabbix server需要设置这个值大一些
181  StartDiscoverers=10 
#用于设置zabbix server服务启动时启动Discoverers进程的数量,如果zabbix监控报Discoverers进程忙时,需要提高该
297  ListenIP=0.0.0.0    
#zabbix server启动的监听端口对哪些ip开放,Agentd为主动模式时,0.0.0.0为任意IP
447  AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts  
#zabbix server运行脚本存放目录,一些供zabbix server使用的脚本,都可以放在这里

3.2 添加相关服务和端口到系统配置文件

tail -4 /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

3.3 添加管理维护脚本

zabbix_agentd端采用rpm安装可以便于使用ansible,且自动添加启动脚本到/etc/init.d/下,这里只使用源码解压后的server端启动脚本

#使用server端启动脚本,加入开机自启
cp /usr/src/zabbix-3.2.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
chmod +x /etc/init.d/zabbix_server
chkconfig zabbix_server on

#开启server端
/etc/init.d/zabbix_server start
netstat -antup | grep zabbix_server

4 Zabbix_agent的安装与配置

  • zabbix agent端使用rpm安装,版本需要和server端的源码包版本相同,可以网络下载
  • agent端的rpm包是方便在服务器进行快速安装,为了统一,监控端和被监控端的zabbix agent都使用rpm安装,

    cd ~
    wget http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-agent-3.2.4-1.el6.x86_64.rpm
    rpm -ivh zabbix-agent-3.2.4-1.el6.x86_64.rpm

修改zabbix agent端的配置文件以下行的内容
vim /etc/zabbix/zabbix_agentd.conf

13  PidFile=/var/run/zabbix/zabbix_agentd.pid
\#进程pid存放路径
32  LogFile=/var/log/zabbix/zabbix_agentd.log   
\#zabbix agent日志存放路径
95  Server=127.0.0.1,192.168.200.182  
\#指定zabbix server端IP地址
103  ListenPort=10050    
\#指定agentd的监听端口
120  StartAgents=3       
\#指定启动agentd进程数量。设置0表示关闭
136  ServerActive=192.168.200.182:10051
\#启用agnetd主动模式,启动主动模式后,agentd将主动将收集到的数据发送到zabbix server端,Server Active后面指定的IP就是zabbix server端IP
147  Hostname=192.168.200.182
\#需要监控服务器的主机名或者IP地址,若是主机名,最好本地映射
265  Include=/etc/zabbix/zabbix_agentd.d/    
\#相关配置都可以放到此目录下,自动生效
284  UnsafeUserParameters=1  
\#启用agent端自定义item功能,设置此参数为1后,就可以使用UserParameter指令了。UserParameter用于自定义item

启动agent端
/etc/init.d/zabbix-agent start
ss -antup | grep zabbix_agent
chkconfig zabbix-agent on

5 测试zabbix server 监控

使用zabbix_get命令测试,可测试的监控项在/etc/zabbix/zabbix_agentd.d/的文件中

测试键值
/usr/local/zabbix/bin/zabbix_get -s 192.168.0.221 -p 10050 -k "system.uptime"
-s 是指定zabbix agent端的IP地址
-p 是指定zabbix agent端的监听端口
-k 是监控项,即item
如果有输出结果,表面zabbix server可以从zabbix agent获取数据,配置成功

6 Zabbix操作

6.1 创建模板

  • 模板中,可以添加应用集,监控项,触发器,图形

  • 应用集:监控项合集

  • 监控项:后台配置键值及命令行,前台利用键值,获取服务器的某项数据

  • 触发器:根据监控项获得的数据,与阈值比较,符合触发表达式则触发警报(选择触发等级)
    常用表达式|编写方法
    ------|
    avg|返回一段时间的平均值,一个参数代表平均值,第二个表示漂移,从第二参数前算时间,#n表示最近n次的值,如:avg(5)最近5s的平均值、avg(#5)最近5个值的平均值、avg(60,3600)一小时前的60s内平均值
    last|最近的值,#n表示最近第n个值,如last(0)≈last(#1)最后一个值,last(0,3600)一小时前的最后一个值
    nodata|指定时间间隔内,返回值为1表示没有收到数据,0表示收到数据,例如:nodata(5m)=1,5分钟内未收到数据
    sum|返回指定时间间隔收集到的值总和
    change|返回最近获得值与之前获得值的差值,对于字符串0表示相等,1表示不同,例如:change(0)>n,参数一般输入0,表示最近得到的值与上个值的差值大于n,则表达式成立
    diff|返回值为1,表示最近的值与之前的值不同,0为相同。例如:diff(0)>0,表示现在获取的值如果和之前的不同就告警

  • 图形:与监控项链接,直观的表达数据

  • 具体动作:

  1. 配置–>模板(选择一个)–>自定义模板名称,选择群组
  2. 添加应用集–>自定义应用集名
  3. 添加监控项–>自定义名称,可选择类型(客户端被动或主动式),键值需要后台设定,或应用zabbix已有的,选择应用集
  4. 添加触发器–>名称,严重性,表达式(选择链接的监控项,功能及阈值),可以进行测试

7 报警媒介,动作

7.1 QQ邮件告警平台

7.1.1安装sendemail

#下载软件
wget http://caspian.datconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
#安装依赖包及软件
yum -y install perl-Net-SSLeay perl-IO-Socket-SSL
tar xf sendEmail-v1.56.tar.gz -C /usr/local/
cd /usr/local/sendEmail-v1.56/
/bin/cp -ra sendEmail /usr/local/bin/
chmod +x /usr/local/bin/sendEmail

参数|作用
–|
-f|发件人邮箱
-t|收件人邮箱
-s|发件人邮箱的smtp服务器
-u|主题
-o|-o message-charset=utf8 邮件内容编码使用中文,-o message-content-type=html 邮件内容格式为html,-o tls=no 不使用tls加密
-xu|发件人邮箱名
-xp|发件人邮箱授权码
-m|内容

7.1.2调整qq邮箱设置

开启POP3/SMTP,IMAP/SMTP,生成授权码并记录
发送邮件脚本为
/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
给执行权限,并修改属主为zabbix

#!/bin/bash

to=$1

subject=$2
body=$3

from=1198563987@qq.com
smtp=smtp.qq.com
passwd=xvracxizrgecbafh

/usr/local/bin/sendEmail -f "$from" -t "$to" -u "$subject" -s "$smtp" -o message-content-type=html -o message-charset=utf8 -xu "$from" -xp xvracxizrgecbafh -m "$body" -o tls=no

7.1.3 修改zabbix_server.conf配置文件

将447行修改为
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
然后重启zabbix_server

7.1.4 web创建报警媒介

配置–>报警媒介类型,创建新媒介–>定义名称,类型选择脚本,填好正确脚本名sendmail.sh,传递参数为{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESSAGE}

7.1.5 接收用户设置

管理–>用户,选择一个–>报警媒介,选择媒介,定义收件人邮箱,哪些严重性收邮件

7.1.6 创建报警动作

配置–>动作,定义名称,计算方式为或,条件(到触发器触发何种报警,执行该动作)–>操作,持续时间定义60,接收人和信息如下文,增加新操作(步骤1-3表示持续时间内共发1-3次邮件,添加用户,“仅送到”选择该用户可使用的报警媒介)

题目/接收人
故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
内容/信息:
告警主机:&nbsp;{HOSTNAME1}<br/>
告警时间:&nbsp;{EVENT.DATE} {EVENT.TIME}<br/>:
告警等级:&nbsp;{TRIGGER.SEVERITY}<br/>
告警信息:&nbsp;{TRIGGER.NAME}<br/>
告警项目:&nbsp;{TRIGGER.KEY1}<br/>
问题详情:&nbsp;{ITEM.NAME}&nbsp{ITEM.VALUE}<br/>
当前状态:&nbsp;{TRIGGER.STATUS}&nbsp{ITEM.VALUE1}<br/>
事件ID:&nbsp;{EVENT.ID}

8 用户参数user parameters:

agent端配置,往后方命令传参数,只支持一个,一般应用于脚本
UserParameter=key[*],command $1
在web端使用该键值时,可在[ ]中指定参数,来创建监控项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值