zabbix监控服务

烈酒焚心 提交于 2019-12-18 11:51:42

zabbix介绍 

  Zabbix简介

   Zabbix 是一个高度集成的网络监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用。具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制).Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 web 端展示和配置:

  1. Client(被监控)端: 主机通过安装 agent 方式采集数据,网络设备通过 SNMP 方式采集数据

  2. Server (服务)端: 通过收集 SNMP 和 agent 发送的数据,写入数据库再通过 php+apache 在 web 前端展示。

Zabbix功能:

  1. 支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)

  2. 支持自动发现(low discovery)key 实现动态监控项的批量监控(需写脚本)

  3. 支持分布式,能集中展示、管理分布式的监控点

  4. 扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)

zabbix原理图:

 

编写插件容易,可以自定义监控项,报警级别的设置。数据收集:

  1. 可用和性能检测

  2. 支持 snmp(包括 trapping and polling ),IPMI,JMX,SSH,TELNET

  3. 自定义的检测

  4. 自定义收集数据的频率

  5. 服务器/代理和客户端模式

  6. 灵活的触发器

  7. 可以定义非常灵活的问题阈值,称为触发器,从后端数据库的参考值

  8. 高可定制的报警

  9. 发送通知,可定制的报警升级,收件人,媒体类型

  10. 通知可以使用宏变量有用的变量

  11. 自动操作包括远程命令

  12. 实时的绘图功能

  13. 监控项实时的将数据绘制在图形上面

WEB 监控:

  1.ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间Api 功能

应用 api 功能:

  1.可以方便的和其他系统结合,包括手机客户端的使用。

监控服务端部署

主机名 ip地址 说明
zabbix 172.16.1.71 监控服务端
web01 172.16.1.7 监控客户端

服务端部署

 官网: https://www.zabbix.com/cn/

配置环境:

  系统:centos7.6  php版本:5.4  数库版本:mariadb5.7  Zabbix版本:4.0

 

  更新zabbix源:

  rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
  rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.noarch.rpm  -- 老版本

  下载安装zabbix服务端相关软件 LAMP

  zabbix服务程序软件: zabbix-server-mysql

  zabbix服务web软件: zabbix-web-mysql httpd php

  数据库服务软件: mariadb-server

 yum install -y zabbix-server-mysql zabbix-web-mysql httpd php mariadb-server

  配置文件

vim /etc/zabbix/zabbix_server.conf

100:DBName=zabbix
116:DBUser=zabbix
125:DBPassword=zabbix

vim /etc/httpd/conf.d/zabbix.conf

 20         # php_value date.timezone Europe/Riga   欧洲/拉脱维亚 时间更改为亚洲上海
 更改为:
 20         php_value date.timezone Asia/Shanghai

数据库部署

  1. 创建zabbix数据库

 yum  install mariadb mariadb-devel mariadb-server   -y
systemctl start mariadb.service 
systemctl status mariadb.service
systemctl enable mariadb.service

  mysql

create database zabbix  character set utf8 collate utf8_bin;   --- 默认拉丁字符集
# 创建数据库管理用户
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

  在zabbix数据库中导入相应的表信

  zcat /usr/share/doc/zabbix-server-mysql-4.0.15/create.sql.gz|mysql -uzabbix -pzabbix zabbix

启动zabbix程序相关服务

  数据库服务 zabbix服务 httpd服务

systemctl start zabbix-server.service httpd mariadb.service
systemctl enable zabbix-server.service httpd mariadb.service

  LNMP: nginx 服务 php 服务

  LAMP: httpd 服务 php 模块

登录zabbix服务端web界面, 进行初始化配置

http://10.0.0.71/zabbix/setup.php

 

 输入密码:

zabbix名称:

登录:

登录zabbix服务web页面 用户名Admin 密码zabbix

10051  zabbix-server 服务端端口号
10050  zabbix-agent  客户端端口号
/etc/zabbix/web/zabbix.conf.php   -- 记录web页面初始化信息

监控客户端部署

更新清华源

清华源网址:https://mirrors.tuna.tsinghua.edu.cn/

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm   

下载zabbix客户端

yum install -y zabbix-agent

编写zabbix客户端配置文件

vim /etc/zabbix/zabbix_agentd.conf

  98 Server=172.16.1.71 # 监控主机服务端的ip地址

启动zabbix-agent服务

[root@zabbix ~]# systemctl start zabbix-agent

[root@zabbix ~]# netstat -lntup|grep 10050

 tcp      0     0 0.0.0.0:10050           0.0.0.0:*            LISTEN      4509/zabbix_agentd  
 tcp      0     0 :::10050                :::*                 LISTEN      4509/zabbix_agentd    

将客户端添加到服务端

添加主机:

 

添加模板:

 

查看:

添加自定义监控项

概述

  有时候当我们监控的项目在zabbix预定义的key中没有定义时,这时候我们可以通过编写.zabbix的用户参数的方法来监控我们要求的项目item。形象-点说zabbix代理端配置文件中的User parameters就相当于通过脚本获取要监控的值,然后把相关的脚本或者命令写入到配置文件中的User parameter中然后zabbix server读取配置文件中的返回值通过处理前端的方式返回给用户。

  用户参数的语法:

  UserParameter= <key> , <command>

  其中UserParameter为关键字,key为用户自定义key名字可以随便起,<command> 为我们要运行的命令或者脚本。

创建自定义监控项

   1. 客户端创建监控项key值

  zabbix-agent进行设置 : Include=/etc/zabbix/zabbix_agentd.d/*.conf

  UserParameter= <key> , <command>

  例1.监控内存使用情况

UserParameter=used.mem,free -h|awk -F "[ M]+" 'NR==2{print $4}' 

#将上面的信息输入到web01/etc/zabbix/zabbix_agentd.d/mem.conf 

systemctl restart zabbix-agent.service 

  例2.创建监控主机用户数

  创建监控项key值

vim /etc/zabbix/zabbix_agentd.d/count.conf 
UserParameter=user.count,w|awk 'NR==1{print $4}'
systemctl restart zabbix_agent.service 

  2. 服务端检查确认

  服务端进行测试

[root@zabbix ~]# yum install -y zabbix-get
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k 'used.mem'
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k 'user.count'

  3. 网页创建自定义监控项

创建自动义选项:

查看监控项:

 

 

 

收集主机TCP11种状态信息

  1. 客户端编写监控自定义配置文件

  vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf

UserParameter=tcp.status[*],netstat -an|grep -ic $1    #使用变量将状态写入

systemctl restart   zabbix-agent.service   #重启服务

  2.服务端网页配置监控项

 

结果:

名称                                      键值                                               应用集

tcp_state_established           tcp.status[established]                 tcp_state
tcp_state_listen                tcp.status[listen]                      tcp_state
tcp_state_syn_sent              tcp.status[syn_sent]                    tcp_state

#客户端更新完一定要进行重启

验证:

[root@zabbix /]# zabbix_get  -s 172.16.1.7 -k tcp.status[listen] 
44

脚本自定义信息

  1. 客户端编写脚本

  vim /server/scripts/check_web.sh #问:你确定服务的80端口是被nginx使用吗?

#!/bin/bash
    
netstat -lntup|grep 80 &>/dev/null
REVAL=$?
if [ $REVAL -ne 0 ]
then
   echo OK
else
   echo faild
fi
chmod +x  /server/scripts/check_web.sh   #添加执行权限

  2. 客户端监控配置文件

  vim /etc/zabbix/zabbix_agentd.d/server.conf

UserParameter=nginx.state,/server/scripts/check_web.sh

  重启服务:

[root@web01 /]# systemctl restart zabbix-agent.service 

  3. zabbix服务端验证

[root@zabbix ~]# zabbix_get  -s 172.16.1.7 -k nginx.state

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
OK

zabbix监控报警功能

  1. 1. 设置监控项,监控nginx 80端口

 

  2. 设置监控触发器

 

  3. 设置邮箱通知:

  4. 报警声音

自定义报警声音

  报警声音存放目录

  cd /usr/share/zabbix/audio

alarm_average.mp3          
alarm_disaster.mp3           
alarm_high.mp3               
alarm_information.mp3        
alarm_ok.mp3                 
alarm_warning.mp3            
no_sound.mp3      
xxx.mp3

将下载好的mp3格式的音频添加到目录里,把原来的给备份,然后将下载好的音频剪切为默认的名字

[root@zabbix /usr/share/zabbix/audio]#  mv no_sound.mp3  no_sound.mp3.bak
[root@zabbix /usr/share/zabbix/audio]#  mv xxx.mp3   no_sound.mp3

实现邮件报警

  1. 配置报警媒介信息——邮件报警

  2. 定义接收报警人员

  3. 配置报警动作信息

确认开启。

  4. 测试报警

  关闭web01 nginx服务查看网页,已经收到邮件

调用邮件报警脚本实现报警

  1.将报警脚本放入zabbix服务端

  vim /usr/lib/zabbix/alertscripts/mail_163.py

  #/usr/lib/zabbix/alertscripts/ :报警脚本保存路径

#!/usr/bin/python  
#coding:utf-8  
import smtplib  
from email.mime.text import MIMEText  
import sys  
mail_user = 'w1354586675@163.com'             #邮件地址
mail_pass = 'wei1999'                       #效验码,自己定义

def send_mail(to_list,subject,content):  
    me = "zabbix 监控告警平台"+"<"+mail_user+">"
    msg = MIMEText(content, 'plain', 'utf-8')  
    msg['Subject'] = subject  
    msg['From'] = me  
    msg['to'] = to_list  
    try:  
        s = smtplib.SMTP("smtp.163.com", 25)  
        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])
[root@zabbix ~]# chmod +x /usr/lib/zabbix/alertscripts/mail_163.py 
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix /usr/lib/zabbix/alertscripts]# ./mail_163.py w1354586675@163.com  test_check  hello
# 邮件地址需要先在zabbix用户邮箱添加

  2.在报警媒介中调用脚本

{ALERT.SENDTO}   --- 脚本参数信息  收件任务信息
{ALERT.SUBJECT}  --- 脚本参数信息  邮件标题信息
{ALERT.MESSAGE}  --- 脚本参数信息  邮件内容信息

  3.定义接收报警信息人员

  4.效验结果,查看 报表 ---> 动作日志

实现微信进行报警

注册企业微信,地址:https://work.weixin.qq.com/wework_admin/loginpage_wx

  1. 收集信息:

  企业ID: ww2c7d46*********

  AgentId:1000002

  Secret:IeHkXTieFQFDf6D50HL0******************

  2. 编写微信脚本

  人员加入企业微信,修改脚本的 企业ID,AgentId,Secret

  下载python需要的模块,脚本会用到脚本的模块:

  更新pip源:https://developer.aliyun.com/mirror/pypi?spm=a2c6h.13651102.0.0.53322f706INyGw

  ~/.pip/pip.conf

[root@zabbix /]# mkdir ~/.pip/            #创建目录
[root@zabbix /]# vim ~/.pip/pip.conf      #编辑配置文件
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
    
[install]
trusted-host=mirrors.aliyun.com

  下载python模块

yum install -y python-pip   #安装pip下载
pip install requests        #安装模块

  脚本内容:

  vim /usr/lib/zabbix/alertscripts/weixin.py

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: yanggd
#date: 2018-04-20
#comment: zabbix接入微信报警脚本

import requests
import sys
import os
import json
import logging

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
                datefmt = '%a, %d %b %Y %H:%M:%S',
                filename = os.path.join('/tmp','weixin.log'),
                filemode = 'a')
#以下三项是根据你自己企业微信的信息填写
corpid='ww2c7d46ffc922766d'  
appsecret='IeHkXTieFQFDf6D50HL0Z1z6nCKBSwV7j5lowpLp5qA'
agentid=1000002
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
        "touser": touser,
#       "toparty": toparty,
        "msgtype": "text",
        "agentid": agentid,
        "text": {
                "content": message
        },
        "safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message) 
chmod +x  /usr/lib/zabbix/alertscripts/weixin.py chown zabbix.zabbix /tmp/weixin.log    #服务端的日志

  发送信息给微信

[root@zabbix /]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix /usr/lib/zabbix/alertscripts]# ./weixin.py  收微信人员账号信息  标题   "内容"

  3. 添加报警媒介类型

参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

  4.添加动作

  配置 -----》动作 -----》创建动作

默认标题:

[{TRIGGER.SEVERITY}]服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!

消息内容:

告警主机: {HOSTNAME1}
主机分组: {TRIGGER.HOSTGROUP.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}
事件ID: {EVENT.ID}
#恢复操作内容一样,把故障改成恢复

用户使用的是 Admin 和组 Zabbix administrators

  5.admin用户添加 wechat 报警媒介

手机实现监控报警

  配置官网:https://www.aiops.com/ 睿象云

  1. 注册账号,免费试用,收费服务会更还一点,警报效率更高。

  进行配置 CA 智能告警

 

集成---> 监控工具---> zabbix(免费只能加两个监控,穷啊!)

zabbix服务端安装Agent

  appkey:b1a40a79-feca-fc63-eab4-a9990b96a997

[root@zabbix /]# cd /usr/lib/zabbix/alertscripts   #编译安装的路径
[root@zabbix /usr/lib/zabbix/alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-2.1.0.tar.gz 
[root@zabbix /usr/lib/zabbix/alertscripts]# tar -xzf ca_zabbix_release-2.1.0.tar.gz 
[root@zabbix /usr/lib/zabbix/alertscripts]# cd cloudalert/bin 
[root@zabbix /usr/lib/zabbix/alertscripts/cloudalert]#  bash install.sh b1a40a79-feca-fc63-eab4-a9990b96a997  #码是自动生成的。

Zabbix管理地址: http://10.0.0.71/zabbix/ 
Zabbix管理员账号: Admin 
Zabbix管理员密码:

如果之前有创建,请把相应的动作,用户,用户组,报警媒介类型删掉,否则会出错。

用户:cloudalert
用户群组:cloudalert group
动作:cloudalert action
报警媒介类型:cloudalert media

添加用户策略。

#因为是免费试用,或者网络原因,电话可能不能及时相应。

zabbix 解决中文字符集乱码

自定义字符集

  方法一:本地字符集

  微软雅黑地址:https://pan.baidu.com/s/1V2IpBMK3K8koEE09uX9TpA

C:\Windows\Fonts windows字符集考出来一个 /usr/share/zabbix/fonts zabbix的字符集

[root@zabbix /]# cd /usr/share/zabbix/assets/fonts
[root@zabbix-server fonts]# ls
graphfont.ttf
[root@zabbix-server fonts]#  
[root@zabbix-server fonts]# ls
graphfont.ttf  STZHONGS.TTF
[root@zabbix-server fonts]# mv graphfont.ttf graphfont.ttf.bak
[root@zabbix-server fonts]# mv MSYH.TTC graphfont.ttf 
[root@zabbix /]#  ll /etc/alternatives/zabbix-web-font    ##zabbix默认的字符集
lrwxrwxrwx 1 root root 44 Dec  8 12:29 /etc/alternatives/zabbix-web-font -> /usr/share/zabbix/assets/fonts/graphfont.ttf
[root@zabbix-server fonts]# systemctl  restart  zabbix-server 

  方法二:安装开源字符集

更改阿里的epel源:

wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo 

  zabbix服务器端安装开源的字符集:

[root@zabbix /]# yum -y install  wqy-microhei-fonts
[root@zabbix /]# rpm -ql wqy-microhei-fonts
/etc/fonts/conf.d/65-0-wqy-microhei.conf
/usr/share/doc/wqy-microhei-fonts-0.2.0
/usr/share/doc/wqy-microhei-fonts-0.2.0/LICENSE_Apache2.txt
/usr/share/doc/wqy-microhei-fonts-0.2.0/LICENSE_GPLv3.txt
/usr/share/doc/wqy-microhei-fonts-0.2.0/README.txt
/usr/share/fontconfig/conf.avail/65-0-wqy-microhei.conf
/usr/share/fonts/wqy-microhei
/usr/share/fonts/wqy-microhei/wqy-microhei.ttc
[root@zabbix /]#  ll   /etc/alternatives/zabbix-web-font    ##zabbix默认的字符集 
lrwxrwxrwx 1 root root 46 Dec  8 12:02 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/wqy-microhei/wqy-microhei.ttc
#删除默认软连接指向的字符集,指向安装的字符集
[root@zabbix /]# rm -f /etc/alternatives/zabbix-web-font 
[root@zabbix /]# ln -s /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /etc/alternatives/zabbix-web-font 
[root@zabbix /]# ll   /etc/alternatives/zabbix-web-font 
lrwxrwxrwx 1 root root 46 Dec  8 12:02 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/wqy-microhei/wqy-microhei.ttc

不要忘记重启zabbix-server

grafana软件图形部署

  1. 简介:

  grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。最佳的参考资料就是官网:https://grafana.com/docs/grafana/latest/     优秀博客:【 点击

  2.下载grafana软件程序包

  在清华源下载grafana软件包到/server/tools/ 下  地址:https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/

[root@zabbix /]#  mkdir -p  /server/tools/
[root@zabbix /]#  cd /server/tools/ 
[root@zabbix /server/tools]#  wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.5.1-1.x86_64.rpm
[root@zabbix /]# yum -y  localinstall grafana-6.5.1-1.x86_64.rpm   #软件包不用安装,安装软件包依赖

#启动grafana服务
[root@zabbix /]# systemctl start grafana-server.service  
[root@zabbix /]# systemctl enable grafana-server.service 

  3. 登录grafana

要运行Grafana,请打开浏览器并转到http://172.16.1.71:3000/,如果你尚未配置不同的端口,则3000是Grafana监听的默认http端口。默认用户名为admin,默认密码为admin。当你第一次登录时,系统会要求你更改密码,我们强烈建议你遵循Grafana的最佳做法并更改默认管理员密码,你可以稍后转到用户首选项并更改你的用户名。

 

修改网站主题:

安装zabbix插件,因为在grafana中默认没有zabbix插件需要手动安装。

  4. 安装zabbix插件

  原理:granfana -(zabbix插件)-> zabbix-server --> zabbix-agent (收集主机监控项信息)

  官方文档:https://grafana.com/docs/grafana/latest/plugins/installation/

 

# 1.查找grafana插件信息:
[root@zabbix /]# grafana-cli plugins list-remote|grep zabbix    #查找需要安装的插件
id: alexanderzobnin-zabbix-app version: 3.10.4

# 2.安装grafana插件信息:
[root@zabbix /]# grafana-cli plugins install alexanderzobnin-zabbix-app 
installing alexanderzobnin-zabbix-app @ 3.10.4
from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.10.4/download
into: /var/lib/grafana/plugins
✔ Installed alexanderzobnin-zabbix-app successfully 
Restart grafana after installing plugins . <service grafana-server restart>

# 3.重启服务
[root@zabbix /]# systemctl restart grafana-server.service   

  5. 添加zabbix源信息

在下面有一个 Save & Test 点击保存!会出现绿色提示信息

导入模板:

 

最终结果:

监控服务自动发现

  在主机较多的时候,配置主机自动发现并加入监控可以代替手动的添加主机,减轻工作量,自动发现由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。可以根据需要,在对主机安装系统的时候就安装配置并启动zabbix-agent服务,这样的话只要主机系统安装完成,便会自动加入监控

配置--自动发现--创建发现规则

配置 --动作

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!