文章目录
1.zabbix安装
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
[root@zabbix ~]# cd /etc/yum.repos.d/
[root@zabbix yum.repos.d]# vim zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
安装CentOS7源和epel源
[root@zabbix yum.repos.d]# yum clean all
[root@zabbix ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@zabbix ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@zabbix ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@zabbix ~]# yum makecache
[root@zabbix ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
2.导入初始数据库
[root@zabbix ~]# yum -y install mariadb mariadb-server
[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# systemctl enable mariadb
[root@zabbix ~]# mysql -uroot -p123123
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> create user zabbix@localhost identified by '123123';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
导入初始数据
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123123 zabbix
修改配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
124 DBPassword=123123
[root@zabbix ~]# systemctl start httpd zabbix-server zabbix-agent
[root@zabbix ~]# systemctl enable httpd zabbix-server zabbix-agent
3.登录web界面
192.168.91.6/zabbix
应该在配置文件中更改时区
[root@zabbix ~]# vim /etc/httpd/conf.d/zabbix.conf
20 php_value date.timezone Asia/shanghai
[root@zabbix ~]# systemctl restart httpd
登陆名字 Admin 密码zabbix
安装完毕
4.添加一台被监控主机
[root@zabbix ~]# scp /etc/yum.repos.d/zabbix.repo 192.168.9.17:/etc/yum.repos.d/
被监控机安装zabbix-agent
[root@agent ~]# yum -y install zabbix-agent
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf
98 Server=192.168.9.16 //指定zabbix服务地址
[root@agent ~]# systemctl start zabbix-agent
[root@agent ~]# systemctl enable zabbix-agent
先点击虚线添加再点击蓝色添加
添加完成
5.自定义监控项
配置
[root@agent ~]# yum -y install sysstat.x86_64
[root@agent ~]# iostat
[root@agent ~]# iostat | awk '/sda/ {print $2}'
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf
296 UserParameter=sda_tps,iostat | awk '/sda/ {print $2}'
[root@agent ~]# systemctl restart zabbix-agent
测试
[root@zabbix ~]# yum -y install zabbix-get
[root@zabbix ~]# zabbix_get -s 192.168.9.17 -k sda_tps
点击提交
查看
6.批量添加监控项
以tcp11种状态为例
[root@agent ~]# netstat -anptu | grep -c ESSTABLISHED
[root@agent ~]# vim tcp_state.txt
[root@agent ~]# cat tcp_state.txt
ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSE
CLOSE_WAIT
LAST_ACK
LISTEN
CLOSING
创建脚本
[root@agent ~]# vim tcp_state.sh
for i in `cat tcp_state.txt`;do
echo "UserParameter=${i},netstat -anut|grep -c $i" >> /etc/zabbix/zabbix_agentd.d/tpc_stat.conf;
done
[root@agent ~]# bash tcp_state.sh
[root@agent ~]# cat /etc/zabbix/zabbix_agentd.d/tpc_stat.conf
UserParameter=ESTABLISHED,netstat -anut|grep -c ESTABLISHED
UserParameter=SYN_SENT,netstat -anut|grep -c SYN_SENT
UserParameter=SYN_RECV,netstat -anut|grep -c SYN_RECV
UserParameter=FIN_WAIT1,netstat -anut|grep -c FIN_WAIT1
UserParameter=FIN_WAIT2,netstat -anut|grep -c FIN_WAIT2
UserParameter=TIME_WAIT,netstat -anut|grep -c TIME_WAIT
UserParameter=CLOSE,netstat -anut|grep -c CLOSE
UserParameter=CLOSE_WAIT,netstat -anut|grep -c CLOSE_WAIT
UserParameter=LAST_ACK,netstat -anut|grep -c LAST_ACK
UserParameter=LISTEN,netstat -anut|grep -c LISTEN
UserParameter=CLOSING,netstat -anut|grep -c CLOSING
[root@agent ~]# systemctl restart zabbix-agent.service
测试
[root@zabbix ~]# zabbix_get -s 192.168.9.17 -k ESTABLISHED
点击添加
点击监控项
在点击最下方添加时首先先按f12,然后再点。
记录url: http://192.168.9.16/zabbix/items.php
记录data源数据
sid=fb302d5c546e91bc&form_refresh=1&form=create&hostid=10275&selectedInterfaceId=0&name=ESTABLISHED%E7%9A%84%E7%8A%B6%E6%80%81&type=0&key=ESTABLISHED&url=&query_fields%5Bname%5D%5B1%5D=&query_fields%5Bvalue%5D%5B1%5D=&timeout=3s&post_type=0&posts=&headers%5Bname%5D%5B1%5D=&headers%5Bvalue%5D%5B1%5D=&status_codes=200&follow_redirects=1&retrieve_mode=0&http_proxy=&http_username=&http_password=&ssl_cert_file=&ssl_key_file=&ssl_key_password=&interfaceid=6&snmpv3_authprotocol=0&snmpv3_privprotocol=0¶ms_es=¶ms_ap=¶ms_f=&value_type=3&units=&delay=3s&delay_flex%5B0%5D%5Btype%5D=0&delay_flex%5B0%5D%5Bdelay%5D=&delay_flex%5B0%5D%5Bschedule%5D=&delay_flex%5B0%5D%5Bperiod%5D=&history_mode=1&history=90d&trends_mode=1&trends=365d&valuemapid=0&new_application=&applications%5B%5D=1160&inventory_link=0&description=&status=0&add=%E6%B7%BB%E5%8A%A0
结合curl命令,post提交方法,用脚本(FOR循环)替换标黄字段实现十一种方法添加到应用集里面。
ESTABLISHED改成 ${i},sid取自己的cookie值。
cookie取值方法:
退出
先f12,在重新登录
复制如下内容:
http://192.168.9.16/zabbix/index.php
name=Admin&password=zabbix&autologin=1&enter=Sign+in
[root@agent ~]# curl -X POST -c cookie -b cookie -L -d "name=Admin&password=zabbix&autologin=1&enter=Sign+in" http://192.168.9.16/zabbix/index.php
[root@agent ~]# awk '/zbx/{print $NF}' cookie |cut -b 17-32
for i in cat tcp_state.txt
;do curl -X POST -c cookie -b cookie -d “ 上面修改后的内容” http://192.168.9.16/zabbix/items.php; done
刷新页面观察即可
7.宏
7.1 宏定义
宏(Macros)的作用是便于在模板,Item、Trigger中对数据进行变量引用。宏的名称为{KaTeX parse error: Expected 'EOF', got '}' at position 3: 名称}̲,宏名称定义可以使用A-Z、0…SSH_PORT}],其中{$SSH_PORT}就是一个宏,可以在不同主机上配置不同的值。
其实宏的概念有点类似于shell脚本中的变量,主要便于使用。
7.2 宏分类
全局宏
模板宏
主机宏
内置宏
官网查看
https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location
8.触发器
设置的阈值满足条件时触发。
检测
修改时间间隔,要不还要等一分钟
9.告警
9.1 告警含义
Action中的事件来源有四种:触发器,网络自动发现,Agent主动注册和内部事件(Internal)
告警分类:zabbix自己web网页提供的声音告警,邮件钉钉等发送信息。
9.2 声音告警
9.3 邮件告警
GREHZVVOAYUXJJZH
添加收件人
启用动作
修改模板配置
先点小添加在点大更新
复制一个ssh渠道,触发器触发,告警启动。
9.4 钉钉告警
在钉钉中创建告警机器人
https://oapi.dingtalk.com/robot/send?access_token=8b18b6ee4c82355f5fa57de9b4665d6b83d2b712d3714abab9365cf970fe230a
记录webhook。
服务端配置python脚本
[root@zabbix zabbix]# cd /usr/lib/zabbix/externalscripts/
vim dingding.py
mport requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=552a6b58325ccaa206fac36c45267e1e14d938bc5dd97e0c5391d81aa5fd6238"
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": "%s%s"%(subject,text)
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/lib/zabbix/dingding.log"):
f=open("/usr/lib/zabbix/dingding.log","a+")
else:
f=open("/usr/lib/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
f.close()
else:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送失败"+"\n"+str(text))
f.close()
webhook改成刚刚创建机器人保存的。
[root@zabbix ~]# chmod +x /usr/lib/zabbix/externalscripts/dingding.py
启动不了脚本,安装插件(报错的话配一下epel源,那个epel-release那个)
[root@zabbix ~]# yum -y install python-pip
[root@zabbix ~]#pip install requests
[root@zabbix alertscripts]# ./dingding.py 18831429133 告警 告警
配置web端
点击添加
添加收件人
修改动作改成钉钉方式
复制一个agent端shell渠道进行测试。
若想在动作中添加命令执行,需改更改server端配置脚本/etc/zabbix/zabbix_server.conf
EabledRemotCommands=1
AllowRoot=1
agent端 /etc/zabbix/zabbix_agent.conf的EabledRemotCommands=1也要修改。
不要忘了重启服务
10.图形
10.1 简单的自带选项查看
修改乱码问题
[root@zabbix ~]# cd /etc/alternatives/
[root@zabbix alternatives]# rm -rf zabbix-web-font
把主机C盘windows里面的fonts里面的字体传一个进去
[root@zabbix alternatives]# mv SIMHEI.TTF zabbix-web-font
10.2 自定义图形
10.3 聚合图形
分类:项目,主机,应用
幻灯片播放
10.4 Granfana
Grafana是一个开源的可视化监控工具,提供丰富的图表样式,支持Graphite、Elasticsearch、OpenTSDB、Prometheus、InfluxDB、Zabbix等数据源。
[root@zabbix ~]# wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-7.0.6-1.x86_64.rpm
[root@zabbix ~]# yum -y localinstall grafana-7.0.6-1.x86_64.rpm
[root@zabbix ~]# systemctl daemon-reload
[root@zabbix ~]# systemctl start grafana-server
[root@zabbix ~]# systemctl enable grafana-server
登陆测试
访问http://192.168.9.16:3000/ 初始用户名和密码都是admin
[root@zabbix ~]# grafana-cli plugins list-remote|grep zabbix
[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
[root@zabbix grafana]# vim /etc/grafana/grafana.ini
694 allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource
[root@zabbix grafana]# systemctl restart grafana-server.service
[root@zabbix grafana]# sqlite3 /var/lib/grafana/grafana.db
sqlite> select * from user;
sqlite> update user set password =
...> 'cbcbb432b9696012940ff647e452fe82f16efb2e48621763b9866536fb27112128b5e23f1fb78e03173e7be109266e7dbef4', salt = 'YoPs7uTjtn' where login = 'admin';
点击主页home观察即可。
10.4 Graphtrees
unzip graphtrees-master.zip //解压
cd graphtrees-master/
mv graphtree3.0.4.patch /usr/share/zabbix
cd /usr/share/zabbix
yum -y install patch
patch -Np0 <graphtree3.0.4.patch
chown apache:apache oneoaas
vim /etc/httpd/conf.d/zabbix.conf
6 Alias /oneoaas /usr/share/zabbix/oneoaas
systemctl restart httpd
访问测试
http://192.168.9.16/zabbix/oneoaas/graphtree.php
11.工作方式
11.1 zabbix 工作方式
公共协议的监控方式和zabbix专用协议的监控方式
Agent的监控方式,和无Agent的监控方式
11.2 zbbix-agent 工作方式
主动模式:将采集到的数据主动推送给zabbix-server
被动模式:zabbix-server 向zabbix-agent请求数据,zabbix-agent被动接受数据请求后进行回应
StartAgents=3 被动模式指定的进程数,主动模式设为0
11.3 zabbix-sender(主动模式)
可以让用户控制数据的发送,可以一次性批量发送。
创建监控项
[root@agent ~]# yum -y install zabbix-sender
[root@agent ~]# zabbix_sender -z 192.168.9.16 -p 10051 -s "hannibal_agent" -k sda_tps1 -o $(iostat |awk '/sda/{print $2}') -vv
12.SNMP
打印机等网络设备不能像linux系统那样安装zabbix-server,agent。所以可以使用SNMP监控方式(前提是支持SNMP协议)。
监控端配置:
[root@agent ~]# yum -y install net-snmp
[root@agent ~]# cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
[root@agent ~]# vim /etc/snmp/snmpd.conf
[root@agent ~]# cat /etc/snmp/snmpd.conf
com2sec mynetwork 192.168.1.10 public
group MyGroup v2c mynetwork
access MyGroup "" any noauth prefix all none none
view all included .1 80
[root@agent ~]# systemctl start snmpd.service
[root@agent ~]# systemctl enable snmpd.service
服务端
测试
[root@zabbix ~]# yum -y install net-snmp-utils
[root@zabbix ~]# snmpwalk -v 2c -c public 192.168.9.17 |head
使用oid获取主机的监控值
[root@zabbix ~]# snmpwalk -v 2c -c public 192.168.9.17 .1.3.6.1.2.1.25.2.2.0
添加主机
13.IPMI
可以监控服务器硬件信息,但是虚拟机无法实现
服务端配置
[root@zabbix ~]# sed -i 's/# StartIPMIPollers=0/StartIPMIPollers=5/' /etc/zabbix/zabbix_server.conf
[root@zabbix ~]# yum -y install OpenIPMI ipmitool
[root@zabbix ~]# systemctl start ipmi
[root@zabbix ~]# systemctl enable ipmi
[root@zabbix ~]# systemctl start ipmievd
[root@zabbix ~]# systemctl enable ipmievd
root@zabbix ~]# ipmitool lan prant 1
14.JVM监控方式
JMX可以获取Java应用程序的性能数据,因此,我们可以直接通过JMX协议对Java应用程序内部进行深入的监控。
服务端:
[root@zabbix ~]# yum -y install zabbix-java-gateway
[root@zabbix ~]# egrep -v '^#|^$' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="192.168.9.16"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
[root@zabbix ~]# systemctl start zabbix-java-gateway.service
[root@zabbix ~]# systemctl enable zabbix-java-gateway.service
[root@zabbix ~]# tail -f /var/log/zabbix/zabbix_java_gateway.log
java程序端(例:tomcat,应该新起一台机子,不然和zabbix-agent冲突)
[root@agent ~]# yum -y install java-1.8.0-openjdk*
[root@agent ~]# tar xf apache-tomcat-8.5.38.tar.gz -C /usr/src/
[root@agent ~]# ln -s /usr/src/apache-tomcat-8.5.38/ /usr/local/tomcat8.5.38
[root@agent ~]# cd /usr/local/tomcat8.5.38/lib
[root@agent lib]# wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.16/bin/extras/catalina-jmx-remote.jar
[root@agent lib]# vim ../bin/catalina.sh
添加如下内容:
JAVA_OPTS="
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.9.17
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
[root@agent bin]# cd /usr/local/tomcat8.5.38/bin/
[root@agent bin]# ./startup.sh
[root@agent bin]# netstat -anptu | grep java
web界面添加tomcat主机
查看主机,对应的JVM绿了就行了。
15.web监控方式
监控web程序
16.zabbix-proxy
proxy不可以与server在同一台机子上
[root@proxy ~]# yum -y install zabbix-proxy-mysql mariadb-server
[root@proxy yum.repos.d]# systemctl start mariadb
[root@proxy yum.repos.d]# systemctl enable mariadb
[root@proxy yum.repos.d]# mysqladmin -uroot password 123123
[root@proxy yum.repos.d]# mysql -uroot -p123123
MariaDB [(none)]> create database zabbix_proxy character set utf8;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy';
[root@proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.27/schema.sql.gz |mysql -u zabbix_proxy -pzabbix_proxy zabbix_proxy
[root@proxy ~]# egrep -v "^$|^#" /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
Server=192.168.9.16
ServerPort=10051
Hostname=proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
[root@proxy ~]# systemctl start zabbix-proxy.service
[root@proxy ~]# systemctl enable zabbix-proxy.service
web创建代理程序
agent端配置文件中Server和ServerActive 都指向proxy服务器。
配置主机时,最下面选择proxy代理
17.zabbix自动化
17.1自动发现
创建动作
自动发现:{DISCOVERY.DEVICE.STATUS}{DISCOVERY.DEVICE.IPADDRESS}
自动发现规则:{DISCOVERY.RULE.NAME}
发现主机IP:{DISCOVERY.DEVICE.IPADDRESS}
主机DNS:{DISCOVERY.DEVICE.DNS}
主机状态:{DISCOVERY.DEVICE.STATUS}
主机运行时间:{DISCOVERY.DEVICE.UPTIME}
等好久才出来,墨迹
17.2自动注册
客户端
元数据方法
修改配置文件,添加这个,注释掉了打开添加
18.LLD应用案例(低级别自动发现)
用来自动发现监控项,以一个监控项为原型生成多个监控项(原型宏变量替换实现)。
以监控多个url状态码,不为200报警为例
[root@zabbix ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.conf
[root@zabbix ~]# mkdir -pv /etc/zabbix/scripts
[root@zabbix ~]# vim /etc/zabbix/scripts/web_site_code_status
#!/bin/bash
#function:monitor web site code status from zabbix
# License: GPL
# mail:admin#itnihao.com
# version:1.0 date:2012-12-09
source /etc/bashrc >/dev/null 2>&1
source /etc/profile >/dev/null 2>&1
#/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/
WEB_SITE_discovery () {
WEB_SITE=($(cat /etc/zabbix/scripts/WEB.txt|grep -v "^#"))
printf '{\n'
printf '\t"data":[\n'
for((i=0;i<${#WEB_SITE[@]};++i))
{
num=$(echo $((${#WEB_SITE[@]}-1)))
if [ "$i" != ${num} ];
then
printf "\t\t{ \n"
printf "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$i]}\"},\n"
else
printf "\t\t{ \n"
printf "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$num]}\"}]}\n"
fi
}
}
web_site_code () {
/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1
}
case "$1" in
web_site_discovery)
WEB_SITE_discovery
;;
web_site_code)
web_site_code $2
;;
*)
echo "Usage:$0 {web_site_discovery|web_site_code [URL]}"
;;
esac
[root@zabbix ~]# vim /etc/zabbix/zabbix_agentd.d/web_sit_discovery.conf
UserParameter=web.site.discovery,/etc/zabbix/scripts/web_site_code_status web_site_discovery
UserParameter=web.site.code[*],/etc/zabbix/scripts/web_site_code_status web_site_code $1
[root@zabbix ~]# systemctl restart zabbix-agent.service
[root@zabbix ~]# vim /etc/zabbix/scripts/WEB.txt
www.qq.com
www.baidu.com
www.sina.com.cn
#测试
[root@zabbix ~]# chmod +x /etc/zabbix/scripts/web_site_code_status
[root@zabbix ~]# zabbix_get -s 127.0.0.1 -k web.site.discovery
[root@zabbix ~]# zabbix_get -s 127.0.0.1 -k web.site.code[www.qq.com]
创建模板
添加应用集
创建自动发现规则
创建监控项模型
创建触发器原型
添加图形
主机关联模板