zabbix学习笔记

一、安装

  • 常用监控系统架构:
    数据采集–数据存储–数据分析、展示、告警
  • 安装依赖:
    数据库、Apache、PHP、gd、bcmath、ctype、libXML、xmlreader、session、socket、mbstring、mbstring、gettext、ldap
    OpenIPMI、libssh2、fping、libcurl、libiksemel、libxml2、net-snmp(下面是服务器额外依赖)
  • 安装:
    • 1、安装zabbix-server、zabbix-web
      yum install zabbix-server-mysql zabbix-web-mysql
    • 2、安装数据库
      wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
      yum -y install mysql57-community-release-el7-10.noarch.rpm
      yum -y install mysql-community-server
    • 3、创建database
      mysql -uroot -p -e 'create database zabbix character set utf8 collate usf8 bin;'
    • 4、创建用户
      mysql -uroot -p -e 'grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';flush privileges;'
    • 5、导入数据库
      zcat /usr/share/doc/zabbix-server-mysql-3.0.8/create.sql.gz | myql -uzabbix -pzabbix zabbix
    • 6、修改apahe配置的ServerName
      vim /etc/httpd/conf.d/httpd.conf
      ServerName 127.0.0.1:80
      启动apahe:
      systemctl enable httpd
      systemctl start httpd
    • 7、修改zabbix页面配置文件:/etc/httpd/conf/zabbix.conf
    • 8、打开页面:192.168.19.203/zabbix, 默认用户名密码:Admin,zabbix
      页面上配置链接zabbix用户的数据库:会生成配置文件/etc/zabbix/web/zabbix.conf.php
    • 9、修改zabbix-server配置文件:
      vim /etc/zabbix/zabbix_server.conf
      DBPassword=zabbix(数据库密码)
    • 10、启动zabbix-server
      systemctl start zabbix-server;
      systemctl enable zabbix-server;
    • 11、在被监控的机器上安装zabbix-agent:
      yum install zabbix-agent
      修改配置:
      vim vim /etc/zabbix/zabbix_agentd.conf
      Server:zabbix-server的ip地址
      ServerActive:当agent以主动模式配置
      Hostname :主机名
      web界面上:配置->主机->启用指定客户端

二、常用命令

zabbix_get -s [主机名] -k [监控项] ->只能取agent的监控项的值
zabbix_agentd -p	->获取机器上所有软件,监控项(前面是key后面是值,u:正整数,d:浮点数,s:字符串)
zabbix_server -R config_cache_reload:重新加载配置文件

三、添加自定义items

进入指定客户端目录:
cd /etc/zabbix/zabbix-agent.d/

  • 1.新建配置文件(agent)
    vim monitor_file.conf
    UserParameter=monitor_file, stat -c %s /etc/service# 前面是key,后面是取值方法

  • 2.重启zabbix-agent
    systemctl restart zabbix-agent

  • 3.server机器上获取监控的值(测试一下)
    zabbix_get -s linux-node2.example -k monitor_file

  • 4.界面上新建item(可以参考其他item)
    Configure->Hosts->主机->items
    一些配置项:

    		key:monitor_file(监控项)
    		Host interface: ip:port
    		Type of information:文本类型
    		units:单位
    		Use custom multiplier:自定义乘以多少倍,解决数值大了,单位的问题
    		Store value(存储值):Delta(speed per second:取一段时间内的平均值)
    		New application:define(自定义的意思)
    		Update interval:间隔时间
    		Custom interval:自定义监控时间
    		Show value:显示的类型(例如:Service state[成功返回1,失败返回0],可以去Administrator->General中查看所有类型详细,也可以新建)```
    
    
  • 解决乱码:从本机上C->Windows->Fonts中选择一个字体上传到zabbix-server的/usr/share/zabbix/fonts,替代原来的文件

四、注意

  • 自定义脚本报警:
    自定义脚本报警(可在添加微信报警时用):脚本必须放在目录:/usr/lib/zabbix/alertscripts/
    短信报警:阿里大于等第三方短信平台
    邮件报警:记得打开邮件smtp的相关服务

  • 添加主机注意:
    Host name:如果是被动模式则没什么要求,如果是主动模式必须与配置文件中一一对应,并且Host name在数据库中值是唯一的,所以不能重复

五、监控各种东西

  • web监控:
    configuration->hosts->主机->web 检测->创建web监测
    Scenario->
    Agent:选择模拟浏览器
    steps->模拟完成的操作
    URL:访问的网址
    Required string:正常情况返回的字符串
    Required status codes:正常情况返回的状态码

  • 监控mysql

    • 1、/etc/zabbix/zabbix_agent.d/下默认的配置就是监控mysql的配置,可以自己在需要添加用户名密码的位置填上用户名密码,也可以填上$1, $2…,在监控项中传参
    • 2、重新加载配置文件:zabbix_server -R config_cache_reload
    • 3、修改Template App MySQL模板:
      • a、选中模板:Macros下
        Template macros(添加变量):
        {KaTeX parse error: Expected 'EOF', got '}' at position 5: USER}̲=>数据库用户名 {PASSWD}=>密码
      • b、修改items:
        选中items:
        修改key使其可以传递上面定义的变量,及在mysql.status[]中括号内对应位置添加{KaTeX parse error: Expected 'EOF', got '}' at position 5: USER}̲,{PASSWD},具体位置根据配置文件内定义的传递参数$来决定
  • 监控网络设备(交换机,路由器)

    • 添加主机:
      Host:添加SNMP接口
      模板:使用SNMP模板
      Macros:配置团体名:团体名默认是public,根据交换机配置修改{KaTeX parse error: Expected 'EOF', got '}' at position 15: SNMP_COMMUNITY}̲,{ZABBIX_SERVER_IP}:zabbix_server的ip
  • 监控tcp的状态

    • tcp11种状态(配图tcp3次握手4次挥手):
      • 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 状态转移:CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
      • 服务器独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK
      • 状态转移:CLOSED->LISTEN->SYN_RCVD ->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
      • 共有的:(1)CLOSED (2)ESTABLISHED
    • 获取tcp状态:netstat -ant 或 ss -at 或 man ss
    • 步骤
      • 1.添加配置文件(/etc/zabbix/zabbix_agent.d/TCP_Status.conf)
        UserParamenter=TCP_Status[*],netstat -ant |grep -c $1
      • 2.重启zabbix_agent
        systemctl restart zabbix_agent
      • 3.创立模板
        添加模板名名、组即可
      • 4.选择模板,添加items
        Key:TCP_Status[TIME_WAIT](中括号内为tcp状态参数,可以将所有tcp状态参数都建一个items)
        Application:组名
      • 5.创建主机,添加监控模板
  • 监控nginx

    • 1.修改nginx的配置文件nginx.conf:
      location /nginx_status{
      	stub_status on;(主要把stub_status开启)
      	access_log off;
      	allow 192.168.56.0/24;
      	allow 127.0.0.1;
      	deny all;
      }
      
    • 2.添加监控配置文件(先把zabbix配置文件中的包含改为Include=/etc/zabbix/zabbix_agentd.d/*.conf)
      UserParameter=nginx_status[*],/etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1
    • 3.将监控脚本(主要命令是:curl 127.0.0.1/nginx_status(根据nginx.conf))放在/etc/zabbix/zabbix_agentd.d下
    • 4.导入模板
  • JMX(主要用来监控java程序)监控tomcat

    • 1、yum install -y zabbix-java-gateway(依赖java,需要先安装java)
    • 2、在tomcat的catalina.sh文件中
CATALINA_OPTS="$CATALINA_OPTS
		
-Dcom.sun.management.jmxremote
		
-Djava.rmi.server.hostname=192.168.23.1 #tomcat 所在ip
		
-Dcom.sun.management.jmxremote.port=9999 #开放的端口
		
-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false"
  • 3、可在windows下安装监控工具:JConsole或Visual VM连接用户端口监控

  • 4、命令行取对应监控值
    java -jar cmdline-jmxclient.jar(需要下载这个jar包) - tomcat的ip:监控端口 监控项object(需要将引号转义)

  • 5、zabbix中添加主机
    - Host:
    添加JMX interface :ip地址为tomcat地址,port也是第二步中配置的端口
    - Templates:
    Template JMX Generic Java JMX
    Template JMX Tomcat Tomcat JMX

  • 监控window服务器

    • 1、下载windows版本agent的源码包(source)、Server(zabbix_server的ip地址)、ServerActive、Hostname
    • 2、修改配置文件(bin目录zabbix_agentd.win.conf)
      修改LogFile(日志路径),
    • 3、打开命令行,切换到源码包的bin目录下
      • 安装:
        zabbix_agentd.exe -c zabbix_agentd.win.conf -i
      • 启动:
        zabbix_agentd.exe -c zabbix_agentd.win.conf -s
    • 4、创建主机
      • Templates:
        Template OS windows
    • 5、windows程序目录下打开SNMP功能,然后到服务(SNMP service)中配置,在“安全”选项中添加zabbix服务器的ip和添加社区,
    • 6、zabbix-server命令行:snmpwalk -c 社区名 -v2c(版本) OID
    • 7、主机中把监控windows的SNMP的模板加上
  • 监控mysql(percona模板)

    • 1、安装percona的rpm包
    • 2、yum install -y php php-mysql
    • 3、将/var/lib/zabbix/percona/templates下的.conf配置文件拷贝到/etc/zabbix/zabbix-agent.d/目录下
    • 4、修改/var/lib/zabbix/percona/script/get_mysql_stats_wrapper的脚本
      RES=‘HOME=-zabbix mysql -uzabbix -pzabbix -e "..."’(…中填写操作命令)
    • 5、修改ss_get_mysql_stats.php脚本
      配置mysql用户名密码
    • 6、重启agent
      systemctl restart zabbix-agent
    • 7、将/var/lib/zabbix/percona/templates的xml模板导入zabbix-server中
    • 8、创建host,添加导入的模板

六、zabbix升级

注:网上许多模板基于较低版本做的,可以将模板正常导入后,升级到高版本,模板也会升级到高级版本,然后导出
数据库越大升级时间越长,最好用screen

  • 1、先备份数据库
  • 2、停止zabbix-server和数据库
  • 3、安装高版本的yum源
  • 4、yum -y install zabbix-web-mysql zabbix-server-mysql
  • 5、启动数据库和zabbix-server

七、zabbix主动模式(监控日志等)

  • 1、准备模板
    完整克隆一份模板,重命名,然后将所有监控项的Type修改为"Zabbix agent(active)",并将其链接模板也修改为一个主动模式的模板,修改discovery中的自动发现时间,可以先改短点,完事之后再改回去
  • 2、修改zabbix_agentd.conf
    去掉Serverip,将StartAgents=0,配置ServerActive地址为服务端地址,HostnameItem=system.hostname
  • 3、添加主机
    主机名必须填为agentd真正的主机名(被动模式可以随便填),Agent interface可以不填,添加主动模式的监控模板

八、trapper模式

  • 1、准备模板
    将监控项类型设置为trapper,为了安全可以设置允许发送的客户端主机
  • 2、客户端安装zabbix-sender
    yum install -y zabbix-sender
  • 3、客户端命令
    zabbix_sender -z 服务器ip -s "客户端主机,跟zabbix创建主机的主机名一一对应" -k "监控项" -o "给监控项传递的参数"
  • 4、该命令会将结果直接传送到zabbix-server上,可以写守护进程脚本,然后用zabbix_sender发送脚本产生的值,zabbix_sender可以批量发送文件中的数据

九、自动化监控网络发现:

  • 低级自动发现(可以自动发现items,触发器,主机等)
    • 1、选择模板或主机->选择自动发现->创建自动发现
    • 2、填写自动发现规则->过滤器中添加过滤条件:例子:
      {#FSTYPE} equal @File systems for discovery
      其中File systems for discovery作为正则匹配规则,可以在"Administrator"->“agentd”->右上角"正则表达式"中看到
  • 低级自动发现之mysql多实例(一台机器上多个mysql如何监控)
    • 1、一台机器启动多个mysql实例
      a、修改mysql配置文件,复制两份,分别修改socket地址、log文件地址、pid文件地址
      b、初始化mysql实例mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf(指定刚才修改的配置文件)
      c、启动:mysqld_safe --default-file=/etc/my3307.cnf &
    • 2、创建脚本,取mysql占用端口
      vim /etc/zabbix/zabbix.conf.d/discovery_mysql.sh
      res=`netstat -ntlp |grep mysqld -F "[ :]+" '{print $5}'`
      port=($res)
      输出json格式(脚本自己补全)
      • 查看脚本输出数据是否为json格式
        sh discovery_mysql.sh | python -m json.tool
      • zabbix用户没有netstat -ntlp的权限,加个suid权限
        chmod u+s /usr/bin/netstat
    • 3、创建自定义discovery的key
      vim /etc/zabbix/zabbix_agentd.d/discovery_mysql.conf
    UserParameter=discovery_mysql,sh /etc/zabbix/zabbix_agentd.d/discovery_mysql.sh
    
    systemctl restart zabbix-agent
    • 4、界面上创建discovery规则
    • 5、创建item的userparameter_mysql的key,用来在discovery规则中创建item原型
      vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
      	UserParameter=mysql.status[*],echo "show global status where Variable_name='$2';" |HOME=/var/lib/zabbix -uroot -p123456 -h 127.0.0.1 -P $1 -N |awk '{print $$2}'
      
      • 修改mysql实例的密码:
        mysqladmin -h 127.0.0.1 -uroot password '123456' -P3306
        mysqladmin -h 127.0.0.1 -uroot password '123456' -P3307
    • 6、界面上选择创建的discovery规则,创建item prototypes(item原型),照着官方自带的一个个创建
      key填:mysql.status[{#MYSQLPORT},Com_begin]

十、zabbix高可用

  • 1、准备两台zabbix-server,至少一台zabbix-agent
  • 2、做数据库的双组
    • 1)停止zabbix-server

    • 2)修改数据库配置my.cnf,加上3行配置:

      log-bin=/var/lib/mysql/mysql.bin
      server-id = 1(另一台zabbix-server修改其他大于1的数)
      skip-name.resolve
      
    • 3)重启数据库

    • 4)创建用户
      mysql> GRANT REPLICATION SLAVE on *.* to 'rep'@192.168.19.% IDENTIFIED BY 'rep';
      mysql> flush privileges;

    • 5)导出数据
      mysqldump -uroot -p --max_allowed_packet=1048576 --net_buffer_length=16384 -A --events -x --master-data=1 >/tmp/zabbix_back.sql
      将导出的sql文件导入另一台zabbix-server数据库中

    • 6)从库中导入主库导出的数据
      mysql < zabbix_back.sql
      mysql中:导入用户名密码(主库用户名密码信息)

        	mysql <<EOF
        	CHANGE MASTER TO
        	MASTER_HOST='192.168.19.202',
        	MASTER_PORT=3306,
        	MASTER_UESR='rep',
        	MASTER_PASSWORD='rep'
        	EOF
      
    • 7)开启同步(从库中)
      mysql> slave start
      mysql> show slave status

    • 8)照上面的操作,使主库同步从库的数据,使其互为主从库

  • 3、zabbix-server中使用keepalived
    - 1)安装keepalived
    yum install -y keepalived
    - 2) 修改keepalived配置文件
global_def {
		router_id LVS_DEVEL1 (两台router_id不能一样)
	}
	vrrp_instance VI_l {
		state MASTER (另一台改为BACKUP)
		interface eth0
		virtual_router_id 51
		priority 150 (BACKUP机器的权重可以改小一点)
		advert_int 1
		authentication {
			auth_type PASS
			auth_pass 1111
		}
	virtual_ipaddress {
		192.168.19.200/24 dev eth0 label eth0:1
	}
	notify_master /opt/to_master.sh
	}
  • 3)编写to_master.sh脚本
    yum install sshpass
    touch /opt/to_master.sh
    chmod +x /opt/to_master.sh
    vim /opt/to_master.sh
#!/bin/bash
				systemctl start zabbix-server
				sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@192.168.19.203(另一台server机器ip) "sytstemctl stop zabbix-server "
				ping 192.168.19.200(keepalived配置文件中的定义的虚拟ip) -c 1 &>/dev/null
  • 4)修改zabbix-server.conf
    SourceIP=192.168.19.200 (vip)
  • 5)启动keepalived、zabbix-server
    systemctl start keepalived
    systemctl start zabbix-server
  • 6)修改客户端配置文件zabbix-agentd.conf
    SourceIP=192.168.19.205(客户端本身的ip)
    Server=192.168.19.200(vip)

十一、zabbix-api

详情参考官网

  • 事例(新增主机):
curl -s -X POST -H 'Content-Type:application/json' -d'
{
	"jsonrpc":"2.0",
	"method":"host.create"(创建主机命令),
	"parmas":{
			"host":"Linux server"(主机名),
			"interfaces":[
				{
					"type":1,
					"main":1,
					"userid":1,
					"ip":"192.168.19.202"(创建主机的ip),
					"dns":"",
					"port":"10050"
				}
			],
			"group":[
				{
					"groupid":"50"
				}
			],
			"template":[
				{
					"templateid": "20045",							
				}
			]
	},
	"auth": "safdafdsa"(登陆返回的cookies值),
	"id":1

}' http://192.168.19.204/zabbix/api_jsonrpc.php |python -m json.tool 

十二、安装zabbix_proxy

yum install zabbix_proxy_mysql
yum install mariadb-server
systemctl enable mariadb.service 
systemctl start mariadb.service
mysql -uroot -p -e `create database zabbix_proxy CHARACTER set utf8 COLLATE utf8_bin;`
mysql -uroot -p -e `grant all on zabbix_proxy.* to zabbix@'localhost' identified by '123.Com';`
zcat /usr/share/doc/zabbix-proxy-mysql-3.0.8/schema.sql.gz|mysql -uzabbix -p123.Com zabbix_proxy

十三、监控日志

主机类型必须选择主动模式的:Zabbix agentd(active)
key值选择log[/var/log/zabbix/zabbix.log]
Type of information:Log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值