19.1 Linux监控平台介绍
19.2 zabbix监控介绍
19.3/19.4/19.6 安装zabbix
19.5 忘记Admin密码如何做
19.7 主动模式和被动模式
19.8 添加监控主机
19.9 添加自定义模板
19.10 处理图形中的乱码
19.11 自动发现
19.12 添加自定义监控项目
19.13/19.14 配置邮件告警
19.15 测试告警
19.16 不发邮件的问题处理
常见开源监控软件:
1. cacti、nagios、zabbix、smokeping、open-falcon等等
2. cacti、smokeping偏向于基础监控,成图非常漂亮
3. cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
4. open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
5. 后续以介绍zabbix为主
1. C/S架构,基于C++开发,监控中心支持web界面配置和管理
2. 单server节点可以支持上万台客户端
3. 最新版本3.4,官方文档https://www.zabbix.com/manuals
4. 5个组件
5. zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
6. 数据存储 存放数据,比如mysql
7. web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因
8. zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力
9. zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报,可选组件
安装zabbix-sever的主监控服务器监控安装zabbix-agent的服务器
zabbix监控流程图:
19.3 安装zabbix(上)19.4 安装zabbix(中)
Zabbix服务端安装
一、配置防火墙,开启10050、10051的TCP和UDP端口
vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A INPUT -s 192.168.106.168 -m state --state NEW -m tcp -p tcp --dport 10050:10051 -j ACCEPT
-A INPUT -s 192.168.106.168 -m state --state NEW -m udp -p udp --dport 10050:10051 -j ACCEPT
:wq! #保存退出
service iptables restart #重启防火墙使配置生效
说明:192.168.106.168是Zabbix服务端的IP地址,表示端口只对此IP开放,如果要对所有IP开放,规则如下:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050:10051 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 10050:10051 -j ACCEPT二、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
1. 下载zabbix包(rpm包) :https://coding.net/u/aminglinux/
[root@hao-01 ~]# wget --no-check-certificate https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm https改成http即可
[root@localhost conf]# rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
curl: (35) TCP connection reset by peer
错误:跳过 https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm - 传输失败
故障解决:关闭SELinx #setenforce 0 (暂时关闭)#vi /etc/selinux/config (修改SELINUX=enforcing为disabled)然后重启
以上说法不对,一般用wget下载
[root@panyu001 ~]# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
--2018-10-21 19:04:35-- https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
正在解析主机 repo.zabbix.com (repo.zabbix.com)... 162.243.159.138
正在连接 repo.zabbix.com (repo.zabbix.com)|162.243.159.138|:443... 已连接。
无法建立 SSL 连接。
解决方法:原命令上加上" --no-check-certificate"https改成http即可
这是因为wget在使用HTTPS协议时,默认会去验证网站的证书,而这个证书验证经常会失败。
2. 安装zabbix(rpm包) :[root@hao-01 ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
3. 如果机器没有安装myslq,可以用yum安装或者按lamp里安装方法安装!http://blog.51cto.com/zhuneianxiang/2073129
4. yum安装一系列 :[root@hao-01 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
5. 启动mysql :[root@hao-01 ~]# systemctl start mysql
6. 搜索mysql是否启动 ?[root@hao-01 ~]# ps aux |grep mysql
7. 编辑mysql配置文件 :[root@hao-01 ~]# vim /etc/my.cnf #https://blog.csdn.net/djcode/article/details/78621772复制并编辑mysql配置文件 :[root@hao-01 ~]# mv /etc/my.cnf.bak /etc/my.cnf [root@hao-01 ~]# vim /etc/my.cnf
添加内容(中文字符集) :character_set_server = utf8
8. 重启mysql :[root@hao-01 ~]# systemctl restart mysql
9. 创建zabbix库 :10. 创建zabbix用户 :
#groupadd zabbix
#useradd -g zabbix -m zabbix #???? 这一步没完成
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix123';# 密码设置为zabbix123
mysql> quit; #此时要给zabbix数据库受相应的权限,注:ip为zabbix服务器的IP地址。
mysql> select host,user from mysql.user; #显示所有用户
mysql> drop user [email protected]; #删除用户
mysql> drop user zabbix@localhost; #删除用户
注意:出现Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW WARNINGS; #输入SHOW WARNINGS 或者看错误日志/var/log/mysqld.log
如何确认已经给到mysql权限
查看mysql用户权限:show grants for 用户名
mysql> SHOW grants for 'zabbix';
ERROR 1141 (42000): There is no such grant defined for user 'zabbix' on host '%'
在计算机网络中,localhost(意为“本地主机”,指“这台计算机”)是给回路网络接口(loopback)的一个标准主机名,相对应的IP地址为127.0.0.1(IPv4)和[::1](IPv6)
12. 进入zabbix-server-mysql目录,注意mysql当前安装的版本号 : [root@hao-01 ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.0/
13. 解压当前目录下create.sql.gz(sql视图)压缩包 :[root@hao-01 zabbix-server-mysql-4.0.0]# gzip -d create.sql.gz
14. 把解压的create.sql文件内容,导入到zabbix库里 :
[root@hao-01 zabbix-server-mysql-4.0.0]# mysql -uroot -p zabbix < create.sql
[root@hao-01 zabbix-server-mysql-4.0.0]# cd 进入家目录
[root@panyu001 zabbix-server-mysql-4.0.0]# mysql -uroot zabbix < create.sql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 改成以上加-p
[root@panyu001 zabbix-server-mysql-4.0.0]# mysql -uroot -proot zabbix < create.sql ???
mysql: [Warning] Using a password on the command line interface can be insecure.
15. 编辑zabbix_server.conf配置文件 :[root@hao-01 ~]# vim /etc/zabbix/zabbix_server.conf
添加内容:
DBHost=127.0.0.1 #这里的IP是设定的来源ip,不是本机IP,创建用户zabbix用户时来设定的 ???
DBPassword=zabbix123 #这里设置的密码,是zabbix用户在mysql上的密码!一定要写对
16. 启动zabbix :
[root@hao-01 ~]# systemctl start zabbix-server
[root@hao-01 ~]# systemctl enable zabbix-server
如果启动zabbix报下图错误,就关闭掉SELinux防火墙:[root@hao-01 ~]# setenforce 0
[root@panyu001 zabbix-server-mysql-4.0.0]# systemctl restart zabbix-agent
Job for zabbix-agent.service failed because the control process exited with error code. See "systemctl status zabbix-agent.service" and "journalctl -xe" for details.
[root@panyu001 zabbix-server-mysql-4.0.0]# systemctl restart zabbix-agent.service
Job for zabbix-agent.service failed because the control process exited with error code. See "systemctl status zabbix-agent.service" and "journalctl -xe" for details.解决问题: "journalctl -xe" 查看问题点
17. 查看是否启动zabbix ?[root@hao-01 ~]# ps aux |grep zabbix
18. 查看是否有服务在监听80端口 ?[root@hao-01 ~]# netstat -lntp
19. 启动http服务前,先关闭nginx服务(nginx会监听80端口) :[root@hao-01 ~]# /etc/init.d/nginx stop
20. 启动http服务 :
[root@hao-01 ~]# systemctl start httpd
[root@hao-01 ~]# systemctl enable httpd
21. Linux服务器上打开80端口 :[root@hao-01 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
22. (wep)游览器访问 ip/zabbix :点击next step
报错了!需要定义地区 :
23. 更改php配置文件 :[root@hao-01 ~]# vim /etc/php.ini # 更改内容(定义地区为上海即可) date.timezone = Asia/Shanghai
命令模式 输入 / 和搜索内容,去掉;,使之成立
24. 重启Apache服务(httpd) :[root@hao-01 ~]# systemctl restart httpd
25. 游览器再次访问ip/zabbix/setup.php刷新,下一步 :
26. 设定如下参数 :mysql创建zabbix时设定的 密码是 zabbix123
27. 定义zabbix主机名 :
28. 上面下一步下一步,登录默认管理员 :Username:Admin panyu001 Password:zabbix
29. 进入管理界面 :Administration——Users——Admin
30. 点击上图用户Admin,设定Admin管理账号新密码(安全):panyu001000,设定中文语言 :
31. 重新登录,新密码即可生效;刷新页面,中文显示 :Zabbix agent on Zabbix server is unreachable for 5 minutes
一般是配置文件的问题 vi /etc/zabbix/zabbix_agentd.conf ,根据提示修改
1. 登录mysql :[root@hao-01 ~]# mysql -uroot -p
2. 进入zabbix库 :mysql> use zabbix
3. 重置管理用户(Admin)密码 :mysql> update users set passwd=md5('xinmima') where alias='Admin';
Zabbix客户端安装
1. 下载zabbix包(rpm包) :yum -y install wget
[root@hao-02 ~]# wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
wget repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
2. 安装zabbix(rpm包) :[root@hao-02 ~]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
3. yum安装 :[root@hao-02 ~]# yum install -y zabbix-agent
4. 更改zabbix_agentd.conf 配置文件 (yum install -y vim):[root@hao-02 ~]# vim /etc/zabbix/zabbix_agentd.conf
更改内容(指定监听服务端ip):Server=192.168.106.128
ServerActive=192.168.106.128
5. 启动zabbix :[root@hao-02 ~]# systemctl start zabbix-agent
6. 查看zabbix是否启动 ?[root@hao-02 ~]# ps aux |grep zabbix
1. 主动或者被动是相对客户端来讲的
2. 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端
3. 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
4. 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
5. 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式
1. windows游览器访问hao1Linux服务器ip/zabbix,创建主机群组 :配置——主机群组——创建主机群组
定义:主机群组祖名 组名-----添加
2. 创建主机 :配置——主机——创建主机
定义:主机名称——可见的名称——选择群组——客户端ip
几个概念:应用集、监控项、触发器、图形、自动发现、web监测
19.9 添加自定义模板
1. 创建模块 :配置——模块——创建模块
定义:模板名称——可见的名称——Templates
2. 添加成功的模板,再点击进来,按如下修改 :
链接的模板——选择——Template OS Linux——选择——添加——添加——更新
链接的模板——取消链接——更新
更新模板!!!
3. 监控项下 删除多余 监控项 :图片红空中的9个保留,其他的勾选全部删除掉!
保留下的9个监控项,如下图 :
4. 应用集下 删除没有包含监控项的应用集 :
5. 图形下 删除CPU utilization这项 :
19.10 处理图形中的乱码
1. 游览器:hao-02主机(客户端),选择链接模板 :
配置—主机—hao-02—模板—选择—hao—选择—添加—更新
更新完成 :
2. 从Window系统中,拷贝一份中文字体,上传到linux服务端上 :
C:\Windows\Fonts
上传到hao1服务器上,快捷键(上传简体字楷书):Ctrl + Alt + F
3. 把SIMLI.TTF(简体字楷书),移动到.../zabbix/fonts/目录下:[root@hao-01 ~]# mv /root/SIMLI.TTF /usr/share/zabbix/fonts/
4. 进入 /usr/share/zabbix/fonts/目录下:[root@hao-01 ~]# cd /usr/share/zabbix/fonts/
5. 重命名原有的graphfont.ttf文件:[root@hao-01 ~]# mv graphfont.ttf graphfont.ttf.beifen
6. 把上传的SIMLI.TTF(简体字楷书),重命名为graphfont.ttf :[root@hao-01 ~]# mv SIMLI.TTF graphfont.ttf
7. 游览器:hao2主机,图形——预览,显示中文,不再显示小长条就可以了,这就是没有对应中文数据包造成的!
需求:监控某台web的80端口连接数,并出图
两步:1)zabbix监控中心创建监控项目;
2)针对该监控项目以图形展现
客户端hao2机器配置:
1. 客户端(hao2)编写estab.sh脚本 :
[root@hao-02 ~]# vim /usr/local/sbin/estab.sh
添加内容 :
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
2. 设定estab.sh脚本权限为755 :
[root@hao-02 ~]# chmod 755 /usr/local/sbin/estab.sh
3. 客户端(hao2)编辑配置文件 :
[root@hao-02 ~]# vim /etc/zabbix/zabbix_agentd.conf
添加内容( =1表示使用自定义的脚本) :
UnsafeUserParameters=1
UserParameter=[*],/usr/local/sbin/estab.sh
4. 重启zabbix-agent服务 :
[root@hao-02 ~]# systemctl restart zabbix-agent
服务端hao1机器测试:
1. 远程到客户端ip,执行命令(获取80端口连接数) :
[root@hao-01 ~]# zabbix_get -s 192.168.211.129 -p 10050 -k 'my.estab.count'
2. 临时关闭getenforce防火墙 :
[root@hao-01 ~]# setenforce 0
关闭firewalld防火墙;查看是否还有防火墙规则?
[root@hao-01 ~]# systemctl stop firewalld
[root@hao-01 ~]# iptables -nvL
3. 游览器访问ip/zabbix,创建监控项 :
名称——键值——添加
4. 创建图形 :
名称——添加——并发连接数——选择——添加
5. 创建触发器 :
名称——严重性——添加——监控项-选择——功能——N——插入——添加
1. 登录163网易邮箱,设置——客户端授权密码 :设置开启POP3、IMAP、SMTP服务 开启并记录授权码
2. 创建媒体类型 :
名称——类型——脚本名称(mail.py)——脚本参数 :
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
3. 图中AlertScriptsPath=目录,mail.py脚本创建在这个目录下 :[root@hao-01 ~]# vim /etc/zabbix/zabbix_server.conf
4. 创建mail.py脚本 :[root@hao-01 ~]# vim /usr/lib/zabbix/alertscripts/mail.py
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
内容参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
添加内容 :## yum -y install dos2unix* ## dos2unix filename
#!/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 sendqqmail(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]
##定义邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开)
sendqqmail('[email protected]','mima','[email protected]',to,subject,content)
if __name__ == "__main__":
main()
5. 设定mail.py脚本权限为755 :[root@hao-01 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py
6. 测试发给指定邮箱一封邮件 :[root@hao-01 ~]# python mail.py [email protected] "biaoti" "neirong" # 完成
1. 创建用户 :
定义用户参数如图 :密码py0.。。。2
进入hao用户的对应用户群组,更改用户群组的权限为读写!!!
定义报警媒介(接收邮箱地址) :
确定hao用户—权限是读写!!! ????无法设置
2. 创建动作 :
设置动作:
设置操作 :默认信息:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
设置恢复操作:默认信息:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
1. 创建触发器 :
配置触发器参数为错误参数,达到发邮箱报警效果!!!
检测中——仪表板——最近20个问题
zabbix-agent端:
zabbix-server端:
1.检查是否能发邮件
2.检查报警媒介是否配置正确
3.添加用户有没有报警媒介及权限
4.添加动作,操作及恢复操作配置好