Linux监控平台搭建

一、监控平台介绍

常见的开源监控软件有cacti、nagios、zabbix、smokeping、open-falcon等

cacti、smokeping偏向于基础监控,图形漂亮

catcti、nagios、zabbix服务端监控,需要php环境支持,其中cacti、zabbix需要mysql作为数据存储;nagios不需要存储历史数据,注重服务或者监控项的状态;zabbix会获取服务或者监控项目的数据,并把它记录到数据库。

open-falcon是小米公司开发的。

二、zabbix监控介绍

zabbix是一个基于web界面的提供分布式系统监控的企业级开源解决方案,zabbix能监控各种网络参数。

zabbix监控组件主要有三大部分组成:zabbix server端、zabbix agent客户端、zabbix proxy。zabbix server端包括web GUI、数据库、zabbix server。

Zabbix监控流程:

Agent安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送到Zabbix server端,Zabbix server端收到数据,将数据存储到数据库中,用户基于Zabbix Web可以看到数据在前端显示的图像。

zabbix监控部署,5个常见的程序:

zabbix_server:服务端守护进程,其中,zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy的数据最终提交给zabbix_server。

zabbix_agentd:客户端守护进程,负责收集客户端数据,比如cpu负载、内存、磁盘使用情况等

zabbix_get:zabbix数据获取工具,单独使用的命令,通常在server端或proxy端执行获取远程客户端信息的命令

zabbix_sender:zabbix数据发送工具,用于发送数据给server端或proxy端,通常用于耗时比较长的检查,很多检查非常耗时,导致zabbix超时,于是需要在脚本中执行完毕之后,使用sender主动提交数据

zabbix_proxy:zabbix分布式代理守护进程,分布式监控架构需要部署zabbix_proxy

三、安装zabbix

安装zabbix可以使用yum安装,也可以源码包编译安装。

服务端的安装和客户端的安装略为不同。服务端安装需要lamp或lnmp环境。

1、zabbix server端安装

zabbix服务端安装,需要lamp或lnmp环境。

实验环境:RHEL7.5,ip:192.168.10.205

LNMP:nginx:1.14.0,mariadb:10.3.7,php:7.2.6,lnmp搭建过程省略。

zabbix:3.4.11     默认端口:server端:10051   客户端:10050

1、安装依赖包

[root@node5 ~]# yum install  gcc curl curl-devel libcurl-devel pcre-devel net-snmp-devel net-snmp -y

2、下载zabbix

这里使用最新版的zabbix3.4.11

[root@node5 ~]# curl -O https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz

3、创建zabbix用户

[root@localhost ~]# useradd -r -s /sbin/nologin zabbix

4、解压编译安装zabbix

[root@node5 ~]#tar xf zabbix-3.4.11
[root@node5 ~]# cd zabbix-3.4.11
[root@node5  zabbix-3.4.11]# 
[root@node5  zabbix-3.4.11]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
[root@node5  zabbix-3.4.11]#  make && make install

编译的时候加上了 --enable-agent选项,表示安装客户端。也就是说安装服务端的同时,安装客户端。也就是可以监控其他客户端,也可以监控自己。

5、配置zabbix数据库

创建zabbix数据库,数据库名称为:zabbix,用户名:zabbix,密码:123456

创建数据库:

[root@node5  ~]# /usr/local/mysql/bin/mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.7-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by '123456';
MariaDB [(none)]> grant all on zabbix.* to zabbix@127.0.0.1 identified by '123456';
MariaDB [(none)]> flush privileges;

导入数据:

zabbix源码包解压后的database/mysql/目录中有zabbix的模版数据,导入即可。

[root@node5  ~]# cd zabbix-3.4.11/database/mysql/
[root@node5   mysql]# mysql -uzabbix -p123456 zabbix < schema.sql
[root@node5   mysql]# mysql -uzabbix -p123456 zabbix < images.sql
[root@node5   mysql]# mysql -uzabbix -p123456 zabbix < data.sql

6、zabbix server和agent服务文件配置。 

在zabbix源码包解压后的目录中的misc/init.d/fedora/core/目录下有zabbix_agentd、zabbix_server两个文件,这两个文件就是zabbix服务端、客户端的服务文件。

[root@node5  ~]# cd zabbix-3.4.11
[root@node5  zabbix-3.4.11]# 
[root@node5  zabbix-3.4.11]# ls misc/init.d/fedora/core/
zabbix_agentd  zabbix_server

zabbix_agentd、zabbix_server就是服务端和客户端的服务文件,复制到/etc/rc.d/init.d/目录中。分别设置可执行权限并添加到系统服务管理中。

[root@node5  zabbix-3.4.11]# cp misc/init.d/fedora/core/*  /etc/rc.d/init.d/
[root@node5  zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_server 
[root@node5  zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_agentd 
[root@node5  zabbix-3.4.11]# chkconfig --add /etc/rc.d/init.d/zabbix_agentd
[root@node5  zabbix-3.4.11]# chkconfig --add /etc/rc.d/init.d/zabbix_server 
[root@node5  zabbix-3.4.11]# 

修改zabbix_agentd、zabbix_server文件的BASEDIR:

[root@node5 ~]# vim /etc/rc.d/init.d/zabbix_server
BASEDIR=/usr/local/zabbix/
[root@node5 ~]# vim /etc/rc.d/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix/

BASEDIR就是zabbx的安装目录。

7、配置zabbix_server.conf、zabbix_agentd.conf

[root@node5 ~]# cd /usr/local/zabbix/
[root@node5  zabbix]# vim etc/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
[root@node5 zabbix]# vim etc/zabbix_agentd.conf
Server=192.168.10.205
ServerActive=192.168.10.205
Hostname=192.168.10.205

8、复制zabbix的Web应用程序到网站目录中

[root@node5 ~]# cd zabbix-3.4.11
[root@node5  zabbix-3.4.11]# cp -r frontends/php/* /htdocs/zabbix/
[root@node5  zabbix-3.4.11]# chown -R nginx.nginx /htdocs/
[root@node5  zabbix-3.4.11]#

9、启动zabbix服务

[root@node5 ~]# systemctl start zabbix_server zabbix_agentd

10、临时清空防火墙规则、临时关闭selinux

[root@node5 ~]# setenforce 0
[root@node5 ~]# iptables -F

要想永久关闭selinux则修改:/etc/selinux/config配置文件,改为SELINUX=disabled,然后重启机子。

2、zabbix agentd端安装

这里在2台机子上安装zabbix客户端

ip:192.168.10.206

ip:192.168.10.200

所有要被监控的主机都执行一下操作即可。

1、安装依赖包

[root@node3 ~]# yum install  gcc curl curl-devel libcurl-devel pcre-devel net-snmp-devel net-snmp -y

2、下载zabbix

这里使用最新版的zabbix3.4.11

[root@node3 ~]# curl -O https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz

3、创建zabbix用户

[root@node3 ~]# useradd -r -s /sbin/nologin zabbix

4、解压编译安装zabbix

[root@node3 ~]# tar xf zabbix-3.4.11.tar.gz 
[root@node3 ~]# cd zabbix-3.4.11
[root@node3 zabbix-3.4.11]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@node3 zabbix-3.4.11]# make && make install

5、配置zabbix_agentd.conf配置文件

[root@node3 zabbix-3.4.11]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.10.205
ServerActive=192.168.10.205
Hostname=192.168.10.200

参数解释:

Server:server端口的ip,被动模式

ServerActive:zabbix主动监控server的ip,主动模式

Hostname:本机的主机名,可以直接写本机的ip,要跟server端添加监控时的hostname一致

6、复制zabbix_agentd启动脚本到/etc/rc.d/init.d/目录中。

复制zabbix_agentd启动脚本到/etc/rc.d/init.d/目录中

[root@node3 zabbix-3.4.11]# cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/

修改服务脚本中的BASEDIR

[root@node3 zabbix-3.4.11]# vim /etc/rc.d/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix

添加可执行权限,添加到系统服务

[root@node3 zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_agentd 
[root@node3 zabbix-3.4.11]# chkconfig --add zabbix_agentd

启动zabbix_agentd服务

[root@node3 zabbix-3.4.11]# systemctl start zabbix_agentd

7、清空防火墙规则

[root@node3 ~]# iptables -F

需要注意的是,这里清空防火墙规则,并没有执行service  iptables save命令去保存规则。

3、安装zabbix

zabbix服务端安装配置完成后,浏览器打开服务端的地址:192.168.10.205,如下图所示:

9da40e167ad5dab92cacf282e992671c961.jpg

点击下一步,进入安装环境监测界面:

31d8183faf4b1744c99d9d84891fe25d9d1.jpg

检查每一项都显示OK即可。然后点击下一步:

38f9cd924e52e462fbb50ea6133acbe4831.jpg

数据库设置:

Database type:MySQL

Database host:localhost

Database port:0或者3306,mysql数据库默认端口是3306

Database name:zabbix

User:zabbix

Password:123456

根据实际情况设置好之后,点击下一步:

2749bc665c807f8c486373e6a668499033b.jpg

Name:可以根据需要自定义,其他的选择保持默认即可,点击下一步:

79999f39487e02a43adcd3664f7b05021ed.jpg

点击下一步:

ce2f81844c50f23f2decd71c91f73f6a5b4.jpg

这个是因为网站目录权限问题,设为777权限

[root@node1 ~]# chmod -R 777 /htdocs/zabbix/
[root@node1 ~]# 

我的网站目录是:/htdocs/zabbix/

刷新浏览器即可:

87e96bb246cb355554613b719abcce4c225.jpg

点击完成即可。

94088d436826a0bfd50b5e83333c0e6510f.jpg

zabbix登录界面:用户名:Admin,密码:zabbix

登录成功后,如下图所示:

4b24961034b74cdb20c404c4b813d8fbe83.jpg

至此,zabbix安装成功。

四、重置Admin密码

如果忘记了Admin的密码怎么办?Zabbix服务端使用数据库的root用户登录数据库修改了。

[root@node1 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 253
Server version: 10.3.7-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> update zabbix.users set passwd=md5('123456') where alias='Admin';
Query OK, 1 row affected (0.020 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [(none)]> flush privileges;

五、主动和被动模式

主动或被动是相对客户端而言。

  • 被动模式:服务端会主动连接客户端获取监控项目数据,客户端被动地接收连接,并把监控信息传递给服务端
  • 主动模式:客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
  • 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
  • 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式。

主动模式:在agentd配置文件中定义:ServerActive=服务端ip

被动模式:在agentd配置文件中定义:Server=服务端ip

六、添加监控主机

前面已经搭建好zabbix服务端和客户端了。现在在zabbix服务端的web界面添加被监控的主机。

1、创建Host groups、host

登录zabbix server的web界面后,点击:Configuration -->Host groups -->create host groups

假设组名为:my_zabbix_test。其他不用设置,点击添加即可。

e6762d59a9137f78e191f46c6a4e65f57d0.jpg

登录zabbix server的web界面后,点击:Configuration --> Hosts --> create host

6cf57a7bb4aaba5cd5d921ab1afbad33798.jpg

主机名:192.168.10.200

visible name:可以不设置,192.168.10.200的主机名是node3

Groups In groups:选择前面自定义的组,也就是my_zabbix_test

Agent  interfaces:192.168.10.200

端口默认是:10050

其他选项暂时不用设置。
点击 add即可。

本次实验有192.168.205、192.168.10.206、192.168.10.200三台被监控的主机。把这3台主机添加进入。

添加完成,如下所示:

adfbeb15232b6a2dd504bc05229d74b5a7f.jpg

最底下个那个是默认的。

七、自定义模版

点击:Configuration -->Templates-->create host template,添加模版

1988a0c4a181cb7f9f0d5f9f330fdd1c599.jpg

模版名为:my_template

Group in groups:Templates

其他的不用设置,点击Add即可。

1170f6d3619d9a85a36f21bcc179db06380.jpg

新建的这个模版为空的,选择其他的模版,比如Template OS Linux模版,选择一些监控项

269bc46377cf7c666f1015c1b507576ed12.jpg

勾选一些监控项,比如:

c4110dee06791f7fe97918649474c0b4914.jpg

根据实际勾选一些监控项,然后点击Copy

8812e33a7c96fe1e1d36f578a049aecaaf1.jpg

选择自定义的模版,点击copy即可

这就是复制某些功能的操作。下面先删除已复制的,恢复原状。使用另外的方法设置。

41d309f04bc0d4f0392e7c55f2a3524dc91.jpg

点击my_tmeplate-->Linked templates,然后点击select,选择需要的模版,再点击Add,最后更新即可。如下图:

628b133449450a900677d4e256e9c32afcd.jpg

最终如下图:

ba3f19c33060fc38f1ec8258cf99b4d97b1.jpg

点击Update即可。

95e900839b16791ec4c8c5640b6c23b99e9.jpg

如上图,有很多功能了。如果想删除某项,则会报错,因为这里连接到别的模版的。

要想删除某项,则:

f36420d12e76a5b42b0f0fe2a50c100f77a.jpg

有两项:Unlink、Unlink and clear。如果点击Unlink and clear则全部都清除了,所以要点击Unlick,更新即可:

41e44f3ce911ed43fe71b890269d546112d.jpg

先删除items,点击items,

485762595bc9f39bdd41d99ee4080a272cd.jpg

将需要保留的选项的勾去掉。

9d5ceb2296b9c09169a8132ec14d9ade46f.jpg

最后点击,Delete

接下来删除Applications,点击Applications

a6b8fa9916db10723f7c2a9caea6fa6eb07.jpg

勾选items为0的选项,点击delete删除。

其他的可以根据需要保留或删除。

OK,模版设置成功。当然你也可以不删除任何的功能选项。

八、解决图形的乱码

被监控的主机有3台:

3d4f7d2971a55e4eb01886468a9770da6f3.jpg

每台机子都使用刚才设置的自定义模版:my_template

点击每台主机的Name-->Templates-->select,选择my_template,然后点击add、update即可,如下:

cd695475eeec2de90cec38ad21a21c34220.jpg

583b0128e578a5c964bfa87b0b51060fdb0.jpg

将界面调回中文:Administration-->Users,点击Admin:

语言选择:中文,点击更新,刷新浏览器即可:

7c27c7de45c7f21a114c8243ab1600f7b6e.jpg

 

4768d838ccfb49d0a4e06554a4bdc175c81.jpg

图形显示乱码了,显示成小框框。

zabbix字体库中没有中文,从windows中拷贝一个过来即可。

zabbix定义字体的配置文件为:zabbix网站目录中的include/defines.inc.php。我这里的网站目录是/htdocs/zabbix,所以配置文件为:/htdocs/zabbix/include/defines.inc.php

[root@node1 ~]# vim /htdocs/zabbix/include/defines.inc.php
define('ZBX_FONTPATH',                          realpath('fonts')); // where to search for font (GD > 2.0.18)

字体设置参数:

define('ZBX_FONTPATH',                          realpath('fonts')); // where to search for font (GD > 2.0.18)

字体放在fonts目录。也就是zabbix网站目录的fonts目录下:

[root@node1 ~]# ls /htdocs/zabbix/fonts/
DejaVuSans.ttf
[root@node1 ~]# 

默认情况只有一种字体,但不支持中文。

Windows中:C:\Windows\Fonts里面的就是字体:

63d8994a579403a426e68d3598034ff766c.jpg

随便复制一个字体到Windows桌面,然后上传到zabbix网站目录中的fonts目录里:

[root@node1 fonts]# ls
DejaVuSans.ttf  STKAITI.TTF
[root@node1 fonts]# pwd
/htdocs/zabbix/fonts
[root@node1 fonts]# 

把默认的DejaVuSans.ttf备份,然后把上传的STKAITI.TTF重命名为DejaVuSans.ttf

[root@node1 fonts]# mv DejaVuSans.ttf DejaVuSans.ttf.BAK
[root@node1 fonts]# mv STKAITI.TTF DejaVuSans.ttf
[root@node1 fonts]# 

然后刷新浏览器即可:

f29f9d28756115a2d9cb97e16792a7ea479.jpg

OK,图形中的中文显示正常了。

如果想添加其他图形:

点击配置-->主机-->在需要添加图形的主机上点击图形-->创建图形

9de28cccd5818f37eb73971a98b9cccb6dc.jpg

根据需要添加图形:

ef2d8a1767bcd7998c80de01af24424dc81.jpg

42a5cbe712d18de8e3e2ed9f1feac6c50c5.jpg

九、自动发现

zabbix可以利用discovery模块,实现自动发现主机、自动将主机添加到主机组、自动加载模版、自动创建项目、自动创建监控图像。具体操作如下:

(1)依次选择:配置-->自动发现-->创建发现规则。创建客户端发现规则。如下图所示:

44a4491057fa126f179935a72c35171418a.jpg

参数解释:

Name(名称):规则名称,自定义名称

Discovery by proxy(由agent代理发现):通过代理搜索

IP range(ip范围):zabbix_server搜索区域的IP范围

Update interval(更新间隔):更新的间隔

Checks(检查):检测方式,如果用ping方式去发现主机,则zabbix_server需要安装fping。此处使用agent方式发现。使用zabbix agentd方式的时候,要使用key,这里key为:system.uname。也可以在zabbix_agentd配置文件中自定义key。

Device uniqueness criteria(设备唯一性标准):以IP地址作为被发现主机的标识

设置好检查之后,点”添加“,检查添加完成后,勾选”已启用“,最后点底部的“添加”

自定义key

在所有的agentd端编辑zabbix_agentd.conf文件,定义key。

定义key语法:

UserParameter=<key>,<shell command> 比如: UserParameter=get.os.type,head /etc/redhat-release

(2)创建发现Action

zabbix发现规则创建后,被发现的IP主机不会自动添加至zabbix监控列表,必须添加发现动作。设置如下:

依次选择:配置-->动作-->事件源(自动发现)-->创建动作。如下图:

972c21ea7ee14b214462103a67a4dbd4d77.jpg

设置好新的触发条件主机ip后,点击”添加“,然后点击”操作“:

716b48c03051fa6263fa491376832cf44da.jpg

点击”新的“:51af13cead9aa04653149ceecb87862ec94.jpg

根据实际需要添加”操作“,上图中添加了两个操作。最后点击”添加“即可,设置完成如下图:

fa006f41ec61ce0ac10695077717e6e3bed.jpg

(3)查看监控主机

设置好之后。依次点击:监测中-->自动发现,这样就可以查看到发现到的主机。如下图:

e3bd6457586b9f2b6d42671cbe5b6d231db.jpg

192.168.10.207主机是新添加的。

十、定义监控项目

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

步骤:

1、zabbix服务端(监控中心)创建监控项目

在被监控的主机上编写脚本,名称假设为:estab.sh

比如,被监控的主机是:192.168.10.200(node3)已开启80端口,脚本内容如下:

[root@node3 ~]# mkdir /myscript
[root@node3 ~]# chmod -R 777 /myscript
[root@node3 ~]# cd /myscript/
[root@node3 myscript]# vim estab.sh
#!/bin/bash
#
#获取80端口的并发连接数
netstat -ant | grep ':80' | grep -ci established
[root@node3 myscript]# chmod +x estab.sh 
[root@node3 myscript]# ll
total 4
-rwxr-xr-x. 1 root root 16 Jul 15 23:40 estab.sh
[root@node3 myscript]# 

编辑zabbix agent配置文件,添加以下内容:

    UnsafeUserParameters=1  :表示自定义脚本,0为不使用自定义脚本
    UserParameter=my.estab.count[*],/myscript/estab.sh :自定义监控项的key为:my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本:/myscript/estab.sh,用绝对路径。

在agent配置文件中添加上面两行内容:

[root@node3 myscript]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
....
    UnsafeUserParameters=1
    UserParameter=my.estab.count[*],/myscript/estab.sh
....

重启zabbix_agentd服务:

[root@node3 myscript]# systemctl restart zabbix_agentd
[root@node3 myscript]# 

到服务端验证一下自定义的key是否可用:

[root@node1 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.200 -p 10050 -k 'my.estab.count'
0
[root@node1 ~]# 

结果是0,因为没有访问80端口。

参数解释:

-s:被监控的ip

-p:端口,agentd服务的默认端口是10050

-k:自定义的key

2、针对该项目以图形展现

zabbix服务端添加该监控项目,因为是监控node3,所以点击node3的监控项:

221c9ff03e361435a7dec29255cc19f4639.jpg

再点击”创建监控项“

87b49da7659a4d6205e374da52890f7c979.jpg

进入监控项设置:

77e1c6ead979a4a24429589838e06775834.jpg

添加名称和键值,其他保持默认即可。

创建图形:

3d60bea5b786fc851e2bd2976fa5ca6db09.jpg

设置图形:

518762165865fca3c6f0dd9d08984606240.jpg

名称:自定义

监控项:点击”添加“,选择监控项“监控80端口并发连接数”,点击“选择”

最后点击“添加”即可。预览一下:

004805e9d2b535636f590105360e5f322cd.jpg

没有访问80端口,所以图形没数据。

3、创建触发器

a8b8211dc69527a2324d2ab9774987e19c2.jpg

点击“触发器”,点击“创建触发器”:

8641992ba897899e224e4720e7ce1754abe.jpg

名称:自定义,选择警告,添加添加:如下图:

22cfdbdc484efc078ba4a97c1add87d707e.jpg

点击“插入”,最后保存退出即可。

十一、邮件告警

1、使用163或QQ邮箱发告警邮件。这里使用163邮箱。登陆163邮箱,开启POP3、IMAP、SMTP服务,开启并设置授权码。

3d0f9583735e3c6c987be0c1f3779919ea9.jpg

2、到zabbix监控中心(web界面)设置报警媒介

3db965151e69a0ba83532aaeaf214d0f1bf.jpg

默认有3个报警媒介。我们这里新建一个,点击创建“媒介类型”:

ed8520afd9c6c19748c6753d3bea2f73edb.jpg

名称:自定义

类型:选择”脚本“

脚本名称:mail.py,自定义

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

点击:添加”即可

658c94f48b95234456cb156d2203f7d57ef.jpg

3、服务端编写发邮件脚本

脚本名称:mail.py,脚本放在:/myscript目录中

[root@node1 ~]# mkdir /myscript
[root@node1 ~]# vim /myscript/mail.py
#!/usr/bin/env python
#-*- coding:UTF-8 -*-

import os,sys
import getopt
import smtplib

from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *

def sed163mail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.163.com'
    gport = 25
    try:
       msg = MIMEText(unicode(content).encode('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]
    send163mail('邮箱账号','授权码','邮箱账号',to,subject,content)
if __name__ == "__mail__":
    main()

使用Python脚本做邮件测试,没成功。

下面演示非脚本设置发邮件:

1、设置zabbix媒介类型

点击管理-->报警媒介类型-->创建媒体类型

966beafb863e46e435d8e30e98856616e6e.jpg

参数解释:

名称:自定义一个名称

类型:选择电子邮件

SMTP 服务器:这里使用163的邮箱,所以是smtp.163.com

SMTP helo:发邮件的邮箱地址

SMTP 电邮:发邮件的邮箱地址

认证:选择用户名和密码认证

用户名称:发邮件的邮箱地址

密码:登录邮箱的密码。现在的163邮箱安全系数比较高,因此这个密码并不是你登录邮箱的真正密码,而是授权码。**授权码怎么得到,后面有介绍。

已启用:要勾上。

4、配置接收报警的邮箱

点击:管理-->用户-->Admin-->报警媒介-->添加:

8c2d28813145f2d8eb9161235bfd3d8a781.jpg

参数解释:

类型:选择前面创建的报警媒介,也就是:163电子邮件

收件人:添加收件人的邮箱

其他的保持默认即可

5、添加报警触发器。

依次选择:配置-->动作-->事件源(触发器)-->创建动作:

3f77bf06caffc9d052c1c1b2201ce092f65.jpg

根据实际情况设置。上图中设置了2个动作。

下面设置操作,点击”操作“:

317e1b0ee867b8b7fc6bc3a998feed87d89.jpg

 

标题:故障: {TRIGGER.STATUS},服务器:{HOST.NAME} 发生{TRIGGER.NAME}故障

消息内容:

告警主机:{HOST.NAME} 
主机ip: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME} :{ITEM.VALUE}
当前状态:{TRIGGER.STATUS} :{ITEM.VALUE1}
事件ID:{EVENT.ID}

设置恢复:

f9da92bcf61915accc5f2e6d8ec59f281c9.jpg

标题:恢复: {TRIGGER.STATUS},服务器:{HOST.NAME} {TRIGGER.NAME}已恢复

消息内容:

告警主机:{HOST.NAME} 
主机ip: {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME} :{ITEM.VALUE}
当前状态:{TRIGGER.STATUS} :{ITEM.VALUE1}
事件ID:{EVENT.ID}

操作:点击新的

3018486766be78a41d7f52ae3eabe62545d.jpg

点击添加

设置完成之后:

b87477ff4c5d136ed441c080d45a3851025.jpg

十二、测试告警

停止几台机子的zabbix_agentd服务,过两分钟。就可以收到邮件

9cc734373ee2990a11f5d0789654bea5ea6.jpg

十三、监控mysql主从

主:192.168.10.205

从:192.168.10.200

主从搭建过程省略。

主:

MariaDB [(none)]>  flush tables with read lock;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> show master status;
+--------------+----------+--------------+------------------+
| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| node1.000012 |    22189 | zabbix       |                  |
+--------------+----------+--------------+------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> 

从:

MariaDB [(none)]> stop slave;
Query OK, 0 rows affected, 1 warning (0.000 sec)

MariaDB [(none)]> change master to master_host='192.168.10.205',master_user='repl',master_password='123456',master_log_file='node1.000012',master_log_pos=22189;
Query OK, 0 rows affected (0.015 sec)

MariaDB [(none)]> start slave
    -> ;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> 

1、在192.168.10.200上创建监控脚本:

[root@node3 ~]# mkdir /zabbix_sh
[root@node3 ~]# chmod 777 /zabbix_sh/
[root@node3 ~]# vim /zabbix_sh/mysql_ab_check.sh
#!/bin/bash
/usr/local/mysql/bin/mysql -uroot -e "show slave status\G" | grep -E "Slave_IO_Running|Slave_SQL_Running" | awk '{print $2}' | grep -ci yes
[root@node3 ~]# chmod +x /zabbix_sh/mysql_ab_check.sh

2、在zabbix_agentd.conf配置文件中添加:

UnsafeUserParameters=1
 UserParameter=mysql.replication,sh /zabbix_sh/mysql_ab_check.sh
 

3、测试一下这个自定义的key是否可用

[root@node1 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.200 -k mysql.replication
2
[root@node1 ~]# 

返回的是2,所以mysql主从配置成功。

4、zabbix 监控平台中添加监控项

先把主库解锁:

MariaDB [(none)]> unlock tables;
Query OK, 0 rows affected (0.005 sec)

MariaDB [(none)]> 

添加监控项:

选择192.168.10.200主机,添加item:

f890fba81132b78562ca746db5dbc8bd14f.jpg

如图:

da3d4605886909cb9064835a07131f5c7bd.jpg

图像设置:

517c6c7ba52d828d2426818e75564addc17.jpg

创建触发器:

d075dc565e3ceca0a29fe1e6eac028e15a4.jpg

测试,停止从:

MariaDB [(none)]> stop slave;

过几分钟:

2457c7626ad198894acc9f910425f93ba55.jpg

 

zabbix安装某些报错:

可以参考我的博文,zabbix安装部分的报错:

https://my.oschina.net/u/3851637/blog/1838546

附:Prometheus入门:

https://www.hi-linux.com/posts/25047.html

转载于:https://my.oschina.net/logmm/blog/1844724

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值