Press "Enter" to skip to content

Tag: ubuntu

使用Collectd+Prometheus+Grafana监控nginx状态

在安装Nginx时,如果指定了–with-http_stub_status_module, 就可以使用本文的方法进行监控. 不用担心, 不论是从rpm/apt安装的Nginx, 均自带了该Module.

一般的建议是, 在nginx的机器上同时安装Collectd和collectd_exporter, 然后将数据导出到Prometheus(一般位于第三方服务器), 再从Grafana读取Prometheus中的数据.

1, 配置nginx

安装Nginx的过程此处略过, 我们需要确定一下Nginx安装了http_stub_status_module.

$ sudo nginx -V | grep http_sub_status
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/local/nginx --conf-path=...

配置Nginx启用该module

location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}

然后便可以通过http://ip/nginx_status来获取相关状态信息.

$ curl http://127.0.0.1/nginx_status
Active connections: 29
server accepts handled requests
 17750380 17750380 6225361
Reading: 0 Writing: 1 Waiting: 28
Leave a Comment

nginx监控方案

官网介绍的监控方案:https://www.nginx.com/blog/monitoring-nginx/
Prometheus集成的HTTP exporter方案:https://prometheus.io/docs/instrumenting/exporters/#http

Leave a Comment

配置ELK系统(ElasticSearch+Logstash+Kibana)收集nginx系统日志(三): Logstash的Grok过滤器插件原理

Grok是Logstash最重要的插件, 可以将非结构化日志数据解析为结构化和可查询的内容.

此工具非常适用于syslog日志, apache和其他Web服务器日志, mysql日志, 以及通常为人类而非计算机使用而编写的任何日志格式.

grok的语法

%{SYNTAX:SEMANTIC}

SYNTAX是文本要匹配的”patterns”(翻译为”模式”, 但我觉得翻译成”类型”更恰当)
SEMANTIC是匹配到的文标识(字段), 默认是以字符串的方式保存

翻译成中文就是

%{模式:字段}

假设有以下日志片断

55.3.244.1 GET /index.html 15824 0.043

通过分析, 第一段可能是一个IP, 第二段可能是一个HTTP的请求方法, 第三段可能是请求的页面, 等等, 所以grok的过滤表达式可以写为

%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}

经过grok过滤器处理以后, 该日志片断将被解析成以下字段

client: 55.3.244.1
method: GET
request: /index.html
bytes: 15824
duration: 0.043
Leave a Comment

配置ELK系统(ElasticSearch+Logstash+Kibana)收集nginx系统日志(二): 配置Kibana

本文承接上一篇配置ELK系统(ElasticSearch+Logstash+Kibana)收集nginx系统日志(一), 主要演示Kibana的使用方法. 本文所有图片点击即可在新窗口查看大图.

Kibana是整个ELK系统里用于图形展示的环境, 通过Kibana我们可以建立各种生动的图表来展示日志文件中的数据, 例如下图:
配置Kibana

安装好Kibana以后, 首先是添加一个”Index Pattern”(索引模式), 这部分内容比较简单, 我们直接跳到Kibana的主界面上来说吧.

一, 原理解析

Kibana的主界面上主要有3个重要选项:
1, Discover: 这个界面默认展示ElasticSearch里面的存储的各字段, 及其数量. 此外, 还可以建立一个Search结果, 即把不需要的字段去掉, 仅展示我们想看见的字段. 见下图的演示

Leave a Comment

solve ftp client “501 Server cannot accept argument. ftp: bind: Address already in use”

在aws lightsail的一台实例上访问远程FTP出现了以下提示:

501 Server cannot accept argument.
ftp: bind: Address already in use

原因分析:
当前FTP client处在防火墙之后, 或者client上只有一个内网IP, 例如从阿里云EC2上面, 访问远程FTP服务, 即可能会出现这种提示.

解决办法:
使用passive模式去连接, 例如

pftp -v -n $FTP_IP << END    #使用pftp连接
user $FTP_USER $FTP_PASS
type binary
cd $FTP_backup
ls
delete $OldData
put $DataBakName
bye
END
Leave a Comment

使用Prometheus和Grafana构建集群监控系统(一): 配置与搭建

1, 基础知识

目前在服务器监控领域, 除了老牌的Zabbix和nagios外, Prometheus和Grafana也是目前较为流行的监控方案, 本文介绍Prometheus和Grafana的配置方法.

什么是Grafana?

Grafana是一个图形化工具, 它可以从很多种数据源(例如Prometheus)中读取数据信息, 使用很漂亮的图表来展示数据, 并且有很多开源的dashborad可以使用, 制作自己的dashboard也很简单, 总之, 可以快速地搭建起一个非常精美的监控平台.

什么是TSDB?

TSDB(Time Series Database)时间序列数据库, 简单来说就是存储随时间变化的数据的数据库. 什么是随时间变化的数据呢?举个简单的例子, 比如, CPU使用率, 典型的随时间变化的量, 这一秒是50%, 下一秒也许就是80%了. 或者是温度, 今天是20度, 明天可能就是18度了.

常见的TSDB(时间序列数据库): influxDB, RRDtool, Graphite, OpenTSDB, Kdb+, Druid, KairosDB, Prometheus等.

什么是Prometheus?

Prometheus(中文名:普罗米修斯)是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). Prometheus使用Go语言开发, 是Google BorgMon监控系统的开源版本. 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目.

Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态, 任意组件只要提供对应的HTTP接口就可以接入监控. 不需要任何SDK或者其他的集成过程. 这样做非常适合做虚拟化环境监控系统, 比如VM、Docker、Kubernetes等. 输出被监控组件信息的HTTP接口被叫做exporter. 目前互联网公司常用的组件大部分都有exporter可以直接使用, 比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等).

Prometheus获取数据的策略是Pull而不是Push, 也就是说, 它会自己去抓取, 而不用你来推送. 抓取使用的是HTTP协议, 在配置文件中指定目标程序的端口, 路径及间隔时间即可. 这也就意味着任何程序想要使用Prometheus存储数据都很简单, 定义一个HTTP接口即可.

Leave a Comment

Windows下使用Vagrant

Vagrant是用来快速构建虚拟机的工具,只需要短短数行命令,就可以帮我们构建一个基于Virtualbox/VMware的虚拟机。在Linux系统下使用非常方便。本文介绍其在Windows下的使用方法(虽然本文介绍的是Windows下的使用方法, 但其在Linux下使用类似, 比如下方的建立文件夹就用mkdir, 编辑Vagrantfile文件就用vim即可)。

1,准备工作

1.1,安装Virtualbox和Vagrant,这里不多说;

1.2,新建一个文件夹,例如”C:\vm1″,并进入到此目录;

1.3,在Powershell中进入此目录,方法如下(以下方法任选其一):
方法1(推荐): 在当前目录下按一下Shift+F10后松开,然后按s;
方法2: 在目录空白处鼠标右键,在右键菜单中选择”在此处打开 Powershell 窗口(s)”;
方法3: 按一下Windows+x后松开,然后按i,此时进入的Powershell不在”C:\vm1″目录,我们可以手动运行”cd C:\vm1″命令进入之

Leave a Comment