企业级监控解决方案

zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案

zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题。

Zabbix 主要特点

安装与配置简单,学习成本低 支持多语言(包括中文) 免费开源 自动发现服务器与网络设备分布式监视以及 WEB 集中管理功能 可以无 agent 监视 用户安全认证和柔软的授权方式 通过 WEB 界面设置或查看监视结果 email 等通知功能

Zabbix主要功能

监控CPU负载、内存使用、磁盘使用、网络状态、端口监视、日志监视、插件开发自定义

Zabbix运行机制

Zabbix Server 和 Zabbix agent

Zabbix Server 可以通过 SNMP,Zabbix agent,Ping,端口监视等你方法提供对远程服务器/网络状态的 监视,数据收集功能,可以在运行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OX X,Windows 多 平台。

Zabbix Agent 安装在需要被监控的目标服务器上,主要完成对硬件信息与操作系统有关的内存,CPU 等你 信息收集。

Zabbix Server 可以单独监视远程服务器的服务状态,同时也可以与 Zabbix Agent 结合。可以轮询 Zabbix Agent 主动接收监视数据(trapping 传递 方式),同时还可以被动接收 Zabbix Agent 发送的数据。

Zabbix运行过程图

Zabbix 支持多种网络方式下的监控,可以通过分布式的部署和安装监控代理 Zabbix,通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置!Agent 监控端口 10050

服务端安装 Zabbix Server 和 Zabbix Agent 两个服务,客户端只安装 Zabbix Agent 一个服务,监控原理 就是 Zabbix Agent 服务将从系统中获取的相关数据传送给 Zabbix Server,然后 Zabbix Server 服务奖数据分 析之后以 PHP 页面展示出来!

服务器信息:

操作系统

主机名

IP地址

节点角色

CPU

Memory

Centos7.5

xiaoliu10

192.168.0.10

zabbix-server

2

4G

一、server端环境配置

1-1、LAMP以及基本环境安装

直接采用yum的方式进行安装

yum  -y install httpd php mariadb-server mysql-devel php-gd gcc php-mysql php-xml libcurl-devel curl-* net-snmp* libxml2-* php-mbstring php-bcmath ntp libevent-devel php-ldap vim net-tools wget unzip
1.2关闭 Selinux 和防火墙
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld

vim /etc/selinux/config
    SELINUX=disabled

reboot #如果原来的系统开着 selinux,那么需要重启,才能关闭 selinux

1.3同步时间

yum install ntp -y && systemctl enable ntpd.service && systemctl start ntpd.service

1.4配置MySQL数据库

启动mysql服务并设置开机启动

systemctl start mariadb

systemctl enable mariadb

初始化mysql数据库

mysql_secure_installation   #根据提示设置数据库密码

登陆数据库
mysql -uroot -p

查看数据库编码
show variables like 'character_set_%';
创建zabbix使用数据库
create database zabbix;
grant all on zabbix.* to zabbix@localhost identified by 'zabbix123';
flush privileges;

以上命令建立了名为zabbix的数据库,并建立了zabbix用户,设置用户密码为zabbix123,并授权访问zabbix数据库且只允许本机连接改数据库

2源码安装zabbix

2.1编译安装zabbix

下载zabbix源码

cd /tmp/     #临时目录 

wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.2/zabbix-4.0.2.tar.gz

解压
tar zxvf zabbix-4.0.2.tar.gz && cd zabbix-4.0.2

安装 
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 

make install

创建zabbix系统用户 
groupadd zabbix 
useradd -s /sbin/nologin -g zabbix zabbix
导入数据库,注意顺序,否则会报错 
mysql -uroot -p123456 zabbix</tmp/zabbix-4.0.2/database/mysql/schema.sql  #用户密码 

mysql -uroot -p123456 zabbix</tmp/zabbix-4.0.2/database/mysql/images.sql  #用户密码 

mysql -uroot -p123456 zabbix</tmp/zabbix-4.0.2/database/mysql/data.sql    #用户密码

2.2安装Zabbix WEB

apache是用yum安装 默认的web目录为/var/www/html,拷贝zabbix web的文件到这个目录

cd /var/www/html/ 

cp -R /tmp/zabbix-4.0.2/frontends/php/* . 

chown -R apache:apache /var/www/html/

调整参数php参数,编辑php.ini文件
vim /etc/php.ini
384  max_execution_time = 300
394  max_input_time = 300
672  post_max_size = 16M
878  date.timezone = Asia/Shanghai
1315: bcmath.scale = 1
启动http服务器,并设置开机启动
systemctl start httpd
systemctl enable httpd
打开浏览器直接访问zabbix server的IP地址 192.168.0.10,即可看到zabbix web安装页面

点击Next step

(检查一下,看看都OK的,确认没有问题 ps:有问题去根据问题参数去修改php.ini)

直接Next step

这里是设置数据库连接信息,数据库为zabbix,数据库用户为zabbix,密码为zabbix123(之前设置的),填好之后直接Next step

直接Next step

确认信息无误,直接Next step

创建配置文件成功,zabbix web安装成功,点Finish。 默认用户名:Admin 密码:zabbix

3配置zabbix

3.1配置zabbix server

配置zabbix server文件

vim /usr/local/zabbix/etc/zabbix_server.conf

86 DBHost=localhost

94 DBName=zabbix

110 DBUser=zabbix

119 DBPassword=zabbix123

修改以上内容,即可完成对zabbix server的配置 启动zabbix server

/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf

检查启动

netstat -antup | grep zabbix

查看日志有无报错

tail -f /tmp/zabbix_server.log 

设置开机启动 

echo /usr/local/zabbix/sbin/zabbix_server >> /etc/rc.local

配置管理脚本

cp /tmp/zabbix-4.0.2/misc/init.d/fedora/core/zabbix_server /etc/init.d/

vim /etc/init.d/zabbix_server

22 BASEDIR=/usr/local/zabbix #修改此行内容为 zabbix 的安装位置

chkconfig --add zabbix_server

chkconfig  zabbix_server on

3.3配置Zabbix Agent

由于目前zabbix server和zabbix agent都安装在同一台机器上,默认的zabbix agent配置文件已经配置了zabbix server地址为127.0.0.1(本机),所以无需修改,直接用一下命令启动zabbix agent

如果在其他监控机上则需要修改如下

vim /usr/local/zabbix/etc/zabbix_agentd.conf

94 Server=192.168.0.10  #zabbix server 地址,可以多个,用,隔开

135 ServerActive=192.168.0.10  #主动检查主机的数据的数据发送给 Zabbix Server

146 Hostname=xiaoliu*  #被检测主机名

 

只需修改以上三个参数即可

启动agent

/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf 

检查启动

netstat -antup | grep zabbix 


设置开机启动

echo /usr/local/zabbix/sbin/zabbix_agentd >> /etc/rc.local
配置管理脚本

cp /tmp/zabbix-4.0.2/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/

vim /etc/init.d/zabbix_agentd

22 BASEDIR=/usr/local/zabbix #修改此行内容为 zabbix 的安装位置

chkconfig --add zabbix_agentd

chkconfig  zabbix_agentd on

 

4 ZABBIX监控apache

4.1 下载脚本

cd 
wget https://github.com/lorf/zapache/archive/master.zip

解压

unzip master.zip

cd zapache-master


说明:

httpd-server-status.conf.sample 是用于配置server-status的上个步骤已经配置过了

userparameter_zapache.conf.sample 、zapache 关键的文件

zapache-template-active.xml zapache-template.xml模板

将解压出来的几个重要文件放到相应目录

cp userparameter_zapache.conf.sample /usr/local/zabbix/etc/zabbix_agentd.conf.d/ 

cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/

mv userparameter_zapache.conf.sample userparameter_zapache.conf

vim userparameter_zapache.conf

6 UserParameter=zapache[*],/var/lib/zabbixsrv/externalscripts/zapache \$1 

6改为UserParameter=zapache[*],/usr/local/bin/zapache \$1

cp zapache-master/zapache /usr/local/bin/

chmod +X /usr/local/bin/zapache

4.2 zabbix agentd模板导入

导入模板

 

 

然后导入

5 Zabbix邮件报警配置

5.1安装邮件发送工具mailx

yum install mailx

查看mailx版本:

mail -V

5.2配置外部邮箱

vim /etc/mail.rc

在最末尾添加如下

set from=*******@qq.com #发件邮箱

set smtp=smtp.qq.com

set smtp-auth-user=*****@qq.com #发件邮箱

set smtp-auth-password=***  #你的密码  PS:此为QQ邮箱设置的客户端授权密码

set smtp-auth=login

这边的客户端授权密码

测试外部邮箱

echo "this is zabbix test mail" |mailx -s "zabbix" ****@qq.com #接收邮箱

写邮件发送脚本

cd /usr/local/zabbix/share/zabbix/alertscripts/

vim sendmail.sh

\#!/bin/bash

messages=`echo $3 | tr '\r\n' '\n'`

subject=`echo $2 | tr '\r\n' '\n'`

echo "${messages}" | mailx -s "${subject}" $1 >>/tmp/sendmail.log 2>&1

 

授权

chown zabbix.zabbix sendmail.sh 

chmod 755 sendmail.sh

修改主配置文件,让服务读取到这个脚本:

vim /usr/local/zabbix/etc/zabbix_server.conf

506 # AlertScriptsPath=${datadir}/zabbix/alertscripts

为

506 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

touch /tmp/sendmail.log

chmod 777 /tmp/sendmail.log

发送测试脚本

/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh ******@qq.com "测试标题" "测试内容"

 

页面添加

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

5.3配置用户

添加警报媒介

添加报警动作

动作

Action-Email

操作

默认标题:故障{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}

重启server

/etc/init.d/zabbix_server restart

6 Zabbix 钉钉警报

6.1钉钉配置

在群组中添加机器人

选择自定义机器人

创建webhook 用于发送消息的

6.2钉钉脚本配置

编写脚本

cd /usr/local/zabbix/share/zabbix/alertscripts
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os 
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url =
 "https://oapi.dingtalk.com/robot/send?access_token=46e7d1cb4afd4bf4190b6302a514ab474a37cbc6***************55b"#这里就是需要的那webhook  
def msg(text):
   json_text= {
    "msgtype": "text",
    "text": {
        "content": text
     },
     "at": {
        "atMobiles": [
            "189..." #需要@群里谁
        ],
        "isAtAll": True #是否全部@,True为是,False为否
    }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content 
if __name__ == '__main__':
   text = sys.argv[1]
msg(text)

给脚本加权限

chmod 755 dingding.py & chown -R zabbix.zabbix dingding.py

安装模块(没有request模块的话脚本会执行不了)

pip install requests 

测试脚本是否可执行

 ./dingding.py test

 

6.3创建钉钉报警媒介

这边脚本参数添加一个就可以了

{ALERT.MESSAGE}

添加用户

权限这边选超级管理员

创建动作(跟邮件微信一样)

创建

操作

恢复

到此配置完成