1:什么是监控?

监控:安防的监控  看监控,事后追责

linux监控: 事前预警,数据分析

2:常见的linux监控命令

cpu

 
 
 
 
 
 
1
  1. top
2
  1. htop
3
  1. uptime
4
  1. vmstat
 
 

内存

 
 
 
 
 
 
1
  1. free
 
 

磁盘

 
 
 
 
 
 
1
  1. df
2
  1. iotop
 
 

网卡

 
 
 
 
 
 
1
  1. iftop
2
  1. nethogs
 
 

系统进程

 
 
 
 
 
 
1
  1. ps
2
  1. pstree
 
 

系统日志 ELK

3:使用shell脚本来监控服务器

shell+crontab

 
 
 
 
 
 
1
  1. #!/bin/bash
2
3
  1. avai_mem=`free -m|awk '/^Mem/{print $NF}'`
4
5
  1. if [ $avai_mem -lt 100 ];then
6
7
  1.   echo "可用内存过低,当前内存是:$avai_mem" >>/tmp/monitor_mem.log
8
  1.   echo "可用内存过低,当前内存是:$avai_mem"|mail -s  "服务可用内存低"  296917342@qq.com
9
  1. fi
 
 

4:zabbix的基础服务架构

5:zabbix生产环境安装

 
 
 
 
 
 
1
  1. #安装zabbix前提,关闭selinux
2
3
  1. 1:配置zabbixyum
4
  1. #下载zabbix-release
5
  1. wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
6
  1. #安装zabbix-release
7
  1. rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
8
  1. #将官方仓库地址替换为清华仓库地址
9
  1. sed -i 's#http://repo.zabbix.com#https://mirror.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
10
11
  1. 2:安装zabbix服务端和zabbix-web前端
12
  1. yum install zabbix-server-mysql zabbix-web-mysql  -y
13
14
  1. 3:安装mariadb,创建zabbix库,授权zabbix用户
15
  1. yum install mariadb-server -y
16
  1. systemctl start mariadb
17
  1. systemctl enable mariadb
18
  1. mysql_secure_installation
19
  1. 先回车
20
  1. n
21
  1. 然后一路y
22
23
  1. mysql
24
  1. MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
25
  1. MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
26
27
  1. 导入zabbix表结构和初始数据
28
  1. zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
29
30
  1. 检查zabbix库是否导入成功
31
  1. mysql -uroot zabbix -e 'show tables'
32
33
  1. 4:配置启动zabbix-server
34
  1. vi /etc/zabbix/zabbix_server.conf
35
  1. DBHost=localhost
36
  1. DBName=zabbix
37
  1. DBUser=zabbix
38
  1. DBPassword=123456
39
40
  1. 启动zabbix-server
41
  1. systemctl start zabbix-server
42
  1. systemctl enable zabbix-server
43
44
  1. 检查:
45
  1. netstat -lntup|grep 10051
46
47
  1. 5:修改Zabbix前端的PHP配置,并启动httpd
48
  1. vi /etc/httpd/conf.d/zabbix.conf
49
  1. php_value date.timezone Asia/Shanghai
50
51
  1. systemctl start httpd
52
  1. systemctl enable httpd
53
54
  1. 6:前端zabbix-web的安装
55
  1. 浏览器:http://10.0.0.71/zabbix
56
57
  1. 后期修改zabbix数据库密码的时候,需要修改的配置文件:
58
  1. /etc/zabbix/web/zabbix.conf.php
59
60
  1. http://10.0.0.61/zabbix/zabbix.php
61
  1. 登录的账号密码;
62
  1. Admin
63
  1. zabbix
 
 

6:监控一台服务器主机

监控zabbix-server自己

 
 
 
 
 
 
1
  1. yum install zabbix-agent.x86_64 -y
2
  1. systemctl enable zabbix-agent.service
3
  1. systemctl start zabbix-agent.service
 
 

使用zabbix-agent监控其他主机(10.0.0.8)

 
 
 
 
 
 
1
  1. wget https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.16-1.el7.x86_64.rpm
2
  1. rpm -ivh zabbix-agent-4.0.16-1.el7.x86_64.rpm
3
  1. vim /etc/zabbix/zabbix_agentd.conf
4
  1. Server=10.0.0.71
5
  1. systemctl enable zabbix-agent.service
6
  1. systemctl start zabbix-agent.service
 
 

7:自定义监控项

已监控硬盘的tps值为例

a: 命令行取值

 
 
 
 
 
 
1
  1. iostat|awk '/^sda/{print $2}'
 
 

b:修改zabbix-agent配置文件

 
 
 
 
 
 
1
  1. vim /etc/zabbix/zabbix_agentd.conf
2
  1. UserParameter=tps,iostat|awk '/^sda/{print $2}'
3
4
  1. systemctl restart zabbix-agent.service
 
 

c: 在web界面上添加监控项

8:自定义触发器

9:微信报警

邮件报警

1:配置发件人

2:配置收件人

3:启动报警发消息的动作

微信报警

 
 
 
 
 
 
1
  1. #上传weixin.py的脚本
2
  1. python weixin.py
3
  1. yum install python-pip -y
4
  1. pip install requests   -i https://pypi.tuna.tsinghua.edu.cn/simple
5
6
  1. mv weixin.py   /usr/lib/zabbix/alertscripts
7
  1. chmod +x weixin.py
 
 

配置报警媒介

 
 
 
 
 
 
1
  1. {ALERT.SENDTO}
2
  1. {ALERT.SUBJECT}
3
  1. {ALERT.MESSAGE}
 
 

配置收件人

重新触发报警

 
 
 
 
 
 
1
  1. #定制报警内容
2
  1. 服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
3
  1. {
4
  1. 告警主机:{HOST.NAME}
5
  1. 告警地址:{HOST.IP}
6
  1. 监控项目:{ITEM.NAME}
7
  1. 监控取值:{ITEM.LASTVALUE}
8
  1. 告警等级:{TRIGGER.SEVERITY}
9
  1. 当前状态:{TRIGGER.STATUS}
10
  1. 告警信息:{TRIGGER.NAME}
11
  1. 告警时间:{EVENT.DATE} {EVENT.TIME}
12
  1. 事件ID:{EVENT.ID}
13
  1. }
 
 

10:自定义图形和grafana出图

解决zabbix默认图形乱码问题

 
 
 
 
 
 
1
  1. cd /usr/share/zabbix/assets/fonts/
2
  1. #上传一个中文的ttf字体
3
  1. \mv simkai.ttf graphfont.ttf
 
 

a:安装grafana

 
 
 
 
 
 
1
  1. wget https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.5.2-1.x86_64.rpm
2
  1. yum localinstall grafana-6.5.2-1.x86_64.rpm -y
3
  1. systemctl start grafana-server.service
 
 

b:grafana的主要内容

 
 
 
 
 
 
1
  1. 插件: zabbix的插件
2
  1. #安装zabbix插件
3
  1. grafana-cli plugins install alexanderzobnin-zabbix-app
4
  1. service grafana-server restart
5
  1. 数据源:
6
  1. 登录http://10.0.0.71:3000/login(默认admin:admin)
7
8
  1. dashboard
 
 

11:自定义监控模板

使用其他人分享的zabbix模板

 
 
 
 
 
 
1
  1. a:导入模板
2
  1. b:把zabbix-agent的自定义key的配置文件放到/etc/zabbix/zabbix_agentd.d
3
  1. c:如果有取值脚本,将取值脚本放在对应的目录
4
  1. d:手动执行脚本测试取值(使用root身份执行)
5
  1. e:使用zabbix_get测试取值(使用zabbix身份执行)
6
  1. f:目标主机监控关联模板
 
 

自定义模板(监控tcp 11种状态)

12: zabbix 监控角度总结

 
 
 
 
 
 
1
  1. 服务器硬件(cpu温度,主板温度,功率,风扇的转速,硬盘的健康状态) ipmi芯片 远程管理控制卡idraciloimm
2
  1. 交换机路由器: snmp协议
3
4
  1. 操作系统 cpu,内存,硬盘,网卡,系统进程,日志) zabbix linux模板
5
6
  1. 应用程序 nginxmysqlredisk8s-master     自定义模板(网上现有的模板)
7
8
  1. 业务层面 业务访问速度,流量(pvuvip),活跃用户日活,周活,月活,成单量,交易额
9
10
  1. 日志监控 ELK
 
 

13: web网站的可用性监测

14: 使用percona 插件监控mysql

15:snmp监控window和Linux

snmp监控:simple network  manager  protocol

交换机,路由器,打印机  开启snmp,打开snmp服务端

zabbix-server 客户端

 
 
 
 
 
 
1
  1. snmp协议三个版本
2
  1. v1 没有密码验证
3
  1. v2c 支持口令验证 community
4
  1. v3 太复杂
 
 

16:zabbix自动发现和自动注册(主动)

·a:自动发现

配置规则

自动注册:

配置agent客户端

 
 
 
 
 
 
1
  1. vim /etc/zabbix/zabbix_agentd.conf
2
  1. Server=10.0.0.71
3
  1. ServerActive=10.0.0.71
4
  1. Hostname=10.0.0.8
5
  1. HostMetadata=web
 
 

17:zabbix-agent主动和被动的区别

18:zabbix版本升级

a:版本可以解决性能

b:模板不兼容问题

19:zabbix分布式监控proxy

 
 
 
 
 
 
1
  1. #web01上安装zabbix-proxy
2
  1. yum install zabbix-proxy-mysql mariadb-server -y
3
  1. #mysql中创库,授权
4
  1. mysql>
5
  1. cd /usr/share/doc/zabbix-proxy-mysql-4.0.16/
6
  1. gzip -d schema.sql.gz
7
  1. mysql zabbix_proxy -uzabbix -p123456 < schema.sql
8
  1. mysql zabbix_proxy -uzabbix -p123456 -e 'show tables;'
9
  1. vim /etc/zabbix/zabbix_proxy.conf
10
  1. ProxyMode=0
11
  1. Server=10.0.0.71
12
  1. ServerPort=10051
13
  1. Hostname=sh_proxy
14
  1. DBHost=localhost
15
  1. DBName=zabbix_proxy
16
  1. DBUser=zabbix
17
  1. DBPassword=123456
18
  1. HeartbeatFrequency=60
19
  1. ConfigFrequency=60
20
  1. DataSenderFrequency=1
21
22
  1. systemctl restart zabbix-proxy.service
 
 

20:zabbix监控jvm原理

 
 
 
 
 
 
1
  1. #开启tomcat的远程监控
2
  1. vim /app/apache-tomcat-8.0.27/bin/catalina.sh
3
  1. CATALINA_OPTS="$CATALINA_OPTS
4
  1. -Dcom.sun.management.jmxremote
5
  1. -Djava.rmi.server.hostname=10.0.0.8
6
  1. -Dcom.sun.management.jmxremote.port=12345
7
  1. -Dcom.sun.management.jmxremote.ssl=false
8
  1. -Dcom.sun.management.jmxremote.authenticate=false"
 
 

21:zabbix低级自动发现

a:什么是低级自动发现(low level discovery)

低级自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。

b:为什么要用低级自动发现

低级自动发现特别适合用于监控那些有规律,又有差异的监控对象。例如A主机有3个挂载分区,B主机有4个挂载分区,c主机有5个挂载分区,每个分区挂载目录还不一样,现在要求,监控每一个分区的磁盘总容量,剩余容量,使用容量,block剩余百分比,inode使用百分比,这时候使用普通的zabbix模板根本无法监控

c:zabbix模板自带的低级自动发现有哪些?

d:增加一个监控项原型

增加监控项原型1:

增加监控项原型2:

自定义监控项原型

 
 
 
 
 
 
1
  1. #修改agent配置文件
2
  1. [root@hdss7-11 ~]# cat /etc/zabbix/zabbix_agentd.d/net.conf
3
  1. UserParameter=net.if.mac[*],ifconfig $1|awk 'NR==4{print $$2}'
 
 
 
 
 
 
 
 
1
  1. #zabbix-get测试取值
2
  1. [root@k8s-zabbix ~]# zabbix_get -s 10.4.7.11 -k net.if.mac[eth0]
3
  1. fa:16:3e:f1:36:29
 
 

效果展示:

e:创建一个低级自动发现规则

第一个特殊key:定义低级自动发现规则,输出格式为json:例如:{"data":[{"{#IFNAME}":"eth0"},{"{#IFNAME}":"eth1"},{"{#IFNAME}":"lo"}]}

第二个key:  监控项原型,取值

第一步:修改agent配置文件

 
 
 
 
 
 
1
  1. #agent配置文件
2
  1. [root@k8s-node-2 ~]# cat /etc/zabbix/zabbix_agentd.d/discovery_container.conf
3
  1. UserParameter=discovery_container,/bin/bash /opt/discovery_container.sh
4
  1. UserParameter=container_mem_per[*],/usr/bin/docker stats --no-stream |grep "$1"|awk '{print $$8}'|tr -d '%'
 
 

低级自动发现脚本

 
 
 
 
 
 
1
  1. #!/bin/bash
2
  1. port=($(/usr/bin/docker ps -a|grep -v "CONTAINER ID"|awk '{print $NF}'))
3
  1. printf '{\n'
4
  1. printf '\t"data":[\n'
5
  1.   for key in ${!port[@]}
6
  1.       do
7
  1.           if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
8
  1.             printf '\t {\n'
9
  1.             printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"},\n"
10
  1.           else [[ "${key}" -eq "((${#port[@]}-1))" ]]
11
  1.             printf '\t {\n'
12
  1.             printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"}\n"
13
  1.           fi
14
  1.   done
15
  1.             printf '\t ]\n'
16
  1.             printf '}\n'
 
 

第二步:测试取值

 
 
 
 
 
 
1
  1. [root@k8s-zabbix ~]# zabbix_get -s 10.4.7.17 -k discovery_container
2
  1. {
3
  1. "data":[
4
  1. {
5
  1. "{#CONTAINERNAME}":"7a4552bf6b07"},
6
  1. {
7
  1. "{#CONTAINERNAME}":"4081845226ee"},
8
  1. {
9
  1. "{#CONTAINERNAME}":"9d73c4fc6eb4"},
10
  1. {
11
  1. "{#CONTAINERNAME}":"7c7aadff9e11"},
12
  1. {
13
  1. "{#CONTAINERNAME}":"bbf5e3e231e0"}
14
  1. ]
15
  1. }
16
17
  1. [root@k8s-zabbix ~]# zabbix_get -s 10.4.7.17 -k container_mem_per[bbf5e3e231e0]
18
  1. 0.12
 
 

第三步:web界面创建规则和监控项原型

效果展示:

22:zabbix性能优化

1)针对mysql,写多读少  mariadb 5.5 innodb  升级 mysql 5.7 tokudb
2)去掉无用监控项,增加监控项的取值间隔,减少历史数据保存周期
3)把被动模式修改为主动模式,增加zabbix-proxy
4)针对于zabbix-server进程调优,谁忙,就加大它的进程数量
5)针对于zabbix-server缓存调优,谁的剩余内存少,就加大它的缓存值
6)针对zabbix 历史数据和趋势图的表,进行周期性分表( 分表)

23:zabbix api

api:aplication interface

zabbix集成到其他的平台,把zabbix二次开发

调用api,发起一个http请求

 
 
 
 
 
 
1
  1. #获取认证
2
  1. curl -X POST -H "Content-Type: application/json" -d '
3
  1. {
4
  1.    "jsonrpc": "2.0",
5
  1.    "method": "user.login",
6
  1.    "params": {
7
  1.        "user": "Admin",
8
  1.        "password": "zabbix"
9
  1.   },
10
  1.    "id": 1,
11
  1.    "auth": null
12
  1. }' http://10.0.0.71/zabbix/api_jsonrpc.php
13
14
  1. {"jsonrpc":"2.0","result":"5fce40fb14005e696d26873c88b83465","id":1}
15
16
 
 
 
 
 
 
 
 
1
  1. #创建主机
2
  1. curl -X POST -H "Content-Type: application/json" -d '
3
  1. {
4
  1.    "jsonrpc": "2.0",
5
  1.    "method": "host.create",
6
  1.    "params": {
7
  1.        "host": "oldboy",
8
  1.        "interfaces": [
9
  1.           {
10
  1.                "type": 1,
11
  1.                "main": 1,
12
  1.                "useip": 1,
13
  1.                "ip": "10.0.0.8",
14
  1.                "dns": "",
15
  1.                "port": "10050"
16
  1.           }
17
  1.       ],
18
  1.        "groups": [
19
  1.           {
20
  1.                "groupid": "15"
21
  1.           }
22
  1.       ],
23
  1.        "templates": [
24
  1.           {
25
  1.                "templateid": "10272"
26
  1.           },
27
  1.           {
28
  1.                "templateid": "10001"
29
  1.           }
30
  1.       ]
31
  1.   },
32
  1.    "auth": "5fce40fb14005e696d26873c88b83465",
33
  1.    "id": 1
34
  1. }
35
  1. ' http://10.0.0.71/zabbix/api_jsonrpc.php
 
 
 
 
 
 
 
 
1
  1. curl -X POST -H "Content-Type: application/json" -d '
2
  1. {
3
  1.    "jsonrpc": "2.0",
4
  1.    "method": "host.delete",
5
  1.    "params": [
6
  1.        "10295"
7
  1.   ],
8
  1.    "auth": "5fce40fb14005e696d26873c88b83465",
9
  1.    "id": 1
10
  1. }
11
  1. ' http://10.0.0.71/zabbix/api_jsonrpc.php
 
 

24: zabbix 高可用

keepalived

启动zabbix-server01

启动zabbix-server02                       keepalived        agent01

监控-zabbix的更多相关文章

  1. 运维监控-Zabbix Server 使用微信 WeChat 告警

    运维监控-Zabbix Server 使用微信 WeChat 告警 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 微信公众号告警每个一天只支持1000次告警,如果超出这个次数了就不 ...

  2. 运维监控-Zabbix Server 使用QQ SMTP发送邮件报警及定制报警内容

    运维监控-Zabbix Server 使用QQ SMTP发送邮件报警及定制报警内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客采用腾讯邮箱,想必大家都对QQ很了解,所以 ...

  3. Zabbix WebUI 配置监控Zabbix Agent

    Zabbix WebUI 配置监控Zabbix Agent 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署zabbix服务 1>.部署zabbix server 和z ...

  4. 第八章 监控 Zabbix

    1.1   YUM部署 Zabbix 2.4 1.  前期准备(省略) l   Yum源的配置 cd /etc/yum.repos.d/; mkdir old;mv ./* old/ rpm -Uvh ...

  5. 企业级监控zabbix基础

    一个标准的监控系统所具备的基本功能: 1.数据的采集 2.为了展示其长期走势,将数据存储下来 3.万一某次采样的结果不在被认为是合理的范围内,然后就会做出告警操作,尽早的让相关人员得知到此消息 4.展 ...

  6. 服务监控-zabbix监控指标

    1.cpu unitzation 监控cpu的整体状态. 使用Zabbix查看CPU利用率,会有下面几个值: CPU idle time:空闲的cpu时间比[简称id] CPU user time:用 ...

  7. 服务器监控zabbix

    nagios服务器安装:http://www.jb51.net/article/79496.htm默认端口12489 nagios +ndo2db+mysqlhttps://www.cnblogs.c ...

  8. 服务监控Zabbix和Nagios的继任者

    本文转载自:https://blog.csdn.net/moonpure/article/details/78633668 为了调研市场,从而做出更好的监控工具,David Gildeh 曾采访了超过 ...

  9. 建设DevOps统一运维监控平台,全面的系统监控 Zabbix VS Nagios VS Open-Falcon OR Prometheus

    前言 随着Devops.云计算.微服务.容器等理念的逐步落地和大力发展,机器越来越多,应用越来越多,服务越来越微,应用运行基础环境越来多样化,容器.虚拟机.物理机不一而足.面对动辄几百上千个虚拟机.容 ...

  10. 企业及监控zabbix

    Php要求必须是5.4及以上(centos 7默认是 5.4.16可以) #安装依赖库 yum -y install gcc curl curl-devel net-snmp net-snmp-dev ...

随机推荐

  1. Pthon学习相关

    1. Cython入门教程:https://www.jianshu.com/p/cfcc2c04a6f5

  2. Java 创建并应用PPT幻灯片母版

    幻灯片母版,可在幻灯片中预先存储设计模板信息,包括字形.占位符大小或位置.背景设计和配色方案等:对设定好的母版可应用于所有幻灯片,也可设计多个不同母版应用于不同幻灯片.下面通过Java代码示例介绍如何 ...

  3. dp cf 20190613

    A. Boredom 这个题目不难,但是我做的还比较复杂,不过还是很开心,至少做出来了,开始因为爆int了还wa了一发,搞得我以为自己做错了 #include <cstdio> #incl ...

  4. java线程池原理解析

    五一假期大雄看了一本<java并发编程艺术>,了解了线程池的基本工作流程,竟然发现线程池工作原理和互联网公司运作模式十分相似. 线程池处理流程 原理解析 互联网公司与线程池的关系 这里用一 ...

  5. Python学习之字符串中的下标和切片以及逆序

    python中的下标从0开始 从后往前取 注意:后面的2代表步长,先看2:-1取出来的数值 [起始位置:终止位置:步长] 逆序 但是发现如果[-1:0:-1]发现是取不到第一个元素的,那么怎么办? 此 ...

  6. Qt编程基础入门之二

    QMainWindow 菜单栏 菜单栏 最多有一个 //菜单栏创建,一个 QMenuBar *menu = new QMenuBar(this); // this->setMenuBar(men ...

  7. 201771010113 李婷华 《面向对象程序设计(java)》第十五周总结

    一.理论知识部分 JAR文件 Java程序的打包:程序编译完成后,程序员将.class文件压缩打包为.jar文件后,GUI界面程序就可以直接双击图标运行. .jar文件(Java归档)既可以包含类文件 ...

  8. OpenWrt(LEDE)2020.4.12编译 UnPnP+NAS+多拨+网盘+DNS优化+帕斯沃 无缝集成

    固件说明 基于Lede OpenWrt R2020.4.8版本(源码截止2020.4.12)Lienol Feed及若干自行维护的软件包 结合家庭x86软路由场景需要定制 按照家庭应用场景对固件及软件 ...

  9. 关于Fragment的点击切换数据滞留问题

    场景再现:当我使用tabLayout + Fragment 切换不同的fragment时,出现了数据重复显示的问题: 思考逻辑: - 每次切换fragment都会重新获取数据,但是list集合是全局的 ...

  10. Power Query:非常规工资条

    常规工资条为标题.内容.空行,每三行一循环,横向排版.打印.空行填充颜色,方便切割.其中用到函数嵌套,先把table以row转换为list,然后用List.TransformMany生成Table.C ...