第1章 Grafana自定义图形

1.安装grafana

[root@m01 /data/soft]# wget https://dl.grafana.com/oss/release/grafana-6.3.2-1.x86_64.rpm
[root@m01 /data/soft]# yum localinstall grafana-6.3.2-1.x86_64.rpm -y
[root@m01 /data/soft]# systemctl start grafana-server.service
[root@m01 /data/soft]# systemctl enable grafana-server.service

访问grafana:http://10.0.0.61:3000

账号密码:admin admin

2.安装并激活zabbix插件

[root@m01 ~]# grafana-cli plugins list-remote|grep zabbix
id: alexanderzobnin-zabbix-app version: 3.10.4
[root@m01 ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
[root@m01 ~]# systemctl restart grafana-server.service

网页操作-激活zabbix插件

网页操作-添加zabbix数据源

网页操作-导入模版

3.数据展示

4.自定义图形仪表盘

5.自定义图形饼图

1.安装插件

在线安装方式

grafana-cli plugins install grafana-piechart-panel

离线安装方式

wget -nv https://grafana.com/api/plugins/grafana-piechart-panel/versions/latest/download -O /tmp/grafana-piechart-panel.zip
unzip -q /tmp/grafana-piechart-panel.zip -d /tmp
mv /tmp/grafana-piechart-panel-* /var/lib/grafana/plugins/grafana-piechart-panel
service grafana-server restart

2.配置图形

第2章 percona模版监控mysql

参考强哥的博客

https://www.qstack.com.cn/archives/213.html

1.安装php环境

percona需要php环境

mkdir /data/soft -p

[root@m01 /data/soft]# yum install php php-mysql -y

2.下载软件

注意,安装完成后会有提示模版的路径位置

[root@m01 ~]# cd /data/soft/
[root@m01 /data/soft]# wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@m01 /data/soft]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
警告:percona-zabbix-templates-1.1.8-1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:percona-zabbix-templates-1.1.8-1 ################################# [100%] Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates

3.查看目录

进入安装目录会发现有2个目录,一个是脚本目录,一个是模版目录

[root@m01 ~]# cd /var/lib/zabbix/percona/
[root@m01 /var/lib/zabbix/percona]# tree
.
├── scripts
│ ├── get_mysql_stats_wrapper.sh
│ └── ss_get_mysql_stats.php
└── templates
├── userparameter_percona_mysql.conf
└── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

其中脚本目录里有2个脚本,用来获取数据库信息

[root@m01 /var/lib/zabbix/percona]# cd scripts/
[root@m01 /var/lib/zabbix/percona/scripts]# ls
get_mysql_stats_wrapper.sh ss_get_mysql_stats.php

4.修改get_mysql_stats_wrapper.sh

修改get_mysql_stats_wrapper数据库登陆信息

第19行添加mysql账号密码

[root@m01 v]# sed -n '19p' get_mysql_stats_wrapper.sh
RES=`HOME=~zabbix mysql -uroot -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n'

5.修改ss_get_mysql_stats.php

[root@m01 /var/lib/zabbix/percona/scripts]# sed -n '30,31p' ss_get_mysql_stats.php
$mysql_user = 'root';
$mysql_pass = '123456';

6.复制自定义监控项配置文件到zabbix目录

[root@m01 ~]# cd /var/lib/zabbix/percona/templates/
[root@m01 /var/lib/zabbix/percona/templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@m01 /var/lib/zabbix/percona/templates]# cd /etc/zabbix/zabbix_agentd.d/
[root@m01 /etc/zabbix/zabbix_agentd.d]# ls
userparameter_mysql.conf userparameter_percona_mysql.conf

7.重启agent

[root@m01 ~]# systemctl restart zabbix-agent

8.测试key

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k MySQL.Sort-scan  #注意ip地址本机127.0.0.1
16

9.导入模版

官方自带的模版有点问题,需要先装在2.x版本然后导出来,这里使用网友已经修改好的模版上传

http://pan.baidu.com/s/1pL1wDYj

10.主机链接模版

xx.报错解决

查看监控发现没有数据显示不支持类型

查看zabbix-server发现因为tmp的文件没有权限,因为刚才手动执行了脚本,所以文件属性是root,将文件删除后由zabbix自己创建解决问题

报错日志如下:

2846:20190811:202708.785 item "Zabbix server:MySQL.State-init" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"
2843:20190811:202709.787 item "Zabbix server:MySQL.State-locked" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"
2844:20190811:202710.788 item "Zabbix server:MySQL.State-login" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"

第3章 自动发现和自动注册

1.自动发现

web页面操作

image.png

2.自动注册

修改zabbix-agent配置文件

[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.1.61
ServerActive=10.0.1.61
Hostname=web02
Include=/etc/zabbix/zabbix_agentd.d/*.conf #重启
systemctl restart zabbix-agent

web页面操作

刷新查看发现已经添加上了

第4章 主动模式和被动模式

默认为被动模式:100个监控项要100个来回,要的时候才返回

主动模式:100个监控项1个回合,将所需要的100个打包,然后一次发过去,发过去之后,客户端全部执行完再一次返回给服务端。

1.克隆模版

完全克隆原来被动模式的模版为主动模式

2.修改克隆后的模版为主动模式

3.修改监控主机关联的模版为主动模式

4.修改客户端配置文件并重启

[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.1.61
ServerActive=10.0.1.61
Hostname=web01
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@web01 ~]# systemctl restart zabbix-agent.service

5.查看最新数据

发现获取数据的时间是一样的

第5章 低级自动发现

监控端口自动发现

1.查看系统自带分区自动发现

系统自带的自动发现会显示红字,比如自带的磁盘分区发现规则

1.查看zabbbix所有的key过滤后展示

2.解析成json后的格式

3.过滤规则

实质上是从mount命令获取的分区名和类型

image.png

但是我们zabbix显示的并没有这么多

是因为做了正则表达式过滤

而正则表达式是在管理里面配置的

4.使用zabbix_get获取key

因为根据过滤规则,只发现了一个xfs的key,使用zabbix_get可以查看到这个key

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k vfs.fs.size[{#FSNAME},free]
ZBX_NOTSUPPORTED: Cannot obtain filesystem information: [2] No such file or directory
[root@m01 ~]# zabbix_agentd -p|grep vfs.fs.size
vfs.fs.size[/,free] [u|15713636352]
[root@m01 ~]# zabbix_get -s 10.0.1.61 -k vfs.fs.size[/,free]
15713693696

2.查看系统自带的网卡自动发现

1.查看网络自动发现规则

2.过滤规则

2.命令行过滤

[root@m01 ~]# zabbix_agentd -p|grep net.if.discovery
net.if.discovery [s|{"data":[{"{#IFNAME}":"tun0"},{"{#IFNAME}":"eth0"},{"{#IFNAME}":"eth1"},{"{#IFNAME}":"lo"}]}]

3.查看自动添加的监控项

我们会发现添加了四个监控项

2个eth0

2个eth1

4.查看key的值

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k net.if.in[eth0]
2191453
[root@m01 ~]# zabbix_get -s 10.0.1.61 -k net.if.in[eth1]
7152

3.监控mysql多实例

参考强哥博客

[https://www.qstack.com.cn/archives/108.html](https://www.qstack.com.cn/archives/108.html)

1.复制并修改数据库配置文件

yum -y install mariadb-servier
systemctl start mariadb
[root@m01 ~]# cp /etc/my.cnf /etc/my3307.cnf
[root@m01 ~]# vim /etc/my3307.cnf
[root@m01 ~]# cat /etc/my3307.cnf
[mysqld]
datadir=/data/3307/
socket=/data/3307/mysql.sock
port=3307
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/data/3307/mysqld.log
pid-file=/data/3307/mysqld.pid
[root@m01 ~]# cp /etc/my3307.cnf /etc/my3308.cnf
[root@m01 ~]# sed -i 's#3307#3308#g' /etc/my3308.cnf

2.创建数据目录并初始化

[root@m01 ~]# mkdir /data/{3307,3308} -p
[root@m01 ~]# chown -R mysql:mysql /data/330*
[root@m01 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf --force
[root@m01 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf --force

3.启动多实例

[root@m01 ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &
[root@m01 ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &

4.检查端口

[root@m01 ~]# netstat -lntup|grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2042/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 84790/mysqld
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 85439/mysqld

5.创建自动发现配置文件

[root@m01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql_discovery.conf
UserParameter=mysql.discovery,/bin/bash /server/scripts/mysql_discovery.sh #授权
[root@m01 ~]# chmod u+s /usr/bin/netstat
rm -rf userparameter_mysql.conf #或者最备份移走
#重启客户端
[root@m01 ~]# systemctl restart zabbix-agent.service

6.创建自动发现多实例脚本

[root@m01 ~]# cat /server/scripts/mysql_discovery.sh
#!/bin/bash
#mysql low-level discovery
res=$(netstat -lntp|awk -F "[ :\t]+" '/mysqld/{print$5}')
port=($res)
printf '{'
printf '"data":['
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
printf '{'
printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '{'
printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"
fi
done
printf ']'
printf '}\n'

7.测试自动发现脚本

[root@m01 ~]# bash /server/scripts/mysql_discovery.sh
{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}

报错:.zabbix_get测试取key

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k mysql.discovery
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
{"data":[]}

这时我们发现取不出来并提示了个错误

原因是zabbix用户不能使用netstat的-p参数

解决方法为给netstat命令添加s权限

[root@m01 ~]# which netstat
/usr/bin/netstat
[root@m01 ~]# chmod u+s /usr/bin/netstat

然后再次测试就发现可以取到值了

[root@m01 ~]# zabbix_get -s 10.0.1.61 -k mysql.discovery
{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}

扩展一台多实例

#.db02安装多实例
yum install mariadb-server -y
systemctl start mariadb
cat >/etc/my3310.cnf<<EOF
[mysqld]
datadir=/data/3310/
socket=/data/3310/mysql.sock
port=3310
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/data/3310/mysqld.log
pid-file=/data/3310/mysqld.pid
EOF
cp /etc/my3310.cnf /etc/my3311.cnf
sed -i 's#3310#3311#g' /etc/my3311.cnf
mkdir /data/{3310,3311} -p
chown -R mysql:mysql /data/330*
mysql_install_db --user=mysql --defaults-file=/etc/my3310.cnf --force
mysql_install_db --user=mysql --defaults-file=/etc/my3311.cnf --force
mysqld_safe --defaults-file=/etc/my3310.cnf &
mysqld_safe --defaults-file=/etc/my3311.cnf &
netstat -lntup|grep mysql #.web02复制web01的数据
chmod u+s /usr/bin/netstat
rm -rf userparameter_mysql.conf
scp 10.0.0.7:/etc/zabbix/zabbix_agentd.d/* /etc/zabbix/zabbix_agentd.d/
systemctl restart zabbix-agent #.web02关联模板

8.web页面创建自动发现规则模版

创建模版

创建自动发现规则

设置过滤规则

创建过滤 规则

11.模仿zabbix自带的mysql监控配置修改监控项

场景要求:

场景1:

有2台mysql数据库

每一台都是多实例

每个mysql实例都要监控指标uptime

db01: 3306 3307 3308

db02: 3309 3310 3311

shell命令如何实现

mysql -uroot -p123456 -P 3307 -e "show status  where Variable_name='uptime';"
mysql -uroot -p123456 -P 3308 -e "show status where Variable_name='uptime';"
mysql -uroot -p123456 -P 3309 -e "show status where Variable_name='uptime';"

使用低级自动发现添加mysql端口

1.创建多实例(同上)

2.创建zabbix低级自动配置文件

vim /etc/zabbix/zabbix_agentd.d/mysql_uptime.conf
UserParameter=mysql.status[*],mysql -h127.0.0.1 -P$2 -N -e "show global status where Variable_name='$1';" | awk '{print $$2}'
#授权
[root@m01 ~]# chmod u+s /usr/bin/netstat
mv /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf /tmp [root@m01 ~]# systemctl restart zabbix-agent.service

3.测试访问监控项 :服务端

[root@m01 ~]# zabbix_get -s 10.0.0.9 -k mysql.status[Uptime,3309]

13.web页面添加监控项原型

监控项原型

12.web页面设置主机关联模版

主机关联模版

13.查看是否已经自动添加成功

web首页的优化

1安装,找到一个首页

2.zabbix -web界面配置

3.查询首页状态

4.配置场景

4.配置关联主机

5.查看状态

6.配置触发器

7.修改配置文件

       location / {
return 404
root html;
index index.html index.htm;
}

第6章 性能优化

1.监控数据分析

zabbix监控主机和监控项较少的时候,不需要优化
数据库 200台主机 * 200个监控项 = 40000监控项/30秒 = 1333次写入/每秒
写多 读少

2.优化思路

1.mariadb 5.5 innodb 升级到mysql5.7 tokudb
2.去掉无用监控项,增加监控项的取值间隔,减少历史数据的保存周期
3.被动模式改为主动模式
4.针对zabbix-server进程数量调优
5.针对zabbix-server缓存调优,谁的剩余内存少,就加大他的缓存
6.固态硬盘 大内存
7.zabbix proxy (上千台.做代理汇总)

3.升级存储引擎

TokuDB性能比InnoDB要好

实施步骤:

1.找一台机器安装好mysql5.7
2.将mariadb的数据导出,然后替换sql文件里的存储引擎为TokuDB
3.将替换之后的数据导入到mysql5.7
4.停掉mariadb
5.检查测试

4.优化进程数

可以人为制造进程繁忙,把自动发现调整IP范围为1-254

这个时候观察会发现自动发现进程变得繁忙了

修改进程数

[root@zabbix-11 ~]# grep "^StartDiscoverers" /etc/zabbix/zabbix_server.conf
StartDiscoverers=10
[root@zabbix-11 ~]# systemctl restart zabbix-server.service

调整之后发现进程不这么繁忙了

5.缓存调优

调整配置文件

[root@zabbix-11 ~]# grep "^Cache" /etc/zabbix/zabbix_server.conf
CacheSize=128M

第7章 zabbix高可用

思路:

2台zabbix-server使用keepavied做高可用

数据库做主从复制

keepalived两端都做backup角色,设置不抢占VIP

keepalived设置如果发生改变就将自身的从库数据库修改为主库设置

然后另一台修复上线后,手动介入重新做主从同步,变成从库

zabbix服务深入的更多相关文章

  1. zabbix (一:zabbix服务端)

    默认情况下zabbix有5个进程: zabbix_agent  zabbix_get zabbix_proxy zabbix_sender zabbix_server,另外一个zabbix_java_ ...

  2. Zabbix服务网页报错汇总

    第1章 Zabbix简介及组成 1.1 zabbix简介 zabbix是一个基于web界面,提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它可以监视各种网络参数,保证服务器自动的安全运营, ...

  3. 使用Zabbix服务端本地邮箱账号发送报警邮件及指定报警邮件操作记录

    邮件报警有两种情况:1)Zabbix服务端只是单纯的发送报警邮件到指定邮箱,发送报警邮件的这个邮箱账号是Zabbix服务端的本地邮箱账号(例如:root@localhost.localdomain), ...

  4. 运用Zabbix实现内网服务器状态及局域网状况监控(3) —— Zabbix服务端安装

    1. Zabbix服务端安装,基于LNMP PHP5.5+Nginx1.9安装配置:http://www.cnblogs.com/vurtne-lu/p/7707536.html MySQL5.5编译 ...

  5. CentOS7 zabbix服务 简单安装文档

    1. 简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快 ...

  6. zabbix 服务端安装(server)

    zabbix版本:Zabbix 2.2 LTS 备注:Linux下安装zabbix需要有LAMP或者LNMP运行环境 准备篇: 一.Web环境:Nginx+MySQL+PHP CentOS 7.0编译 ...

  7. linux 系统安装配置 zabbix服务(源码安装)

    简介: zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定 ...

  8. zabbix服务快速搭建指南

    zabbix监控服务快速安装指南 1.更换centos7-base源为阿里源  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ali ...

  9. 监控和安全运维 1.8 zabbix服务端安装

    1. Zabbix简介基于web的开源软件,开源监控系统状态也可以监控网络设备.和nagios不同的是zabbix会把获取的数据保存在数据库中,所以zabbix需要有数据库支持 Zabbix还可以自动 ...

  10. docker+zabbix,使用docker搭建zabbix服务

    Zabbix 介绍 zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵 ...

随机推荐

  1. 少用float浮动?

    在css中,float 属性定义元素在哪个方向浮动.也是我在css样式中常用到的属性,后来浏览了一些公司项目代码,发现float属性极少有人使用.随后做了一些调查和研究: 1.在ie6以下,float ...

  2. pycharm启动vue项目

    一 移动vue项目问题 1 移植到其他windows or mac 2 重新安装依赖 基于情况2(我们把除了第一个文件都复制到一个新的文件夹) 重新依据配置文件去安装各种各样的依赖(也就是根据配置文件 ...

  3. Kafka 0.10.0.1 consumer get earliest partition offset from Kafka broker cluster - scala code

    Return: Map[TopicPartition, Long] Code: val props = new Properties() props.put(ConsumerConfig.BOOTST ...

  4. pngquant——一个好用的png压缩工具

    一个可以进行有损图片压缩的命令行工具和代码库. 网址:https://pngquant.org/ 1.为什么选择pngquant 传说中的神器——tinyPng 我们现在用的工具——ImageAlph ...

  5. css练习——两列左窄右kuan型

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. 带着canvas去流浪系列之二 绘制折线图

    [摘要] 用canvasAPI实现echarts简易图表 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 任务说明 使用原生canvasAPI绘制 ...

  7. 使用python实现http服务器

    主要使用python实现了一个http服务器.http服务器实现了用户的注册和登录的简单功能,当然还可以继续扩展. 数据的存储使用的是文件,有兴趣的话可以使用数据库进行存储.当然根据个人兴趣而定. 本 ...

  8. npm 安装/删除/发布/更新/撤销 发布包

    目录 一. npm安装包 1.1 什么时候用本地/全局安装? 1 当你试图安装命令行工具的时候,例如 grunt CLI的时候,使用全局安装 2. 当你试图通过npm install 某个模块,并通过 ...

  9. 移动前端不得不了解的HTML5 head 头标签 —— Meta 标签

    Meta 标签 meta标签是HTML中head头部的一个辅助性标签,它位于HTML文档头部的 <head> 和 <title> 标记之间,它提供用户不可见的信息.虽然这部分信 ...

  10. 往Github上,上传本地项目

    1.先申请一个Github的帐号,创建一个仓库. 复制这个仓库的地址: 创建完空仓库,页面下方会有提示代码,告诉怎么操作 在本地的项目下依次执行下面的代码: git init   //在本地创建git ...