loadrunner 监控linux linux 监控平台
linux 监控平台
linux监控平台介绍
监控对于网站来说是非常重要,即使是大公司由于监控做得不到位,最终会导致因为服务器的不够稳定,客户对其不够信任,而流失大量客户。 通常监控软件有下面几款,cacti、nagios、zabbix、smokeping、open-falcon等等。 cacti、smokeping偏向于基础监控(网络设备),成图非常漂亮,更加适合在IDC机房使用。 其中nagios和zabbix流行度比较高。几年前还是使用nagios,而近几年zabbix越来越受到欢迎。主要是因为zabbix配置比nagios简单得多,其优势也比nagios多。 open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,他是基于zabbix的监控思想而开发的,非常值得研究。 cacti、nagios、zabbix服务端监控中心,即支持web页面来监控网站,因此需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图。 总之,安装zabbix时要先安装好MySQL,其中PHP和httpd会自带安装上,后续以介绍zabbix为主。zabbix介绍
zabbix采用的是C/S架构,其中客户端用来采集数据,在上报给服务端。zabbix基于C++开发,监控中心支持web界面配置和管理。理论上单server节点可以支持上万台客户端。但如果监控的项目太多了,可以使用代理zabbix-proxy来采集数据,再让他来上报给监控中心。其最新版本3.4,官方中文文档在 https://www.zabbix.com/manuals 方便学习配置zabbix zabbix五个组件 zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据 数据存储 存放数据,比如mysql web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因 zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力 zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据并上报。分主动模式和被动模式zabbix安装
准备工作: 两台机器 一台服务端,一台客户端
服务端:192.168.1.180 abc
客户端:192.168.1.183 localhost
在服务端和客户端上都需要下载zabbix包
[root[@abc]() src]# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm下载完成后需要安装
[root[@abc]() src]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm安装之后就会发现/etc/yum.repos.d 里多了个 zabbix仓库
[root[@abc]() src]# ls /etc/yum.repos.d/ bak CentOS-Debuginfo.repo CentOS-Sources.repo epel-testing.repo CentOS6-Base-163.repo CentOS-fasttrack.repo CentOS-Vault.repo zabbix.repo CentOS-CR.repo CentOS-Media.repo epel.repo [root[@abc]() src]#接下来分别安装zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
zabbix-agent zabbix客户端软件 zabbix-get zabbix服务端上工具 ,可以获得客户端上监控项目的数据 zabbix-server-mysql zabbix监控中心所需的对应MySQL数据(用于导入数据到自建的zabbix库中) zabbix-web web界面 zabbix-web-mysql web界面和MySQL的相关的数据 [root[@abc]() src]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql 服务器需要安装以上的所有包,客户端只需要安装zabbix-agent即可安装MySQL
由于之前安装过,所以不再说明,直接启动mysql [root@abc src]# netstat -tlnp | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 11069/mysqld [root@abc src]#编辑mysql配置文件
[root@abc src]# vim /etc/my.cnf [root@abc src]# cat !$ | grep utf8 cat /etc/my.cnf | grep utf8 character_set_server=utf8 [root@abc src]# 在配置文件中加入如上一行进入数据库窗口zabbix所需的库和用户
[root@abc src]# mysql -uroot -plantern mysql> create database zabbix character set utf8; Query OK, 1 row affected (0.01 sec) mysql> grant all on zabbix.* to'zabbix'@'127.0.0.1' identified by '970823'; Query OK, 0 rows affected (0.01 sec) mysql> ip为zabbix的来源ip 如果数据库的zabbix.server不在一台机器时,要填写zabbix.server的IP地址导入zabbix-server-mysql的数据到zabbix库中
[root@abc src]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/ [root@abc zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz [root@abc zabbix-server-mysql-3.4.11]# mysql -uroot -plantern zabbix < create.sql Warning: Using a password on the command line interface can be insecure. [root@abc zabbix-server-mysql-3.4.11]#启动httpd服务
由于nginx服务在开启中,所以先关闭nginx服务,在开启httpd [root@abc zabbix-server-mysql-3.4.11]# systemctl start httpd [root@abc zabbix-server-mysql-3.4.11]# netstat -tlnp | grep 80 tcp6 0 0 :::41804 :::* LISTEN - tcp6 0 0 :::80 :::* LISTEN 11513/httpd [root@abc zabbix-server-mysql-3.4.11]#更改zabbix server 配置文件
[root@abc zabbix-server-mysql-3.4.11]# vim /etc/zabbix/zabbix_server.conf 修改如下内容 DBHost=127.0.0.1 ##指定数据的IP地址 DBUser=zabbix DBPassword=970823 这里的密码要和在mysql数据库里设置的一致启动zabbix server服务
[root@abc zabbix-server-mysql-3.4.11]# systemctl start zabbix-server [root@abc zabbix-server-mysql-3.4.11]# 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. [root@abc zabbix-server-mysql-3.4.11]# netstat -tlnp | grep 10051 tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 11572/zabbix_server tcp6 0 0 :::10051 :::* LISTEN 11572/zabbix_server [root@abc zabbix-server-mysql-3.4.11]# zabbix_server默认监听端口10051 启动不了服务,或者端口没开启,可以去日志查看情况 -/var/log/zabbix/zabbix_server.log回到/etc/php.ini 配置文件里设置timezone
[root@abc zabbix-server-mysql-3.4.11]# vim /etc/php.ini date.timezone =Asia/Shanghai [root@abc zabbix-server-mysql-3.4.11]# systemctl restart httpd [root@abc zabbix-server-mysql-3.4.11]# 配置完成后重启httpd服务配置web界面
浏览器输入本机IP+/zabbix
之后点击next
这里都是OK ,如果刚才没有配置timezone的话,这里的timezone就不是OK了,接下来点击Next
输入数据库密码 接着点击next
输入zabbix用户的信息 接着点击next
确认信息,接着点击next
提示已经成功!继续next
填写用户名和密码 默认用户名 admin 密码 zabbix
以上即可看到登录后的页面,
修改密码和语言 步骤是:administration--users--admin--进去后即可修改密码和语言
再次刷新界面,即可显示中文版!
mysql修改zabbix admin密码
进入mysql表中zabbix的user表
[root@abc zabbix-server-mysql-3.4.11]# mysql -uroot -plantern Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 124 Server version: 5.6.36-log MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use zabbix; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from users; +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+ | userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page | +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+ | 1 | Admin | Zabbix | Administrator | 4fc737657bfd7389ac458f6f796375a1 | | 1 | 0 | zh_CN | 30s | 3 | default | 0 | | 0 | 50 | | 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 15m | en_GB | 30s | 1 | default | 0 | | 0 | 50 | +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+ 2 rows in set (0.00 sec) mysql>修改user表中的密码
mysql> update users set passwd=md5('111111') where alias= 'Admin'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 passwd=md5(‘111111’)使用md5加密,新密码为六个1客户端安装zabbix
下载zabbix
[root@localhost src]# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm [root@localhost src]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm安装zabbix-agent
[root@localhost src]# yum install -y zabbix-agent修改zabbix-agent 配置文件
[root@localhost src]# vim /etc/zabbix/zabbix_agentd.conf 修改如下三个参数 Server=192.168.1.180 ServerActive=192.168.1.180 Hostname=lan2 server指定zabbix server的IP serverActive表示开启 主动模式,不填写默认为被动模式 hostname 为客户端的名称,启动服务
[root@localhost src]# systemctl start zabbix-agent [root@localhost src]# systemctl enable zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service. [root@localhost src]# netstat -tlnp | grep 10051 [root@localhost src]# netstat -tlnp | grep 10050 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 6617/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 6617/zabbix_agentd [root@localhost src]# zabbix-agent默认监听是10050端口以上就是客户端配置成功了!
主动模式和被动模式
这里主动或者被动是相对客户端来讲的 被动模式,客户端被动地接受连接,并把监控信息传递给服务端,服务端会主动连接客户端获取监控项目数据。 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。 通常下面两种情况使用主动模式更加合适 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。 服务端有公网ip,客户端只有内网ip,但却能连外网(通过iptable的nat表实现),这种场景适合主动模式。添加监控主机
选择 配置选项 --
主机群组 -点击创建主机群组
输入组名---点击下一步
主机 --创建主机-- 输入主机名称和可见名称 选择群组--添加agent的IP地址 添加
创建成功
添加自定义模板
模版 —- 创建模版 —- 添加 模版名字和可见的名称 —- 选择template—- 添加已经复制了一个模板中的监控项的内容至我们新建的模板里
选择test模板,点击链接的模板
输入模板名称,点击添加,然后点击更新 即可使用
自定义模板添加到主机上
主机 —- 选主机名 —- 模版 —- 链接指示器 —- 选test — 添加 —- 更新处理图形中的乱码
查看定义字库的配置文件
[root@abc ~]# cat /usr/share/zabbix/include/defines.inc.php | grep ZBX_FON define('ZBX_FONTPATH', realpath('fonts')); // where to search for font (GD > 2.0.18) define('ZBX_FONT_NAME', 'graphfont'); [root@abc ~]# 第一行是定义字库目录的路径 路径是相对路径 绝对路径是 /usr/share/zabbix/fonts/下 第二行是定义字库的名字为graphfont进入字库的路径
[root@abc ~]# cd /usr/share/zabbix/fonts/ [root@abc fonts]# ll 总用量 0 lrwxrwxrwx. 1 root root 33 7月 23 15:41 graphfont.ttf -> /etc/alternatives/zabbix-web-font [root@abc fonts]# 发现graphfont是软连接文件 起真正的字库是在 /usr/share/fonts/dejavu/DejaVuSans.ttf 我们可以把win上的中文字库拷贝到/usr/share/zabbix/fonts/下并让默认字库graphfont软连接到中文字库查看已下载完成的字体
[root@abc fonts]# ls graphfont.ttf msyh.ttf [root@abc fonts]#修改名称
[root@abc fonts]# mv graphfont.ttf graphfont.ttf.bak [root@abc fonts]# ln -s mysh.ttf graphfont.ttf [root@abc fonts]# 修改原来库的名称,给新的字体文件做软链接现在就已配置完成,去图形里查看即可!
自动发现
步骤: 主机--自定发现 -- 选择 network 设置时间间隔为 30 点击更新
再重启zabbix-server和zabbix-agent服务
都重启后可以在看新出的图线
添加自定义监控项目
在客户端上编写脚本代码
[root@localhost ~]# vim /usr/local/sbin/ [root@localhost ~]# cat !$ cat /usr/local/sbin/ netstat -ant |grep ':80' |grep -c 'ESTABLISHED' [root@localhost ~]# netstat -ant 查看所有tcp协议的网络连接情况 grep -c 统计行数更改脚本权限
[root@localhost ~]# chmod 755 !$ chmod 755 /usr/local/sbin/ [root@localhost ~]#编辑客户端的配置文件
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf 修改内容为如下 UnsafeUserParameters=1 UserParameter=estab.count[*],/usr/local/sbin/ UnsafeUserParameters=1 表示开启自定义脚本 0则关闭 estab.count表示脚本的键值名字 [*]表示脚本需要的参数,多个用,分开 *表示没有参数重启zabbix-agent服务
[root@localhost ~]# systemctl restart zabbix_agentd服务端测试是否有数据
[root@abc fonts]# zabbix_get -s 192.168.1.183 -p 10050 -k 'estab.count' 0 [root@abc fonts]#创建监控项
配置 —- 主机 —- 监控项 —- 创建监控项 —- 填写上名称和键值 —- 添加创建图表
主机 —- 图形 —- 创建图形 —- 填上名称 —- 选择对应的监控项创建触发器
主机 —- 触发器 —- 创建触发器 —- 填上名称和严重性 —- 添加表达式 —- 选择对应的监控项 —- 填上对应的功能和N值 —- 添加配置邮件告警
首先登录自己的邮箱 开启这个服务
到监控中心设置报警
管理 —- 报警媒介类型 —- 创建媒体类型 —- 名称 —- 类型 脚本 —- 脚本名称 —- 参数 —- 添加 {ALERT.SENDTO} 接受邮件的地址 {ALERT.SUBJECT} 主题 {ALERT.MESSAGE} 邮件内容编写配置文件
[root@abc fonts]# vim /usr/lib/zabbix/alertscripts/mail.py [root@abc fonts]# cat !$ cat /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 = '' 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('lantern97@','it is OK!','lantern97@',to,subject,content) if __name__ == "__main__": main() #####脚本使用说明###### #1. 首先定义好脚本中的邮箱账号和密码 #2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容" [root@abc fonts]#修改权限
[root@abc fonts]# chmod 755 !$ chmod 755 /usr/lib/zabbix/alertscripts/mail.py [root@abc fonts]#测试
[root@abc alertscripts]# python mail.py lantern97@ "111" "lan" [root@abc alertscripts]#在监控中心处创建发送告警邮件的用户 如下图已完成
步骤如下:
创建组和用户 管理 —- 用户群组 —- 创建用户群组 —- 别名 —- 权限 —- 读写 —- 选择 所有 —- 添加 管理 —- 用户 —- 创建用户 —- 别名 —- 群组 —- 密码 —- 报警媒介 —- 添加 收件人 —- 添加 设置动作 配置 —- 动作 —- 创建动作 —- 名称 —- 条件 操作 —- 消息内容 —- 发送到用户群组 —- 发送到用户 —- 仅送到 —- 添加 消息内容为 HOST:{} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{} messages:{ITEM.NAME}:{ITEM.VALUE} ID: {EVENT.ID}测试报警
配置 —- 主机 —- 触发器 —- 创建触发器配置完成后即可发现问题已生成
动作已完成
然后去邮箱里就可以看到邮件了
扩展
zabbix监控交换机(思科) http://tryrus.blog.皇冠云.com/10914693/1789847
zabbix远程执行命令 http://www.ywnds.com/?p=6610
zabbix分布式部署 http://sfzhang88.blog.皇冠云.com/4995876/1364399
zabbix监控tomcat(版本有点老,大家只需要参考步骤,不能照搬) http:///?p=616