前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >集群架构の のzabbix 监控

集群架构の のzabbix 监控

作者头像
老七Linux
发布2018-05-09 16:48:49
1.5K0
发布2018-05-09 16:48:49
举报
一、环境配置:

主机名

IP 地址

角色

zabbix

192.168.14.109

server

zabbix_mysql

192.168.14.110

server

WEB Master

192.168.14.103

client

WEB Slave

192.168.14.104

client

Mysql Master

192.168.14.105

client

Mysql Slave

192.168.14.106

client

其实zabbix是可以使用yum直接安装的,前提需要安装epel扩展源,但是唯一的一点是版本太旧。推荐使用官方下载的yum源去下载更新。

代码语言:javascript
复制
yum install net-tools -y
Server端配置:

1.1 zabbix 配置

代码语言:javascript
复制
www.zabbix.com/download

下载指定版本:

代码语言:javascript
复制
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安装zabbix的yum扩展源:

代码语言:javascript
复制
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

安装服务:

代码语言:javascript
复制
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

其中涵盖了  httpd服务,php服务。
代码语言:javascript
复制
sudo vim /etc/php.ini

;date.timezone = 
改成: 
date.timezone = Asia/Shanghai
zabbix_mysql端配置:

2.1 安装mysql(两种方法,①yum安装 ②编译mysql安装<安装LAMP的时候>)这边编译安装:

代码语言:javascript
复制
cd /usr/local/src

sudo wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 

sudo tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql

cd /usr/local/mysql

sudo useradd mysql

sudo mkdir -p /data/mysql

sudo chown -R mysql:mysql /data/mysql

sudo ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

sudo cp support-files/my-default.cnf  /etc/my.cnf

sudo cp support-files/mysql.server /etc/init.d/mysqld

sudo vi /etc/init.d/mysqld 

vim编辑下面两行basedir和datadir配置
basedir=/usr/local/mysql
datadir=/data/mysql

/etc/init.d/mysqld start

报错:

代码语言:javascript
复制
1. [[email protected] mysql]$ ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper

解决方法 :安装autoconf库
  命令: sudo yum -y install autoconf   //此包安装时会安装Data:Dumper模块
  
2. /bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决方法 :
  sudo yum install libaio* -y

2.2 配置mysql

代码语言:javascript
复制
# sudo vim /etc/my.cnf 

//需要增加配置

character_set_server = utf8

如果不添加此值,后期zabbix的web界面改成中文后会出现问题。

重启mysqld服务

代码语言:javascript
复制
sudo systemctl restart mysqld

启动服务并设为开机启动

代码语言:javascript
复制
sudo chkconfig --add mysqld
代码语言:javascript
复制
export PATH=$PATH:/usr/local/mysql/bin/

sudo vim /etc/profile

source /etc/profile

mysql -uroot

进入mysql命令行,创建zabbix库:

(这个就类似于之前创建wordpress,discuz站点一样的,其实zabbix也是一个php写的web监控站点)

代码语言:javascript
复制
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix.* to 'zabbix'@'192.168.14.109' identified by '[email protected]';
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| zabbix             |
+--------------------+
5 rows in set (0.03 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

2.3 导入自带数据库

连接远端Mysql服务器

代码语言:javascript
复制
[[email protected] ~]$ mysql -uzabbix [email protected]123 -h 192.168.14.110
mysql > quit

导入数据库

代码语言:javascript
复制
[[email protected] ~]$ cd /usr/share/doc/zabbix-server-mysql-3.2.7/

[[email protected] zabbix-server-mysql-3.2.7]$ ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README

[[email protected] zabbix-server-mysql-3.2.7]$ gzip -d create.sql.gz 
gzip: create.sql: Permission denied

[[email protected] zabbix-server-mysql-3.2.7]$ sudo gzip -d create.sql.gz 
[sudo] password for admin: 

[[email protected] zabbix-server-mysql-3.2.7]$ mysql -uzabbix [email protected]123 -h 192.168.14.110 zabbix < create.sql 
Warning: Using a password on the command line interface can be insecure.

**这边所用到的用户名和密码,就是刚刚创建的。所以在导入数据库的时候要连接到远程的数据库并导入。

2.4 启动zabbix-server,和httpd服务

代码语言:javascript
复制
sudo systemctl start zabbix-server

sudo systemctl start httpd

配置开机启动:

代码语言:javascript
复制
sudo systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.

sudo systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

2.5 查看zabbix的日志:

代码语言:javascript
复制
less /var/log/zabbix/zabbix_server.log

2.6 配置zabbix:

代码语言:javascript
复制
sudo vim /etc/zabbix/zabbix_server.conf 


//修改或增加
DBHost=192.168.14.110    //在DBName=zabbix上面增加
(在此写的是咱们的独立指定的mysql server地址)

DBUser=zabbix
[email protected]123      //在DBuser下面增加

再次重启zabbix

代码语言:javascript
复制
sudo systemctl restart zabbix-server

查看端口启动情况

代码语言:javascript
复制
ps aux |grep zabbix 

我们会看到有很多的zabbix子进程。

监听的端口为:10051

安装配置zabbix web界面

代码语言:javascript
复制
浏览器访问http://192.168.14.109/zabbix/

完成,进入管理界面:

代码语言:javascript
复制
初始用户名Admin 密码zabbix

熟悉的zabbix监控配置web界面:

切记:配置好了之后,第一件事情

更改密码!更改密码!更改密码!([email protected]

Administration→Users→Admin→Change password

并且在修改密码下,可以更改web界面为中文。


二、zabbix客户端安装

下载指定版本:

代码语言:javascript
复制
$ sudo wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安装zabbix的yum扩展源:

代码语言:javascript
复制
sudo rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

client端仅仅只需要安装服务:

代码语言:javascript
复制
sudo yum install -y zabbix-agent

配置mysql(略)

2.2 配置zabbix

代码语言:javascript
复制
$ sudo vim /etc/zabbix/zabbix_agentd.conf 

//增加如下配置:

Server=127.0.0.1 修改为 Server=192.168.14.109 //定义监控服务端的ip(被动模式)

ServerActive=127.0.0.1 修改为 ServerActive=192.168.14.109 //定义监控服务端的ip(主动模式:客户端主动上报自己的状态给server端)
 
Hostname=Zabbix server修改为Hostname=nginx1 //这是自定义的主机名,一个是让自己容易分别监控的是哪台主机,第二个是服务器可以识别

2.3 启动服务并查看进程以及端口

代码语言:javascript
复制
sudo systemctl start zabbix-agent

ps aux | grep zabbix

netstat -lntp   //我们发现被监控的端口为10050
 
sudo systemctl enable zabbix-agent

三、添加监控主机

3.1 添加主机组

代码语言:javascript
复制
配置 → 主机群组 → 创建主机群组 23zabbixserver(添加主机前先要创建组)

组名:23zabbixserver → 添加即可。

配置 → 主机 → 创建主机

添加刚刚创建的组

IP 地址:192.168.14.103(客户端的IP)

DNS名称:目前用不到,当我们IP地址写主机名的时候可以填写此值。

端口:10050(默认,或填写自定义的)

第二个选项模板稍后讲。

点击最后的 添加 即可!

3.2、添加自定义模板

首先在模板里面我们可以增加很多自定义监控的项目,然后再次把模板链接到一个组内,当我们在组内增加了新的客户端就不需要我们再次去配置监控项目,直接加入组就ok了。

代码语言:javascript
复制
配置 → 模板 → 创建模版

模板名称:23linux_monitor(自定义即可)
群组:Templetes

简单设置,添加即可。

添加自定义模板:

mark
mark

一定不可以忘记点击 “添加” 按钮

mark
mark

点击 “更新”

但是我们发现需要监控的项目,太多我们不需要那么多,如何去修改呢?

模板 → 链接的模板 → 取消链接

再次去删除 “监控项”的内容即可,然后再次去删除“应用集”的空白项目

四、处理图形中的乱码
  1. 点击刚刚创建的主机 → 点击上面的选项“模板” → “链接指示器” → “添加” → “更新” → 然后我们就会看到模板的中的监控项全部复制到了新添加的主机中。
  2. 点击“图形” → 点击任意一个 → “预览” → 我们会发现其中出现了乱码:
image
image

这种情况是因为我们虚拟主机中没有能够解析这个字体的字体库。如何能够解决问题呢?

这种情况其实很容易去处理,直接copy windows中的一个字体,放在linux中指定的路径即可。

代码语言:javascript
复制
$ cd /usr/share/zabbix/fonts/

$ sudo mv graphfont.ttf graphfont.ttf.bak

$ sudo ln -s simhei.ttf graphfont.ttf

然后再次回到我们的zabbix监控页面,再次刷新,我们发现已经可以正常显示中文了。

mark
mark
  1. “监测中” → “最新数据” → “图形” → 就可以看到我们刚刚监控的cpu或者内存的使用信息了。
五、自动发现

点击“自动发现规则” → 按理来说,我们已经配置了自动发现规则,为什么在图形中没有看到任何图表显示呢? 其原因是 我们虽然配置了,但是自动发现规则是1小时候才可以显示,我们可以手动编辑调节“数据更新间隔”为10分钟或者为了让其快速显示,可以临时设置1分钟,当出来图表再次把更新时间间隔调节为600秒即可。 点击“更新”即可。 至于说压力问题,只要不是监控太多的客户端,这个值还是可以的。

然后(重启服务器与客户端的zabbix服务):

代码语言:javascript
复制
server端:
$ sudo systemctl restart zabbix-server

client端:
$ sudo systemctl restart zabbix-agent

同理设置另外一台nginx2服务器!


四、添加自定义监控项目

5.1 需要到==客户端(nginx1)==定义脚本:

代码语言:javascript
复制
$ sudo vim /usr/local/sbin/estab.sh 
//内容如下

#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED

给脚本授权:

$ sudo chmod 755 /usr/local/sbin/estab.sh

$ sudo vim /etc/zabbix/zabbix_agentd.conf
//增加

UnsafeUserParameters=1  //表示使用自定义脚本

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 
//自定义监控项的key为my.estab.count(也就是在监控项中需要填写的键值),后面的[*]里面写脚本的参数,如果没有参数则可以省略,如果有需要用逗号分隔,脚本为/usr/local/sbin/estab.sh

重启客户端的zabbix服务:

代码语言:javascript
复制
$ sudo systemctl restart zabbix-agent

5.2 到服务端验证,执行命令:

代码语言:javascript
复制
[[email protected] ~]$ zabbix_get -s 192.168.14.103 -p 10050 -k 'my.estab.count'
0

-s:源地址
-p: 端口
-k: 键值

如上显示0即为没有任何连接。

5.3 但是这不是我们需要的效果,效果是我们需要在web页面去随时查看:

配置 → 主机 → 监控项 → 创建监控项

其它项默认即可,如有需求按照现场需求定制。

来配置一个图形:

“配置”→“主机” →“图形” → 创建图形”

添加该项目后,到“监测中” → “最新数据”查看刚添加的项目是否有数据出现 有了数据就可以添加图形了

顺便我们也可以创建一个触发器:


六、配置邮件告警

配置告警是目前绝大多数企业必须要有的一个状态,遇到问题第一时间获得警告大大提升了运维的高效性,如果没有配置任何告警,等待客户反应,这是一个非常不明智的选择。

建议配置一个163邮箱,然后邮箱绑定微信,在遇到故障的第一时间就可以收到告警邮件。(QQ邮箱之前绑定的wordpress已经被QQ拉为黑名单了,不建议使用)

6.1 在开始前,一定要把这两项开启:

6.2 编辑报警媒介

登录web管理界面:

管理 → 报警媒介类型 → 创建媒体类型(不建议用自带的,不好用)

脚本名称一定要用自己自定义的!!!

脚本参数(不然不可以发邮件):

{ALERT.SENDTO} //发给谁

{ALERT.SUBJECT} //主题

{ALERT.MESSAGE} //邮件内容

6.3 写一个报警的邮件脚本:

在服务端配置:

下载安装sendEmail邮件包

代码语言:javascript
复制
$ sudo wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

$ sudo tar xvf sendEmail-v1.56.tar.gz

$ sudo cp -a sendEmail-v1.56/sendEmail /usr/local/bin/

$ ll /usr/local/bin/sendEmail 
-rwxr-xr-x 1 root root 80213 Sep 30  2009 /usr/local/bin/sendEmail
代码语言:javascript
复制
# vim /usr/lib/zabbix/alertscripts SendEmail.sh

脚本为什么放在这边呢?因为咱们在配置文件中=vim /etc/zabbix/zabbix_server.conf有个参数 AlertScriptsPath=/usr/lib/zabbix/alertscripts 定义了位置。

代码语言:javascript
复制
#!/bin/bash
SMTP_server='smtp.163.com'    # SMTP服务器
username='[email protected]'     # 邮箱用户名
password='*****'             # 邮箱密码
from_email_address='[email protected]' # 发件人Email地址
to_email_address="$1"               # 收件人Email地址,zabbix传入的第一个参数
message_subject_utf8="$2"           # 邮件标题,zabbix传入的第二个参数
message_body_utf8="$3"              # 邮件内容,zabbix传入的第三个参数
 
# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"
 
# 转换邮件内容为GB2312
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"
 
# 发送邮件
sendEmail='/usr/local/bin/sendEmail'
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
代码语言:javascript
复制
$ sudo chmod 755 /usr/lib/zabbix/alertscripts/SendEmail.sh 

$ sudo chown zabbix:zabbix /usr/lib/zabbix/alertscripts/SendEmail.sh

$ sudo touch /tmp/Email.log 

$ sudo chown zabbix:zabbix /tmp/Email.log 

$ sudo systemctl restart zabbix-server

测试:

代码语言:javascript
复制
$ sh SendEmail.sh 188@163.com 测试邮件  嗯测试邮件
Sep 12 17:42:38 zhdy-04 sendEmail[62400]: Email was sent successfully!

正常收到邮件。

6.4 创建运维人员的邮箱,接受报警邮件

“管理”,“用户”,“创建用户”,

“报警媒介”,类型选择“报警error”,

关于权限选项,我们先保存当前的配置,然后进入用户群组 → Zabbix administrators → 权限

为了防止发生错误,暂时先选择全部用户。千万不要忘记点击添加

然后下一步,万事俱备,就差预警了。

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

代码语言:javascript
复制
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}

记得一定要点击添加按钮 不然全部都不会保存!!!

最后一个选项“恢复操作” :意思是,如果遇到问题,我们已经解决了,恢复了,状态全部正常了,我们也需要配置一下。

“恢复操作”,把信息改成如下:

代码语言:javascript
复制
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
七、验证配置:

开始搞事情~

配置 → 主机 → 触发器 → 创建触发器

条件是,并发数小于5,咱们的虚拟机压根就没有任何人去访问,所以轻轻松松报警。

点击添加,我们等着就可以了。

可以根据如下去调节监控间隔时长,真实环境不建议这样设置。(会造成服务器负载过高,有些必要的监控项可以设置)

稍微等个30秒 出现如下:

当然 恢复了我们也配置了相关的邮件提醒:


八、监控web站点的可用性
  1. 选择 -> Configuration(配置) -> Hosts(主机) -> web
mark
mark
  1. 右上角 “创建web 监控”
  2. 配置监控的信息:Name 、Agent (就是模拟什么浏览器去调你的api)
mark
mark
  1. 配置url 的地址和名字,如果Header 中有信息,也要填写。Required string 为请求返回的字符串,可以为空。Required status codes 为请求返回的状态码。

Required string和Required status codes 为判断调用 api 成功与否的条件

mark
mark
mark
mark

检查测试:

mark
mark
mark
mark

添加第二台就没有那么复杂了,只要把第二台的主机添加到组,复制链接相应的规则即可!

mark
mark

顺便看下个个监控状态:

mark
mark
mark
mark
mark
mark
mark
mark
mark
mark
mark
mark
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016/09/26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境配置:
  • Server端配置:
  • zabbix_mysql端配置:
  • 二、zabbix客户端安装
  • 三、添加监控主机
  • 四、处理图形中的乱码
  • 五、自动发现
  • 四、添加自定义监控项目
  • 六、配置邮件告警
  • 七、验证配置:
  • 八、监控web站点的可用性
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档