您可以通过 statsd(client) + metricbeat(运行守护程序的 statsd 插件)和 Elasticsearch + Kibana 来做到这一点。以下步骤:
设置弹性搜索: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
并从上面配置的 repo 安装 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,在与烧瓶应用程序相同的服务器上启用 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