如何使用Elastic Search和Statsd配置Kibana

时间:2016-04-21 16:17:23

标签: elasticsearch logstash kibana graphite statsd

我正在尝试进行一些指标计算,并将指标的值存储在ElasticSearch中,并通过Kibana查看它们

我遵循了本教程 https://www.digitalocean.com/community/tutorials/how-to-configure-statsd-to-collect-arbitrary-stats-for-graphite-on-ubuntu-14-04

它帮助我设置StatsD,使用石墨UI,Carbon和Whiper作为后端。

现在我想将StatsD与ElasticSearch和Kibana一起用作可视化工具。

我面临的问题是Kibana有自己的聚合技术,我已经使用statsd这样做了,例如:uniq计数。 所以我只想绘制我存储在弹性搜索中的数据,而不是进一步聚合, 是否可以查看数据而不在Kibana中聚合它们。?

请帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以通过statsd(client)+ metricbeat(运行守护程序的statsd插件)和Elasticsearch + Kibana来执行此操作。步骤如下:

设置elasticsearch:https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

vi /etc/yum.repos.d/elasticsearch.repo并输入:

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

并从上面配置的存储库中安装elasticsearch:

sudo yum install --enablerepo=elasticsearch elasticsearch

设置(systemctl)服务:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

可以按以下方式启动/停止:

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

类似地,通过以下步骤设置kibana:https://www.elastic.co/guide/en/kibana/current/rpm.html

vi /etc/yum.repos.d/kibana.repo

[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

并安装kibana:sudo yum install kibana 您也可以类似地为kibana启用,启动/停止systemd服务。

我在同一单个节点上同时设置了elasticsearch和kibana。

现在,仅在烧瓶应用程序中使用statsd客户端即可,例如:

from flask import Flask
from elasticapm.contrib.flask import ElasticAPM
from statsd import StatsClient
from random import randint
from datetime import datetime
import time

statsd = StatsClient(host='0.0.0.0',port=8125,prefix='test')
app = Flask(__name__)
apm = ElasticAPM(app)

@app.route('/')
def hello():
    bfr = time.time()
    time.sleep(3)
    statsd.incr('baz',2)
    statsd.decr('ban')
    statsd.gauge('foo',-3,delta=True)
    statsd.set('users',randint(0,100))
    statsd.timing('req',int((time.time() - bfr)*1000))
    return "Hello World!"

这将为statsd服务器设置我们的statsd客户端,只需转到:http://<es-ip>:5601/app/kibana#/home/tutorial/statsdMetrics并按照说明进行操作。

设置metricbeat,在与flask应用程序相同的服务器上启用statsd。步骤是:

卷曲-L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.8.1-x86_64.rpm sudo rpm -vi metricbeat-7.8.1-x86_64.rpm

修改output.elasticsearch中的/etc/metricbeat/metricbeat.yml部分:

sudo metricbeat modules enable statsd

并进行设置,即metricbeat / statsd:

sudo metricbeat setup
sudo service metricbeat start

您可以执行netstat -tulpn | grep -i 8125并查看statsd守护程序正在运行。

接下来,只需转到“开发工具”的kibana部分

并触发以下查询以检查statsd指标:http://<es-ip>:5601/app/kibana#/dev_tools/console

GET /_search
{"query":{"bool":{"filter":{"term":{"event.module":"statsd"}}}},"size":10}

您现在可以开始创建仪表盘,添加带有查询过滤器的可视化文件“ event.module”为“ statsd”,甚至搜索诸如...之类的字词,例如accounts.authentication.login.num_users