文章目录

zabbix

记录zabbix监控的一些东西,本人不倾向于使用zabbix 奈何使用zabbix的人实在太多了 记录一个比较老的版本的使用 
推荐的监控工具  prometheus  openfalcon netdata 等对于系统层面的监控做的更为细致 数据库选型建议使用时序数据库对于大量的监控数据好做相应处理 展示可以使用grafana做相应展示

zabbix安装及配置

//安装 处参考 http://www.cnblogs.com/oskb/p/5535650.html

//server 端安装
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-server-mysql zabbix-web-mysql mariadb-server -y
systemctl start mariadb && systemctl enable mariadb

//导入数据库
cd /usr/share/doc/zabbix-server-mysql-3.0.3/
gunzip create.sql.gz
mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbixpwd';
mysql> quit;
mysql -uzabbix -pzabbixpwd zabbix < create.sql

// 更改zabbix_server 配置 最基础配置 其他配置根据自己的实际需求进行更改
grep -v -E '^#|^$' /etc/zabbix/zabbix_server.conf 
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost={your_db_host}
DBName=zabbix
DBUser=zabbix
DBPassword=xxxxxxx
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/data/bin
ExternalScripts=/data/bin
LogSlowQueries=3000

systemctl start zabbix-server && systemctl enable zabbix-server

// 修改apache配置 默认参数已经设置好 需要更改下自己的时区
vim /etc/httpd/conf.d/zabbix.conf 

// 启动完成后访问 http://{server_ip}/zabbix 访问zabbix安装页面
systemctl enable httpd && systemctl start httpd


//zabbbix-agent 安装  172.18.103.250 为server的IP地址  注意:Hostname将替换为主机名 请确定主机名是否更改或者是否需要设置成主机名
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm && yum -y install zabbix-agent  &&\
sed -i 's/ServerActive=127.0.0.1/ServerActive=172.18.103.250/g' /etc/zabbix/zabbix_agentd.conf && \ 
sed -i 's/Server=127.0.0.1/Server=172.18.103.250/g' /etc/zabbix/zabbix_agentd.conf && \
sed -i "s/Hostname=Zabbix server/Hostname=$HOSTNAME/g" /etc/zabbix/zabbix_agentd.conf  &&  \
systemctl enable zabbix-agent && systemctl start zabbix-agent

报警

// 邮件报警配置 参考 https://www.cnops.xyz/archives/242 
//编写报警脚本放在AlertScriptsPath 目录下 脚本权限为4755(使zabbix有相关权限执行该脚本)
// 其他报警方式都可以实现(如微信 钉钉等 自己参考接口文档编写对应脚本)

#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import sys

#邮箱服务器地址
mail_host = 'smtp.gmail.com'
#邮箱用户名
mail_user = 'younglinuxer@gmail.com'
#邮箱密码
mail_pass = 'xxxxx'

def send_mail(to_list,subject,content):
    me = mail_user
    msg = MIMEText(content,_charset='utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = me
    msg['to'] = to_list
    #msg['to'] = to_list

    try:
        s = smtplib.SMTP_SSL(mail_host, 465)   
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

if __name__ == "__main__":
    print sys.argv[1]
    print sys.argv[2]
    print sys.argv[3]
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

snmp && jvm && nginx && redis && mysql 等应用监控

snmp //现一般用于网络设备监控 监控网口流量等 开启网络设备的snmp相关服务 可以系统安装snmp客户端后调用设备snmp服务 能获取到相应设备的数据

jvm 监控 //配置tomcat ... 不建议操作 很繁琐并且监控数据并不及时

nginx监控 //配置nginx nginx_status 功能 能获取到nginx统计的相关信息

redis监控 //更具redis info 获取相关监控数据 

mysql监控 //根据performance_schema查询相应监控数据 或者直接执行查询语句获取对应的值

web监控 // 直接在zabbix 页面设置对应的web监控场景 

//这里提供一个github上比较好用的基础监控脚本集合 https://github.com/CursorCX/zabbix-ztc.git

// 授人以鱼不如授人以渔 下节讲解如何编写zabbix 对应监控项

新增监控项&调试

//安装zabbix-get 
yum install zabbix-get -y
//zabbix_get 获取监控的值 -s指定 主机 -p 指定端口 -k 指定需要获取的值
zabbix_get -s chips1 -k "system.cpu.load[all,avg1]"

//新增redis 简单监控项示例  大致思路   zabbix传入对应监控项的值 -- agent获取对应的值--- 触发监控脚本 ---脚本根据传入的值返回对应监控项的值---zabbix收集对应的值并保存到数据库形成图表
//编写脚本 通过这个简单的命令就能获取传入对应的值即可获取到对应的值 如'connected_clients,total_connections_received,expired_keys'等等 
// 此处连接本机redis 而且没有设置密码 如需连接其他redis请增加对应参数
#!/bin/bash
REDIS_VALUE=$1
redis-cli info|grep $REDIS_VALUE|awk -F ':' '{print $2}'

//配置zabbix-agent配置文件  /etc/zabbix/zabbix_agentd.d/redis.conf
UserParameter=zms_db.redis[*],/data/bin/redis_monitor.sh  $1 //此处为固定写法传入第一个参数 获取对应的返回值

//重启zabbbix-agent后 使用zabbix-get 获取对应监控的值

zabbix_get -s {redis_server} -k "zms_db.redis[connected_clients]" //这样zabbix就能获取到相应redis当前的连接数

//后续在zabbix页面创建对应的监控项,模板,触发器等

zabbix-api调用

https://github.com/lukecyca/pyzabbix.git
https://www.zabbix.com/documentation/3.0/manual/api