2019独角兽企业重金招聘Python工程师标准>>>

常见开源监控软件

  • cacti、nagios、zabbix、smokeping、open-falcon等等

  • cacti、smokeping偏向于基础监控,成图非常漂亮

  • cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图

  • open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究

  • 目前流行的监控为: zabbix ,Prometheus+grafana

  • 扩展:使用Prometheus+grafana打造高逼格监控平台:http://blog.51cto.com/youerning/2050543


zabbix监控介绍

  • C/S架构,基于C++开发,监控中心支持web界面配置和管理
  • 单server节点可以支持上万台客户端
  • 最新版本3.4,官方文档https://www.zabbix.com/manuals
  • zabbix需要LAMP环境。

zabbix监控的5个组件

  • zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
  • 数据存储 存放数据,比如mysql
  • web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因
  • zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力
  • zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报


安装zabbix

首先要准备两台机器。

官网下载地址 www.zabbix.com/download

下载yum源 wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

下载好后安装 :rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

两台机器都要下载安装

有了yum源之后需要yum安装以下软件:

  • 服务端安装:

yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

  • 客户端安装:

yum install -y zabbix-agent

  • 会连带安装httpd和php
  • 如果mysql之前没有安装的话,需要根据lamp那一章的mysql安装方法安装mysql,也可以yum安装mysql

编辑vim /etc/my.cnf 增加字符集 utf8

如果不设置在web界面zabbix中文显示会有问题。

增加内容如下:

character_set_server = utf8

添加完后重启下mysql

mysql创建库

  • 首先登陆 mysql -uroot -p123456

  • 登陆后指定字符集 create database zabbix character set utf8;

  • 为了让php代码链接mysql等,在创建用户,指定来源IP,创建密码。

grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';

  • 退出

导入原始数据

没有这些数据zabbix无法工作。

  • cd /usr/share/doc/zabbix-server-mysql-3.4.11/
  • gzip -d create.sql.gz
  • 导入: mysql -root -p123456 zabbix < create.sql
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/
[root@localhost zabbix-server-mysql-3.4.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@localhost zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz
[root@localhost zabbix-server-mysql-3.4.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README
[root@localhost zabbix-server-mysql-3.4.11]# mysql -root -p123456 zabbix < create.sql
Warning: Using a password on the command line interface can be insecure.
[root@localhost zabbix-server-mysql-3.4.11]# 

修改zabbix启动文件不然无法正常启动

vim /etc/zabbix/zabbix_server.conf

  • 定义数据库IP(搜索DBHost)
### Option: DBHost
#       Database host name.
#       If set to localhost, socket is used for MySQL.
#       If set to empty string, socket is used for PostgreSQL.
#
# Mandatory: no
# Default:
# DBHost=localhost
DBHost=127.0.0.1

正常生产环境中数据库可能在另一台机器上,需要定义那台机器得IP.

  • 定义DBName 要和数据库定义得名字一样

  • 定义DBUser,以及密码。

# DBUser=DBUser=zabbix
DBPassword=aming-zabbix

之后启动zabbix服务

  • systemctl start zabbix-server

启动后用ps aux |grep zabbix检查一下,如果出现特别多得内容说明启动成功了,如果只有几行说明启动得有问题。

  • 启动httpd服务:systemctl start httpd(启动前检查是否启动了nginx监听80端口,如果启动需要停掉)

  • 加入开机启动里: systemctl enable zabbix-server ,systemctl enable httpd

检查zabbix监听端口(10051)

  • netstat -lntp |grep zabbix
[root@localhost ~]# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      2486/zabbix_server
tcp6       0      0 :::10051                :::*                    LISTEN      2486/zabbix_server

之后可以配置zabbix web界面了

  • 访问zabbix-server IP/zabbix/出现如下界面:

  • 点下一步后出现报错,Time zone for PHP is not set (configuration parameter "date.timezone").

只看faild 不用管ok的。vi /etc/php.ini 找到timezone,添加

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone =Asia/Shanghai

定义完成之后重启httpd服务。之后刷新网页就会没有刚刚的报错,直接点下一步即可。

  • 之后填写以下数据库的信息,跟服务器设置保持一致即可。

  • 下一步后,填写name无所谓写什么自定义即可。

  • 完成之后出现登陆界面,默认用户名:Admin 密码:zabbix

  • 进入后台第一件事情就是修改密码

忘记zabbix 登陆Admin密码如何做

  • 进入mysql数据量命令行,选择zabbix库
mysql -u root -p123456
use zabbix
  • mysql -uroot -p zabbix

  • update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;

  • 这样就更改了Admin用户的密码

Zabbix 客户端配置

  • 编辑配置 vim /etc/zabbix/zabbix_agentd.conf //修改如下配置

其中有三个地方需要修改

Server=127.0.0.1修改为Server=192.168.159.128 //定义服务端的ip(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.159.128 //定义服务端的ip(主动模式)
Hostname=Zabbix server修改为Hostname=aming-01 //这是自定义的主机名,一会还需要在web界面下设置同样的主机名
  • systemctl start zabbix-agent 启动服务
  • systemctl enable zabbix-agent 设置开机自启

主动模式和被动模式

  • 主动或者被动是相对客户端来讲的

  • 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端

  • 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。

  • 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。

  • 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式


添加监控主机

  • 首先添加主机群组 aming-text

  • 然后点击主机,添加主机命名为:aming-01,配置如图:

监控项可定义主动模式被动模式

  • 应用集就是监控项目的集合

  • 自动发现规律:会自动发现客户端的磁盘分区,网卡流量,文件系统进行监控。

添加自定义模板

  • 首先先新建模板

  • 然后链接其他模板

之所以链接模板是因为会把自动发现选项的模板也链接过来。自动发现的模板无法单独复制。链接完之后,把不需要的在删除。

  • 删除链接模板

链接之后的模板无法删除,因为是链接其他组的膜拜你。但是取消链接之后,自定义组会保留之前链接的所有模板,这样就可以删除没有用的了。

  • 然后就可以删除无用模板

先删除监控项,后删除应用集。

保留以下选项,其他都可以删除

最后一定要选择主机,把刚刚建好的模板给连接上,

处理图形中的乱码

  • 刚开始看图形界面会出现汉字无法显示的情况

设置为中文后,zabbix图形的中文文字会显示小方框 这是因为在zabbix的字体库中没有中文字体,需要从windows上借用一个过来

  • 更改字体服务端打开 vim /usr/share/zabbix/include/defines.inc.php //搜索ZBX_FONTPATH

它定义的路径是“fonts”,它是一个相对路径,绝对路径为/usr/share/zabbix/fonts,而字体文件为“ZBX_GRAPH_FONT_NAME”所定义的“graphfont”,它是一个文件,绝对路径为/usr/share/zabbix/fonts/graphfont windows字体路径为“C:\Windows\Fonts\”,找到“simfang.ttf”(其实就是那个仿宋简体),先把它复制到桌面上,然后上传到linux的/usr/share/zabbix/fonts/,并且改名为graphfont.ttf

自动发现

  • 把自动发现更新时间改为1分钟,然后重启server和agent

  • 看到图形就会自动识别网卡之类的

  • 为了防止服务器压力,在更新出新图表后把自动发现更新时间改为时间稍微长一点。


添加自定义监控项目

需求:监控某台web的80端口连接数,并出图

  • 编辑 vim /usr/local/sbin/estab.sh //内容如下
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
  • chmod 755 /usr/local/sbin/estab.sh

  • 客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf//增加

UnsafeUserParameters=1  //表示使用自定义脚本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh (这个名字后面要填写到键值里面key)//自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,参数由逗号分隔如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh
  • 重启zabbix-agent服务 systemctl restart zabbix-agent

  • 首先到服务端验证,看客户端脚本是否生效,执行命令值为0,说明正常

[root@localhost ~]# zabbix_get -s 192.168.159.130 -p 10050 -k 'my.estab.count'
0
  • 然后在zabbix监控中心(浏览器)配置增加监控项目

  • 添加图形

  • 添加触发器

表达式


配置邮件告警

使用163或者QQ邮箱发告警邮件

首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务

开启并记录授权码

然后到监控中心设置邮件告警

  • “管理”,“报警媒介类型”,“创建媒体类型”

  • 脚本参数 {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

  • 脚本必须放在这个目录下, 因为服务端的配置文件就是这样定义的,/usr/lib/zabbix/alertscripts/

  • 在客户端创建脚本mail.py

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *def sendqqmail(username,password,mailfrom,mailto,subject,content):gserver = 'smtp.qq.com'gport = 25try:msg = MIMEText(unicode(content).encode('utf-8'))msg['from'] = mailfrommsg['to'] = mailtomsg['Reply-To'] = mailfrommsg['Subject'] = subjectsmtp = smtplib.SMTP(gserver, gport)smtp.set_debuglevel(0)smtp.ehlo()smtp.login(username,password)smtp.sendmail(mailfrom, mailto, msg.as_string())smtp.close()except Exception,err:print "Send mail failed. Error: %s" % errdef main():to=sys.argv[1]subject=sys.argv[2]content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)if __name__ == "__main__":main()#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
  • 权限一定不要忘记更改 chmod 755 /usr/lib/zabbix/alertscripts/mail.py

  • 测试脚本是否可用

[root@localhost alertscripts]# python mail.py 13261666323@163.com "这是一个测试标题" "这是一个测试内容,124234djgajgoaiodjboshjb"

测试成功,只不过中文是乱码。

创建一个接受告警邮件的用户

创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing”,注意用户的权限,如果没有需要到用户组去设置权限

  • 用户组设置权限

  • 设置动作

设置动作,“配置”,“动作”,“创建动作”,名称写“sendmail”(自定义),“操作”页面,内容如下

HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}

新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类,操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”

切换到“恢复操作”,把信息改成如下

HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}

点击“新的”,“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”

测试告警


测试告警

估计把监控改成有问题的,测试是否会发送邮件。

  • 创建自定义触发器

此触发器是检测系统负载小于1的时候发送邮件。

邮件发送成功


扩展

  • zabbix监控交换机(思科) http://tryrus.blog.51cto.com/10914693/1789847

  • zabbix远程执行命令 http://www.ywnds.com/?p=6610

  • zabbix分布式部署 http://sfzhang88.blog.51cto.com/4995876/1364399

  • zabbix监控tomcat(版本有点老,大家只需要参考步骤,不能照搬) http://www.fblinux.com/?p=616

转载于:https://my.oschina.net/u/3852961/blog/1865867

zabbix监控搭建相关推荐

  1. zabbix监控搭建以及客户端安装

    1.安装LANMP环境 yum -yinstall gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysqlhttpd-manual mo ...

  2. zabbix监控远端主机

    接着上一篇博客,zabbix监控搭建起来以后,怎么用来监控其他主机呢,这一篇就来简单讲一下,希望对大家有所帮助. 安装一些依赖包 [root@winter ~]# yum install curl c ...

  3. Linux实战教学笔记49:Zabbix监控平台3.2.4(一)搭建部署与概述

    https://www.cnblogs.com/chensiqiqi/p/9162986.html 一,Zabbix架构 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企 ...

  4. Linux监控平台搭建( zabbix监控)

    2019独角兽企业重金招聘Python工程师标准>>> Linux监控平台搭建( zabbix监控) 一.Linux监控平台介绍 1.监控存在的原因 站点出了问题,没有人知道,等用户 ...

  5. 技术分享 | 使用 Zabbix + Grafana 搭建服务器监控系统

    搭建 Linux 服务器监控的目的是防止以下现象:自己有一台阿里云服务器内存是 2g 的 , 多开一些软件就会把内存和 CPU 使用率弄的很高,最终导致服务器卡死. 所以基于这个痛点,想知道当前的 C ...

  6. 实操:基于LNMP搭建zabbix监控

    文章目录 一:环境准备: 二:zabbix概述 2.1 查看官网 2.2 zabbix与nagios 2.3 zzbbix介绍 2.4 zabbix软件包 三:基于LNMP搭建zabbix 3.1 创 ...

  7. kubernetes集群搭建Zabbix监控平台

    kubernetes集群搭建Zabbix监控平台 一.zabbix介绍 1.zabbix简介 2.zabbix特点 3.zabbix的主要功能 4.zabbix架构图 二.检查本地k8s环境 1.检查 ...

  8. Zabbix监控系统搭建飞书机器人告警

    Zabbix监控系统搭建&飞书机器人告警 操作系统:CentOS7x64 Zabbix版本:5.0LTS 参考官网链接:下载Zabbix 5.0 LTS for CentOS 7, MySQL ...

  9. 搭建zabbix监控系统

    要想实时的了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的选择,而zabbix监控系统则在众多监控软件中脱颖而出. zabbix是一个基于web界面的企业级开源监控软件,Zab ...

最新文章

  1. 你所需要的java基础篇深入解析大汇总
  2. 登录业务介绍(单点登录)
  3. 练习作品13:电子试卷自动生成软件
  4. CNCF发布K8s项目历程报告,35k贡献者有你吗?
  5. 阿帕奇跨域_阿帕奇骆驼遇见Redis
  6. 拖动小游戏html,Cocos Creator 入门篇-拖拽小游戏(一)
  7. MySQL安装与java配合
  8. jhipster使用简明教程
  9. 如何从12306网站下载自己喜欢的手机铃声
  10. J-flash 的简易使用教程
  11. iOS打包静态库的姿势
  12. cad导入图片之间相互转换
  13. TA-LIB】之MACD
  14. JS实现环绕地球飞行的3D飞行线动画效果(JS+HTML)
  15. 一大波无门槛优惠券来袭(仅限300张)
  16. Android生命周期详解
  17. easyCVR接入华为Vpaas(VCN/IVS) GB28181记录
  18. Spring Boot事务
  19. 苹果微信分身版ios_苹果iOS系统的设备怎样安装两个微信
  20. 罗伯塔·威廉姆斯(roberta williams)是世界上第一位图形计算机游戏设计师,但她以...

热门文章

  1. 一、mysql使用入门
  2. 【Python 2 到 3 系列】 print 是函数
  3. 最近遇到的jsfl开发问题总结
  4. wmsys.WM_CONCAT
  5. 前端(六)——CSS之浮动和定位
  6. 机器人学习--Turtelbot3学习-- Burger与waffle等版本的切换
  7. 北斗导航 | 从存储的log日志(NMEA0183标准输出)中获取经纬度并在地图中绘制坐标轨迹(附Matlab源代码)
  8. linux sql failed,Cacti SQL Failed! Error:’1062′故障排除
  9. c语言比较麻烦的编程题,C语言编程题,比较简单
  10. 用友二次开发_详解ERP系统与MES系统的数据传递——永康用友