fluentd + influxdb + grafana 搭建web服务器监控系统

使用fluentd来收集nginx/apache等log,数据采集到influxdb,通过grafana进行展示,以下教程基于centos环境。

fluentd

安装

安装fluentd以及对应的influxdb插件

$ curl -L /toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
$ /usr/sbin/td-agent-gem install fluent-plugin-influxdb

配置

编辑 vim /etc/td-agent/td-agent.conf
增加以下内容

<source>
  @type tail
  path /home/wwwlogs/testweb.com.log
  pos_file /var/log/td-agent/nginx-access.pos
  tag nginx_access
  format /^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*) +\S*)?" (?<code>[^ ]*) (?<request_time>[^ ]*) (?<response_time>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/
  types request_time:float
  time_format %d/%b/%Y:%H:%M:%S
</source>

<match nginx_access>
  @type influxdb
  dbname nginx01
  host 127.0.0.1
  port 8086
</match>

编辑后,验证下是否正确

$ td-agent -c /etc/td-agent/td-agent.conf

参数说明

  • path:
  • format:参数匹配规则,规则可以根据需求自行设置,通过 /fluentular.herokuapp.com/ 进行验证

influxdb

安装并启动

$ cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = /repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = /repos.influxdata.com/influxdb.key
EOF
$ sudo yum install influxdb
$ sudo service influxdb start

创建数据库 nginx01,fluentd写入数据的库

$ influx
Connected to /localhost:8086 version 1.4.2
InfluxDB shell version: 1.4.2
>create database nginx01

grafana

安装并启动

$ wget /s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3-1.x86_64.rpm
$ sudo yum install initscripts fontconfig
$ sudo rpm -Uvh grafana-4.6.3-1.x86_64.rpm
$ sudo service grafana-server start

打开 /localhost:3000/,默认账号密码均为 admin

参考

  • fluentd /docs.fluentd.org/v1.0/articles/quickstart
  • influxdb /docs.influxdata.com/influxdb/v1.4/introduction/
  • grafana /docs.grafana.org/

(321) 206-0284

业务场景

电商商品的快速搜索,推荐

主要服务

1、建立索引
2、根据关键词获取搜索结果

服务对象

基于Rest Api实现基础服务,任何对象可通过授权使用该服务。

技术架构

Nginx:1.8
Elasticsearch:5.4.3
Python:3.6.1
Flask

下一节,我们继续...

256-760-8355

搭建 Docker 环境

安装 Docker

Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:

yum install docker-io -y

直接yum安装,安装成功后查看版本

docker -v

启动docker

service docker start

设置开机启动

chkconfig docker on

配置 Docker

因为国内访问 Docker Hub 较慢, 可以使用腾讯云提供的国内镜像源, 加速访问 Docker Hub

依次执行以下命令

echo "OPTIONS='--registry-mirror=/mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
systemctl daemon-reload
service docker restart

Docker 的简单操作

任务时间:10min ~ 20min

下载镜像

下载一个官方的 CentOS 镜像到本地

docker pull centos

下载好的镜像就会出现在镜像列表里

docker images

运行容器

这时我们可以在刚才下载的 CentOS 镜像生成的容器内操作了。

生成一个 centos 镜像为模板的容器并使用 bash shell

docker run -it centos /bin/bash

这个时候可以看到命令行的前端已经变成了 [root@(一串 hash Id)] 的形式, 这说明我们已经成功进入了 CentOS 容器。

在容器内执行任意命令, 不会影响到宿主机, 如下

mkdir -p /data/simple_docker

可以看到 /data 目录下已经创建成功了 simple_docker 文件夹

ls /data

退出容器

exit

查看宿主机的 /data 目录, 并没有 simple_docker 文件夹, 说明容器内的操作不会影响到宿主机

ls /data

保存容器

查看所有的容器信息, 能获取容器的id

docker ps -a

然后执行如下命令[(704) 852-1873],保存镜像:

docker commit -m="备注" 你的CONTAINER_ID 你的IMAGE

请自行将 -m 后面的信息改成自己的容器的信息

大功告成!

恭喜你结束了 Docker 的教程并学会了 Docker 的一些基本操作, 接下来, 您可以购买并体验腾讯云提供的 Docker 服务

717-384-3915

1、安装 JDK
JDK 是开发Java程序必须安装的软件,我们查看一下 yum 源里面的 JDK:

yum list java*

选择适合本机的JDK,并安装:

yum install java-1.7.0-openjdk* -y

安装完成后,查看是否安装成功:

java -version

2、安装 Tomcat

Tomcat 是一个应用服务器,是开发和调试 jsp 程序的首选,可以利用它来响应 HTML 页面的访问请求。
进入本地文件夹

cd /usr/local

到官网找到 Tomcat 的下载链接,并下载到服务器中, 这里提供了一个快速下载 Tomcat 的地址:

wget /mc.qcloudimg.com/static/archive/fa66329388f85c08e8d6c12ceb8b2ca3/apache-tomcat-7.0.77.tar.gz

解压这个文件夹:

tar -zxf apache-tomcat-7.0.77.tar.gz

重命名这个文件

mv apache-tomcat-7.0.77 /usr/local/tomcat7

进入 bin 文件夹

cd /usr/local/tomcat7/bin

设置执行权限

chmod 777 *.sh

开启tomcat服务:

./startup.sh

此时,访问 /127.0.0.1:8080 可访问到刚才启动的 Tomcat 的内置示例页面

Mac 环境搭建Nginx+php-fpm环境

mac默认自带Apache以及php,有的时候我们需要测试nginx环境,这对mac来说也很简单。

安装配置nginx

首先,通过brew安装nginx

brew install nginx

因为apache占用了80,安装nginx后的默认端口为8080
配置文件路径:/usr/local/etc/nginx/
默认web路径:/usr/local/var/www/

现在开始调整配置,让nginx与apache共用一个web目录

修改nginx.conf

worker_processes  1;  

error_log       /usr/local/var/log/nginx/error.log warn;

pid        /usr/local/var/run/nginx.pid;

events {
    worker_connections  256;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log      /usr/local/var/log/nginx/access.log main;
    port_in_redirect off;
    sendfile        on; 
    keepalive_timeout  65; 

    include /usr/local/etc/nginx/servers/*.conf;
}

在/usr/local/etc/nginx/servers目录下新增default.conf文件,内容如下:

server {
listen       8080;
server_name  localhost;

root /Library/WebServer/Documents; # mac的apache默认在该路径下

location / { 
    index index.php;
    autoindex on; 
}   

#proxy the php scripts to php-fpm  
location ~ \.php$ {
    include /usr/local/etc/nginx/fastcgi.conf;
    fastcgi_intercept_errors on; 
    fastcgi_pass   127.0.0.1:9000; 
}   

}

启用php-fpm

mac自带php-fpm,只是默认没有启用,我们只要稍作配置即可。

sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf vim /private/etc/php-fpm.conf

修改php-fpm.conf文件中的以下参数:

listen=/tmp/php-fpm.sock
error_log=/usr/local/var/log/php-fpm.log
pid=/usr/local/var/run/php-fpm.pid