自动化---zabbbix监控
《架构师之运维监控》
PS:监控是什么,运维喝茶之道。
(凡人)
1.识别监控对象(分级)
2.理解监控对象(理论知识)
3.细分监控对象的指标
4.确定告警的基准线
预中级(筑基)
1.工具化和监控分离
2.监控对象的分类:
2.1硬件监控(方法:机房巡检,IPMI,SNMP) https://www.ibm.com/developerworks/cn/linux/l-ipmi/index.html # yum install OpenIPMI ipmitool -y systemctl start ipmi
2.2系统监控(对象:CPU,内存,IO(磁盘,网络)
2.3服务监控(对象:各类服务(nginx|tomcat|RabbitMQ|mysql..)
2.4日志监控(方法:Elastic Stack)
2.5网络监控(方法:第三方,smokeping)
2.6APM应用性能管理(工具:PINpoint)
2.7流量监控(工具:piwik,XX统计,XX分析)
2.8其他监控(APP监控,安全监控,业务监控,舆论监控,等等)
3.掌握一个监控工具,例如zabbix
中级(元婴)
1.标准化监控(标准化的脚本,模板)
2.分布式监控(主动,被动,分布式)
3.性能优化(数据采集,数据存储,数据查询)
4.二次开发(定制报表,API调用,XXX)
进阶(渡劫 从精通到放弃)
1.告警阈值动态化
2.智能告警:1告警去重 2.依赖
3.故障自愈(事件驱动,主动控住)
4.大规模
#####################通过硬件来监控
https://www.ibm.com/developerworks/cn/linux/l-ipmi/index.html
# yum install OpenIPMI ipmitool -y
#systemctl start ipmi
###############通过snmp监控
root@cobbler ~]# yum install -y net-snmp net-snmp-libs -y
[root@cobbler ~]# vim /etc/snmp/snmpd.conf
41 com2sec admin default admin ##### 配置的用户 团体名称
48 group admin v2c admin ##### 定义组 把用户放入组里 第一个admin是用户 v2c是协议 第二个admin是组
57 view admin included .1 80 #### 赋予权限因为是树结构 .1是所有权限
64 access admin "" any noauth exact admin admin none ####用户组admin ##不需要验证 ####admin用户
[root@cobbler ~]# systemctl start snmpd ######开启服务 [root@cobbler ~]# ss -ln |grep 161 udp UNCONN 0 0 *:161 *:* #####snmp 默认是UDP协议,161端口
[root@cobbler ~]# snmpget -v2c -c admin 192.168.1.102 .1.3.6.1.4.1.2021.10.1.3.1 ###检测CPU
https://blog.csdn.net/apple_llb/article/details/50494787 #####具体一些监控项看这个网页内容
########系统监控
CPU :
进程:每一个进程,至少有一个线程。
每个进程可以有多个线程
负载:单位时间内运行队列中就绪等待的进程
内存:
虚拟内存,swap,物理内存
内存页
IO 需要yum安装
iotop
iftop
nethogs
zabbix部署
1.时间同步
[root@cobbler ~]# yum install -y ntpdate
[root@cobbler ~]# echo '* * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >> /var/spool/cron/root
[root@cobbler ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm ###下载安装包
[root@cobbler yum.repos.d]# yum install -y http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm ####将zabbix加入yum源
[root@cobbler yum.repos.d]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent#########zabbixweb前端程序 zabbix服务端程序
[root@cobbler yum.repos.d]# yum install -y mariadb-server ###########安装数据库
[root@cobbler yum.repos.d]# systemctl enable mariadb.service ##########开机自启
[root@cobbler yum.repos.d]# systemctl start mariadb.service ##########启动数据库
[root@cobbler yum.repos.d]# ss -ln|grep 3306 #####查看端口
[root@cobbler yum.repos.d]# mysql_secure_installation ########初始化设置密码
[root@cobbler yum.repos.d]#mysql -u root -p 密码 进数据库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; ### 创建数据库zabbix设置字符集编码utf-8
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost'identified by '123.com'; Query OK, 0 rows affected (0.00 sec) ############设置用户 以及密码
MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) #####跟新权限
[root@cobbler yum.repos.d]# zcat /usr/share/doc/zabbix-server-mysql-3.4.8/create.sql.gz|mysql -uzabbix -p123.com zabbix ########导入数据库 以及zabbix登录
[root@cobbler yum.repos.d]# vim /etc/httpd/conf/httpd.conf ####
ServerName 127.0.0.1:80 更改95行
[root@cobbler yum.repos.d]# systemctl enable httpd
[root@cobbler yum.repos.d]# systemctl start httpd
[root@cobbler yum.repos.d]# vim /etc/httpd/conf.d/zabbix.conf ###################更改时区
19 php_value date.timezone Asia/Shanghai
[root@node1 ~]# systemctl restart httpd
浏览器打开 http://192.168.1.102/zabbix/setup.php
因为倒入数据库 zabbix登录的初始密码是Admin zabbix
[root@cobbler yum.repos.d]# vim /etc/zabbix/zabbix_server.conf #########配置zabbixserver密码
126 DBPassword=123.com
[root@cobbler yum.repos.d]# systemctl enable zabbix-server.service ####### 开机自启
[root@cobbler yum.repos.d]# systemctl start zabbix-server.service #####启动
##############如果页面一直zabbix-server报错没启动的话 就得重启服务了,这个鬼无解 看日志还是
[root@cobbler yum.repos.d]# vim /etc/zabbix/zabbix_agentd.conf ###### 编辑文件
97 Server=127.0.0.1 ##########指的是谁可以拿到数据 写server主机IP
138 ServerActive=127.0.0.1 ################# 主动模式下 写的也是服务器主机IP
[root@cobbler yum.repos.d]# systemctl enable zabbix-agent.service
[root@cobbler yum.repos.d]# systemctl start zabbix-agent.service
##########在配置界面选择configuration-----hosts----create-----添加主机------templates选择模板----创建
[root@node1 ~]# zabbix_get -s node2 -k agent.ping #############如果不通可以手动检测
############添加自定义的items
cd /etc/zabbix/zabbix_agentd.d
[root@node2 zabbix_agentd.d]# vim monitor_file.conf 自定义模板文件
UserParameter=monitor_file,stat -c %s /etc/services ####监控文件大小
[root@node2 zabbix_agentd.d]# systemctl restart zabbix-agent.service
开始创建itmes------------configuration-----hosts---itmes---create-itmes
##########想查看自己添加的是否成功可以---monitoring---latestdata
###创建triggers ----configuration---host---triggers--create-
###########定义监控级别
####定义邮箱地址
#################用什么账号发
3.监控web,mysql三部曲
监控mysql
[root@node2 ~]# yum install -y mariadb-server
带密码的监控
root@node2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
mysql
MariaDB [(none)]> grant all on *.* to zabbix@'localhost' identified by '123.com';
MariaDB [(none)]> flush privileges;
[root@node2 ~]# systemctl restart zabbix-agent.service
多个数据监控修改配置文件使用¥化
[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$3';" | HOME=/var/lib/zabbix mysql -u$1 -p$2 -N | awk '{print $$2}'
UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -u$1 -p$2 ping | grep -c alive
[root@node2 ~]# systemctl restart zabbix-agent.service
[root@node1 ~]# zabbix_get -s 192.168.1.104 -k mysql.status[zabbix,123.com,Uptime]
TCP监控
root@node2 zabbix_agentd.d]# vim TCP_status.conf
UserParameter=TCP_status[*],netstat -ant|grep -c $1
[root@node1 ~]# zabbix_get -s 192.168.1.104 -k TCP_status[TIME_WAIT]
克隆来依次创建tcp的状态 ##ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSE
CLOSE_WAIT
LAST_ACK
LISTEN
CLOSING
UNKNOWN
####监控nginx