19.1-19.16 监控平台介绍,zabbix安装,忘记密码怎么办,添加主机,处理乱码,设置报警
常用的监控软件有zabbix,cacti,nagios,smokeping,open-falcon。其中open-falcon是小米开发的开源软件,功能强大,主要是大企业在使用。
zabbix,catti,nagios都能很好的监控基础指标。他们都需要LAMP的支持,其中nagios不记录历史数据,所以不需要mysql的支持。
zabbix功能强大,能支持历史数据查询以及成图,还有强大的二次开发接口,所以zabbix是主要流行的监控软件。
zabbix不仅适合中小企业,也适合大型企业。
组件
- zabbix-server 监控的核心模块
- 数据存储
- web界面,gui需要php的支持
- zabbix-proxy 为可选组件,在监控 节点非常多的分布式环境中,可以代理zabbix-server的功能,减轻zabbix-server的负担
- zabbix-agent 在客户端上只需要安装这个模块,用于采集数据并和zabbix-server或者zabbix-proxy交换数据
安装
官网下载地址 www.zabbix.com/download //找到名字带release的包复制下载地址
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm //安装扩展源
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql //安装相应的模块
会连带安装httpd和php
如果mysql之前没有安装的话,需要单独安装
//zabbix-get 服务端上的命令行工具
//zabbix-server-mysql, myslq版的zabbix-server
//zabbix-web-mysql,web界面mysql相关的东西
配置
vim /etc/my.cnf //需要增加配置,下面这一行支持中文字符
character_set_server = utf8
重启mysqld服务后,进入mysql命令行,创建zabbix库
create database zabbix character set utf8; //为db指定字符集
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123123'; //创建用户
cd /usr/share/doc/zabbix-server-mysql-3.2.7 //导入数据
gzip -d create.sql.gz //解压
mysql -uroot -p123123 zabbix < create.sql //初始化数据库
systemctl start httpd; systemctl enable httpd //设置开机启动
vim /etc/zabbix/zabbix_server.conf //修改或增加
DBHost=127.0.0.1 //表示本机
DBPassword=123123 //在DBuser下面增加
systemctl start zabbix-server
systemctl enable zabbix-server //开机启动
netstat -lntp |grep zabbix //查看监听端口
浏览器访问http://hostip/zabbix/ web界面下面配置zabbix
用户名Admin 密码zabbix
进入后台第一件事情就是修改密码
配置过程中发现需要配置时区,这时我们需要在php的配置文件中配置时区为Asia/Shanghai
配置文件为 /etc/php.ini 或者/usr/local/php/etc/php.ini
忘记admin密码
//思路和更改mysql密码一样。只是加密算法变成了md5。进入mysql命令行,选择zabbix库
mysql -uroot -p zabbix
update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
这样就更改了Admin用户的密码
客户端配置
在客户端上也需要下载zabbix的yum源
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
yum install -y zabbix-agent //客户端只安装agent就可以了
vim /etc/zabbix/zabbix_agentd.conf //修改如下配置
Server=127.0.0.1修改为Server=192.168.27.128 //定义服务端的ip(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.27.128 //定义服务端的ip(主动模式)
Hostname=Zabbix server修改为Hostname=cent02 //这是自定义的主机名,一会还需要在web界面下设置同样的主机名
systemctl start zabbix-agent
systemctl enable zabbix-agent
添加主机
先添加主机组aming-test
再添加主机,主机名称和可见名称都写cent02
群组选择aming_test
IP地址填写客户端的ip 192.168.27.129
几个概念:应用集、监控项、触发器、图形、自动发现、web监测
可以自定义一个常用模板,方便给新增主机添加监控项目
自定义aming模板
把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到aming模板里
定义触发器
添加图形
自动发现,找到Template OS Linux,点击右侧的自动发现,参考Mounted filesystem discovery和Network interface discovery定义规则
可以直接导出、导入模板,然后再删除不需要的对象
处理图形中的乱码
设置为中文后,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
自定义监控项
需求:监控某台web的80端口连接数,并出图
两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
对于第一步,需要到客户端定义脚本
vim /usr/local/sbin/estab.sh //内容如下
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
chmod 755 /usr/local/sbin/estab.sh //更改文件权限,不然zabbix用户没法执行
客户端上编辑配置文件 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-agent服务 systemctl restart zabbix-agent
验证
首先到服务端验证,执行命令
zabbix_get -s 192.168.27.129 -p 10050 -k ‘my.estab.count‘
然后在zabbix监控中心(浏览器)配置增加监控项目
键值写my.estab.count
添加该项目后,到“监测中”> “最新数据”查看刚添加的项目是否有数据出现
有了数据就可以添加图形了
“配置”>“主机” >“图形”>“创建图形”
配置报警
使用163或者QQ邮箱发告警邮件
首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务
开启并记录授权码
然后到监控中心设置邮件告警
“管理”,“报警媒介类型”,“创建媒体类型”
{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
创建报警脚本mail.py
vim /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 = 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]
##定义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 //更改权限,否则zabbix无法执行
创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“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}
ID:{EVENT.ID}
点击“新的”,“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”
测试告警
如果报警不成功,可以换邮箱,或者重新申请邮箱试试。
//可以用下面这条命令测试脚本写的是否正确
[root@cent01 alertscripts]# python mail.py 123123@126.com '1111wewewewe' 'wesdsdsd2222'