Telegraf+InfluxDB+Grafana监控

安装docker

略过....

安装InfluxDB

docker安装

docker run -d -p 8086:8086 -v /var/lib/influxdb:/var/lib/influxdb --name=influxdb influxdb

测试

启动InfluxDB容器后,通过http接口访问进行测试

curl -G http://localhost:8086/query --data-urlencode "q=show databases"
# 成功结果如下
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["telegraf"],["_internal"]]}]}]}

安装Telegraf 这里有安装教程

安装

wget https://dl.influxdata.com/telegraf/releases/telegraf-1.7.2-1.x86_64.rpm
sudo yum localinstall telegraf-1.7.2-1.x86_64.rpm

配置文件

# 这样生成的配置文件将包含每一个插件,但是大部分会被注释掉,可以根据实际的业务场景进行定义
telegraf -sample-config > telegraf.conf

配置[[outputs.influxdb]]

这应该是最基本的influxdb配置

# Configuration for sending metrics to InfluxDB
[[outputs.influxdb]]
  # influxdb http地址,由于是宿主机直接安装,直接访问本地8086端口即可。
  urls = ["http://127.0.0.1:8086"]
  # 数据库名,不存在会自动创建,默认"telegraf"
  database = "telegraf"
  # 跳过创建数据库
  skip_database_creation = false
  # 超时时间
  timeout = "5s"

参考文章

安装Grafana

安装

docker run -d -p 3000:3000 -v /var/lib/grafana:/var/lib/grafana --name=grafana grafana/grafana

host网络启动

docker run -d -v /var/lib/grafana:/var/lib/grafana --privileged=true --name=grafana --net=host grafana/grafana

初步访问

http://localhost:3000,默认用户名和密码都是admin

配置

InfluxDB Details需填写数据名(默认telegraf)、用户名和密码(默认均为root)

这里下面有个Min time interval不要选择,否则会遇到静态资源加载的问题

file

grafana模板

监控NGINX

小提示:需要nginx开启--with-http_stub_status_module模块

增加nginx server 配置

server {
    listen  30000;
    server_name localhost;

    location /nginx-status {
       # 允许的ip
       allow 127.0.0.1;
       deny all;
       stub_status on;
       access_log off;
    }

}

telegraf配置

[[inputs.nginx]]
    urls = ["http://127.0.0.1:30000/nginx-status"]
    response_timeout = "5s"

测试是否生效

systemctl restart telegraf
telegraf --config telegraf.conf --input-filter nginx --test
> nginx,host=iZm5eftzomp390c3clkathZ,port=30000,server=127.0.0.1 accepts=18i,active=2i,handled=18i,reading=0i,requests=18i,waiting=1i,writing=1i 1533659147000000000

监控Docker

[[inputs.docker]]
    # docker的sock
    endpoint = "unix:///var/run/docker.sock"
    # 监听的容器
    container_names = ["grafana","influxdb"]
    timeout = "5s"

参考文章

参考文章