标签:复制 add 出图 setup dashboard lock size inf 开头
环境说明
软件 |
版本 |
操作系统 |
IP地址 |
Grafana |
5.4.3-1 |
Centos7.5 |
192.168.18.231 |
Prometheus |
2.6.1 |
Centos7.5 |
192.168.18.232 |
Zabbix |
4.0.4 |
Centos7.5 |
192.168.18.233 |
Grafana是一个开源的指标量监测和可视化工具,官方网站为:https://grafana.com/。Grafana的安装非常简单,官方就有软件仓库可以直接使用,也可以通过docker镜像等方式直接本地启动。还可以直接下载rpm包、二进制包进行安装。大家可以从 https://grafana.com/grafana/download 下载rpm安装包。
cd /usr/local/src/
wget https://dl.grafana.com/oss/release/grafana-5.4.3-1.x86_64.rpm
yum localinstall grafana-5.4.3-1.x86_64.rpm
#默认情况下,grafana的配置存储于sqlite3中,如果你想使用其他存储后端,如mysql,postgresql等,请参考官方文档配置: http://docs.grafana.org/installation/configuration/
#启动服务
systemctl start grafana-server
#查看服务是否正常启动
systemctl status grafana-server
#自启动
systemctl enable grafana-server
systemctl stop firewalld.service
systemctl disable firewalld.service
yum install -y iptables-services
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT
#重启
systemctl restart iptables.service
systemctl enable iptables.service
#后续添加先重启再保存
service iptables restart
service iptables save
访问 http://192.168.18.231:3000 就可以看到登录界面了。默认的用户名和密码都是admin。Grafana的配置文件位于/etc/grafana/grafana.ini,一般情况下无需修改配置文件。
这里使用nginx最新稳定版本 nginx-1.14.2,安装过程如下:
yum -y install gcc gcc-c++ make zlib pcre pcre-devel openssl openssl-devel
useradd -s /sbin/nologin www
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2
./configure --user=www --group=www --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre
make
make install
#设置自启
vim /etc/rc.local
/usr/local/nginx/sbin/nginx
1、安装
安装mysql5.7版本,这里使用mysql官方的yum源进行安装
cd /usr/local/src/
wget https://repo.mysql.com/mysql57-community-release-el7.rpm
rpm -ivh mysql57-community-release-el7.rpm
yum install -y mysql-server mysql mysql-devel
2、启动mysql
systemctl start mysqld
3、修改密码
mysql启动后,系统会自动为root用户设置一个临时密码,获取MySQL的临时密码:
grep "password" /var/log/mysqld.log
mysql5.7版本后,对密码安全性加强了很多,临时密码只能用于登录,登录后需要马上修改密码,不然无法执行任何sql操作,同时,对密码长度和密码强度有了更高要求,必须符合长度8,且必须含有数字,小写或大写字母,特殊字符。重置mysql的root密码了,执行如下命令:
mysql -uroot -p
set password=password(‘Admin@123‘); flush privileges;
1、安装依赖库
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel openldap openldap-devel
2、安装PHP7
PHP官方下载地址:http://www.php.net/downloads.php
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-7.2.15.tar.gz
tar zxvf php-7.2.15.tar.gz
cd php-7.2.15
cp -frp /usr/lib64/libldap* /usr/lib/
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-zlib --with-curl --with-gd --with-gettext --enable-bcmath --enable-sockets --with-ldap --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip
vim Makefile
找到 /^EXTRA_LIBS 开头行,行尾加上 “-llber”
#编译安装
make
make install
cp php.ini-production /usr/local/php7/etc/php.ini
cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
3、PHP配置优化
vim /usr/local/php7/etc/php.ini
post_max_size = 16M max_execution_time = 300 memory_limit = 128M max_input_time = 300 date.timezone = Asia/Shanghai
如果修改了参数不生效,参考文章:https://blog.51cto.com/msiyuetian/2355134
1、修改nginx配置文件nginx.conf,在server下添加php-fpm的整合配置,内容如下:
vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; include fastcgi_params; }
2、修改php-fpm配置文件,启用php-fpm默认配置
cd /usr/local/php7/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
systemctl start php-fpm
/usr/local/nginx/sbin/nginx
1、安装依赖库
yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libevent libevent-devel
2、创建用户
groupadd zabbix
useradd -g zabbix zabbix
1、编译安装
cd /usr/local/src/
wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.4/zabbix-4.0.4.tar.gz
tar zxvf zabbix-4.0.4.tar.gz
cd zabbix-4.0.4
./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2
make
make install
说明:configure配置参数含义:
1)--with-mysql:表示启用MySQL作为后端存储,如果MySQL客户端类库不再默认的位置(rpm包方式安装的MySQL,MySQL客户端类库在默认位置,因此只需指定“--with-mysql”即可,无需指定具体路径),需要在MySQL的配置文件中指定路径,指定方法是指定mysql_config的路径,例如,如果是源码安装的mysql,安装路径为/usr/local/mysql,就可以这么指定:“--with-mysql=/usr/local/mysql/bin/mysql_config”。
2)--with-net-snmp:用于支持SNMP监控所需要的组件。
3)--with-libcurl:用于支持WEB监控,VMware监控及SMTP认证所需要的组件,对于SMTP认证,需要7.20.0或以上版本。
4)--with-libxml2:用于支持VMware监控所需要的组件。
5)--enable-server、 --enable-agent、和--enable-proxy分别表示启用zabbix的server、agent和proxy组件。
2、创建软连接
由于zabbix启动脚本路径默认指向的是/usr/local/sbin路径,而我们zabbix的安装路径是/usr/local/zabbix,因此,需要提前创建如下软链接:
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
1、登录数据库,创建一个zabbix数据库和zabbix用户,操作如下:
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by ‘Admin@123‘; flush privileges;
2、开始导入zabbix的表信息,需要执行三个sql文件,sql文件在zabbix源码包中database/mysql/目录下。先进入这个mysql目录,然后进入sql命令行,按照如下SQL语句执行顺序导入SQL,执行如下操作:
cd database/mysql/
mysql -uroot -p
use zabbix;
source schema.sql;
source images.sql;
source data.sql;
vim /usr/local/zabbix/etc/zabbix_server.conf
ListenPort=10051 LogFile=/tmp/zabbix_server.log DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix ListenIP=0.0.0.0 StartPollers=5 StartTrappers=10 StartDiscoverers=10 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
参数说明:
1)ListenPort是zabbix server默认监听端口
2)LogFile用来指定zabbix server日志输出路径
3)DBHost为数据库的地址,如果数据库在本机,可不做修改
4)DBName为数据库名称
5)DBUser为连接数据库的用户名
6)DBPassword为连接数据量对应的用户密码
7)ListenIP为zabbix server监听的IP地址,也就是zabbix server启动的监听端口对哪些ip开放,Agentd为主动模式时,这个值建议设置为0.0.0.0。
8)StartPollers用于设置zabbix serve服务启动时启动Pollers(主动收集数据进程)的数量,数量越多,则服务端吞吐能力越强,同时对系统资源消耗越大。
9)StartTrappers用于设置zabbix server服务启动时启动Trappers(负责处理Agentd推送过来的数据的进程)的数量。Agentd为主动模式时,zabbix server需要设置这个值大一些。
10)StartDiscoverers用于设置zabbix server服务启动时启动Discoverers进程的数量,如果zabbix监控报Discoverers进程忙时,需要提高该值。
11)AlertScriptsPath用来配置zabbix server运行脚本存放目录,一些供zabbix server使用的脚本,都可以放在这里。
1、复制启动脚本
cp /usr/local/src/zabbix-4.0.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
cp /usr/local/src/zabbix-4.0.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
chmod +x /etc/init.d/zabbix_server
chmod +x /etc/init.d/zabbix_agentd
2、开启自启
chkconfig zabbix_server on
chkconfig zabbix_agentd on
3、启动zabbix server
/etc/init.d/zabbix_server start
1、zabbix agent端的安装
zabbix agent端的安装建议采用rpm包方式安装,可从http://repo.zabbix.com/zabbix/下载zabbix的agent端rpm包,版本与zabbix server端保持一致,安装如下:
cd /usr/local/src/
wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.4-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-4.0.4-1.el7.x86_64.rpm
2、zabbix agent端的配置
vim /etc/zabbix/zabbix_agentd.conf,需要修改的内容为如下:
LogFile=/var/log/zabbix/zabbix_agentd.log Server=192.168.18.233 StartAgents=3 ServerActive=192.168.18.233 Hostname=agent233 Include=/etc/zabbix/zabbix_agentd.d/ UnsafeUserParameters=1
参数说明:
1)LogFile:#zabbix agentd日志文件路径
2)Server:#指定zabbix server端IP地址
3)StartAgents:#指定启动agentd进程的数量,默认是3个,设置为0,表示关闭agentd的被动模式(zabbix server主动来agent拉取数据)。
4)ServerActive:#启用agentd的主动模式(zabbix agent主动推送数据到zabbix server),启动主动模式后,agentd将主动将收集到的数据发送到zabbix server端,ServerActive后面指定的ip就是zabbix server端IP。
5)Hostname:#需要监控服务器的主机名或者IP地址,此选择的设置一定要和zabbix web端主机配置中对应的主机名一致。
6)Include:#相关配置都可以放到此目录下,自动生效。
7)UnsafeUserParameters:#启用agent端自定义item功能,设置此参数为1后,就可以使用UserParameter指令了。UserParameter用于自定义itme。
3、启动zabbix_agent
systemctl start zabbix-agent
Zabbix web是php代码编写的,将zabbix web安装到/usr/loca/nginx/html目录下,因此,只需将Zabbix web的代码放到此目录即可。Zabbix web的代码在Zabbix 源码包中的frontends/php目录下,将这个php目录拷贝到/usr/loca/nginx/html目录下并改名为zabbix即可完成Zabbix web端的安装。
cp -a /usr/local/src/zabbix-4.0.4/frontends/php/ /usr/local/nginx/html/
cd /usr/local/nginx/html/
mv php/ zabbix
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
systemctl restart iptables.service
systemctl enable iptables.service
关闭selinux
setenforce 0
在浏览器输入http://192.168.18.233/zabbix/setup.php,然后会检查zabbix web运行环境是否满足,
下一步检测PHP环境参数,如下图:
配置数据库连接,如下图:
默认的zabbix平台登录用户名为Admin,密码为zabbix。(注意账号首字母大写)
到此部署zabbix完成,登入后界面后如下:
grafana和zabbix的集成是通过插件方式实现的,因此,需要先安装grafana-zabbix插件,grafana官方已经包含了这个插件,直接使用即可。
grafana-cli plugins list-remote|grep zabbix
id: alexanderzobnin-zabbix-app version: 3.10.0
grafana-cli plugins install alexanderzobnin-zabbix-app
安装成功之后会提示我们需要重启grafana 服务,以使插件生效,稍后重启。
安装一个clock-panel插件,这个插件是个时钟插件,可以在dashboard上显示时间用。
grafana-cli plugins install grafana-clock-panel
所有需要的插件安装完成后,执行如下命令重启grafana服务:
systemctl restart grafana-server
所有准备工作完成后,下面就可以进入Grafana的web界面配置数据源,点击这个“Add data source”
进入如下界面,显示的是默认Grafana自带的数据源:
我们要添加zabbix,那么zabbix默认是以插件形式存在的,所以点击上图Plugins标签,然后搜索zabbix,如下图所示:
可以看到,这个显示的zabbix插件,就是我们刚刚安装好的。点击这个插件,进入如下界面:
这里点击“Enable”,启用这个插件。启用zabbix插件之后,再次选择“Data Source”标签,如下图所示:
可以看到,基于zabbix的数据源已经出来了,点击这个数据源,进入如下界面:
http://192.168.18.233/zabbix/api_jsonrpc.php
配置完成之后,点击最下面的“Save &Test”,如果配置有问题会报错提示,如果没有问题会提示成功。
这样zabbix数据源就配置完成了。最后,点击左侧导航中的zabbix图标,选择“Zabbix Server Dashboard”,如下图所示:
可以看到,默认Dashboard已经有数据了,这个数据就是通过上面配置的数据源而来。这只是一个初步配置,后续还有很多可以细化的东西。
如果没有数据,可以修改相关配置,例如对上面CPU这个Panel进行修改,可以这样操作,如下图所示:
此界面是调试出图是否正常的方法,非常重要,首先,图中“$datasource”用来指定数据源,“Query Mode”指定查询模式,有“Metrics、text”等可选项,还有四个选项“Group”、 “Host”、“ Application”、“ Item”,分别对应zabbix中的主机组、主机、应用集和监控项。正常情况下选择“Group”后,会在“Host”中看到此“Group”下的所有主机,“ Application”和“ Item”也是类似的。
除了zabbix插件自带的Dashboard,我们还可以自定义需要的Dashboard,点击Grafana左侧导航,选择创建一个Dashboard,如下图所示:
从此图可以看出,默认已经存在一些Panel,可以选择添加,但是在添加之前,需要先做几个变量配置,点击右上角的齿轮按钮,如下图所示:
此界面是对Dashboard进行配置,这里我们修改Dashboard名称为“ Zabbix Template Linux Server”,其它保存不变,接着,点击上图左侧的“Variables”,然后添加一个Variables,如下图所示:
这里我们添加了一个group变量,类型为“Query”,对应的标签为主机组,到时候要使用这个变量名就用$group来调用即可。 接着在“Query Options”中的Query方法,这里是一个星号,代表所有组。就设置这么多,最后,点击add,group这个变量就创建好了。
下面解释一下各个参数的作用:
1、General部分
Ø name:变量的名字,比如我这里取名为group,到时候要使用这个变量名就用$group来调用。
Ø type: 变量类型,变量类型有多种,其中query表示这个变量是一个查询语句,type也可以是datasource,datasource就表示该变量代表一个数据源,如果是datasource你可以用该变量修改整个DashBoard的数据源,变量类型还可以是时间间隔Interval等等。这里我们选择query。
Ø label: 是对应下拉框的名称,默认就是变量名,选择修改为“主机组”。
Ø hide: 有三个值,分别为空,label,variable。选择label,表示不显示下拉框的名字。选择variable表示隐藏该变量,该变量不会在DashBoard上方显示出来。默认选择为空,这里也选默认。
2、Query options部分
Ø Data source: 数据源,不用多说。
Ø Refresh: 何时去更新变量的值,变量的值是通过查询数据源获取到的,但是数据源本身也会发生变化,所以要时不时的去更新变量的值,这样数据源的改变才会在变量对应的下拉框中显示出来。Refresh有三个值可以选择,Never:永不更新。On Dashboard Load:在DashBoard加载时更新。On Time Range Change:在一个时间范围内更新。可根据情况进行选项。
Ø Query:查询表达式,不同的数据源查询表达式都不同(这些可以到官网上查询),这里由于是要查询zabbix的groups信息,所以表达式为“*”,代表所有。
Ø Regex:正则表达式,用来对抓取到的数据进行过滤,这里默认不过滤。
Ø Sort:排序,对下拉框中的变量值做排序,排序的方式挺多的,默认是disable,表示查询结果是怎样下拉框就怎样显示。此处选disable。
3、Selection Options部分
Ø Multi-value:启用这个功能,变量的值就可以选择多个,具体表现在变量对应的下拉框中可以选多个值的组合。
Ø Include All option:启用这个功能,变量下拉框中就多了一个all选项。
按照这个方式可以创建多个变量(host,application,item、Network)。创建方法和group基本一样,除了name,query不一样之外其它都一样。
1、创建变量host
Name:host
Query:$group.*
2、创建变量application
Name:application
Query:$group.$host.*
3、创建变量item
Name:item
Query:$group.$host.$application.*
变量创建完成后,保存,如下图:
返回刚刚创建好的“Zabbix Template Linux Server”,点击右上角的添加panel按钮,选择左边的“Graph”,如下图所示:
点击编辑这个panel,进入下图:
这里选择数据源为zabbix-213,然后选择Query Mode为Metrics,由于Grafana已经可以连接到zabbix数据库,所以,Group一项会列出zabbix所以的主机组,接着在Host一项中会列出对应主机组下的所有主机,同理,Application和Item项都会自动列出所有的对应内容,选择一个需要图形展示的监控项即可。
grafana-cli plugins install grafana-piechart-panel
所有需要的插件安装完成后,执行如下命令重启grafana服务:
systemctl restart grafana-server
刷新界面就可以看到如下
配置CPU采用饼图
作为新一代的监控框架,Prometheus 具有以下特点:
1)强大的多维度数据模型
2)灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics进行乘法、加法、连接、取分数位等操作。
3)易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
4)高效:一个 Prometheus server 可以处理数百万的 metrics。
5)使用pull模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的metrics。
6)可以采用 push gateway的方式把时间序列数据推送至Prometheus server 端。
7)可以通过服务发现或者静态配置去获取监控的targets。
8)支持多种绘图和仪表盘模式。
9)监控目标可以通过服务发现或静态配置
Prometheus非常适合记录纯数字的时间序列,既可以是以主机为中心的监控,也可以是以服务为导向的动态架构。在微服务的世界,它支持多维度的数据集合,查询功能非常强大。
Prometheus 是为可用性而设计,利用它你可以快速定位问题。每一个 Prometheus Server 都是独立的,不依赖于网络存储或其他的第三方服务。可以在部分基础设施出现问题时仍然使用它。
Prometheus 用于评估可用性。如果你想要100%的精准度,比如每个请求的账单,Prometheus就不是一个好的选择,因为收集上来的数据可能没这么细致、完整。对于这样的需求,你最好用其他的大数据系统对数据做分析。
Prometheus 的生态系统包括多个组件,大部分的组件都是用Go语言编写的,因此部署非常方便,而这些组件大部分都是可选的,主要组件介绍如下:
1、Prometheus Server
Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。
Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。
其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。
最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。
Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。
2、推送网关(push gateway)
主要是实现接收由Client push过来的指标数据,在指定的时间间隔,由主程序来抓取。
由于Prometheus数据采集基于Pull模型进行设计,因此在网络环境的配置上必须要让Prometheus Server能够直接与Exporter进行通信。
当这种网络需求无法直接满足时,就可以利用PushGateway来进行中转。
可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。
而Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据。
3、Exporter
主要用来采集数据,并通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的接口,即可获取到需要采集的监控数据。
常见的Exporter有很多,例如node_exporter、mysqld_exporter、statsd_exporter、blackbox_exporter、haproxy_exporter等,支持如 HAProxy,StatsD,Graphite,Redis 此类的服务监控;
4、告警管理器(Alertmanager)
管理告警,主要是负责实现报警功能。
在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。
在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。AlertManager即Prometheus体系中的告警处理中心。
下图展示了Prometheus的基本架构:
从架构图中可以看出其大概的工作流程:
1)Prometheus Server 以服务发现(如 Kubernetes 等)的方式自动发现或者静态配置添加监控目标;
2)Prometheus Server 定期从监控目标(Jobs/exporters)或 Pushgateway 中拉取数据(metrics),将时间序列数据保存到其自身的时间序列数据库(TSDB)中;
3)Prometheus Server 通过 HTTP Server 对外开放接口,可以给可视化工具(如 Prometheus web UI、Grafana 或自己开发的工具)用PromQL查询/导出数据;
4)当有告警产生时,Prometheus Server 将告警信息推送到Alertmanager ,由 Alertmanager 根据配置的策略发送告警信息到对应的接收方;
5)Pushgateway 接收 “Short-lived” 类型的 Jobs 推送过来的 metrics 并缓存,等待 Prometheus Server 抓取。
Grafana+Zabbix+Prometheus 监控系统
标签:复制 add 出图 setup dashboard lock size inf 开头
原文地址:https://www.cnblogs.com/weavepub/p/10959208.html