0611----zabbix监控

扩展
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

Zabbix监控

Linux监控平台介绍

1、监控存在的原因
站点出了问题,没有人知道,等用户发现了,才提醒供应商;对公司影响很大
2、常见开源监控软件
cacti、nagios、zabbix、smokeping、open-falcon等等,其中nagios、zabbix流行度非常高;
cacti、smokeping偏向于基础监控,成图非常漂亮,适合监控网络设备 cacti监控网络的设备;
cacti、nagios、zabbix服务端监控中心,需要php环境支持(用Apache的php,用nginx的php都可以),其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
3、目前业界都流行用zabbix。
zabbix配置简单,优势明显,早起使用nagios的企业,慢慢的转向使用zabbix;
nagios,需要更改配置文件,并不支持web界面一键执行,nagios和zabbix相比,nagios 更注重的是某一个监控的状态,不关注历史;
zabbix,则是把每一次监控的数值反馈出来,数值存到数据库里面,方便后期数据图去分析监控整个状态;
nagios不需要mysql的支持,不能成图,若需要画图,得安装插件以后才支持web界面;
ccti 也需要mysql的支持,也可以成图,可以记录历史数据
zabbix 在web界面下管理得非常彻底,可以增加监控节点,报警预知等等。
open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
open-falcon软件适合大企业使用,小企业可以去研究它的思想。
监控软件比较新的: prometheus grafana

zabbix监控介绍

1、zabbix简介
C/S架构,有一个服务端,去客户端抓数据。在客户端必须要有一个服务启动运行才可以抓取数据;数据可以主动的上报服务端,也可以让服务端去连接客户端获取(通过抓取数据方式,数据获取分两个模式,一个主动模式,一个被动模式),
zabbix软件基于C++开发,监控中心需要一个PHP的web环境,因为要开启一个web界面配置和管理 单台server节点(即一台server),理论上 可以支持上万台客户端
2、zabbix瓶颈:
在于采集数据的量,虽然支持上万台,但监控的项目过多,还是会导致zabbix效率降低;所以,当服务器大到一定规模的时候,就需要对zabbix进行优化;
解决方法:可以增加一些代理点,这些代理点充当server,替代server去采集数据,最终得到分析结果再汇报给主服务端server;
3、zabbix架构里,包括了5个组件:
zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
数据存储 存放数据,比如mysql
web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因(如果没有web界面,就无法在浏览器上配置它)
zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力(当机器量很多的时候,可以使用zabbix-proxy)
有时候,服务器分布在多个机房里,每个机房的服务器之间都是一个单独的内网,这时候就可以在某一个局域网里搭建一个 zabbix-proxy ,用这台 proxy 去监控局域网里的机器
zabbix-agent 客户端软件(每一台客户端都需要安装agent),负责采集各个监控服务或项目的数据,并上报。
0611----zabbix监控_第1张图片

安装zabbix4.0

安装zabbix的yum源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
0611----zabbix监控_第2张图片
需要安装zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

创建zabbix数据库
create database zabbix;
0611----zabbix监控_第3张图片
创建用户
grant all on zabbix.* to ‘zabbix’@‘127.0.0.1’ identified by ‘zabbix’;
在这里插入图片描述

编辑zabbix_server配置文件
vim /etc/zabbix/zabbix_server.conf
修改对应的数据库地址、数据库名称、数据库用户名、数据库密码
0611----zabbix监控_第4张图片
启动zabbix
systemctl start zabbix-server
在这里插入图片描述
服务没起来,查看zabbix日志
cat /var/log/zabbix/zabbix_server.log
0611----zabbix监控_第5张图片
出报错的原因的是对应的数据里并没有导入数据库文件
解压/usr/share/doc/zabbix-server-mysql-4.0.9下的create.sql.gz文件
gzip -d /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql.gz
在这里插入图片描述
在这里插入图片描述
将解压出来的文件导入到zabbix库中
mysql -uroot -p123456 zabbix < /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql
启动zabbix
systemctl start zabbix-server
0611----zabbix监控_第6张图片
0611----zabbix监控_第7张图片
修改zabbix_agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
0611----zabbix监控_第8张图片
启动zabbix-agent服务
systemctl start zabbix-agent
0611----zabbix监控_第9张图片
启动httpd服务。如果启动了nginx,需要先把nginx关闭,nginx不能关闭是,修改httpd监听的端口。
systemctl start httpd
0611----zabbix监控_第10张图片
访问zabbix
0611----zabbix监控_第11张图片
点next进行配置,提示php没有定义时区
0611----zabbix监控_第12张图片
修改php配置文件,定义时区
vim /etc/php.ini
0611----zabbix监控_第13张图片
修改配置文件后重启httpd服务
systemctl restart httpd
0611----zabbix监控_第14张图片
定义zabbix对应的数据库
0611----zabbix监控_第15张图片
定义server
name自定义
0611----zabbix监控_第16张图片
0611----zabbix监控_第17张图片
配置完之后进入zabbix登陆界面
用户名:admin
密码:zabbix
0611----zabbix监控_第18张图片

监控客户机-添加主机

在另一台机器上安装zabbix的yum源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
安装yum install -y zabbix-agent
修改zabbix-agent配置至文件
vim /etc/zabbix/zabbix_agentd.conf
server和severactive修改为服务端的IP地址
0611----zabbix监控_第19张图片
启动zabbix-agent
systemctl start zabbix-agent
在这里插入图片描述
在web添加主机组
0611----zabbix监控_第20张图片添加主机
0611----zabbix监控_第21张图片
主机可以在多个组
0611----zabbix监控_第22张图片

监控客户机-管理模板

选中一个模版
0611----zabbix监控_第23张图片
0611----zabbix监控_第24张图片
0611----zabbix监控_第25张图片
然后选中克隆出来的模版,清除链接
0611----zabbix监控_第26张图片

再选中模版进行编辑
选中不要的功能进行删除
0611----zabbix监控_第27张图片
0611----zabbix监控_第28张图片
0611----zabbix监控_第29张图片
0611----zabbix监控_第30张图片
把模版link给host
0611----zabbix监控_第31张图片
0611----zabbix监控_第32张图片
当这里显示为绿色,则配置成功
在这里插入图片描述
0611----zabbix监控_第33张图片
在服务端使用命令测试
zabbix_get -h 查看命令用法
zabbix_get -s 192.168.196.103 -p 10050 -k “system.cpu.load[all,avg1]”
在这里插入图片描述

监控客户机-管理图形和窗口

新建窗口
0611----zabbix监控_第34张图片
点击新建的窗口进行编辑
0611----zabbix监控_第35张图片
0611----zabbix监控_第36张图片
保存之后点击五角星标志
0611----zabbix监控_第37张图片
在favourite screens中就会显示收藏的窗口了
0611----zabbix监控_第38张图片

监控客户机-配置触发器

进入触发器配置界面
0611----zabbix监控_第39张图片
点击右上角creatre trigger
0611----zabbix监控_第40张图片
一个简单的触发器配置完成
0611----zabbix监控_第41张图片

解决中文名称不能写数据库的问题

先将zabbix数据库导出
mysqldump -uroot -p123456 --default-character-set=utf8 zabbix >zabbix.sql
编辑导出的文件,将所有的latin1替换成utf8
vim zabbix.sql
:1,$s/latin1/utf8/g
0611----zabbix监控_第42张图片
恢复数据库
mysql -uroot -p123456 --default-character-set=utf8 zabbix < zabbix.sql

zabbix邮件告警

使用163或者QQ邮箱发告警邮件 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务 开启并记录授权码
在监控中心设置邮件告警
0611----zabbix监控_第43张图片
0611----zabbix监控_第44张图片
vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
在这里插入图片描述
进入目录创建邮件监控脚本
cd /usr/lib/zabbix/alertscripts
vim 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 = 25

    try:
        # msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:
        msg = MIMEText(content,'plan','utf-8') 
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject

        smtp = 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" % err
def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
    sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)
    
if __name__ == "__main__":
    main()

给予755权限,否则不会执行此脚本;
chmod 755 mail.py

测试
python mail.py [email protected] “123” “123”
0611----zabbix监控_第45张图片
进入web页面,进行设置
0611----zabbix监控_第46张图片
0611----zabbix监控_第47张图片
0611----zabbix监控_第48张图片
点击权限,选中读写,点击选择read-write
0611----zabbix监控_第49张图片
此时用户权限也变更了
0611----zabbix监控_第50张图片
配置动作
0611----zabbix监控_第51张图片
0611----zabbix监控_第52张图片
0611----zabbix监控_第53张图片
0611----zabbix监控_第54张图片

zabbix监控Nginx

在客户机上安装nginx
编辑yum仓库:
vi /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

安装Nginx
yum install -y nginx
启动服务
systemctl start nginx
测试nginx是否正常启动
curl localhost
0611----zabbix监控_第55张图片
配置Nginx状态信息
vi /etc/nginx/conf.d/default.conf #增加

location /nginx_status 
{
        stub_status on;
        access_log   off;
        allow 127.0.0.1;
        deny all;
    }

nginx -t \检查配置
nginx -s reload \重新加载配置
测试
curl http://127.0.0.1/nginx_status
在这里插入图片描述

字段	含义
Active Connections	当前活动连接数,其中也包括了等待状态的连接
accepts	接收到的连接数
handled	已经处理完的连接数,该数字一般和accepts一致,如果不一致那么说明Nginx出错了
requests	总共处理的请求数,一个连接可以有多个请求,所以该值比accpets要大
Reading	正在读取请求头信息的连接数
Writing	正在发送响应报文的连接数
Waiting	处于闲置状态,等待客户端发送请求的连接数

编写监控脚本(客户端)
vi /usr/local/sbin/ngx_status.sh
#内容如下

#!/bin/bash
url="http://127.0.0.1/nginx_status"
curl=/usr/bin/curl

# 检测nginx进程是否存在
function ping {
    /sbin/pidof nginx | wc -l 
}
# 检测nginx性能
function active {
    $curl $url 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
    $curl $url 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    $curl $url 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    $curl $url 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1

修改脚本权限
chmod 755 /usr/local/sbin/ngx_status.sh

编辑zabbix_agent.conf(客户端)
vi /etc/zabbix/zabbix_agentd.conf
定义监控脚本
#增加

UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1

0611----zabbix监控_第56张图片

重启服务
systemctl restart zabbix-agent

zabbix_get 测试(服务端)
zabbix_get -s 192.168.190.105 -k 'nginx.status[accepts]
在这里插入图片描述

导入nginx模板
下载模板 https://github.com/aminglinux/linux2019/blob/master/zabbix_nginx_template/zbx_export_templates.xml
安装git进行克隆

Configuration -> Templates -> 右上角Import
0611----zabbix监控_第57张图片
0611----zabbix监控_第58张图片

链接模板
Configuration -> Hosts -> aminglinux02 -> Templates -> Select -> Add -> Update
0611----zabbix监控_第59张图片

zabbix监控Tomcat

监控流程:
1)安装zabbix_java_gateway
2)配置zabbix_java_gateway配置文件和zabbix_server配置文件,指定监听端口,启动进程数
3)编辑Tomcat配置文件,开启JMX
4)添加host,指定JMX interface
5)链接TOMCAT模板

安装zabbix_java_gateway(服务端)
yum install -y zabbix-java-gateway
修改配置文件
vi /etc/zabbix/zabbix_java_gateway.conf
定义 LISTEN_PORT 和 START_POLLERS
0611----zabbix监控_第60张图片

vi /etc/zabbix/zabbix_server.conf
定义 JavaGateway 和 JavaGatewayPort 和 StartJavaPollers
0611----zabbix监控_第61张图片
启动zabbix-java-gateway服务,重启zabbix-server服务
systemctl start zabbix-java-gateway
systemctl restart zabbix-server

开启JMX
vi /usr/local/tomcat/bin/catalina.sh #在#!/bin/sh下增加
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.190.102
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
0611----zabbix监控_第62张图片

重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
0611----zabbix监控_第63张图片
添加Host链接模板
Configuration -> Hosts -> Create host
Agent interfaces -> remove
JMX interfaces -> Add -> 192.168.222.128 9999
Templates -> Select -> Template App Apache Tomcat JMX -> select -> Add
Add
0611----zabbix监控_第64张图片
0611----zabbix监控_第65张图片
0611----zabbix监控_第66张图片

zabbix监控Mysql

授权一个监控用户
grant usage, process, replication client on . to ‘mon’@‘localhost’ identified by ‘x2ay9xodTvyM’;

编辑配置文件
vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
mkdir /var/lib/zabbix
vi /var/lib/zabbix/.my.cnf #如下内容

[mysql]
host=localhost
user=mon
password='x2ay9xodTvyM'
socket=/tmp/mysql.sock

[mysqladmin]
host=localhost
user=mon
password='x2ay9xodTvyM'
socket=/tmp/mysql.sock

重启zabbix-agent服务
systemctl restart zabbix-agent
测试
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
若提示:sh: mysqladmin: 未找到命令
需要: ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.size

添加主机和模板
Configuration -> Hosts -> Create host
Agent interfaces -> 127.0.0.1 10050
Templates -> Select -> Template DB MySQL -> select -> Add
Add
0611----zabbix监控_第67张图片
0611----zabbix监控_第68张图片
0611----zabbix监控_第69张图片

你可能感兴趣的:(0611----zabbix监控)