大神带你一天了解zabbix(一)

15 Zabbix的搭建

15.1 为什么使用监控服务

  • 对系统实现不间断的监控,实现报警通知(电话,微信,邮件,发短信,手环)
  • 实时反馈系统当前的状态信息
  • 保证服务的可靠安全性
  • 保证业务的稳定运行

15.2 监控服务的实现方式

15.2.1 命令实现

15.2.1.1 查看cpu命令

  • w
  • top
  • htop(yum -y install htop)
  • glances

15.2.1.2 查看系统内存的命令

free

15.2.1.3 查看系统硬盘的命令

df

15.2.1.4 查看系统进程命令

15.2.1.4.1 top
  • us                                用户状态(与用户操作有关系)
  • sy                                系统状态(与内核处理有关系)
  • id(id<20%的时候就要报警)            空闲状态(系统CPU空闲状态比)
15.2.1.4.2 htop

15.2.1.5 查看系统负载命令

uptime                                监控系统启动时间的信息命令

15.2.1.6 查看网络信息命令

ifconfig/route/glances/iftop/nethogs

15.2.1.7 查看网络连接命令

netstat

15.2.1.8 查看磁盘读写命令

iostat/iotop

15.2.1.9 查看硬件信息命令

vmstat

 

15.2.2 脚本实现

使用脚本+定时任务来进行

15.2.3 zabbix实现

安装zabbix客户端来实现

15.3 监控服务的软件部署

15.3.1 更新yum源(LTS是稳定源)

15.3.1.1 4.0 yum源的更新

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

15.3.1.2 3.0 yum源的更新

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

15.3.2 安装LAMP架构和zabbix相关的软件

zabbix服务程序软件        zabbix-server-mysql

zabbix服务web软件:        zabbix-web-mysql    httpd php

数据库服务软件:            mariadb-server

[root@zabbix-server ~] # yum install -y zabbix-server-mysql zabbix-web-mysql httpd php mariadb-server

15.3.3 修改zabbix-server服务的配置文件

[root@zabbix-server ~] # vim /etc/zabbix/zabbix_server.conf

91 # DBHost=localhost            指定连接的数据库是本地还是远程,如果是远程,指定IP地址

100 DBName=Zabbix                指定数据库的名称

116 DBUser=Zabbix                指定用户名称

125 DBPassword=Zabbix            指定密码信息

15.3.4 创建数据库和用户

15.3.4.1 启动数据库

[root@zabbix-server ~] # systemctl start mariadb.service

15.3.4.2 创建数据库zabbix

[root@zabbix-server ~] # mysql -uzabbix -pzabbix

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 1884

Server version: 5.5.64-MariaDB MariaDB Server

 

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;            创建数据库

 

 

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';        创建数据库对用的用户

15.3.4.3 zabbix数据库信息导入到zabbix数据库

[root@zabbix-server ~] # zcat /usr/share/doc/zabbix-server-mysql-4.0.15/create.sql.gz|mysql -uzabbix -pzabbix zabbix

15.3.5 修改zabbix.conf里面的时区信息

[root@zabbix-server ~] # vim /etc/httpd/conf.d/zabbix.conf

20 php_value date.timezone Asia/Shanghai            修改时区为你创建zabbix所在的时区

15.3.6 重启zabbix服务和LNMP服务

[root@zabbix-server ~] # systemctl start zabbix-server.service httpd mariadb.service

[root@zabbix-server ~] # systemctl enable zabbix-server.service httpd mariadb.service

15.3.6.1 为什么没有启动php服务

  • LAMP架构的http服务里面的php是他的一个模块是不需要启动的
  • LNMP架构中的nginx服务和php服务是独立的服务,所以需要启动

15.3.7 登录web界面

15.3.7.1 输入10.0.0.71/Zabbix来登录web界面(Admin,zabbix)

15.3.7.2 修改背景颜色和语言

15.3.8 web界面的配置功能使用

15.3.8.1 这会添加监控的服务器发现172.16.1.7根本没有被监控的服务

【zabbix-agent服务的配置】

15.3.8.1.1 在客户端进行更新yum源

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

15.3.8.1.2 安装zabbix-agent服务

[root@web01 ~] # yum -y install zabbix-agent

15.3.8.1.3 修改配置文件

[root@web01 ~] # vim /etc/zabbix/zabbix_agentd.conf

98 Server=172.16.1.71                    指定要哪台服务器可以进行监控我这台服务器

15.3.8.1.4 重启zabbix-agent服务

[root@web01 ~] # systemctl restart zabbix-agent.service

15.3.8.2 添加模板

15.3.8.3 查看服务端和客户端是否连接成功,可以开始监测了

15.3.8.4 连接失败怎么解决(也就是zabbix不变绿或者变红了)

  • 使用telnet来进行查看客户端的服务是否可以正常
  • 查看模板和主机是否配置正确
  • 查看zabbix日志看下
  • 查看zabbix-server和zabbix-agent配置文件是否正确

15.4 监控服务的应用过程(基础应用)

15.4.1 监控配置方法

15.4.1.1 本身系统设置好的

15.4.1.1.1 点击配置,在找主机,接着监控项

15.4.1.1.2 发现有许多的过滤项

15.4.1.1.3 点击其中一个应用集,选择下面要具体监控的项

15.4.1.1.4 点击你选择的一个available memory,点击,会发现下图

15.4.1.1.5 点击监测,在点击最新数据,选择你要找的主机和应用集

15.4.1.1.6 图形监测,点击下面的图形

15.4.1.2 自定义监控项

15.4.1.2.1 创建自定义监控项
  • 点击配置,主机,监控项,在里面选择创建监控项

  • 选择具体的内容

15.4.1.2.2 创建监控项key值
  • 客户端的配置(Zabbix-agent)
  • 通过配置文件找到系统配置key值的配置文件

[root@web01 ~] # vim /etc/zabbix/zabbix_agentd.conf

 

268 Include=/etc/zabbix/zabbix_agentd.d/*.conf

  • 查看系统的key值配置方法(发现key是自己设置,后面根你具体监控的值或者其他)

  • 配置自己的key值

[root@web01 zabbix_agentd.d] # cat user_count.conf

UserParameter=user.count,w | grep -c "pts"                统计当前登录的用户

  • 服务端的配置(Zabbix-server)
  • 检查key值是否配置成功
  • 安装zabbix-get

[root@zabbix-server ~] # yum -y install zabbix-get

  • 开始检测

[root@zabbix-server ~] # zabbix_get -s 172.16.1.7 -k user.count        检测成功

1

15.4.1.2.3 点击检测,最新数据,选择你要检测的应用集

15.4.1.2.4 在次登录一个用户
  • 在linux界面测试的结果

[root@zabbix-server ~] # zabbix_get -s 172.16.1.7 -k user.count

2

  • 在图形界面测试的结果

15.4.2 实现tcp11种状态的监控

15.4.2.1 在客户端配置key

[root@web01 scripts] # cd /etc/zabbix/zabbix_agentd.d/

[root@web01 zabbix_agentd.d] # vim tcp_eleven_status.conf

UserParameter=tcp_eleven.status[*],netstat -an|grep -ic $1

15.4.2.2 在服务端测试key值配置是否正确(其他自己测试)

[root@zabbix-server ~] # zabbix_get -s 172.16.1.7 -k tcp_eleven.status[LISTEN]

83

[root@zabbix-server ~] # zabbix_get -s 172.16.1.7 -k tcp_eleven.status[ESTABLISHED]

4

15.4.2.3 web界面配置监控项(如果看不懂,请看我的监控配置方法章节的)

15.4.2.4 查看最终监控的数据(同样看不懂看监控配置方法)

15.4.3 触发器的设置

15.4.3.1 触发器的概念

触发器为了解决人为监控看数据,可以通过设定一个值来进行判断,当到达这个阈值的时候就会触发报警

15.4.3.2 配置触发器功能(自己定义键值监控nginx服务是否正常)

15.4.3.2.1 客户端编写脚本来判断nginx的状态

[root@web01 zabbix_agentd.d] # vim /server/scripts/monitor_web.sh

#!/bin/bash

netstat -lntup|grep -w 80 &>/dev/null

if [ $? -ne 0 ]

then

echo 0                    如果返回状态不等于0,则返回0

else

echo 1                    如果返回状态等于0,则返回1

fi

15.4.3.2.2 客户端配置触发功能

[root@web01 zabbix_agentd.d] # cd /etc/zabbix/zabbix_agentd.d/

[root@web01 zabbix_agentd.d] # cat server.conf

UserParameter=net.tcp.checkweb,/server/scripts/monitor_web.sh

[root@web01 zabbix_agentd.d] #

15.4.3.2.3 在服务端查看键值是否成功

[root@zabbix-server ~] # zabbix_get -s 172.16.1.7 -k net.tcp.checkweb

1                            正常

You have new mail in /var/spool/mail/root

15.4.3.2.4 配置监控项

15.4.3.2.5 查看监控数据

15.4.3.2.6 再次更新监控项

15.4.3.2.7 再次查看最新的数据

15.4.3.2.8 配置触发器

15.4.3.2.9 查看触发器是否正常
  • 当前状态

  • 将nginx服务关闭以后

[root@web01 zabbix_agentd.d] # systemctl stop nginx

You have new mail in /var/spool/mail/root

[root@web01 zabbix_agentd.d] #

15.4.3.2.10 给触发器加入声音报警功能

如果不行,就需要清除下浏览器缓存在看下

15.4.3.2.11 更换报警声音

<option value="alarm_disaster.mp3" selected="selected">alarm_disaster</option>        复制出来的内容

  • 查看zabbix所在的站点

[root@zabbix-server ~] # cd /etc/httpd/conf.d/

You have new mail in /var/spool/mail/root

[root@zabbix-server conf.d] # vim zabbix.conf             配置文件所在的目录

#

# Zabbix monitoring system php web frontend

#

 

Alias /zabbix /usr/share/zabbix

 

<Directory "/usr/share/zabbix">                        Zabbix所在的站点目录

Options FollowSymLinks

AllowOverride None

  • 通过find命令查看音乐播放文件

[root@zabbix-server conf.d] # find /usr/share/zabbix -name "alarm_disaster.mp3"            查找

/usr/share/zabbix/audio/alarm_disaster.mp3                查找出来的结果

[root@zabbix-server conf.d] # cd /usr/share/zabbix/audio/        切换到这个目录下

[root@zabbix-server audio] # ls

alarm_average.mp3 alarm_disaster.mp3 alarm_high.mp3 alarm_information.mp3 alarm_ok.mp3 alarm_warning.mp3 no_sound.mp3        可以又很多音乐文件,将自己的音乐文件放进去,更换成你要换的名字即可

如果出现不会播放更换自己的音乐,你要自己清除下缓存即可

15.4.4 实现不同的方法来进行报警

15.4.4.1 为什么需要实现多种

  • 人们查看信息方式的不同
  • 时间地点不同的时候也需要不同的方式来进行报警
  • 多种办法可以使事情在发生的时候能够更快的处理

15.4.4.2 邮件报警

15.4.4.2.1 配置报警媒介(你要选择那个来进行报警)

15.4.4.2.2 配置要发送给谁

15.4.4.2.3 发送什么内容,通过什么介质发送

15.4.4.2.4 编写邮件脚本,放入服务端
  • 查看zabbix存在脚本的路径

[root@zabbix-server audio] # vim /etc/zabbix/zabbix_server.conf

508 ### Option: AlertScriptsPath

509 # Full path to location of custom alert scripts.

510 # Default depends on compilation options.

511 # To see the default path run command "zabbix_server --help".

512 #

513 # Mandatory: no

514 # Default:

515 # AlertScriptsPath=${datadir}/zabbix/alertscripts

516

517 AlertScriptsPath=/usr/lib/zabbix/alertscripts                存放脚本的路径

  • 将脚本放入到这个目录下面

  • 脚本的编写代码信息

[root@zabbix-server alertscripts] # cat mail_163.py

#!/usr/bin/python

#coding:utf-8

import smtplib

from email.mime.text import MIMEText

import sys

mail_user = '460523471@qq.com'                指定你设置的邮箱

mail_pass = 'enoncgdkvjhlbjbd'                 你的验证密码

 

def send_mail(to_list,subject,content):

me = "zabbix 监控告警平台"+"<"+mail_user+">"

msg = MIMEText(content, 'plain', 'utf-8')

msg['Subject'] = subject

msg['From'] = me

msg['to'] = to_list

try:

s = smtplib.SMTP("smtp.qq.com", 25)     这儿你的smtp服务器是qq就写qq,是其他就写其他

s.login(mail_user,mail_pass)

s.sendmail(me,to_list,msg.as_string())

s.close()

return True

except Exception,e:

print str(e)

return False

if __name__ == "__main__":

send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

You have new mail in /var/spool/mail/root

  • 脚本开始测试

15.4.4.2.5 邮件测试
  • 将nginx服务模拟停止

[root@web01 zabbix_agentd.d] # systemctl stop nginx

[root@web01 zabbix_agentd.d] #

  • 查看动作日志

  • 查看163邮箱

15.4.4.3 微信报警

15.4.4.3.1 配置报警媒介(你要选择那个来进行报警)

  • 到这里我们发现脚本名称是什么?下面的3个变量具体是干什么的,为什么是这3个宏来指定这些信息,根据这些问题,我们发现我们不能先配置web界面,需要先将微信和linux界面的东西配置好
15.4.4.3.2 配置企业微信

https://work.weixin.qq.com/wework_admin/loginpage_wx--------登陆进去,注册登陆

  • 查找企业ID,在我的企业里面

  • 在应用管理选择创建应用

  • 随便写

15.4.4.3.3 配置linux界面weixin脚本

  • 授予执行权限,如果出现报错,说找不见request包的时候,需要使用pip install request来进行安装,如果pip没有,可以使用yum install python-pip安装,在使用pip安装request
  • pip安装过程中失败可以使用

[root@zabbix-server alertscripts] # cat ~/.pip/pip.conf

[global]

index-url = https://mirrors.aliyun.com/pypi/simple/

 

[install]

trusted-host=mirrors.aliyun.com

You have new mail in /var/spool/mail/root

[root@zabbix-server alertscripts] #

  • 微信脚本内容拿出来进行更改

[root@zabbix-server alertscripts] # cat weixin.py

#!/usr/bin/env python

#-*- coding: utf-8 -*-

#author: yanggd

#date: 2018-04-20

#comment: zabbix接入微信报警脚本

 

import requests

import sys

import os

import json

import logging

 

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',

datefmt = '%a, %d %b %Y %H:%M:%S',

filename = os.path.join('/tmp','weixin.log'),

filemode = 'a')

 

corpid='ww3ff5e031e93d32d9'                    写成自己的企业ID

appsecret='qG_KF_Ot2yUnevM0K3b8PaoOC7zqZT3IZwx_o9JeHcc'            写成自己的secury

agentid=1000002                            写成自己的AgentID

#获取accesstoken

token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret

req=requests.get(token_url)

accesstoken=req.json()['access_token']

 

#发送消息

msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

 

touser=sys.argv[1]

subject=sys.argv[2]

#toparty='3|4|5|6'

message=sys.argv[2] + "\n\n" +sys.argv[3]

 

params={

"touser": touser,

# "toparty": toparty,

"msgtype": "text",

"agentid": agentid,

"text": {

"content": message

},

"safe":0

}

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)

  • 运行自己的微信脚本

[root@zabbix-server alertscripts] # ./weixin.py LiangYuXing test_info "we check nginx"

15.4.4.3.4 配置web界面,实现可以微信接收信息

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

  • 配置发送给谁

  • 发送什么内容,通过什么介质

  • 微信测试
  • 将nginx服务停止

[root@web01 zabbix_agentd.d] # systemctl stop nginx

 

  • 查看动作日志

  • 查看企业微信

`15.4.4.4 电话或者短信报警

15.4.4.4.1 睿象云平台设置

https://user.aiops.com/pages/v2/login?from=oneacaoptcmfhaot--------登录注册

  • 选择CA报警方式

  • 点击集成,选择zabbix监控

  • 接着我们会看见安装Agent(这个Agent是安装在服务端的,不是客户端)
15.4.4.4.2 安装Agent
  • 切换到zabbix脚本目录

[root@zabbix-server ~] # cd /usr/lib/zabbix/alertscripts/

  • 获取Cloud Alert Agent包:

[root@zabbix-server alertscripts] # wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-2.1.0.tar.gz

  • 解压

[root@zabbix-server alertscripts] # tar -xzf ca_zabbix_release-2.1.0.tar.gz

[root@zabbix-server alertscripts] #

[root@zabbix-server alertscripts] # cd cloudalert/bin

  • 开始安装

[root@zabbix-server bin] # bash install.sh 72f622ad-9b2c-76ea-41c9-3c5de8be95e5

start to create config file...

Zabbix管理地址: http://10.0.0.71/zabbix/            zabbix的登录地址,不需要加index.php

Zabbix管理员账号: Admin

Zabbix管理员密码(zabbix)                    上面默认不显示

15.4.4.4.3 zabbixweb界面查看

15.4.4.4.4 睿象云配置电话或者短信给谁打或者发送

15.4.4.4.5 查看是否电话可以通知
  • 将nginx服务关闭

[root@web01 ~] # systemctl stop nginx

[root@web01 ~] #

  • 查看电话,短信,qq邮箱信息

15.4.5 监控图形的显示

15.4.5.1 系统自带的监控图形

15.4.5.2 自定义图形

15.4.5.3 图形字符集的优化

15.4.5.3.1 现在的图形文字显示

15.4.5.3.2 查找存放字符集的目录
  • 查看站点目录

15.4.5.3.3 切换到站点目录

[root@zabbix-server fonts] # cd /usr/share/zabbix/assets/fonts

[root@zabbix-server fonts] # ll

15.4.5.3.4 将windows电脑上面的字符集放入到linux服务器上面
  • windows路径: C:\Windows\Fonts------选择自己喜欢的字符集放入到linux目录里面

  • 修改名字为现在上面的软连接名字

[root@zabbix-server fonts] # mv graphfont.ttf graphfont.ttf_backup

[root@zabbix-server fonts] # mv msyh.ttc graphfont.ttf

[root@zabbix-server fonts] # ls

graphfont.ttf graphfont.ttf_backup

[root@zabbix-server fonts] #

15.4.5.3.5 再次查看文字

15.4.5.4 使用grafana结合zabbix来设置图形

15.4.5.4.1 下载grafana

官方网址链接: https://grafana.com/

告示:只是告诉你们,具体我这里有下载地址

15.4.5.4.2 开始下载

[root@zabbix-server fonts] # wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.5.1-1.x86_64.rpm

15.4.5.4.3 本地rpm包安装

[root@zabbix-server fonts] # yum localinstall -y grafana-6.5.1-1.x86_64.rpm

15.4.5.4.4 启动grafana

[root@zabbix-server ~] # systemctl restart grafana-server.service

[root@zabbix-server ~] # systemctl enable grafana-server.service

Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.

[root@zabbix-server ~] #

15.4.5.4.5 web界面登录

账号:admin 密码:admin

15.4.5.4.6 下载zabbix和grafana结合的zabbix插件(一)
  • 查找zabbix的ID和版本号

[root@zabbix-server ~] # grafana-cli plugins list-remote | grep zabbix

id: alexanderzobnin-zabbix-app version: 3.10.4

You have new mail in /var/spool/mail/root

[root@zabbix-server ~] #

  • 插件下载的路径

https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.10.4/download

  • 创建插件目录

[root@zabbix-server ~] # mkdir -p /var/lib/grafana/plugins

  • 将插件解压

[root@zabbix-server plugins] # unzip grafana_zabbix插件.zip

  • 解压的结果

  • 重启grafana

[root@zabbix-server ~] # systemctl restart grafana-server.service

[root@zabbix-server ~] #

  1. 通过grafana-cli plugins install来安装
  • 查找zabbix的ID和版本号

[root@zabbix-server ~] # grafana-cli plugins list-remote | grep zabbix

id: alexanderzobnin-zabbix-app version: 3.10.4

You have new mail in /var/spool/mail/root

[root@zabbix-server ~] #

  • 安装

[root@zabbix-server ~] # grafana-cli plugins install alexanderzobnin-zabbix-app

  • 重启grafana

[root@zabbix-server ~] # systemctl restart grafana-server.service

[root@zabbix-server ~] #

15.4.5.4.8 再次打开web界面

  1. zabbix模板的介绍

15.4.6.1 为什么需要监控模板

配置监控模板,可以少很多重复的工作,可以提高工作效率

15.4.6.2 怎么配置模板

15.4.6.3 怎么能借鉴别人的模板里面的内容变成自己的内容

15.4.7 zabbix自动发现主机(网络发现)

15.4.7.1 还原最初始的状态

15.4.7.2 点击配置自动发现

15.4.7.3 点击配置,然后选择动作

15.4.7.4 测试是否可以自动发现(监测-自动发现)

  • 注意:监测失败或者一直没有怎么解决
  1. 查看服务端日志信息(tail -f /var/log/zabbix/zabbix_server.log)
  2. 服务端日志没报错的情况,可以重启服务端看下

15.4.8 监控维度信息

15.4.8.1 面试:你了解监控吗? 你们公司是如何实现监控的?

15.4.8.1.1 硬件监控
  • 服务器
  • 路由器
  • 交换机
  • 防火墙
15.4.8.1.2 系统监控
  • CPU
  • 内存
  • 磁盘
  • 网络
  • 进程
  • TCP
15.4.8.1.3 服务监控
  • nginx
  • php
  • tomcat
  • redis
  • memcache
  • mysql
15.4.8.1.4 网站监控
  • 请求时间
  • 响应时间
  • 加载时间
15.4.8.1.5 日志监控
  • ELK(收集 存储 分析 展示)
  • 日志易
15.4.8.1.6 安全监控
  • Firewalld
  • WAF(Nginx+lua)
  • 安全宝
  • 牛盾云
  • 安全狗
15.4.8.1.7 网络监控
  • smokeping
  • 监控宝
  • 站长工具
  • 奇云测
  • 多机房
15.4.8.1.8 业务监控
  • 活动产生多少流量
  • 产生多少注册量
  • 带来多少价值
posted @ 2019-12-07 16:17  HXX-LYX  阅读(360)  评论(0编辑  收藏  举报