学习zabbix(四)
一. 监控知识
1.硬件监控:
机房巡检,远程控制卡,IPMI
2.系统监控:
cpu负载查看(指标):uptime(低于3),top(30%-70%), vmstat, mpstat
内存监控: free -m (不超过80%)
硬盘监控:df , iotop(查看进程使用io情况),iostat
网络监控:iftop -n
性能监控工具:nmon(全方位监控,测试用)。
ps: nmon使用参考文章:http://www.cnblogs.com/mululu/p/6398483.html
3.网络监控:
iftop,站长工具,SmokePing,监控宝
二. CPU监控知识
1.CPU三个重要的概念:
- 上下文切换: CPU调度器实施进程切换的过程,
- 运行队列(负载): 单位时间内运行队列的排队数
- 使用率:
2.性能的基准线:
- 每个CPU核心的运行队列在(1-3)比较正常,比如4核不超过12。
- CPU的使用率标准:65%-70%用户态(us),30%-35%内核态(sy),0%-5%空闲(id)
3.监控工具:
- top
- vmstat 1 10 (每秒运行1次,总共运行10次),mpstat (需要安装sysstat)
二. ZABBIX安装相关
官方安装文档:https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages
1.安装zabbix2.4的Yum源:
rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
2.安装zabbix:
yum install zabbix zabbix-server zabbix-get zabbix-web zabbix-server-mysql zabbix-web-mysql zabbix-agent
3.初始化数据库:
mysql> create database zabbix character set utf8 collate utf8_bin; #创建zabbix库
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix123'; #创建zabbix用户
cd /usr/share/doc/zabbix-server-mysql-2.4.8/create/
mysql -uroot -pRoot123 zabbix< schema.sql
mysql -uroot -pRoot123 zabbix < images.sql
mysql -uroot -pRoot123 zabbix < data.sql
4.修改zabbix时区:
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
5.修改zabbix_server数据库配置:
vim /etc/zabbix/zabbix_server.conf DBHost=172.16.1.214
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
6.启动zabbix:
/etc/init.d/httpd restart
/etc/init.d/zabbix-server start
http://172.16.1.211/zabbix/ #访问地址,第一次访问会出现安装向导
登录默认用户:Admin 密码:zabbix
7.安装zabbix客户端:
yum install zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf Server=172.16.1.211
8.启动zabbix客户端:
/etc/init.d/zabbix-agent start
三. ZABBIX使用相关
1.客户端添加自定义监控项(监控系统用户数):
vim /etc/zabbix/zabbix_agentd.conf UserParameter=login-user,uptime |awk '{print $6}'
#UserParameter后面的格式为: key名称,命令
/etc/init.d/zabbix-agent restart #添加完后要重启agent
2.服务端添加自定义监控项:
# zabbix_get -s 172.16.1.210 -k login-user #先测试获取
-s: 客户端IP
-k: key名称
在界面创建新Item:
PS:添加完成以后还可以为自定义监控项添加图表( Graphs)
3.Zabbix添加自定义告警脚本:
1.告警脚本放在“/usr/lib/zabbix/alertscripts”目录下。
2.要支持三个参数:收件人,主题,内容
3.执行权限
测试脚本:
vim sms.sh #!/bin/bash
ALTER_TO=$1
ALTER_TITLE=$2
ALTER_BODY=$3 echo "$ALTER_TO $ALTER_TITLE $ALTER_BODY">>/tmp/sms.log
4.WEB页面添加自定义告警:
{ALERT.SENDTO}收件人地址
{ALERT.SUBJECT}主题
{ALERT.MESSAGE}详细内容
4.WEB页面配置动作信息:
配置报警操作动作:
状态:{TRIGGER.STATUS}
时间:{EVENT.DATE} {EVENT.TIME}
告警名称: {TRIGGER.NAME}
主机: {HOST.NAME}
监控项: {ITEM.NAME}:{ITEM.VALUE}
配置报警恢复动作
状态:{TRIGGER.STATUS}
时间: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
告警名称: {TRIGGER.NAME}
主机: {HOST.NAME}
监控项: {ITEM.NAME}:{ITEM.VALUE}
四. ZABBIX通过percona监控Mysql
1.安装percona软件:
# yum install https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.7/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.7-2.noarch.rpm
# yum install percona-zabbix-templates php php-mysql
# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf
# systemctl restart zabbix-agent.service
2.导入percona的Zabbix模板文件:
由于官方提供的模板文件不兼容3.0,我们需要下载我修改好的:
http://download.csdn.net/download/wmj2004/10012276
下载完成后导入zabbix模板即可
3.创建percona配置文件:
# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf <?php
$mysql_user = 'root';
$mysql_pass = 's3cret';
ps: 根据情况修改下get_mysql_stats_wrapper.sh文件的hostname参数
4.测试mysql监控是否正常:
# zabbix_get -s 172.16.20.11 -k MySQL.max-connections
五. Zabbix-Agent主动模式
1.哪些情况需要使用主动模式(active):
1.Queue里面有大量延时的item
2.生产环境监控主机超过300台
2.开启zabbix-agent主动模式:
#Server=172.16.100.1 #备注掉
StartAgents=0 #关闭监听进程
ServerActive=172.16.100.1 #配置服务器地址
Hostname=tools01-uat #配置主机名
ps: 开启主动模式后service端模板中的“监控项”类型改成“zabbix主动模式”
六. ZABBIX分布式部署
1.安装Zabbix-Proxy:
yum install zabbix-proxy zabbix-proxy-mysql mariadb-server
systemctl start mariadb
#mysql命令开始
create database zabbix_proxy character set utf8;
grant all on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy'
#mysql命令结束
zcat schema.sql.qz | mysql -uzabbix_proxy -pzabbix_proxy #初始化数据库
六. ZABBIX自动化监控
1.Zabbix-agent自动注册:
先修改zabbix-agent的配置文件:
# grep ^[a-Z] /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=172.16.100.1
ServerActive=172.16.100.1 #配置上service的ip
Hostname=tools01-uat.hewomi.com #配置上主机名称,注册时会自动填上
HostMetadataItem=system.uname #配置主机元素,取uanme
Include=/etc/zabbix/zabbix_agentd.d/*.conf
在service上面添加自动注册的动作,看图操作:
1.
2.
3.
2.Zabibx-service自动发现(生产不建议使用):
3.通过Zabbix-api自动化添加:
官方api说明文档: https://www.zabbix.com/documentation/3.4/zh/manual/api
先获取用户令牌,记录下返回的result参数。
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "密码"
},
"id": 1,
"auth": null
}' http://172.16.100.1/zabbix/api_jsonrpc.php | python -m json.tool
通过获取的令牌,查看下所有主机列表:
curl -s -X POST -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "6d49c3f282f3949dfa30805e9f5d984e",
"id": 1
}' http://172.16.100.1/zabbix/api_jsonrpc.php | python -m json.tool
4.通过Python脚本获取auth
#!/usr/bin/env python
# -*- coding:utf-8 -*- import requests
import json url = 'http://192.168.56.11/zabbix/api_jsonrpc.php'
post_data = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "zhangsan",
"password": "123123"
},
"id": 1
}
post_header = {'Content-Type': 'application/json-rpc'} ret = requests.post(url, data=json.dumps(post_data), headers=post_header) zabbix_ret = json.loads(ret.text)
if not zabbix_ret.has_key('result'):
print 'login error'
else:
print zabbix_ret.get('result')
只要添加主机的时候通过api添加主机并加入群组和模板即可
最新文章
- 20161023 NOIP 模拟赛 T2 解题报告
- SQL Server 存储过程生成insert语句
- JMeter设置集合点
- Web Service 中返回DataSet结果的几种方法
- Codeforces Round #291 (Div. 2)
- JDK自带方法实现RSA数字签名
- C#获取本机IP方法,获取本机局域网IP地址方法
- chrome误删书签恢复。
- Eclipse 改动凝视的 date time 日期时间格式,即${date}变量格式
- vue+springboot前后端分离实现单点登录跨域问题处理
- asp.net core系列 49 Identity 授权(上)
- 【FF14】工匠配方爬取
- matplotlib 命令行画图保存
- 可扩展的Web架构和分布式系统
- 别人的Linux私房菜(15)磁盘配额与高级文件系统管理
- IdentityServer4(8)- 使用密码认证方式控制API访问(资源所有者密码授权模式)
- APIO2016赛艇
- 【Java】 剑指offer(38) 字符串的排列
- Spring MVC RESTful
- iOS - Share Extension