Zabbix监控平台的搭建

Zabbix简介
   基于Web界面的分布式系统监控的企业级开源软件。可以监控各种系统与设备,网络参数,保证服务器设备安全运营;提供灵活的通知机制。
Zabbix的特点和功能
   1.特点
   1)安装与配置简单
   2)可视化web管理界面
   3)免费开源
   4)支持中文
   5)自动发现
   6)分布式监控
   7)实时绘图
   8)email通知
   2.主要功能
   CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监控
zabbix进程:zabbix_agentd、zabbix_sender、zabbix_get、zabbix_server、zabbix_proxy(和zabbix_jave_gateway)
   1.zabbix_agentd:客户端守护进程,收集客户端数据,如cpu负载、内存、磁盘等使用状况。
   2.zabbix_sender:zabbix工具,用于客户端发送数据给server或proxy.通常用于耗时比较长的检查。为防止zabbix超时,可以在脚本执行完成后通过sender主动提交数据。
   3.zabbix_get:zabbix工具,用于server或proxy获取客户端数据。(通常用于排错,如果server收不到客户端数据,可以使用zabbix_get获取数据来做故障排查)
   4.zabbix_server:服务端守护进程。其他守护进程最后数据都要提交给zabbix_server
   5.zabbix_proxy:zabbix代理守护进程,类似中转站。
   6.zabbix_java_gateway:Java网关,类似agentd,但只能用于Java.
   所以zabbix监控有两种模式:
       server_agentd模式:简单,监控主机少。
       server-proxy-agentd模式:监控主机多,减轻server压力。

一/zabbix安装
yum源配置

安装相关软件
yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb zabbix-agent -y

修改PHP时区配置
vim  /etc/httpd/conf.d/zabbix.conf
<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Require all granted

    <IfModule mod_php5.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value always_populate_raw_post_data -1
        php_value date.timezone Asia/Shanghai  #修改成Asia/Shanghai
    </IfModule>
</Directory>

启动数据库
systemctl start mariadb #启动数据库
systemctl enable mariadb #设置数据库开机自启

创建zabbix所用的数据库及用户
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'localhost' identified by '123456';
exit
cd /usr/share/doc/zabbix-server-mysql-3.0.36 zcat create.sql.gz |mysql -uzabbix -p123456 zabbix #导入数据库

修改zabbix配置
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost #数据库所在主机
DBName=zabbix #数据库名
DBUser=zabbix #数据库用户
DBPassword=123456 #数据库密码

启动zabbix及http
systemctl start zabbix-server
systemctl enable zabbix-server
systemctl start httpd
systemctl enable httpd
systemctl start zabbix-agent
systemctl enable zabbix-agent

web界面安装server

客户端安装zabbix-agent
yum install zabbix-agent -y

修改一下参数
vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.190    #IP为服务器IP
ServerActive=10.0.0.190    #IP为服务器IP
Hostname=10.0.0.190    #IP为服务器IP

启动zabbix客户端
systemctl start zabbix-agent
systemctl enable zabbix-agent

客户端自动发现与自动注册功能

修改IP发现范围

添加自动发现动作


添加自动注册功能  
可以查看到已经发现两台客户端
在添加了两台被监控的主机
二/nginx监控

下载nginx的监控模板
在配置-模板-导入,添加模板
给主机与模板链接
在zabbix客户端编写nginx监控脚本
cat /etc/zabbix/zabbix_agentd.d/nginx_lzx.sh
#!/bin/bash

HOST="10.0.0.101"
PORT="80"

#检测nginx进程是否存在
function ping {
    /sbin/pidof nginx | wc -l
    }
# 检测nginx性能
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}'
    }
#执行function
$1

修改客户端zabbix配置文件,重启服务器
vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_lzx.sh $1
systemctl restart zabbix-agent

查看nginx的监控是否开启
curl -L http://10.0.0.101/nginx_status
Active connections: 1
server accepts handled requests
288 288 288
Reading: 0 Writing: 1 Waiting: 0

在服务端安装zabbix测试工具
yum install zabbix-get.x86_64
zabbix_get -s 10.0.0.101 -p 10050 -k "nginx.status[reading]"
0    #服务器可以获取到客户端的监控数据

在服务端可以看到监控参数

三/zabbix邮件告警

编写脚本
cat /usr/lib/zabbix/alertscripts/zabbix_sendmail.py
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_host = ' smtp.163.com '            # 邮箱smtp配置
mail_user = 'xxxxxxxxxxx'                    # 邮箱账号
mail_pass = 'xxxxxxxxxxx'                # 邮箱密码
mail_postfix = '163.com'
def send_mail(to_list,subject,content):
    me = "zabbix监控告警平台"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False
if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

修改脚本路径
vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts

给脚本执行权限,测试脚本,如果发送失败,可能是网络不通,或者163邮箱的imtp/pop3没开
chmod +x zabbix-mail.py
chown -R zabbix.zabbix zabbix-mail.py
python zabbix-mail.py xxxxxxxxxx @qq.com  test test
查看当前被监控的主机
将nginx监控项里的监控时间间隔改为1

在admin用户中添加报警媒介,邮件报警



zabbix服务器报警媒介类型
增加三个参数
{ALERT.SENDTO}    收件人地址
{ALERT.SUBJECT}    主题
{ALERT.MESSAGE}    详细内容
配置报警动作,创建新的触发动作
配置操作
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复操作
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

猜你喜欢

转载自blog.csdn.net/weixin_41052824/article/details/80946005