Zabbix监控平台的搭建





Zabbix简介

基于Web界面的分布式系统监控的企业级开源软件。可以监控各种系统与设备,网络参数,保证服务器设备安全运营;提供灵活的通知机制。

Zabbix的特点和功能

1.特点

1)安装与配置简单

2)可视化web管理界面

3)免费开源

4)支持中文

5)自动发现

6)分布式监控

7)实时绘图

8)email通知

2.主要功能

CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监控

Zabbix监控平台的搭建

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源配置

rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.9-1.el7.x86_64.rpm


安装相关软件

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

访问http://ip/zabbix/setup.php


客户端安装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发现范围


Zabbix监控平台的搭建

添加自动发现动作


Zabbix监控平台的搭建

添加自动注册功能

Zabbix监控平台的搭建

可以查看到已经发现两台客户端

Zabbix监控平台的搭建

在添加了两台被监控的主机

Zabbix监控平台的搭建

二/nginx监控


下载nginx的监控模板

在配置-模板-导入,添加模板

Zabbix监控平台的搭建

给主机与模板链接

Zabbix监控平台的搭建

在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监控平台的搭建

三/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

查看当前被监控的主机

Zabbix监控平台的搭建

将nginx监控项里的监控时间间隔改为1

Zabbix监控平台的搭建

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

Zabbix监控平台的搭建


zabbix服务器报警媒介类型

增加三个参数

{ALERT.SENDTO} 收件人地址

{ALERT.SUBJECT} 主题

{ALERT.MESSAGE} 详细内容

Zabbix监控平台的搭建

配置报警动作,创建新的触发动作

Zabbix监控平台的搭建

配置操作

故障{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}

Zabbix监控平台的搭建

恢复操作

恢复{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}

Zabbix监控平台的搭建

你的浏览器目前处于缩放状态,页面可能会出现错位现象,建议100%大小显示。

上一篇:MySQL数据库用户管理以及数据库用户授权


下一篇:《Ansible权威指南 》一1.2 Ansible发展史