企业级监控解决方案
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}
添加用户
权限这边选超级管理员
创建动作(跟邮件微信一样)
创建
操作
恢复
到此配置完成